f84921ca3365b8dcf4783393579d0dc4b0fb7e4f
[games.git] / games / hack / def.rm.h
1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* def.rm.h - version 1.0.2 */
3
4 /* Level location types */
5 #define HWALL 1
6 #define VWALL 2
7 #define SDOOR 3
8 #define SCORR 4
9 #define LDOOR 5
10 #define POOL    6       /* not yet fully implemented */
11                         /* this should in fact be a bit like lit */
12 #define DOOR 7
13 #define CORR 8
14 #define ROOM 9
15 #define STAIRS 10
16
17 /*
18  * Avoid using the level types in inequalities:
19  *  these types are subject to change.
20  * Instead, use one of the macros below.
21  */
22 #define IS_WALL(typ)    ((typ) <= VWALL)
23 #define IS_ROCK(typ)    ((typ) < POOL)          /* absolutely nonaccessible */
24 #define ACCESSIBLE(typ) ((typ) >= DOOR)                 /* good position */
25 #define IS_ROOM(typ)            ((typ) >= ROOM)         /* ROOM or STAIRS */
26 #define ZAP_POS(typ)            ((typ) > DOOR)
27
28 /*
29  * A few of the associated symbols are not hardwired.
30  */
31 #ifdef QUEST
32 #define CORR_SYM        ':'
33 #else
34 #define CORR_SYM        '#'
35 #endif QUEST
36 #define POOL_SYM        '}'
37
38 #define ERRCHAR '{'
39
40 /*
41  * The structure describing a coordinate position.
42  * Before adding fields, remember that this will significantly affect
43  * the size of temporary files and save files.
44  */
45 struct rm {
46         char scrsym;
47         unsigned typ:5;
48         unsigned new:1;
49         unsigned seen:1;
50         unsigned lit:1;
51 };
52 extern struct rm levl[COLNO][ROWNO];