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 */