simplify #vanquished monsters processing...
[aNetHack.git] / include / vision.h
blob562f542a177100d48c9b70c6f3c9d8531a378c5a
1 /* NetHack 3.6 vision.h $NHDT-Date: 1432512777 2015/05/25 00:12:57 $ $NHDT-Branch: master $:$NHDT-Revision: 1.9 $ */
2 /* Copyright (c) Dean Luick, with acknowledgements to Dave Cohrs, 1990. */
3 /* NetHack may be freely redistributed. See license for details. */
5 #ifndef VISION_H
6 #define VISION_H
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 */
19 * Light source sources
21 #define LS_OBJECT 0
22 #define LS_MONSTER 1
25 * cansee() - Returns true if the hero can see the location.
27 * couldsee() - Returns true if the hero has a clear line of sight to
28 * the location.
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)
35 * The following assume the monster is not blind.
37 * m_cansee() - Returns true if the monster can see the given location.
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.
44 #define m_cansee(mtmp, x2, y2) clear_path((mtmp)->mx, (mtmp)->my, (x2), (y2))
46 #define m_canseeu(m) \
47 ((!Invis || perceives((m)->data)) \
48 && !(Underwater || u.uburied || (m)->mburied) \
49 ? couldsee((m)->mx, (m)->my) \
50 : 0)
53 * Circle information
55 #define MAX_RADIUS 15 /* this is in points from the source */
57 /* Use this macro to get a list of distances of the edges (see vision.c). */
58 #define circle_ptr(z) (&circle_data[(int) circle_start[z]])
60 /* howmonseen() bitmask values */
61 #define MONSEEN_NORMAL 0x0001 /* normal vision */
62 #define MONSEEN_SEEINVIS 0x0002 /* seeing invisible */
63 #define MONSEEN_INFRAVIS 0x0004 /* via infravision */
64 #define MONSEEN_TELEPAT 0x0008 /* via telepathy */
65 #define MONSEEN_XRAYVIS 0x0010 /* via Xray vision */
66 #define MONSEEN_DETECT 0x0020 /* via extended monster detection */
67 #define MONSEEN_WARNMON 0x0040 /* via type-specific warning */
69 #endif /* VISION_H */