1 #ifndef ANIMATION_DATA_H_
2 #define ANIMATION_DATA_H_
3 
4 #include "JA2Types.h"
5 
6 
7 // DEFINES FOR ANIMATION PROFILES
8 #define TILE_FLAG_FEET			0x0001
9 #define TILE_FLAG_MID			0x0002
10 #define TILE_FLAG_HEAD			0x0004
11 #define TILE_FLAG_CANMOVE		0x0008
12 #define TILE_FLAG_NORTH_HALF		0x0010
13 #define TILE_FLAG_SOUTH_HALF		0x0020
14 #define TILE_FLAG_WEST_HALF		0x0040
15 #define TILE_FLAG_EAST_HALF		0x0080
16 #define TILE_FLAG_TOP_HALF		0x0100
17 #define TILE_FLAG_BOTTOM_HALF		0x0200
18 
19 #define ANIM_DATA_FLAG_NOFRAMES	0x01
20 
21 
22 // BODY TYPES
23 // RGM = Regular Male
24 // (RG) = Body desc ( Regular - RG, Short Stocky ( SS ), etc
25 // (M) = Sex, Male, female
26 #define IS_MERC_BODY_TYPE(p)		((p)->ubBodyType <= REGFEMALE)
27 #define IS_CIV_BODY_TYPE(p)		(FATCIV <= (p)->ubBodyType && (p)->ubBodyType <= CRIPPLECIV)
28 
29 #define NUMSOLDIERBODYTYPES		4
30 
31 enum SoldierBodyType
32 {
33 	BODY_RANDOM = -1,
34 	REGMALE = 0,
35 	BIGMALE,
36 	STOCKYMALE,
37 	REGFEMALE,
38 	ADULTFEMALEMONSTER,
39 	AM_MONSTER,
40 	YAF_MONSTER,
41 	YAM_MONSTER,
42 	LARVAE_MONSTER,
43 	INFANT_MONSTER,
44 	QUEENMONSTER,
45 	FATCIV,
46 	MANCIV,
47 	MINICIV,
48 	DRESSCIV,
49 	HATKIDCIV,
50 	KIDCIV,
51 	CRIPPLECIV,
52 
53 	COW,
54 	CROW,
55 	BLOODCAT,
56 
57 	ROBOTNOWEAPON,
58 
59 	HUMVEE,
60 	TANK_NW,
61 	TANK_NE,
62 	ELDORADO,
63 	ICECREAMTRUCK,
64 	JEEP,
65 
66 	TOTALBODYTYPES
67 };
68 
69 
70 // This enumeration defines the graphic image file per animation
71 
72 // RGM = Regular Male
73 // (RG) = Body desc ( Regular - RG, Short Stocky ( SS ), etc
74 // (M) = Sex, Male, female
75 enum AnimationSurfaceTypes
76 {
77 	RGMBASICWALKING = 0,
78 	RGMSTANDING,
79 	RGMCROUCHING,
80 	RGMSNEAKING,
81 	RGMRUNNING,
82 	RGMPRONE,
83 	RGMSTANDAIM,
84 	RGMHITHARD,
85 	RGMHITSTAND,
86 	RGMHITHARDBLOOD,
87 	RGMCROUCHAIM,
88 	RGMHITFALLBACK,
89 	RGMROLLOVER,
90 	RGMCLIMBROOF,
91 	RGMFALL,
92 	RGMFALLF,
93 	RGMHITCROUCH,
94 	RGMHITPRONE,
95 	RGMHOPFENCE,
96 	RGMPUNCH,
97 	RGMNOTHING_STD,
98 	RGMNOTHING_WALK,
99 	RGMNOTHING_RUN,
100 	RGMNOTHING_SWAT,
101 	RGMNOTHING_CROUCH,
102 	RGMHANDGUN_S_SHOT,
103 	RGMHANDGUN_C_SHOT,
104 	RGMHANDGUN_PRONE,
105 	RGMDIE_JFK,
106 	RGMOPEN,
107 	RGMPICKUP,
108 	RGMSTAB,
109 	RGMSLICE,
110 	RGMCSTAB,
111 	RGMMEDIC,
112 	RGMDODGE,
113 	RGMSTANDDWALAIM,
114 	RGMRAISE,
115 	RGMTHROW,
116 	RGMLOB,
117 	RGMKICKDOOR,
118 	RGMRHIT,
119 	RGM_SQUISH,
120 	RGM_LOOK,
121 	RGM_PULL,
122 	RGM_SPIT,
123 	RGMWATER_R_WALK,
124 	RGMWATER_R_STD,
125 	RGMWATER_N_WALK,
126 	RGMWATER_N_STD,
127 	RGMWATER_DIE,
128 	RGMWATER_N_AIM,
129 	RGMWATER_R_AIM,
130 	RGMWATER_DBLSHT,
131 	RGMWATER_TRANS,
132 	RGMDEEPWATER_TRED,
133 	RGMDEEPWATER_SWIM,
134 	RGMDEEPWATER_DIE,
135 	RGMMCLIMB,
136 	RGMHELIDROP,
137 	RGMLOWKICK,
138 	RGMNPUNCH,
139 	RGMSPINKICK,
140 	RGMSLEEP,
141 	RGMSHOOT_LOW,
142 	RGMCDBLSHOT,
143 	RGMHURTSTANDINGN,
144 	RGMHURTSTANDINGR,
145 	RGMHURTWALKINGN,
146 	RGMHURTWALKINGR,
147 	RGMHURTTRANS,
148 	RGMTHROWKNIFE,
149 	RGMBREATHKNIFE,
150 	RGMPISTOLBREATH,
151 	RGMCOWER,
152 	RGMROCKET,
153 	RGMMORTAR,
154 	RGMSIDESTEP,
155 	RGMDBLBREATH,
156 	RGMPUNCHLOW,
157 	RGMPISTOLSHOOTLOW,
158 	RGMWATERTHROW,
159 	RGMRADIO,
160 	RGMCRRADIO,
161 	RGMBURN,
162 	RGMDWPRONE,
163 	RGMDRUNK,
164 	RGMPISTOLDRUNK,
165 	RGMCROWBAR,
166 	RGMJUMPOVER,
167 
168 	BGMWALKING,
169 	BGMSTANDING,
170 	BGMCROUCHING,
171 	BGMSNEAKING,
172 	BGMRUNNING,
173 	BGMPRONE,
174 	BGMSTANDAIM,
175 	BGMHITHARD,
176 	BGMHITSTAND,
177 	BGMHITHARDBLOOD,
178 	BGMCROUCHAIM,
179 	BGMHITFALLBACK,
180 	BGMROLLOVER,
181 	BGMCLIMBROOF,
182 	BGMFALL,
183 	BGMFALLF,
184 	BGMHITCROUCH,
185 	BGMHITPRONE,
186 	BGMHOPFENCE,
187 	BGMPUNCH,
188 	BGMNOTHING_STD,
189 	BGMNOTHING_WALK,
190 	BGMNOTHING_RUN,
191 	BGMNOTHING_SWAT,
192 	BGMNOTHING_CROUCH,
193 	BGMHANDGUN_S_SHOT,
194 	BGMHANDGUN_C_SHOT,
195 	BGMHANDGUN_PRONE,
196 	BGMDIE_JFK,
197 	BGMOPEN,
198 	BGMPICKUP,
199 	BGMSTAB,
200 	BGMSLICE,
201 	BGMCSTAB,
202 	BGMMEDIC,
203 	BGMDODGE,
204 	BGMSTANDDWALAIM,
205 	BGMRAISE,
206 	BGMTHROW,
207 	BGMLOB,
208 	BGMKICKDOOR,
209 	BGMRHIT,
210 	BGMSTANDAIM2,
211 	BGMFLEX,
212 	BGMSTRECH,
213 	BGMSHOEDUST,
214 	BGMHEADTURN,
215 	BGMWATER_R_WALK,
216 	BGMWATER_R_STD,
217 	BGMWATER_N_WALK,
218 	BGMWATER_N_STD,
219 	BGMWATER_DIE,
220 	BGMWATER_N_AIM,
221 	BGMWATER_R_AIM,
222 	BGMWATER_DBLSHT,
223 	BGMWATER_TRANS,
224 	BGMDEEPWATER_TRED,
225 	BGMDEEPWATER_SWIM,
226 	BGMDEEPWATER_DIE,
227 	BGMHELIDROP,
228 	BGMSLEEP,
229 	BGMSHOOT_LOW,
230 	BGMTHREATENSTAND,
231 	BGMCDBLSHOT,
232 	BGMHURTSTANDINGN,
233 	BGMHURTSTANDINGR,
234 	BGMHURTWALKINGN,
235 	BGMHURTWALKINGR,
236 	BGMHURTTRANS,
237 	BGMTHROWKNIFE,
238 	BGMBREATHKNIFE,
239 	BGMPISTOLBREATH,
240 	BGMCOWER,
241 	BGMRAISE2,
242 	BGMROCKET,
243 	BGMMORTAR,
244 	BGMSIDESTEP,
245 	BGMDBLBREATH,
246 	BGMPUNCHLOW,
247 	BGMPISTOLSHOOTLOW,
248 	BGMWATERTHROW,
249 	BGMWALK2,
250 	BGMRUN2,
251 	BGMIDLENECK,
252 	BGMCROUCHTRANS,
253 	BGMRADIO,
254 	BGMCRRADIO,
255 	BGMDWPRONE,
256 	BGMDRUNK,
257 	BGMPISTOLDRUNK,
258 	BGMCROWBAR,
259 	BGMJUMPOVER,
260 
261 
262 	RGFWALKING,
263 	RGFSTANDING,
264 	RGFCROUCHING,
265 	RGFSNEAKING,
266 	RGFRUNNING,
267 	RGFPRONE,
268 	RGFSTANDAIM,
269 	RGFHITHARD,
270 	RGFHITSTAND,
271 	RGFHITHARDBLOOD,
272 	RGFCROUCHAIM,
273 	RGFHITFALLBACK,
274 	RGFROLLOVER,
275 	RGFCLIMBROOF,
276 	RGFFALL,
277 	RGFFALLF,
278 	RGFHITCROUCH,
279 	RGFHITPRONE,
280 	RGFHOPFENCE,
281 	RGFPUNCH,
282 	RGFNOTHING_STD,
283 	RGFNOTHING_WALK,
284 	RGFNOTHING_RUN,
285 	RGFNOTHING_SWAT,
286 	RGFNOTHING_CROUCH,
287 	RGFHANDGUN_S_SHOT,
288 	RGFHANDGUN_C_SHOT,
289 	RGFHANDGUN_PRONE,
290 	RGFDIE_JFK,
291 	RGFOPEN,
292 	RGFPICKUP,
293 	RGFSTAB,
294 	RGFSLICE,
295 	RGFCSTAB,
296 	RGFMEDIC,
297 	RGFDODGE,
298 	RGFSTANDDWALAIM,
299 	RGFRAISE,
300 	RGFTHROW,
301 	RGFLOB,
302 	RGFKICKDOOR,
303 	RGFRHIT,
304 	RGFCLEAN,
305 	RGFKICKSN,
306 	RGFALOOK,
307 	RGFWIPE,
308 	RGFWATER_R_WALK,
309 	RGFWATER_R_STD,
310 	RGFWATER_N_WALK,
311 	RGFWATER_N_STD,
312 	RGFWATER_DIE,
313 	RGFWATER_N_AIM,
314 	RGFWATER_R_AIM,
315 	RGFWATER_DBLSHT,
316 	RGFWATER_TRANS,
317 	RGFDEEPWATER_TRED,
318 	RGFDEEPWATER_SWIM,
319 	RGFDEEPWATER_DIE,
320 	RGFHELIDROP,
321 	RGFSLEEP,
322 	RGFSHOOT_LOW,
323 	RGFCDBLSHOT,
324 	RGFHURTSTANDINGN,
325 	RGFHURTSTANDINGR,
326 	RGFHURTWALKINGN,
327 	RGFHURTWALKINGR,
328 	RGFHURTTRANS,
329 	RGFTHROWKNIFE,
330 	RGFBREATHKNIFE,
331 	RGFPISTOLBREATH,
332 	RGFCOWER,
333 	RGFROCKET,
334 	RGFMORTAR,
335 	RGFSIDESTEP,
336 	RGFDBLBREATH,
337 	RGFPUNCHLOW,
338 	RGFPISTOLSHOOTLOW,
339 	RGFWATERTHROW,
340 	RGFRADIO,
341 	RGFCRRADIO,
342 	RGFSLAP,
343 	RGFDWPRONE,
344 	RGFDRUNK,
345 	RGFPISTOLDRUNK,
346 	RGFCROWBAR,
347 	RGFJUMPOVER,
348 
349 	AFMONSTERSTANDING,
350 	AFMONSTERWALKING,
351 	AFMONSTERATTACK,
352 	AFMONSTERCLOSEATTACK,
353 	AFMONSTERSPITATTACK,
354 	AFMONSTEREATING,
355 	AFMONSTERDIE,
356 	AFMUP,
357 	AFMJUMP,
358 	AFMMELT,
359 
360 	LVBREATH,
361 	LVDIE,
362 	LVWALK,
363 
364 	IBREATH,
365 	IWALK,
366 	IDIE,
367 	IEAT,
368 	IATTACK,
369 
370 	QUEENMONSTERSTANDING,
371 	QUEENMONSTERREADY,
372 	QUEENMONSTERSPIT_SW,
373 	QUEENMONSTERSPIT_E,
374 	QUEENMONSTERSPIT_NE,
375 	QUEENMONSTERSPIT_S,
376 	QUEENMONSTERSPIT_SE,
377 	QUEENMONSTERDEATH,
378 	QUEENMONSTERSWIPE,
379 
380 	FATMANSTANDING,
381 	FATMANWALKING,
382 	FATMANRUNNING,
383 	FATMANDIE,
384 	FATMANASS,
385 	FATMANACT,
386 	FATMANCOWER,
387 	FATMANDIE2,
388 	FATMANCOWERHIT,
389 
390 	MANCIVSTANDING,
391 	MANCIVWALKING,
392 	MANCIVRUNNING,
393 	MANCIVDIE,
394 	MANCIVACT,
395 	MANCIVCOWER,
396 	MANCIVDIE2,
397 	MANCIVSMACKED,
398 	MANCIVPUNCH,
399 	MANCIVCOWERHIT,
400 
401 	MINICIVSTANDING,
402 	MINICIVWALKING,
403 	MINICIVRUNNING,
404 	MINICIVDIE,
405 	MINISTOCKING,
406 	MINIACT,
407 	MINICOWER,
408 	MINIDIE2,
409 	MINICOWERHIT,
410 
411 	DRESSCIVSTANDING,
412 	DRESSCIVWALKING,
413 	DRESSCIVRUNNING,
414 	DRESSCIVDIE,
415 	DRESSCIVACT,
416 	DRESSCIVCOWER,
417 	DRESSCIVDIE2,
418 	DRESSCIVCOWERHIT,
419 
420 	HATKIDCIVSTANDING,
421 	HATKIDCIVWALKING,
422 	HATKIDCIVRUNNING,
423 	HATKIDCIVDIE,
424 	HATKIDCIVJFK,
425 	HATKIDCIVYOYO,
426 	HATKIDCIVACT,
427 	HATKIDCIVCOWER,
428 	HATKIDCIVDIE2,
429 	HATKIDCIVCOWERHIT,
430 	HATKIDCIVSKIP,
431 
432 	KIDCIVSTANDING,
433 	KIDCIVWALKING,
434 	KIDCIVRUNNING,
435 	KIDCIVDIE,
436 	KIDCIVJFK,
437 	KIDCIVARMPIT,
438 	KIDCIVACT,
439 	KIDCIVCOWER,
440 	KIDCIVDIE2,
441 	KIDCIVCOWERHIT,
442 	KIDCIVSKIP,
443 
444 	CRIPCIVSTANDING,
445 	CRIPCIVWALKING,
446 	CRIPCIVRUNNING,
447 	CRIPCIVBEG,
448 	CRIPCIVDIE,
449 	CRIPCIVDIE2,
450 	CRIPCIVKICK,
451 
452 	COWSTANDING,
453 	COWWALKING,
454 	COWDIE,
455 	COWEAT,
456 
457 	CROWWALKING,
458 	CROWFLYING,
459 	CROWEATING,
460 	CROWDYING,
461 
462 	CATBREATH,
463 	CATWALK,
464 	CATRUN,
465 	CATREADY,
466 	CATHIT,
467 	CATDIE,
468 	CATSWIPE,
469 	CATBITE,
470 
471 	ROBOTNWBREATH,
472 	ROBOTNWWALK,
473 	ROBOTNWHIT,
474 	ROBOTNWDIE,
475 	ROBOTNWSHOOT,
476 
477 	HUMVEE_BASIC,
478 	HUMVEE_DIE,
479 
480 	TANKNW_READY,
481 	TANKNW_SHOOT,
482 	TANKNW_DIE,
483 
484 	TANKNE_READY,
485 	TANKNE_SHOOT,
486 	TANKNE_DIE,
487 
488 	ELDORADO_BASIC,
489 	ELDORADO_DIE,
490 
491 	ICECREAMTRUCK_BASIC,
492 	ICECREAMTRUCK_DIE,
493 
494 	JEEP_BASIC,
495 	JEEP_DIE,
496 
497 	BODYEXPLODE,
498 
499 	NUMANIMATIONSURFACETYPES
500 };
501 
502 // Enumerations for struct data
503 enum
504 {
505 	S_STRUCT,
506 	C_STRUCT,
507 	P_STRUCT,
508 	F_STRUCT,
509 	FB_STRUCT,
510 	DEFAULT_STRUCT,
511 	NUM_STRUCT_IDS,
512 	NO_STRUCT = 120,
513 };
514 
515 // Struct for animation 'surface' information
516 struct AnimationSurfaceType
517 {
518 	const UINT16 ubName;
519 	const char   Filename[50];
520 	const CHAR8  bStructDataType;
521 	const UINT8  ubFlags;
522 	const UINT32 uiNumDirections;
523 	UINT32       uiNumFramesPerDir;
524 	HVOBJECT     hVideoObject;
525 	INT8         bUsageCount;
526 	const INT8   bProfile;
527 };
528 
529 
530 extern AnimationSurfaceType gAnimSurfaceDatabase[NUMANIMATIONSURFACETYPES];
531 
532 
533 void InitAnimationSystem(void);
534 void DeInitAnimationSystem(void);
535 void LoadAnimationSurface(UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState);
536 void UnLoadAnimationSurface(UINT16 usSoldierID, UINT16 usSurfaceIndex);
537 void ClearAnimationSurfacesUsageHistory( UINT16 usSoldierID );
538 
539 
540 STRUCTURE_FILE_REF* GetAnimationStructureRef(const SOLDIERTYPE* s, UINT16 usSurfaceIndex, UINT16 usAnimState);
541 
542 // Profile data
543 extern ANIM_PROF* gpAnimProfiles;
544 
545 void ZeroAnimSurfaceCounts(void);
546 
547 #endif
548