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]; 53