source: Daodan/src/Oni_Character.h@ 606

Last change on this file since 606 was 484, checked in by gumby, 15 years ago

ZOMG FLATLINE

File size: 21.6 KB
Line 
1#pragma once
2#ifndef ONI_CHARACTER_H
3#define ONI_CHARACTER_H
4
5#include "Oni.h"
6#include <stdint.h>
7#include <stdbool.h>
8
9typedef struct {
10 float X;
11 float Y;
12 float Z;
13} Vector3; //probably move to utilities...
14
15typedef struct {
16 float X;
17 float Y;
18 float Z;
19 float W;
20} Quaternion;
21
22typedef struct {
23 float RotationScale[9];
24 Vector3 Translation;
25} Matrix4x3;
26
27typedef struct {
28 Vector3 Center;
29 float Radius;
30} Sphere;
31
32typedef struct {
33 Sphere Sphere_; //fix this name
34 int Child1;
35 int Child2;
36} SphereTreeNode;
37
38typedef struct {
39 Vector3 Min;
40 Vector3 Max;
41} BoundingBox;
42
43
44enum { //action flags
45 Action_Escape = 1,
46 Action_Console = 2,
47 Action_PauseScreen = 4,
48 Action_Cutscene_1 = 8,
49 Action_Cutscene_2 = 0x10,
50 Action_F4 = 0x20,
51 Action_F5 = 0x40,
52 Action_F6 = 0x80,
53 Action_F7 = 0x100,
54 Action_F8 = 0x200,
55 Action_StartRecord = 0x400,
56 Action_StopRecord = 0x800,
57 Action_PlayRecord = 0x1000,
58 Action_F12 = 0x2000,
59 Action_Unknown1 = 0x4000,
60 Action_LookMode = 0x8000,
61 Action_Screenshot = 0x10000,
62 Action_Unknown2 = 0x20000,
63 Action_Unknown3 = 0x40000,
64 Action_Unknown4 = 0x80000,
65 Action_Unknown5 = 0x100000,
66 Action_Forward = 0x200000,
67 Action_Backward = 0x400000,
68 Action_TurnLeft = 0x800000,
69 Action_TurnRight = 0x1000000,
70 Action_StepLeft = 0x2000000,
71 Action_StepRight = 0x4000000,
72 Action_Jump = 0x8000000,
73 Action_Crouch = 0x10000000,
74 Action_Punch = 0x20000000,
75 Action_Kick = 0x40000000,
76 Action_Block = 0x80000000,
77 //used in second action field
78 Action2_Walk = 1,
79 Action2_Action = 2,
80 Action2_Hypo = 4,
81 Action2_Reload = 8,
82 Action2_Swap = 0x10,
83 Action2_Drop = 0x20,
84 Action2_Fire1 = 0x40,
85 Action2_Fire2 = 0x80,
86 Action2_Fire3 = 0x100,
87};
88
89
90typedef struct {
91 int32_t Actions1;
92 int32_t Actions2;
93} InputAction;
94
95
96typedef struct {
97 float MouseDeltaX;
98 float MouseDeltaY;
99 float field_8;
100 float field_C;
101 InputAction Current;
102 InputAction Stopped;
103 InputAction Start;
104 InputAction Stop;
105} GameInput;
106
107typedef struct {
108 int Type; //'CHAR' etc.
109 int ObjectId; //not needed
110 int Flags; //The flags of the object...not used for CHAR
111 Vector3 Position; //Position of Object
112 Vector3 Rotation; //Rotation of Object
113 int EditorCallbacks; //Lets try not to mess with it for now. :P
114 int field_28; //unknown
115} OSD_Header;
116
117typedef struct {
118 int32_t Flags;
119 int32_t Frame;
120 int32_t field_8;
121 int32_t field_C;
122 int32_t field_10;
123 int32_t field_14;
124 int32_t field_18;
125 int32_t field_1C;
126 int32_t FILMInstance;
127} PlayingFilm;
128
129typedef enum {
130 chr_isplayer = 1 << 0,
131 chr_randomskin = 1 << 1,
132 chr_notprespawned = 1 << 2,
133 chr_noncombatant = 1 << 3,
134 chr_multispawnable = 1 << 4,
135 chr_unkillable = 1 << 5,
136 chr_superammo = 1 << 6,
137 chr_omniscient = 1 << 8,
138 chr_haslsi = 1 << 9,
139 chr_boss = 1 << 10,
140 chr_upgradedifficulty = 1 << 11,
141 chr_noautodrop = 1 << 12,
142 chr_dontaim = 1 << 13,
143 chr_nocollision = 1 << 17,
144 chr_noshadow = 1 << 24,
145 chr_invincible = 1 << 25,
146 chr_bossshield = 1 << 30,
147 chr_weaponimmune = 1 << 31,
148} chr_flags;
149/*
150enum {
151chr_isplayer = 0x00000001, //is player character
152chr_randomskin = 0x00000002, //gets random skin from ONCV
153chr_notprespawned = 0x00000004, //isn't spawned at level creation
154chr_noncombatant = 0x00000008, //doesn't fight
155chr_multispawnable = 0x00000010, //can spawn up to 5 without forcing
156chr_unknown = 0x00000020, //
157chr_unkillable = 0x00000040, //can only be brought to 1 hp
158chr_superammo = 0x00000080, //infinite ammo
159chr_omniscient = 0x00000100, //touchofdeath
160chr_haslsi = 0x00000200, //drops an lsi
161chr_boss = 0x00000400, //is a boss character
162chr_upgradedifficulty = 0x00000800, //upgrade the difficulty if you play on med\hard
163chr_noautodrop = 0x00001000, //uses drop fields instead of has fields on death
164}; //
165*/
166
167typedef struct {
168 uint32_t Options; //A bitset. Someone had better define these
169 char Class[64]; //Name of the ONCC we use. ONCCName in idb
170 char Name[32]; //Name of the character. ie: ai2_spawn Muro
171 char Weapon[64]; //Name of the weapon he holds. ONWCName in idb
172 char ScriptSpawn[32]; //Script function called when char spawns
173 char ScriptDie[32]; //Script function called when char dies
174 char ScriptAware[32]; //Script function called when char detects something
175 char ScriptAlarm[32]; //Script function called when char is alarmed at something
176 char ScriptHurt[32]; //Script function called when char is hurt for the first time
177 char ScriptDefeat[32]; //Script function called when char is at 1 HP
178 char ScriptNoPath[32]; //Script function called when char loses path. Broken.
179 char ScriptNoAmmo[32]; //Script function called when char is out of ammo for the first time. Char must have ammo at spawn.
180 int32_t AdditionalHealth; //Additional Health given to the character
181 int16_t AmmoUsed; //Ammo given for the char to use
182 int16_t AmmoDropped; //Ammo the char drops
183 int16_t CellsUsed; //Cells given for the char to use
184 int16_t CellsDropped; //Cells the char drops
185 int16_t HypoUsed; //Hypo given for the char to use
186 int16_t HypoDropped; //Hypo the char drops
187 int16_t ShieldUsed; //Bullet shield given for the char to use
188 int16_t ShieldDropped; //Bullet shield the char drops
189 int16_t CloakUsed; //Phase Cloak given for the char to use
190 int16_t CloakDropped; //Phase Cloak the char drops
191 int16_t NCIUsed; //Don't use this...
192 int16_t NCIDropped; //Don't use this...
193 int32_t TeamID; //Team ID
194 int32_t AmmoPercent; //Percent of weapon ammo full
195 int32_t JobID; //Job ID...
196 //0 - none
197 //1 - idle
198 //2 - guard (never used in Oni)
199 //3 - patrol
200 //4 - teambattle (never used in Oni)
201 int16_t PatrolID; //patrol path ID (reference to the Patrol_Path.BINA file)
202 int16_t CombatID; //combat ID (reference to the Combat.BINA file)
203 int16_t MeleeID; //melee ID (reference to the Melee Profile.BINA file)
204 int16_t NeutralID; //neutral ID (reference to the Neutral.BINA file)
205 int32_t AlarmGroups; //Bitset. http://wiki.oni2.net/CHAR
206 int32_t InitialAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
207 int32_t MinimalAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
208 int32_t StartJobAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
209 int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
210 int32_t PursuitStrongLow;
211 int32_t PursuitWeakLow;
212 int32_t PursuitStrongHigh;
213 int32_t PursuitWeakHigh;
214 int32_t Pursuit5;
215 int32_t field_1FC;
216} CharacterOSD;
217
218typedef struct {
219 OSD_Header Header;
220 CharacterOSD OSD;
221} CharacterObject;
222
223typedef struct {
224 Vector3 Center;
225 float Radius;
226} BoundingSphere;
227
228typedef struct {
229 int32_t ONCP; //probably pointer
230 int32_t field_4; //who knows?
231 int32_t Instance; //probably link to actual particle
232 int32_t Bone; //duh
233} AttachedParticle;
234
235typedef struct { //Inventory
236 int32_t Weapons[3];
237 int16_t field_1A0; //10 bucks says this is the current weapon
238 int16_t AmmoUsed; //Ammo given for the char to use
239 int16_t HypoUsed; //Hypo given for the char to use
240 int16_t CellsUsed; //Cells given for the char to use
241 int16_t AmmoDropped; //Ammo the char drops
242 int16_t HypoDropped; //Hypo the char drops
243 int16_t CellsDropped; //Cells the char drops
244 int16_t field_1A; //who knows? InverseHypoRegenRate?
245 int16_t field_1C;
246 int16_t field_1E;
247 char hasLSI;
248 char field_1B5;
249 int16_t field_1B6;
250 int16_t ShieldUsed; //Bullet shield given for the char to use
251 int16_t CloakUsed; //Phase Cloak given for the char to use
252 int32_t field_28; //probably bullet shield dropped
253 int32_t DoorKeys; //Lol. We can use this later for other sorts of items.
254} Inventory;
255
256typedef struct {
257 uint32_t SphereTree;
258 Vector3 ObBox[8];
259 Vector3 * ObBowPtr;
260 Vector3 Velocity;
261 Quaternion field_74;
262 Vector3 Position;
263 Quaternion Rotation;
264 float Scale;
265 Matrix4x3 Matrix;
266 Matrix4x3 InitMatrix;
267 float field_104;
268 float Gravity;
269 float field_10C;
270 float field_110;
271 float Friction_1;
272 float Friction_2;
273 Vector3 Force;
274 uint32_t Flags;
275 uint32_t Type;
276 char AnimState[0x18];
277 void* Callbacks;
278 void* Owner;
279} PhyContext;
280
281typedef struct { //ActiveCharacter
282 int16_t Number;
283 int16_t field_2; //probably Number is an int32
284 PhyContext * PhyContext_;
285 SphereTreeNode SphereTree1; //probably SphereTree[7]...
286 SphereTreeNode SphereTree3[4];
287 SphereTreeNode SphereTree2[2];
288 int16_t field_B0;
289 int16_t field_B2;
290 int16_t field_B4;
291 int16_t field_B6;
292 Vector3 field_B8;
293 Vector3 AccelerateWith;
294 int32_t field_D0;
295 Vector3 field_D4;
296 int32_t field_E0;
297 int32_t field_E4;
298 int32_t field_E8;
299 int32_t field_EC;
300 float SomePhyPosY;
301 int16_t field_F4;
302 int16_t IsInAirTimer;
303 Vector3 FallingVelocity;
304 Vector3 JumpVelocity;
305 char StartJumpPending;
306 char field_111;
307 int16_t field_112;
308 Vector3 field_114;
309 int32_t LastDamageSourceCharacter;
310 int32_t field_11C;
311 int32_t field_120;
312 int32_t field_124;
313 int32_t field_128;
314 int32_t field_12C;
315 BoundingSphere BoundingSphere_; //fix this name
316 Vector3 field_140;
317 Vector3 field_14C;
318 int32_t field_158;
319 int32_t field_15C;
320 Vector3 Location;
321 int32_t field_16C[6]; //16C-184 ???
322 int32_t AkiraNode;
323 int32_t GraphNode;
324 int32_t PelvisHeight;
325 int32_t MovementStatePtr;
326 int32_t ActiveWeapon; //NOTE: FIGURE OUT THIS MESS OF INVENTORY...
327 int32_t field_198; //maybe weap 3, maybe not...
328 int32_t InventoryWeapon;
329 int16_t field_1A0; //unused?
330 int16_t AmmoUsable; //Ammo given for the char to use
331 int16_t HypoUsable; //Hypo given for the char to use
332 int16_t CellsUsable; //Cells given for the char to use
333 int16_t AmmoDropped; //Ammo the char drops
334 int16_t HypoDropped; //Hypo the char drops
335 int16_t CellsDropped; //Cells the char drops
336 int16_t field_1AE;
337 int16_t InverseHypoRegenRate;
338 int16_t ShieldDropped;
339 int16_t CloakDropped;
340 int16_t field_1B4;
341 int16_t field_1B6;
342 int16_t ShieldUsable;
343 int16_t CloakUsable;
344 int16_t field_1BC[9]; //1BC-1E0
345 int32_t NotIdleStartTime;
346 int32_t TimeToIdle;
347 int32_t field_1E8[1315]; //1E8-1648 what the hell is all this?
348 BoundingBox BoundingBox_; //fix this name
349 int32_t field_1660;
350 int32_t field_1664;
351 int32_t ShieldPower; //Same as Boss Shield Power???
352 int32_t field_166C;
353 int32_t NumberOfKills; //^_^
354 int32_t InflictedDamage; //^_^
355 int32_t field_1678[260]; //1678-1A88 more wtf
356 int32_t field_1A88; //here starts animation junk? It was 4 bools in idb O_o
357 int32_t Executor_AimingDirection; //possibly throw junk?
358 int32_t field_1A98;
359 int32_t field_1A9C;
360 int32_t Executor_ActualMovementMode;
361 int32_t field_1AA4;
362 int32_t field_1AA8;
363 int32_t field_1AAC;
364 int32_t Executor_HasFacingOverride; //a bool...
365 float Executor_AimingSpeed;
366 onibool field_1AB8; //actually a bitset...
367 onibool Executor_HasMoveOverride;
368 int16_t field_1ABA;
369 int32_t field_1ABC;
370 int32_t field_1AC0;
371 int32_t field_1AC4;
372 int32_t Executor_FacingOverride;
373 int32_t Executor_HasAttackOverride; //another bool :P
374 int32_t field_1AD0;
375 int32_t field_1AD4;
376 int32_t field_1AD8;
377 int32_t field_1ADC;
378 int32_t field_1AE0;
379 int32_t field_1AE4;
380 int32_t Executor_HasThrowOverride; //another another bool
381 int32_t field_1AEC;
382 int32_t field_1AF0;
383 int32_t field_1AF4;
384 int32_t Animation;
385 int16_t AnimationToState;
386 int16_t AnimationFromState;
387 int16_t AnimationType;
388 int16_t NextAnimationType;
389 int16_t field_1B04;
390 int16_t field_1B06;
391 int32_t Stitch; //bool
392 float StitchHeight;
393 int16_t InterpolationFromState;
394 int16_t field_1B12;
395 Vector3 StitchVelocity;
396 int16_t InterpolationCurrentFrame;
397 int16_t InterpolationLength;
398 Quaternion InterpolationStartRotations[19];
399 int32_t field_1C54;
400 int32_t field_1C58;
401 int32_t field_1C5C;
402 int32_t field_1C60;
403 int32_t Overlay;
404 int32_t field_1C68;
405 int32_t field_1C6C;
406 int32_t field_1C70;
407 int32_t field_1C74;
408 int32_t field_1C78;
409 int32_t field_1C7C;
410 int32_t field_1C80;
411 int32_t field_1C84;
412 int16_t Frame;
413 int16_t SoftPause;
414 int16_t HardPause;
415 int16_t field1C8E;
416 int32_t field1C90;
417 int16_t field1C94;
418 int16_t field1C96;
419 int16_t Dizzy;
420 int16_t field1C9A;
421 int32_t field1C9C;
422 int16_t AnimationVarient;
423 int16_t TimeToPeace;
424 int16_t NumAnimationAttachedParticles;
425 int16_t field_1CA6; //spacing
426 AttachedParticle AnimationAttachedParticles[16];
427 int32_t TRAMParticles;
428 onibool FixedParticlesAttached;
429 onibool FixedParticlesStarted;
430 int16_t NumFixedParticles;
431 AttachedParticle FixedParticles[16];
432 int16_t CurrentAnimationType;
433 int16_t field_1EB2; //spacing
434 int32_t field_1EB4;
435 int32_t field_1EB8;
436 int32_t field_1EBC;
437 int32_t field_1EC0;
438 int32_t field_1EC4;
439 int32_t field_1EC8;
440 int32_t field_1ED0;
441 int32_t field_1ED4;
442 int32_t field_1ED8;
443 int32_t field_1EE0;
444 int32_t field_1EE4;
445 int32_t field_1EE8;
446 Quaternion Rotations[19];
447 Quaternion OverlayRotations[19];
448 int32_t field_2150;
449 int32_t field_2154;
450 GameInput Input;
451 InputAction PreviousActions;
452 int32_t SprintTimer;
453 int32_t field_2194;
454 Vector3 field_2198;
455 int32_t field_21A4;
456 int32_t field_21A8;
457 int32_t field_21AC;
458 Vector3 field_21B0;
459 float HeadFacing;
460 float HeadPitch;
461 int32_t field_21C4;
462 int32_t field_21C8;
463 int32_t field_21D0;
464 int32_t field_21D4;
465 onibool field_21D8;
466 onibool field_21D9;
467 onibool field_21DA;
468 onibool field_21DB;
469 onibool field_21DC;
470 onibool field_21DD;
471 onibool field_21DE;
472 onibool field_21DF;
473 onibool field_21E0;
474 onibool HasAlternateTrigger;
475 onibool field_21E2;
476 onibool ReleaseTrigger;
477 onibool ReleaseAlternateTrigger;
478 onibool TurningLeft;
479 onibool TurningRight;
480 onibool field_21E7;
481 int32_t field_21E8;
482 int32_t field_21EC;
483 int32_t field_21F0;
484 PlayingFilm PlayingFilm_; //fix this name
485 int32_t field_2218[24]; //2218-2278
486 Matrix4x3 BoneMatrices[19];
487 Matrix4x3 WeaponMatrix;
488 int32_t field_2638[113]; //2638-27FC
489 int16_t ShadowIndex;
490 int16_t field_27FE;
491 int16_t field_2780;
492 onibool ShieldParts[19];
493 onibool field_2815; //padding...
494 onibool field_2816;
495 onibool field_2817;
496 int32_t field_2818[8];
497} ActiveCharacter;
498
499//This struct is good.
500typedef struct { //Character
501 char Number;
502 char field_2;
503 int16_t ActiveCharacterIndex;
504 int32_t Flags;
505 int32_t field_8;
506 int32_t* ONCC; //change type to ONCC when we get that far...
507 int16_t field_10;
508 int16_t Team;
509 char Name[32];
510 float BodySize;
511 int32_t Health;
512 int32_t MaxHealth;
513 int32_t ASIA_ID; //might be 16 with 2 byte padding
514 int32_t field_44;
515 char ScriptSpawn[32]; //Script function called when char spawns
516 char ScriptDie[32]; //Script function called when char dies
517 char ScriptAware[32]; //Script function called when char detects something
518 char ScriptAlarm[32]; //Script function called when char is alarmed at something
519 char ScriptHurt[32]; //Script function called when char is hurt for the first time
520 char ScriptDefeat[32]; //Script function called when char is at 1 HP
521 char ScriptNoAmmo[32]; //Script function called when char is out of ammo for the first time. Char must have ammo at spawn.
522 char ScriptNoPath[32]; //Script function called when char loses path. Broken.
523 Vector3 Position;
524 Vector3 LastPosition;
525 Vector3 Location;
526 float Facing;
527 float DesiredFacing;
528 float CosmeticFacing;
529 float field_178;
530 float field_17C;
531 float field_180;
532 int32_t BNV;
533 int32_t GraphNode;
534 float PelvisHeight;
535 float field_190;
536 Inventory Inventory_; //is there a better way to do this?
537 Vector3 Velocity;
538 int32_t field_1D0;
539 int32_t Recoil;
540 int32_t field_1D8;
541 int32_t field_1DC;
542 int32_t LastNotIdleGameTime;
543 int32_t IdleDelay;
544 int32_t Type;
545 int32_t field_1EC;
546 int32_t CombatFlags;
547 int32_t JobId;
548 int32_t Goal;
549 int32_t field_1FC;
550 int32_t field_200;
551 int32_t field_204;
552 int32_t field_208[428]; //208-8B8
553 int32_t CombatState; //I think....
554 int32_t field_8BC;
555 int32_t PatrolPathOSD[10]; //actually another struct. Not needed atm.
556 int32_t PatrolPathPoints[5][64]; //64 of another struct
557 int32_t field_DE8[98]; //DE8-F70
558 int32_t CombatStatePtr;
559 int32_t KnowledgeState[4]; //Another struct
560 int32_t field_F84;
561 int32_t AlertDecayTimer;
562 int32_t field_F8C;
563 int32_t field_F90;
564 int32_t InitialAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
565 int32_t MinimalAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
566 int32_t StartJobAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
567 int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
568 int32_t StartleTime;
569 int32_t field_FA8;
570 int32_t field_FAC;
571 int32_t field_FB0;
572 int32_t PursuitStrongLow;
573 int32_t PursuitWeakLow;
574 int32_t PursuitStrongHigh;
575 int32_t PursuitWeakHigh;
576 int32_t Pursuit5;
577 int32_t field_FC8[4];
578 int32_t AlarmGroups; //a bitset
579 int32_t field_FDC[17]; //FDC-1020
580 int32_t DazeTimer;
581 int32_t field_1024[17]; //1024-1068
582 int32_t MeleePtr; //probably MELE. Looks somewhat important.
583 int32_t field_106C[270]; //106C-14A4 skipping lots of junk and a little pathfinding stuff that we might want later.
584 int32_t MovementMode;
585 int32_t field_14A8;
586 int32_t field_14AC;
587 int32_t MovementModifiers; //hopefully sprinting, pistol, rifle, etc.
588 int32_t field_14B4[101]; //14B4-1648 Glossing over a few other things we don't need having to do with AI direction.
589 BoundingBox BoundingBox_;
590 int32_t field_1660;
591 int32_t BossShieldPower; //a multiplier? or just a flag? who knows
592 int32_t field_1668[6];
593 int32_t CurrentConsoleActionMarker; //not sure.
594 int32_t field_1684[7];
595} Character;
596
597enum {
598 team_konoko,
599 team_tctf,
600 team_syndicate,
601 team_neutral,
602 team_securityguard,
603 team_rougekonoko,
604 team_switzerland,
605 team_syndicateaccessory,
606};
607int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, uint32_t* list_location);
608int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr);
609//int16_t ONICALL ONrGameState_GetPlayerCharacter();
610
611//probably need to name these better.
612#define char_unkillable (1 << 5)
613#define char_superammo (1 << 6)
614#define char_unstoppable (1 << 8)
615#define char_deathlock (1 << 10)
616#define char_dontaim (1 << 13)
617#define char_nocollision (1 << 17)
618#define char_noshadow (1 << 24)
619#define char_invincible (1 << 25)
620#define char_bossshield (1 << 30)
621#define char_weaponimmune (1 << 31)
622
623
624//We need a Oni_Structs #include file.
625
626typedef struct {
627 uint32_t TimerMode;
628 char TimerName[32];
629 uint32_t TimerDuration;
630 uint32_t field_28;
631 uint32_t field_2C;
632 uint32_t Letterbox[3];
633 uint32_t field_3C;
634 uint32_t field_40;
635 uint32_t CutsceneSyncMark;
636 uint32_t SomeCutsceneSyncMarkField;
637 uint32_t field_4C;
638 uint32_t SplashScreenMachineTime;
639 uint32_t field_54;
640 uint32_t field_58;
641 uint32_t field_5C;
642 uint32_t field_60;
643 uint32_t field_64;
644 uint32_t field_68;
645 uint32_t field_6C;
646 uint32_t field_70;
647 uint32_t FadeStartTime;
648 uint32_t FadeEndTime;
649 uint32_t field_7C;
650 uint32_t Camera;
651 char PathFindingGraph[0x28];
652 struct Character *PlayerCharacter;
653 uint32_t field_B0;
654 uint32_t field_B4;
655 GameInput Input;
656 uint32_t field_E8;
657 uint32_t field_EC;
658 uint32_t ScreenshotEveryFrame; //bool?
659 uint32_t field_F4;
660 char field_F8;
661 char field_F9;
662 char field_FA;
663 char field_FB;
664 uint32_t field_FC;
665 uint32_t field_100;
666 uint32_t SlowMo; //bool
667 uint32_t SlowMotion;
668 uint32_t field_10C;
669 uint32_t field_110;
670 uint32_t field_114;
671 char SplashScreenTextureName[32];
672 uint32_t field_138;
673 uint32_t field_13C;
674 uint32_t field_140;
675 uint32_t GameTime;
676 uint32_t field_148;
677 uint32_t field_14C;
678 uint32_t Level;
679 uint32_t field_154;
680 char MotionBlur[0x44][64];
681 uint32_t MotionBlurCount;
682 uint16_t field_125C;
683 uint16_t field_125E;
684 Character CharacterStorage[128];
685 uint16_t CharacterCount;
686 uint16_t padding_1;
687 uint32_t field_B6264;
688 char ActiveCharacters[0x2838][64]; //Active Character Struct isn't the proper size atm.
689 uint16_t ActiveCharactersCount;
690 char Shadows[32][0x804];
691 uint32_t field_1670EA;
692 uint32_t ShadowCount;
693 ActiveCharacter* ActiveCharacterList[128]; //or just Character*? Anyways, we wont need to use this.
694 uint32_t ActiveCharacterListCount;
695 uint32_t ActiveCharacterListLock;
696 Character* LivingCharacterList[128];
697 uint32_t LivingCharacterListCount;
698 uint32_t LivingCharacterListLock;
699 ActiveCharacter* PresentCharacterList[128];
700 uint32_t PresentCharacterListCount;
701 uint32_t PresentCharacterListLock;
702 void* ObjectList;
703 char DoorArray[8];
704 char Sky[0x290];
705 uint32_t field_1679A4;
706 uint32_t Triggers;
707 char IsGamePaused;
708 char IsInputEnabled;
709 char field_1679AE;
710 char field_1679AF;
711 uint32_t LockedActions1;
712 uint32_t LockedActions2;
713 uint32_t field_1679B8;
714 uint32_t WinLose;
715 uint32_t ConditionSoundsCount;
716 uint32_t ConditionSounds[5];
717 uint16_t LevelNumber;
718 uint16_t padding_5;
719 uint16_t field_1679DC;
720} GameState;
721
722
723#endif
Note: See TracBrowser for help on using the repository browser.