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