xref: /csrg-svn/games/trek/visual.c (revision 12738)
111703Smckusick #ifndef lint
2*12738Slayer static char sccsid[] = "@(#)visual.c	4.2	(Berkeley)	05/27/83";
311703Smckusick #endif not lint
411703Smckusick 
511703Smckusick # include	"trek.h"
611703Smckusick 
711703Smckusick /*
811703Smckusick **  VISUAL SCAN
911703Smckusick **
1011703Smckusick **	A visual scan is made in a particular direction of three sectors
1111703Smckusick **	in the general direction specified.  This takes time, and
1211703Smckusick **	Klingons can attack you, so it should be done only when sensors
1311703Smckusick **	are out.
1411703Smckusick */
1511703Smckusick 
1611703Smckusick /* This struct[] has the delta x, delta y for particular directions */
17*12738Slayer struct xy	Visdelta[11] =
1811703Smckusick {
1911703Smckusick 	-1,	-1,
2011703Smckusick 	-1,	 0,
2111703Smckusick 	-1,	 1,
2211703Smckusick 	 0,	 1,
2311703Smckusick 	 1,	 1,
2411703Smckusick 	 1,	 0,
2511703Smckusick 	 1,	-1,
2611703Smckusick 	 0,	-1,
2711703Smckusick 	-1,	-1,
2811703Smckusick 	-1,	 0,
2911703Smckusick 	-1,	 1
3011703Smckusick };
3111703Smckusick 
3211703Smckusick visual()
3311703Smckusick {
3411703Smckusick 	register int		ix, iy;
3511703Smckusick 	int			co;
3611703Smckusick 	register struct xy	*v;
3711703Smckusick 
3811703Smckusick 	co = getintpar("direction");
3911703Smckusick 	if (co < 0 || co > 360)
4011703Smckusick 		return;
4111703Smckusick 	co = (co + 22) / 45;
4211703Smckusick 	v = &Visdelta[co];
4311703Smckusick 	ix = Ship.sectx + v->x;
4411703Smckusick 	iy = Ship.secty + v->y;
4511703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
4611703Smckusick 		co = '?';
4711703Smckusick 	else
4811703Smckusick 		co = Sect[ix][iy];
4911703Smckusick 	printf("%d,%d %c ", ix, iy, co);
5011703Smckusick 	v++;
5111703Smckusick 	ix = Ship.sectx + v->x;
5211703Smckusick 	iy = Ship.secty + v->y;
5311703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
5411703Smckusick 		co = '?';
5511703Smckusick 	else
5611703Smckusick 		co = Sect[ix][iy];
5711703Smckusick 	printf("%c ", co);
5811703Smckusick 	v++;
5911703Smckusick 	ix = Ship.sectx + v->x;
6011703Smckusick 	iy = Ship.secty + v->y;
6111703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
6211703Smckusick 		co = '?';
6311703Smckusick 	else
6411703Smckusick 		co = Sect[ix][iy];
6511703Smckusick 	printf("%c %d,%d\n", co, ix, iy);
6611703Smckusick 	Move.time = 0.05;
6711703Smckusick 	Move.free = 0;
6811703Smckusick }
69