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