1
2 #ifndef __whaven_h__
3 #define __whaven_h__
4
5 #include "common_game.h"
6 #include "player.h"
7 #include "whdefs.h"
8 #include "names.h"
9
10 #ifndef APPNAME
11 #define APPNAME "Witchaven"
12 #endif
13
14 #ifndef APPBASENAME
15 #define APPBASENAME "witchaven"
16 #endif
17
18 enum cliptypes_t {
19 NORMALCLIP = 0,
20 PROJECTILECLIP,
21 CLIFFCLIP
22 };
23
24 #define XDIM 320
25 #define YDIM 200
26 #define NUMOPTIONS 12
27 #define WHNUMKEYS 27
28 #define LOW 1
29 #define HIGH 2
30 #define INACTIVE 0
31 #define PATROL 1
32 #define CHASE 2
33 #define AMBUSH 3
34 #define ATTACK 6
35 #define STAND 8
36
37
38 #define MISSILE 100
39 #define FX 101
40 #define HEATSEEKER 102
41 #define YELL 103
42 #define CAST 104
43 #define PUSH 105
44 #define FALL 106
45 #define DIE 107
46 #define DEAD 108
47 #define FACE 109
48 #define SHOVE 110
49 #define SHATTER 111
50 #define FIRE 112
51 #define LIFTUP 113
52 #define LIFTDN 114
53 #define PENDULUM 115
54 #define RESURECT 116
55 #define BOB 117
56 #define SHOVER 118
57 #define TORCHER 119
58 #define MASPLASH 120
59 #define CHUNKOMEAT 121
60 #define FLEE 122
61 #define DORMANT 123
62 #define ACTIVE 124
63 #define ATTACK2 125
64 #define WITCHSIT 126
65 #define CHILL 127
66 #define SKIRMISH 128
67 #define FLOCK 129
68 #define FLOCKSPAWN 130
69 #define PAIN 131
70 #define WAR 132
71 #define TORCHLIGHT 133
72 #define GLOWLIGHT 134
73 #define BLOOD 135
74 #define DRIP 136
75 #define DEVILFIRE 137
76 #define FROZEN 138
77 #define PULLTHECHAIN 139
78 #define FLOCKCHIRP 140
79 #define CHUNKOWALL 141
80 #define FINDME 142
81 #define DRAIN 143
82 #define RATRACE 144
83 #define SMOKE 145
84 #define EXPLO 146
85 #define JAVLIN 147
86 #define ANIMLEVERUP 148
87 #define ANIMLEVERDN 149
88 #define BROKENVASE 150
89 #define CHARCOAL 151
90 #define WARPFX 152
91 #define KILLSECTOR 4444
92 #define GRAVITYCONSTANT (4<<7);
93 #define JUMPVEL (4<<10);
94 #define GROUNDBIT 1
95 #define PLATFORMBIT 2
96
97
98 extern int32_t g_commandSetup;
99 extern int32_t g_noSetup;
100
101 extern struct grpfile_t const* g_selectedGrp;
102
103 extern int loaddefinitions_game(const char* fn, int32_t preload);
104 void G_LoadGroupsInDir(const char* dirname);
105 void G_DoAutoload(const char* dirname);
106
107 extern int mouseaiming, aimmode, mouseflip;
108 extern int runkey_mode, auto_run;
109
110 extern int r_showfps;
111
112 int adjusthp(int hp);
113
114 // TODO / FIXME / CHECKME - old Build visibility variable. What happened it?
115 extern int32_t visibility;
116
117 extern int svga;
118 extern int delaycnt, engineinitflag, timerinitflag, videoinitflag;
119 extern int netgame;
120 extern int gametype;
121 extern int godmode;
122 extern int32_t followx, followy;
123 extern int32_t lockclock;
124 extern int32_t difficulty;
125 extern int32_t goreon;
126
127 extern int32_t brightness;
128 extern int32_t gbrightness;
129
130 extern char boardname[];
131 extern char tempboard[];
132 extern char loadgamename[];
133
134 extern int32_t* animateptr[];
135 extern int32_t animategoal[];
136 extern int32_t animatevel[];
137 extern int32_t animatecnt;
138
139 extern short ironbarsector[16];
140 extern short ironbarscnt;
141 extern int ironbarsgoal1[16], ironbarsgoal2[16];
142 extern short ironbarsdone[16], ironbarsanim[16];
143 extern int ironbarsgoal[16];
144
145 extern int swingcnt;
146
147 struct Delayitem {
148 void (*func)(int);
149 int item;
150 int timer;
151 };
152
153 extern Delayitem delayitem[MAXSECTORS];
154
155 void crash(const char* fmt);
156 void drawscreen(Player *plr);
157 void doanimations(int32_t numtics);
158 void dodelayitems(int tics);
159 void setupboard(char* fname);
160 void shutdown();
161 int32_t setanimation(int32_t* animptr, int32_t thegoal, int32_t thevel);
162 int32_t getanimationgoal(int32_t* animptr);
163 void setdelayfunc(void (*func)(int), int item, int delay);
164 void intro();
165
166 extern int32_t synctics;
167 extern int32_t globhiz, globloz, globhihit, globlohit;
168 extern char option[];
169
170 // engine.cpp
171 void overwritesprite(int thex, int they, short tilenum, int8_t shade, char stat, char dapalnum);
172 void permanentwritesprite(int thex, int they, short tilenum, int8_t shade, int cx1, int cy1, int cx2, int cy2, char dapalnum);
173 void setbrightness(int32_t brightness);
174
175 #define kAngleMask 0x7FF
176 #define kTimerTicks 120
177 #define kTicksPerFrame (120/30)
178
Sin(int angle)179 inline int Sin(int angle)
180 {
181 return sintable[angle & kAngleMask];
182 }
183
Cos(int angle)184 inline int Cos(int angle)
185 {
186 return sintable[(angle + 512) & kAngleMask];
187 }
188
189 #endif
190