1    | /*	SCCS Id: @(#)vision.h	3.3	95/01/26	*/
2    | /* Copyright (c) Dean Luick, with acknowledgements to Dave Cohrs, 1990. */
3    | /* NetHack may be freely redistributed.  See license for details.	*/
4    | 
5    | #ifndef VISION_H
6    | #define VISION_H
7    | 
8    | #if 0	/* (moved to decl.h) */
9    | extern boolean vision_full_recalc;	/* TRUE if need vision recalc */
10   | extern char **viz_array;		/* could see/in sight row pointers */
11   | extern char *viz_rmin;			/* min could see indices */
12   | extern char *viz_rmax;			/* max could see indices */
13   | #endif
14   | #define COULD_SEE 0x1		/* location could be seen, if it were lit */
15   | #define IN_SIGHT  0x2		/* location can be seen */
16   | #define TEMP_LIT  0x4		/* location is temporarily lit */
17   | 
18   | /*
19   |  * Light source sources
20   |  */
21   | #define LS_OBJECT 0
22   | #define LS_MONSTER 1
23   | 
24   | /*
25   |  *  cansee()	- Returns true if the hero can see the location.
26   |  *
27   |  *  couldsee()	- Returns true if the hero has a clear line of sight to
28   |  *		  the location.
29   |  */
30   | #define cansee(x,y)	(viz_array[y][x] & IN_SIGHT)
31   | #define couldsee(x,y)	(viz_array[y][x] & COULD_SEE)
32   | #define templit(x,y)	(viz_array[y][x] & TEMP_LIT)
33   | 
34   | /*
35   |  *  The following assume the monster is not blind.
36   |  *
37   |  *  m_cansee()	- Returns true if the monster can see the given location.
38   |  *
39   |  *  m_canseeu() - Returns true if the monster could see the hero.  Assumes
40   |  *		  that if the hero has a clear line of sight to the monster's
41   |  *		  location and the hero is visible, then monster can see the
42   |  *		  hero.
43   |  */
44   | #define m_cansee(mtmp,x2,y2)	clear_path((mtmp)->mx,(mtmp)->my,(x2),(y2))
45   | 
46   | #define m_canseeu(m)	((!Invis || perceives((m)->data)) && \
47   | 			  !(Underwater || u.uburied || (m)->mburied) ? \
48   | 			     couldsee((m)->mx,(m)->my) : 0)
49   | 
50   | /*
51   |  *  Circle information
52   |  */
53   | #define MAX_RADIUS 15	/* this is in points from the source */
54   | 
55   | /* Use this macro to get a list of distances of the edges (see vision.c). */
56   | #define circle_ptr(z) (&circle_data[(int)circle_start[z]])
57   | 
58   | #endif /* VISION_H */