Ignore:
Timestamp:
Mar 3, 2013, 12:46:33 AM (12 years ago)
Author:
alloc
Message:

Daodan: Updated src to work with MinGW

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Daodan/src/Oni_Character.h

    r484 r677  
    33#define ONI_CHARACTER_H
    44
    5 #include "Oni.h"
    6 #include <stdint.h>
    7 #include <stdbool.h>
    8 
    9 typedef struct {
    10         float X;
    11         float Y;
    12         float Z;       
    13 } Vector3; //probably move to utilities...
    14 
    15 typedef struct {
    16         float X;
    17         float Y;
    18         float Z;
    19         float W;
    20 } Quaternion;
    21 
    22 typedef struct {
    23         float RotationScale[9];
    24         Vector3 Translation;
    25 } Matrix4x3;
    26 
    27 typedef struct {
    28         Vector3 Center;
    29         float Radius;
    30 } Sphere;
    31 
    32 typedef struct {
    33         Sphere Sphere_; //fix this name
    34         int Child1;
    35         int Child2;     
    36 } SphereTreeNode;
    37 
    38 typedef struct {
    39         Vector3 Min;
    40         Vector3 Max;
    41 } BoundingBox;
    42 
    43 
    44 enum { //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 
    90 typedef struct {
    91         int32_t Actions1;
    92         int32_t Actions2;
    93 } InputAction;
    94 
    95 
    96 typedef 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 
    107 typedef 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 
    117 typedef 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 
    129 typedef 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 /*
    150 enum {
    151 chr_isplayer                    =               0x00000001,     //is player character
    152 chr_randomskin                  =               0x00000002,     //gets random skin from ONCV
    153 chr_notprespawned               =               0x00000004,     //isn't spawned at level creation
    154 chr_noncombatant                =               0x00000008,     //doesn't fight
    155 chr_multispawnable              =               0x00000010,     //can spawn up to 5 without forcing
    156 chr_unknown                             =               0x00000020,     //
    157 chr_unkillable                  =               0x00000040,     //can only be brought to 1 hp
    158 chr_superammo                   =               0x00000080,     //infinite ammo
    159 chr_omniscient                  =               0x00000100,     //touchofdeath
    160 chr_haslsi                              =               0x00000200,     //drops an lsi
    161 chr_boss                                =               0x00000400,     //is a boss character
    162 chr_upgradedifficulty   =               0x00000800,     //upgrade the difficulty if you play on med\hard
    163 chr_noautodrop                  =               0x00001000,     //uses drop fields instead of has fields on death
    164 }; //
    165 */
    166 
    167 typedef 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 
    218 typedef struct {
    219         OSD_Header Header;
    220         CharacterOSD OSD;
    221 } CharacterObject;
    222 
    223 typedef struct {
    224         Vector3 Center;
    225         float Radius;
    226 } BoundingSphere;
    227 
    228 typedef 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 
    235 typedef 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 
    256 typedef 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 
    281 typedef 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.
    500 typedef 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;
     5//#include <stdint.h>
     6#include "bool.h"
    5967
    5978enum {
     
    60516        team_syndicateaccessory,
    60617};
     18/*
    60719int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, uint32_t* list_location);
    60820int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr);
    60921//int16_t ONICALL ONrGameState_GetPlayerCharacter();
    610 
     22*/
    61123//probably need to name these better.
     24/*
    61225#define char_unkillable        (1 <<  5)
    61326#define char_superammo         (1 <<  6)
     
    62033#define char_bossshield        (1 << 30)
    62134#define char_weaponimmune      (1 << 31)
    622 
     35*/
    62336
    62437//We need a Oni_Structs #include file.
    62538
    626 typedef 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;
     39typedef enum {
     40        ONcCharacterFlag_Dead_1_Animating               =       0x00000001,     // health is 0
     41        ONcCharacterFlag_Dead                                   =       ONcCharacterFlag_Dead_1_Animating,
     42        ONcCharacterFlag_Dead_2_Moving                  =       0x00000002,     // no longer animating
     43        ONcCharacterFlag_Dead_3_Cosmetic                =       0x00000004,     // no longer moving
     44        ONcCharacterFlag_Dead_4_Gone                    =       0x00000008,     // dead except but still drawn
    72145
     46        ONcCharacterFlag_HastyAnim                              =       0x00000010,     // do this queued animation ASAP
     47        ONcCharacterFlag_Unkillable                             =       0x00000020,     // the character cannot be killed, only defeated
     48        ONcCharacterFlag_InfiniteAmmo                   =       0x00000040,     // the character always has infinite ammo
     49        ONcCharacterFlag_PleaseBlock                    =       0x00000080,     // set if the character should block, cleared once block begins
     50       
     51        ONcCharacterFlag_Unstoppable                    =       0x00000100,     // this character cannot be knocked down, staggered, stunned, etc
     52        ONcCharacterFlag_ScriptControl                  =       0x00000200,     // set if the character is completely under script control
     53        ONcCharacterFlag_DeathLock                              =       0x00000400,     // this character should never die all the way
     54        ONcCharacterFlag_WasUpdated                             =       0x00000800,     // this character's animation was changed
     55               
     56        ONcCharacterFlag_BeingThrown                    =       0x00001000,     // this character is being thrown
     57        ONcCharacterFlag_DontUseGunVarient              =       0x00002000,     // this character should not use a weapon varient
     58        ONcCharacterFlag_Draw                                   =       0x00004000,     // DoFrame has been executed for this character
     59        ONcCharacterFlag_InUse                                  =       0x00008000,     // this character is active and in use
     60
     61        ONcCharacterFlag_DontUseFightVarient    =       0x00010000,
     62        ONcCharacterFlag_NoCollision                    =       0x00020000,     // no collision for this character
     63        ONcCharacterFlag_Teleporting                    =       0x00040000,     // this character is teleporting and does not accept collision
     64        ONcCharacterFlag_NoCorpse                               =       0x00080000,     // no corpse for this character
     65
     66        ONcCharacterFlag_ActiveLock                             =       0x00100000,     // the character is locked active
     67        ONcCharacterFlag_ChrAnimate                             =       0x00200000,     // the character is currently runing a chr_animate command
     68        ONcCharacterFlag_AIMovement                             =       0x00400000,     // the character is using AI movement
     69        ONcCharacterFlag_NeutralUninterruptable =       0x00800000,     // running an uninterruptable neutral interaction
     70
     71        ONcCharacterFlag_NoShadow                               =       0x01000000,     //
     72        ONcCharacterFlag_Invincible                             =       0x02000000,     // character is invincible
     73        ONcCharacterFlag_NoAutoDrop                             =       0x04000000,     // character should not automatically drop items when killed (invisibility, shield, LSI)
     74        ONcCharacterFlag_RestrictedMovement             =       0x08000000,     // character cannot move fast (used for player holding barabbas' gun)
     75
     76        ONcCharacterFlag_Boss                                   =       0x10000000,     // character is a boss (used for final muro group fight)
     77        ONcCharacterFlag_FinalFlash                             =       0x20000000,     // 'final flash' has been played for this character's death
     78        ONcCharacterFlag_BossShield                             =       0x40000000, // this character has the boss shield
     79        ONcCharacterFlag_WeaponImmune                   =       0x80000000      // this character is immune to weapon damage
     80
     81} ONtCharacterFlags;
     82
     83typedef enum {
     84        ONcCharacterFlag2_WeaponEmpty                   =       0x00000001, // character's weapon is empty, punch instead
     85        ONcCharacterFlag2_UltraMode                             =       0x00000002
     86
     87} ONtCharacterFlags2;
    72288
    72389#endif
Note: See TracChangeset for help on using the changeset viewer.