ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/src/Oni_Character.h
(Generate patch)

Comparing Daodan/src/Oni_Character.h (file contents):
Revision 434 by gumby, Thu Jul 16 21:23:52 2009 UTC vs.
Revision 435 by gumby, Fri Jul 17 01:50:03 2009 UTC

# Line 12 | Line 12 | typedef struct {
12   } Vector3; //probably move to utilities...
13  
14   typedef struct {
15 +        float X;
16 +        float Y;
17 +        float Z;
18 +        float W;
19 + } Quaternion;
20 +
21 + typedef struct {
22 +        float RotationScale[9];
23 +        Vector3 Translation;
24 + } Matrix4x3
25 +
26 + typedef struct {
27 +        Vector3 Center;
28 +        float Radius;
29 + } Sphere;
30 +
31 + typedef struct {
32 +        Sphere Sphere_; //fix this name
33 +        int Child1;
34 +        int Child2;    
35 + } SphereTreeNode;
36 +
37 + typedef struct {
38 +        Vector3 Min;
39 +        Vector3 Max;
40 + } BoundingBox;
41 +
42 +
43 + enum { //action flags
44 +        Action_Escape                    = 1,
45 +        Action_Console                   = 2,
46 +        Action_PauseScreen               = 4,
47 +        Action_Cutscene_1                = 8,
48 +        Action_Cutscene_2                = 0x10,
49 +        Action_F4                        = 0x20,
50 +        Action_F5                        = 0x40,
51 +        Action_F6                        = 0x80,
52 +        Action_F7                        = 0x100,
53 +        Action_F8                        = 0x200,
54 +        Action_StartRecord               = 0x400,
55 +        Action_StopRecord                = 0x800,
56 +        Action_PlayRecord                = 0x1000,
57 +        Action_F12                       = 0x2000,
58 +        Action_Unknown1                  = 0x4000,
59 +        Action_LookMode                  = 0x8000,
60 +        Action_Screenshot                = 0x10000,
61 +        Action_Unknown2                  = 0x20000,
62 +        Action_Unknown3                  = 0x40000,
63 +        Action_Unknown4                  = 0x80000,
64 +        Action_Unknown5                  = 0x100000,
65 +        Action_Forward                   = 0x200000,
66 +        Action_Backward                  = 0x400000,
67 +        Action_TurnLeft                  = 0x800000,
68 +        Action_TurnRight                 = 0x1000000,
69 +        Action_StepLeft                  = 0x2000000,
70 +        Action_StepRight                 = 0x4000000,
71 +        Action_Jump                      = 0x8000000,
72 +        Action_Crouch                    = 0x10000000,
73 +        Action_Punch                     = 0x20000000,
74 +        Action_Kick                      = 0x40000000,
75 +        Action_Block                     = 0x80000000,
76 +        //used in second action field
77 +        Action2_Walk                     = 1,
78 +        Action2_Action                   = 2,
79 +        Action2_Hypo                     = 4,
80 +        Action2_Reload                   = 8,
81 +        Action2_Swap                     = 0x10,
82 +        Action2_Drop                     = 0x20,
83 +        Action2_Fire1                    = 0x40,
84 +        Action2_Fire2                    = 0x80,
85 +        Action2_Fire3                    = 0x100
86 + };
87 +
88 +
89 + typedef struct {
90 +        int32_t Actions1;
91 +        int32_t Actions2;
92 + } InputAction;
93 +
94 +
95 + typedef struct {
96 +        float MouseDeltaX;
97 +        float MouseDeltaY;
98 +        float field_8;
99 +        float field_C;
100 +        InputAction Current;
101 +        InputAction Stopped;
102 +        InputAction Start;
103 +        InputAction Stop;
104 + } GameInput;
105 +
106 + typedef struct {
107          int Type;                               //'CHAR' etc.
108          int ObjectId;                   //not needed
109          int Flags;                              //The flags of the object...not used for CHAR
# Line 22 | Line 114 | typedef struct {
114   } OSD_Header;
115  
116   typedef struct {
117 +        int32_t Flags;
118 +        int32_t Frame;
119 +        int32_t field_8;
120 +        int32_t field_C;
121 +        int32_t field_10;
122 +        int32_t field_14;
123 +        int32_t field_18;
124 +        int32_t field_1C;
125 +        int32_t FILMInstance;
126 + } PlayingFilm;
127 +
128 + typedef struct {
129          uint32_t Options;                               //A bitset. Someone had better define these
130          char Class[64];                                 //Name of the ONCC we use. ONCCName in idb
131          char Name[32];                                  //Name of the character. ie: ai2_spawn Muro
# Line 77 | Line 181 | typedef struct {
181          CharacterOSD OSD;
182   } CharacterObject;
183  
184 + typedef struct {
185 +        Vector3 Center;
186 +        float Radius;
187 + } BoundingSphere;
188 +
189 + typedef struct {
190 +        int32_t ONCP; //probably pointer
191 +        int32_t field_4;        //who knows?
192 +        int32_t Instance; //probably link to actual particle
193 +        int32_t Bone; //duh
194 + } AttachedParticle;
195 + typedef struct { //Inventory
196 +        int32_t Weapons[3];
197 +        int16_t field_1A0; //10 bucks says this is the current weapon
198 +        int16_t AmmoUsed;                               //Ammo given for the char to use
199 +        int16_t HypoUsed;                               //Hypo given for the char to use
200 +        int16_t CellsUsed;                              //Cells given for the char to use
201 +        int16_t AmmoDropped;                    //Ammo the char drops
202 +        int16_t HypoDropped;                    //Hypo the char drops
203 +        int16_t CellsDropped;                   //Cells the char drops
204 +        int16_t field_1A;       //who knows? InverseHypoRegenRate?
205 +        int16_t field_1C;      
206 +        int16_t field_1E;
207 +        int16_t hasLSI;
208 +        int16_t field_1B6;
209 +        int16_t ShieldUsed;                             //Bullet shield given for the char to use
210 +        int16_t CloakUsed;                              //Phase Cloak given for the char to use
211 +        int16_t field_28;                       //probably bullet shield dropped
212 +        int16_t DoorKeys;               //Lol. We can use this later for other sorts of items.
213 + } Inventory;
214 +
215 + typedef strcut { //ActiveCharacter
216 +        int16_t Number;
217 +        int16_t field_2; //probably Number is an int32
218 +        int32_t PhyContext;
219 +        SphereTree SphereTree1;         //probably SphereTree[7]...
220 +        SphereTree SphereTree3[4];
221 +        SphereTree SphereTree2[2];
222 +        int16_t field_B0;
223 +        int16_t field_B2;
224 +        int16_t field_B4;
225 +        int16_t field_B6;
226 +        Vector3 field_B8;
227 +        Vector3 AccelerateWith;
228 +        int16_t field_D0;
229 +        Vector3 field_D4;
230 +        int32_t field_E0;
231 +        int32_t field_E4;
232 +        int32_t field_E8;
233 +        int32_t field_EC;
234 +        int32_t field_F0;
235 +        int32_t field_F4;
236 +        int32_t field_E0;
237 +        int16_t IsInAir;
238 +        Vector3 FallingVelocity;
239 +        Vector3 JumpVelocity;
240 +        int16_t field_110;
241 +        int16_t field_112;
242 +        int32_t field_114;
243 +        int32_t field_118;
244 +        int32_t field_11C;
245 +        int32_t field_120;
246 +        int32_t field_124;
247 +        int32_t field_128;
248 +        int32_t field_12C;
249 +        BoundingSphere BoundingSphere_; //fix this name
250 +        Vector3 field_140;
251 +        Vector3 field_14C;
252 +        int32_t field_158;
253 +        int32_t field_15C;
254 +        Vector3 Location;
255 +        int32_t field_16C[6]; //16C-184 ???
256 +        int32_t AkiraNode;
257 +        int32_t GraphNode;
258 +        int32_t PelvisHeight;
259 +        int32_t MovementStatePtr;
260 +        int32_t ActiveWeapon;           //NOTE: FIGURE OUT THIS MESS OF INVENTORY...
261 +        int32_t field_198;              //maybe weap 3, maybe not...
262 +        int32_t InventoryWeapon;
263 +        int16_t field_1A0;      //unused?
264 +        int16_t AmmoUsable;                             //Ammo given for the char to use
265 +        int16_t HypoUsable;                             //Hypo given for the char to use
266 +        int16_t CellsUsable;                            //Cells given for the char to use
267 +        int16_t AmmoDropped;                    //Ammo the char drops
268 +        int16_t HypoDropped;                    //Hypo the char drops
269 +        int16_t CellsDropped;                   //Cells the char drops
270 +        int16_t field_1AE;      
271 +        int16_t InverseHypoRegenRate;
272 +        int16_t ShieldDropped;
273 +        int16_t CloakDropped;
274 +        int16_t field_1B4;
275 +        int16_t field_1B6;
276 +        int16_t ShieldUsable;
277 +        int16_t CloakUsable;
278 +        int16_t field_1BC[9]; //1BC-1E0
279 +        int32_t NotIdleStartTime;
280 +        int32_t TimeToIdle;
281 +        int32_t field_1E8[1315]; //1E8-1648 what the hell is all this?
282 +        BoundingBox BoundingBox_; //fix this name
283 +        int32_t field_1660;
284 +        int32_t field_1664;
285 +        int32_t ShieldPower; //Same as Boss Shield Power???
286 +        int32_t field_166C;
287 +        int32_t NumberOfKills; //^_^
288 +        int32_t InflictedDamage; //^_^
289 +        int32_t field_1678[260];        //1678-1A88 more wtf
290 +        int32_t field_1A88; //here starts animation junk? It was 4 bools in idb O_o
291 +        int32_t Executor_AimingDirection; //possibly throw junk?
292 +        int32_t field_1A98;
293 +        int32_t field_1A9C;
294 +        int32_t Executor_ActualMovementMode;
295 +        int32_t field_1AA4;
296 +        int32_t field_1AA8;
297 +        int32_t field_1AAC;
298 +        int32_t Executor_HasFacingOverride; //a bool...
299 +        float   Executor_AimingSpeed;
300 +        bool    field_1AB8; //actually a bitset...
301 +        bool    Executor_HasMoveOverride;
302 +        int16_t field_1ABA;
303 +        int32_t field_1ABC;
304 +        int32_t field_1AC0;
305 +        int32_t field_1AC4;
306 +        int32_t Executor_FacingOverride;
307 +        int32_t Executor_HasAttackOverride; //another bool :P
308 +        int32_t field_1AC4;
309 +        int32_t field_1AD0;
310 +        int32_t field_1AD4;
311 +        int32_t field_1AD8;
312 +        int32_t field_1ADC;
313 +        int32_t field_1AE0;
314 +        int32_t field_1AE4;
315 +        int32_t Executor_HasThrowOverride; //another another bool
316 +        int32_t field_1AEC;
317 +        int32_t field_1AF0;
318 +        int32_t field_1AF4;
319 +        int32_t Animation;
320 +        int16_t AnimationToState;
321 +        int16_t AnimationFromState;
322 +        int16_t AnimationType;
323 +        int16_t NextAnimationType;
324 +        int16_t field_1B04;
325 +        int16_t field_1B06;
326 +        int32_t Stitch; //bool
327 +        float StitchHeight;
328 +        int16_t InterpolationFromState;
329 +        int16_t field_1B12;
330 +        Vector3 StitchVelocity;
331 +        int16_t InterpolationCurrentFrame;
332 +        int16_t InterpolationLength;
333 +        Quaternion InterpolationStartRotations[19];
334 +        int32_t field_1C54;
335 +        int32_t field_1C58;
336 +        int32_t field_1C5C;
337 +        int32_t field_1C60;
338 +        int32_t Overlay;
339 +        int32_t field_1C60;
340 +        int32_t field_1C64;
341 +        int32_t field_1C68;
342 +        int32_t field_1C6C;
343 +        int32_t field_1C70;
344 +        int32_t field_1C74;
345 +        int32_t field_1C78;
346 +        int32_t field_1C7C;
347 +        int32_t field_1C80;
348 +        int32_t field_1C84;
349 +        int16_t Frame;
350 +        int16_t SoftPause;
351 +        int16_t HardPause;
352 +        int16_t field1C8E;
353 +        int32_t field1C90;
354 +        int16_t field1C94;
355 +        int16_t field1C96;
356 +        int16_t Dizzy;
357 +        int16_t field1C9A;
358 +        int32_t field1C9C;
359 +        int16_t AnimationVarient;
360 +        int16_t TimeToPeace;
361 +        int16_t NumAnimationAttachedParticles;
362 +        int16_t field_1CA6; //spacing
363 +        AttachedParticle AnimationAttachedParticles[16];
364 +        int32_t TRAMParticles;
365 +        bool FixedParticlesAttached;
366 +        bool FixedParticlesStarted;
367 +        int16_t NumFixedParticles;
368 +        AttachedParticle FixedParticles[16];
369 +        int16_t CurrentAnimationType;
370 +        int16_t field_1EB2; //spacing
371 +        int32_t field_1EB4;
372 +        int32_t field_1EB8;
373 +        int32_t field_1EBC;
374 +        int32_t field_1EC0;
375 +        int32_t field_1EC4;
376 +        int32_t field_1EC8;
377 +        int32_t field_1ED0;
378 +        int32_t field_1ED4;
379 +        int32_t field_1ED8;
380 +        int32_t field_1EE0;
381 +        int32_t field_1EE4;
382 +        int32_t field_1EE8;
383 +        Quaternion Rotations[19];
384 +        Quaternion OverlayRotations[19];
385 +        int32_t field_2150;
386 +        int32_t field_2154;
387 +        GameInput Input;
388 +        InputAction PreviousActions;
389 +        int32_t SprintTimer;
390 +        int32_t field_2194;
391 +        Vector3 field_2198;
392 +        int32_t field_21A4;
393 +        int32_t field_21A8;
394 +        int32_t field_21AC;
395 +        Vector3 field_21B0;
396 +        float HeadFacing;
397 +        float HeadPitch;
398 +        int32_t field_21C4;
399 +        int32_t field_21C8;
400 +        int32_t field_21D0;
401 +        int32_t field_21D4;
402 +        bool field_21D8;
403 +        bool field_21D9;
404 +        bool field_21DA;
405 +        bool field_21DB;
406 +        bool field_21DC;
407 +        bool field_21DD;
408 +        bool field_21DE;
409 +        bool field_21DF;
410 +        bool field_21E0;
411 +        bool HasAlternateTrigger;
412 +        bool field_21E2;
413 +        bool ReleaseTrigger;
414 +        bool ReleaseAlternateTrigger;
415 +        bool TurningLeft;
416 +        bool TurningRight;
417 +        bool field_21E7;
418 +        int32_t field_21E8;
419 +        int32_t field_21EC;
420 +        int32_t field_21F0;
421 +        PlayingFilm PlayingFilm_; //fix this name
422 +        int32_t field_2218[24]; //2218-2278
423 +        Matrix4x3 BoneMatrices[19];
424 +        Matrix4x3 WeaponMatrix;
425 +        int32_t field_2638[113]; //2638-27FC
426 +        int16_t ShadowIndex;
427 +        int16_t field_27FE;
428 +        int16_t field_2780;
429 +        bool ShieldParts[19];
430 +        bool field_2815; //padding...
431 +        bool field_2816;
432 +        bool field_2817;
433 +        int32_t field_2818[8];
434 + } ActiveCharacter;
435 +
436 +
437 + typedef struct { //Character
438 +        int16_t Number;
439 +        int16_t ActiveCharacterIndex;
440 +        int32_t Flags;
441 +        int16_t field_8;
442 +        int32_t ONCC;                   //change type to ONCC when we get that far...
443 +        int32_t field_10;
444 +        int16_t Team;
445 +        char Name[32];
446 +        float BodySize;
447 +        int32_t Health;
448 +        int32_t MaxHealth;
449 +        int32_t ASIA_ID; //might be 16 with 2 byte padding
450 +        int32_t field_44;
451 +        char ScriptSpawn[32];                   //Script function called when char spawns
452 +        char ScriptDie[32];                             //Script function called when char dies
453 +        char ScriptAware[32];                   //Script function called when char detects something
454 +        char ScriptAlarm[32];                   //Script function called when char is alarmed at something
455 +        char ScriptHurt[32];                    //Script function called when char is hurt for the first time
456 +        char ScriptDefeat[32];                  //Script function called when char is at 1 HP
457 +        char ScriptNoAmmo[32];                  //Script function called when char is out of ammo for the first time. Char must have ammo at spawn.
458 +        char ScriptNoPath[32];                  //Script function called when char loses path. Broken.
459 +        Vector3 Position;
460 +        Vector3 LastPosition;
461 +        Vector3 Location;
462 +        float Facing;
463 +        float DesiredFacing;
464 +        float CosmeticFacing;
465 +        float field_178;
466 +        float field_17C;
467 +        float field_180;
468 +        int32_t BNV;
469 +        int32_t GraphNode;
470 +        int32_t PelvisHeight;
471 +        int32_t GraphNode;
472 +        float PelvisHeight;
473 +        float field_190;
474 +        Inventory Inventory_; //is there a better way to do this?
475 +        Vector3 Velocity;
476 +        int32_t field_1D0;
477 +        int32_t field_1D4;
478 +        int32_t field_1D8;
479 +        int32_t field_1DC;
480 +        int32_t field_1E0;
481 +        int32_t IdleDelay;
482 +        int32_t field_1E8;
483 +        int32_t field_1DC;
484 +        int32_t CombatFlags;
485 +        int32_t JobId;
486 +        int32_t Goal;
487 +        int32_t field_1FC;
488 +        int32_t field_200;
489 +        int32_t field_204;
490 +        int32_t field_208[107]; //its all undocumented through here
491 +        int32_t CombatState;    //I think....
492 +        int32_t field_8BB;
493 +        int32_t PatrolPathOSD[10];      //actually another struct. Not needed atm.
494 +        int32_t PatrolPathPoints[5][64] //64 of another struct
495 +        int32_t field_DE8[98];  //DE8-F70
496 +        int32_t CombatStatePtr;
497 +        int32_t KnowledgeState[4]; //Another struct
498 +        int32_t field_F84;
499 +        int32_t AlertDecayTimer;
500 +        int32_t field_F8C;
501 +        int32_t field_F90;
502 +        int32_t InitialAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
503 +        int32_t MinimalAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
504 +        int32_t StartJobAlertLevel;             //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
505 +        int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
506 +        int32_t StartleTime;
507 +        int32_t field_FA8;
508 +        int32_t field_FAC;
509 +        int32_t field_FB0;
510 +        int32_t PursuitStrongLow;
511 +        int32_t PursuitWeakLow;
512 +        int32_t PursuitStrongHigh;
513 +        int32_t PursuitWeakHigh;
514 +        int32_t Pursuit5;
515 +        int32_t field_FC8[16];
516 +        int32_t AlarmGroups; //a bitset
517 +        int32_t field_FDC[16]; //FDC-F68
518 +        int32_t field_F68;
519 +        int32_t DazeTimer;
520 +        int32_t field_1024[16]; //1024-1064
521 +        int32_t MeleePtr; //probably MELE. Looks somewhat important.
522 +        int32_t field_106C[270]; //106C-14A4 skipping lots of junk and a little pathfinding stuff that we might want later.
523 +        int32_t MovementModifiers; //hopefully sprinting, pistol, rifle, etc.
524 +        int32_t field_14B4[101]; //14B4-1648 Glossing over a few other things we don't need having to do with AI direction.
525 +        int32_t BossShieldPower;        //a multiplier? or just a flag? who knows
526 +        int32_t field_1668[6];
527 +        int32_t CurrentConsoleActionMarker; //not sure.
528 +        int32_t field_1684[7]; // done. hopefully i didnt screw this up somewhere.
529 + } Character;
530 +
531   enum {
532          team_konoko,
533          team_tctf,
# Line 104 | Line 555 | int    chr_upgradedifficulty   =               0x00000800;
555   int     chr_noautodrop                  =               0x00001000;     //uses drop fields instead of has fields on death
556  
557   int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, int* list_location);
558 + //int16_t ONICALL ONrGameState_GetPlayerCharacter();
559 +
560  
561   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)