Bite the bullet - size siymbols have to be shared.
[open-adventure.git] / advent.h
1 #include <stdio.h>
2 #include <stdbool.h>
3
4 #include "sizes.h"
5
6 #define LINESIZE        100
7 #define NDWARVES        6
8 #define PIRATE          NDWARVES        /* must be NDWARVES-1 when zero-origin */
9
10 typedef struct lcg_state
11 {
12   unsigned long a, c, m, x;
13 } lcg_state;
14
15 typedef long token_t;   /* word token - someday this will be char[TOKLEN+1] */
16 typedef long vocab_t;   /* index into a vocabulary array */
17
18 struct game_t {
19     long abbnum;
20     long blklin;
21     long bonus;
22     long chloc;
23     long chloc2;
24     long clock1;
25     long clock2;
26     long clshnt;
27     long closed;
28     long closng;
29     long conds;
30     long detail;
31     long dflag;
32     long dkill;
33     long dtotal;
34     long foobar;
35     long holdng;
36     long iwest;
37     long knfloc;
38     long limit;
39     long lmwarn;
40     long newloc;
41     long novice;
42     long numdie;
43     long oldloc;
44     long oldlc2;
45     long oldobj;
46     long panic;
47     long saved;
48     long setup;
49     long tally;
50     long thresh;
51     long trndex;
52     long trnluz;
53     long turns;
54     long wzdark;
55     long zzword;
56     long abbrev[LOCSIZ+1];
57     long dseen[NDWARVES+1];
58     long dloc[NDWARVES+1];
59     long odloc[NDWARVES+1];
60 };
61
62 extern struct game_t game;
63
64 extern long ATLOC[], FIXED[],
65                 LINK[], LNLENG, LNPOSN,
66                 PARMS[], PLACE[];
67 extern char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
68 extern FILE *logfp;
69 extern bool oldstyle;
70 extern lcg_state lcgstate;
71
72 /* b is not needed for POSIX but harmless */
73 #define READ_MODE "rb"
74 #define WRITE_MODE "wb"
75
76 extern void SPEAK(vocab_t);
77 extern void PSPEAK(vocab_t,int);
78 extern void RSPEAK(vocab_t);
79 extern void SETPRM(long,long,long);
80
81 extern bool fGETIN(FILE *,token_t*,token_t*,token_t*,token_t*);
82 #define GETIN(input,WORD1,WORD1X,WORD2,WORD2X) fGETIN(input,&WORD1,&WORD1X,&WORD2,&WORD2X)
83
84 extern long YES(FILE *,vocab_t,vocab_t,vocab_t);
85 extern long GETTXT(bool,bool,bool);
86 extern token_t MAKEWD(long);
87
88 extern void fPUTTXT(token_t,long*,long);
89 #define PUTTXT(WORD,STATE,CASE) fPUTTXT(WORD,&STATE,CASE)
90
91 extern void SHFTXT(long,long);
92 extern void TYPE0(void);
93
94 extern void fSAVWDS(long*,long*,long*,long*,long*,long*,long*);
95 #define SAVWDS(W1,W2,W3,W4,W5,W6,W7) fSAVWDS(&W1,&W2,&W3,&W4,&W5,&W6,&W7)
96 extern void fSAVARR(long*,long);
97 #define SAVARR(ARR,N) fSAVARR(ARR,N)
98 extern void fSAVWRD(long,long*);
99 #define SAVWRD(OP,WORD) fSAVWRD(OP,&WORD)
100
101 extern long VOCAB(long,long);
102 extern void DSTROY(long);
103 extern void JUGGLE(long);
104 extern void MOVE(long,long);
105 extern long PUT(long,long,long);
106 extern void CARRY(long,long);
107 extern void DROP(long,long);
108 extern long ATDWRF(long);
109 extern long SETBIT(long);
110 extern bool TSTBIT(long,int);
111 extern long RNDVOC(long,long);
112 extern void BUG(long);
113 extern void MAPLIN(FILE *);
114 extern void TYPE(void);
115 extern void MPINIT(void);
116
117 extern void fSAVEIO(long,long,long*);
118 #define SAVEIO(OP,IN,ARR) fSAVEIO(OP,IN,ARR)
119 extern void DATIME(long*, long*);
120
121 extern long MOD(long,long);
122
123 extern void set_seed(long);
124 extern unsigned long get_next_lcg_value(void);
125 extern long randrange(long);
126
127 extern void score(long);
128 extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
129    BIRD, BLOOD, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
130    CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
131    EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
132    GRATE, HINT, HINTED[], HINTLC[],
133    I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
134    KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
135    MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR, NUGGET, NUL, OBJ,
136    OGRE, OIL, OLDOBJ, OYSTER,
137    PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
138    RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
139    SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
140    STREAM, THROW, TK[], TRIDNT, TROLL, TROLL2,
141    URN, V1, V2, VASE, VEND, VERB,
142    VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X;
143