tp/include/d/actor/d_a_obj_gra2.h

360 lines
12 KiB
C++

#ifndef D_A_OBJ_GRA2_H
#define D_A_OBJ_GRA2_H
#include "d/actor/d_a_npc2.h"
#include "d/d_particle_copoly.h"
#include "f_op/f_op_actor_mng.h"
struct daObj_GrA_HIO_Param_c {
/* 0x00 */ f32 field_0x00;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ s16 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 mWallR;
/* 0x1C */ f32 mWallH;
/* 0x20 */ f32 mWeight;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ f32 field_0x48;
/* 0x4C */ f32 field_0x4c;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ s16 field_0x54;
/* 0x56 */ s16 field_0x56;
/* 0x58 */ s16 field_0x58;
/* 0x5A */ s16 field_0x5a;
/* 0x5C */ s16 field_0x5c;
/* 0x60 */ f32 field_0x60;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ s16 field_0x68;
/* 0x6C */ f32 field_0x6c;
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ s16 field_0x88;
/* 0x8A */ u8 field_0x8a;
/* 0x8C */ f32 field_0x8c;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ f32 field_0x94;
/* 0x98 */ s16 field_0x98;
/* 0x9A */ s16 field_0x9a;
/* 0x9C */ s16 field_0x9c;
/* 0xA0 */ f32 field_0xa0;
/* 0xA4 */ s16 field_0xa4;
/* 0xA8 */ f32 field_0xa8;
/* 0xAC */ s16 field_0xac;
/* 0xAE */ s16 field_0xae;
/* 0xB0 */ s16 field_0xb0;
/* 0xB2 */ s16 field_0xb2;
/* 0xB4 */ s16 field_0xb4;
/* 0xB8 */ f32 field_0xb8;
/* 0xBC */ f32 field_0xbc;
};
#if DEBUG
class daObj_GrA_HIO_c;
#define OBJ_GRA_HIO_CLASS daObj_GrA_HIO_c
#else
class daObj_GrA_Param_c;
#define OBJ_GRA_HIO_CLASS daObj_GrA_Param_c
#endif
/**
* @ingroup actors-objects
* @class daObj_GrA_c
* @brief Goron A
*
* @details
*
*/
class daObj_GrA_c : public daBaseNpc_moveBgActor_c {
public:
typedef int (daObj_GrA_c::*MotionFunc)(int);
typedef int (daObj_GrA_c::*Process)(void*);
enum {
NUMLOOKMODES_e = 4,
};
class daObj_GrA_prtclMngr_c {
public:
/* 0x00 */ bool field_0x0;
/* 0x04 */ cXyz field_0x4;
/* 0x10 */ csXyz field_0x10;
/* 0x18 */ cXyz field_0x18;
/* 0x24 */ dPaPo_c field_0x24;
};
/* 80BFFF58 */ static void rideCallBack(dBgW*, fopAc_ac_c*, fopAc_ac_c*);
/* 80BFFF70 */ daObj_GrA_c();
/* 80C0011C */ ~daObj_GrA_c();
/* 80C003CC */ cPhs__Step create();
/* 80C00614 */ int CreateHeap();
/* 80C00790 */ int Delete();
/* 80C00804 */ int Execute(Mtx**);
/* 80C00A44 */ int Draw();
/* 80C00ACC */ int jointCtrl(J3DJoint*, J3DModel*);
/* 80C00D5C */ const char* getResName();
/* 80C00D74 */ u8 getMode();
/* 80C00DF8 */ u8 getPathNo();
/* 80C00E04 */ u16 getTagNo();
/* 80C00E10 */ u16 getJumpType();
/* 80C00E1C */ BOOL isDelete();
/* 80C00EFC */ void restart();
/* 80C010D4 */ int init();
/* 80C013B0 */ void setBaseAnm(int, f32);
/* 80C014F4 */ void setFaceAnm(int, bool, f32);
/* 80C01698 */ void setFaceBtp(int);
/* 80C0178C */ void setBaseMotion(int, f32);
/* 80C017AC */ void setFaceMotion(int, f32);
/* 80C017F0 */ void calcMotion();
/* 80C018C0 */ BOOL checkProcess(int (daObj_GrA_c::*)(void*));
/* 80C018F4 */ int setProcess(int (daObj_GrA_c::*)(void*));
/* 80C019B8 */ void setParam();
/* 80C01C18 */ BOOL checkEvent();
/* 80C01D7C */ void mainProc();
/* 80C01FE4 */ void adjustShapeAngle();
/* 80C01FE8 */ void setMtx(int);
/* 80C02614 */ void setCollisions();
/* 80C02970 */ void setAttnPos();
/* 80C02A5C */ void drawOtherMdls();
/* 80C02A60 */ bool dbgDraw();
/* 80C02A68 */ int ppMoveInit();
/* 80C02AD4 */ int setLookMode(int);
/* 80C02AE8 */ int lookat();
/* 80C0308C */ int hitChk();
/* 80C031E4 */ int wait(void*);
/* 80C0335C */ int talk(void*);
/* 80C035B8 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*);
/* 80C03720 */ bool checkTagGraSub(fopAc_ac_c*);
/* 80C03764 */ bool fallAbyssCheck();
/* 80C03830 */ int setPrtcl();
/* 80C03B14 */ int base000(int);
/* 80C03B48 */ int base001(int);
/* 80C03B7C */ int base003(int);
/* 80C03C1C */ int base004(int);
/* 80C03CBC */ int base005(int);
/* 80C03D54 */ int base006(int);
/* 80C03D88 */ int base007(int);
/* 80C03DF0 */ int base008(int);
/* 80C03E74 */ int base009(int);
/* 80C03F14 */ int base010(int);
/* 80C03FC0 */ int base013(int);
/* 80C04118 */ int base016(int);
/* 80C04180 */ int base017(int);
/* 80C041E8 */ int base018(int);
/* 80C04260 */ int base019(int);
/* 80C042D4 */ int base020(int);
/* 80C04308 */ int base021(int);
/* 80C0433C */ int base022(int);
/* 80C04370 */ int base023(int);
/* 80C043A4 */ int base024(int);
/* 80C043D8 */ int base025(int);
/* 80C0440C */ int base026(int);
/* 80C04440 */ int face000(int);
/* 80C04478 */ int face003(int);
/* 80C04518 */ int face004(int);
/* 80C045B8 */ int face005(int);
/* 80C045F0 */ int face006(int);
/* 80C04628 */ int face007(int);
/* 80C04660 */ int face008(int);
/* 80C04700 */ int face009(int);
/* 80C047A0 */ int face010(int);
/* 80C047D8 */ int face011(int);
/* 80C04810 */ int face012(int);
/* 80C04848 */ int face016(int);
/* 80C04880 */ int face017(int);
/* 80C048B8 */ int face999(int);
/* 80C048F8 */ int evtcutTalk(int, int);
/* 80C04A0C */ void setFaceTalkAfter();
/* 80C0536C */ f32 getSrchCircleR();
/* 80C053C4 */ int standWait(void*);
/* 80C05920 */ int walk(void*);
/* 80C05F64 */ int defence(void*);
/* 80C061F4 */ int toStone(void*);
/* 80C067D8 */ int step(void*);
/* 80C06CDC */ int rollReturn(void*);
/* 80C0780C */ int soldierDemoSkip();
/* 80C078A8 */ int soldierDemo(void*);
/* 80C07C40 */ f32 getSrchLinkR();
/* 80C07C98 */ f32 getSrchGraR();
/* 80C07CF0 */ f32 getSpeed();
/* 80C07D38 */ int standRoll(void*);
/* 80C083F0 */ int rollDemo(void*);
/* 80C08804 */ int rollAttack(void*);
/* 80C09298 */ int rollAttacked(void*);
/* 80C09918 */ int rollEscape(void*);
/* 80C09F08 */ void rollLanding();
/* 80C0A018 */ int thrown(void*);
/* 80C0A120 */ void demo_camera();
/* 80C0AF94 */ void rollAttackedDemo();
/* 80C0B9AC */ void graThrowDemo();
/* 80C0BD90 */ void setCarryStatus();
/* 80C0BE5C */ bool checkThrow();
/* 80C0BF34 */ void calcCatchPos(f32, int);
/* 80C0C348 */ void initCrazyBeforeCatch(int);
/* 80C0C364 */ void executeCrazyBeforeCatch();
/* 80C0C3E0 */ void initCrazyCatch(int);
/* 80C0C478 */ void executeCrazyCatch();
/* 80C0C5F0 */ void initCrazyThrow(int);
/* 80C0C690 */ void executeCrazyThrow();
/* 80C0C84C */ void initCrazyAttack();
/* 80C0CA64 */ void executeCrazyJumping();
/* 80C0CDBC */ BOOL modeChangeCheck();
/* 80C0CF98 */ BOOL checkGraSub(fopAc_ac_c*);
/* 80C0D000 */ int waitDemo(void*);
/* 80C0D2FC */ int skipDemoGra();
/* 80C0D3E0 */ int startDemo(void*);
/* 80C0EFC4 */ BOOL turn(s16, f32, int);
/* 80C0F17C */ BOOL turn_step(s16, int, int, int);
/* 80C0F330 */ BOOL chkFindPlayer2(int, s16);
/* 80C0F668 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
/* 80C0F5A4 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
/* 80C0F6E0 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16);
/* 80C0F7EC */ cXyz getAttentionPos(fopAc_ac_c*);
/* 80C0F860 */ int standWaitJump(void*);
bool checkNpcObjGra() { return mMode == 1; }
void setCrazyDash() { field_0xa48 |= 4; }
void setCrazyCatch() { field_0xa48 |= 2; }
void setCrazyThrowLeft() { field_0xa48 |= 8; }
void setCrazyThrowRight() { field_0xa48 |= 0x10; }
static MotionFunc mBaseMotionList[22];
static MotionFunc mFaceMotionList[14];
bool isFirstGra() { return isFisrtGra(); }
bool isFisrtGra() { return field_0x1fe8 == 0; }
void setDemoMode(s16 mDemoMode) { mDemoCamMode = mDemoMode; }
s16 getDemoMode() { return mDemoCamMode; }
private:
/* 0x0A48 */ u16 field_0xa48;
/* 0x0A4C */ OBJ_GRA_HIO_CLASS* mpHIO;
/* 0x0A50 */ Process field_0xa50;
/* 0x0A5C */ request_of_phase_process_class mPhases[4];
/* 0x0A7C */ u16 field_0xa7c;
/* 0x0A7E */ u8 mMode;
/* 0x0A7F */ u8 field_0xa7f;
/* 0x0A80 */ u8 field_0xa80[0xa88 - 0xa80];
/* 0x0A88 */ int field_0xa88;
/* 0x0A8C */ u8 field_0xa8c;
/* 0x0A8D */ u8 field_0xa8d;
/* 0x0A8E */ u8 field_0xa8e;
/* 0x0A8F */ u8 field_0xa8f;
/* 0x0A90 */ u16 field_0xa90;
/* 0x0A92 */ u16 field_0xa92;
/* 0x0A94 */ f32 field_0xa94;
/* 0x0A98 */ f32 field_0xa98;
/* 0x0A9C */ int field_0xa9c;
/* 0x0AA0 */ int field_0xaa0;
/* 0x0AA4 */ int field_0xaa4;
/* 0x0AA8 */ int field_0xaa8;
/* 0x0AAC */ int field_0xaac;
/* 0x0AB0 */ daBaseNpc_acMngr_c field_0xab0;
/* 0x0AB8 */ daObj_GrA_prtclMngr_c field_0xab8[6];
/* 0x0CE0 */ dCcD_Sph field_0xce0[2];
/* 0x0F50 */ dCcD_Cyl field_0xf50;
/* 0x108C */ cXyz field_0x108c;
/* 0x1098 */ f32 field_0x1098;
/* 0x109C */ int field_0x109c;
/* 0x10A0 */ int field_0x10a0;
/* 0x10A4 */ int field_0x10a4;
/* 0x10A8 */ int field_0x10a8;
/* 0x10AC */ u8 field_0x10ac;
/* 0x10AD */ u8 field_0x10ad[0x10bc - 0x10ad];
/* 0x10BC */ int field_0x10bc;
/* 0x10C0 */ u8 field_0x10c0[0x10c4 - 0x10c0];
/* 0x10C4 */ int field_0x10c4;
/* 0x10C8 */ cBgS_GndChk field_0x10c8[5];
/* 0x11F4 */ dBgS_LinkLinChk field_0x11f4[5];
/* 0x1424 */ cXyz field_0x1424[5];
/* 0x1460 */ cXyz field_0x1460[5];
/* 0x149C */ u8 field_0x149c[0x14b0 - 0x149c];
/* 0x14B0 */ int field_0x14b0;
/* 0x14B4 */ cXyz field_0x14b4[5];
/* 0x14F0 */ f32 field_0x14f0;
/* 0x14F4 */ int field_0x14f4;
/* 0x14F8 */ daBaseNpc_acMngr_c field_0x14f8;
/* 0x1500 */ u8 field_0x1500;
/* 0x1504 */ int mLookMode;
/* 0x1508 */ int field_0x1508;
/* 0x150C */ int field_0x150c;
/* 0x1510 */ u8 field_0x1510[0x1518 - 0x1510];
/* 0x1518 */ int field_0x1518;
/* 0x151C */ u8 field_0x151c[0x1520 - 0x151c];
/* 0x1520 */ int field_0x1520;
/* 0x1524 */ u8 field_0x1524[0x1528 - 0x1524];
/* 0x1528 */ daBaseNpc_path_c field_0x1528;
/* 0x1F4C */ dBgS_LinkLinChk field_0x1f4c;
/* 0x1FBC */ int field_0x1fbc;
/* 0x1FC0 */ int field_0x1fc0;
/* 0x1FC4 */ u8 field_0x1fc4;
/* 0x1FC8 */ int field_0x1fc8;
/* 0x1FCC */ int field_0x1fcc;
/* 0x1FD0 */ f32 field_0x1fd0;
/* 0x1FD4 */ s16 field_0x1fd4;
/* 0x1FD6 */ s16 field_0x1fd6;
/* 0x1FD8 */ s16 field_0x1fd8;
/* 0x1FDC */ int field_0x1fdc;
/* 0x1FE0 */ u8 field_0x1fe0;
/* 0x1FE4 */ int field_0x1fe4;
/* 0x1FE8 */ s8 field_0x1fe8;
/* 0x1FE9 */ u8 field_0x1fe9;
/* 0x1FEC */ int field_0x1fec;
/* 0x1FF0 */ int field_0x1ff0;
/* 0x1FF4 */ u8 field_0x1ff4;
/* 0x1FF8 */ int field_0x1ff8;
/* 0x1FFC */ bool field_0x1ffc;
/* 0x2000 */ int field_0x2000;
/* 0x2004 */ u8 field_0x2004;
/* 0x2005 */ s8 field_0x2005;
/* 0x2008 */ f32 field_0x2008;
/* 0x200C */ u16 field_0x200c;
/* 0x2010 */ int field_0x2010;
/* 0x2014 */ u8 field_0x2014;
/* 0x2018 */ int field_0x2018;
/* 0x201C */ s8 field_0x201c;
/* 0x201D */ u8 field_0x201d;
/* 0x2020 */ u32 field_0x2020[3];
/* 0x202C */ u32 field_0x202c;
/* 0x2030 */ u8 field_0x2030;
/* 0x2031 */ u8 field_0x2031;
/* 0x2032 */ u8 field_0x2032;
/* 0x2034 */ cXyz mGraPos;
/* 0x2040 */ f32 mGraExtent;
/* 0x2044 */ f32 mGraHeight;
/* 0x2048 */ s16 mGraMode;
/* 0x204C */ daBaseNpc_acMngr_c field_0x204c;
/* 0x2054 */ s16 mDemoCamMode;
/* 0x2056 */ s16 field_0x2056;
/* 0x2058 */ cXyz mDemoCamEye;
/* 0x2064 */ cXyz mDemoCamCenter;
/* 0x2070 */ f32 mDemoCamFovy;
/* 0x2074 */ cXyz field_0x2074;
/* 0x2080 */ cXyz field_0x2080;
/* 0x208C */ f32 field_0x208c;
/* 0x2090 */ cXyz field_0x2090;
/* 0x209C */ int field_0x209c;
/* 0x20A0 */ u8 field_0x20a0;
};
STATIC_ASSERT(sizeof(daObj_GrA_c) == 0x20a4);
#endif /* D_A_OBJ_GRA2_H */