xref: /original-bsd/games/hack/def.rm.h (revision 0999a820)
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