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