Commit | Line | Data |
---|---|---|
b72f0cc4 KB |
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]; |