diff options
| author | Carco_21 <144170194+carter-ktb21@users.noreply.github.com> | 2025-03-07 12:41:36 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-07 19:41:36 +0200 |
| commit | 0f141c2a9ccf9b447fa7765c9b279685bdafdd60 (patch) | |
| tree | 5e81d1e8903c70848c3b17c0e52595c2add2ffe0 /include | |
| parent | 53ae95cd95754841a7e908f7c4160fd7117c35ad (diff) | |
d_a_npc_jagar - ~94% (#2309)
* Began work on d_a_npc_jagar
* Major work on daNpc_Jagar_c::create()
* Jagar create() - 11%
* Continued work on daNpc_Jagar_c
* Jagar create() - 87%
* Continues work on Jagar
* Work on Jagar.checkChangeEvt()
* Working on Jagar.talk()
* Work on Jagar.changeBtp()
* Jagar.checkChangeJoint() & checkRemoveJoint()
* Jagar.chkAction() & setAction()
* Jagar.chkChuMotion()
* Jagar.chkSitMotion() & chkSitMotion2()
* Jagar.chkToMotion()
* Jagar.CreateHeap()
* Jagar.createHeapCallBack() & ctrlJointCallBack()
* Jagar.cuAnger()
* Jagar.cutClimbUp() - 92%
* Jagar.setAttnPos() - 85%
* Jagar.cutConversationWithBou() - 48%
* Jagar work and daNpcT_c::getActorDistance - 83%
* Jagar setParam work and daNpcT_c::getActorDistance - 85%
* Prep Jagar push to main
* little cleanup
* Fixed return type discrepancy
* Fixed *other* return type issues & variable names for Jagar
* Jagar talkWithBou work
* Work on Jagar talk
* Data & function cleanup
* I dont remember what i added this time lol
* Finished some functions
* Reworking Jagar talk()
* Finished some functions
* Attempting to rework cutNeedYourHelp
* Almost(ish) done with Jaggle
* Almost done with Jaggle
* Took out inline assembly in Jagar.chkToMotion()
* Cleanup
* Minor variable initialization change
* Small cleanup
* Hopefully fixed d_a_npc_bou compilation error
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_npc_bou.h | 85 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_jagar.h | 170 | ||||
| -rw-r--r-- | include/d/actor/d_a_player.h | 2 |
3 files changed, 205 insertions, 52 deletions
diff --git a/include/d/actor/d_a_npc_bou.h b/include/d/actor/d_a_npc_bou.h index e6469b2cb7..d0bb47750a 100644 --- a/include/d/actor/d_a_npc_bou.h +++ b/include/d/actor/d_a_npc_bou.h @@ -11,8 +11,70 @@ * @details * */ + class daNpc_Bou_Param_c { + public: + /* 809727F4 */ ~daNpc_Bou_Param_c(); + + struct Data { + /* 0x00 */ f32 field_0x00; // 255.0f + /* 0x04 */ f32 field_0x04; // 3.0f + /* 0x08 */ f32 field_0x08; // 1.0f + /* 0x0C */ f32 field_0x0c; // 600.0f + /* 0x10 */ f32 field_0x10; // 255.0f + /* 0x14 */ f32 field_0x14; // 200.0f + /* 0x18 */ f32 field_0x18; // 35.0f + /* 0x1C */ f32 field_0x1c; // 40.0f + /* 0x20 */ f32 field_0x20; // 0.0f + /* 0x24 */ f32 field_0x24; // 0.0f + /* 0x28 */ f32 field_0x28; // 10.0f + /* 0x2C */ f32 field_0x2c; // -10.0f + /* 0x30 */ f32 field_0x30; // 30.0f + /* 0x34 */ f32 field_0x34; // -10.0f + /* 0x38 */ f32 field_0x38; // 45.0f + /* 0x3C */ f32 field_0x3c; // -45.0f + /* 0x40 */ f32 field_0x40; // 0.6f + /* 0x44 */ f32 field_0x44; // 12.0f + /* 0x48 */ s16 field_0x48; // 3 + /* 0x4C */ s16 field_0x4c; // 6 + /* 0x50 */ s16 field_0x50; // 5 + /* 0x54 */ s16 field_0x54; // 6 + /* 0x58 */ f32 field_0x58; // 110.0f + /* 0x5C */ f32 field_0x5c; // 500.0f + /* 0x60 */ f32 field_0x60; // 300.0f + /* 0x64 */ f32 field_0x64; // -300.0f + /* 0x68 */ s16 field_0x68; // 60 + /* 0x6C */ s16 field_0x6c; // 8 + /* 0x70 */ f32 field_0x70; // 0.0f + /* 0x74 */ f32 field_0x74; // 0.0f + /* 0x78 */ f32 field_0x78; // 4.0f + /* 0x7C */ f32 field_0x7c; // 0.0f + /* 0x80 */ f32 field_0x80; // 0.0f + /* 0x84 */ f32 field_0x84; // 0.0f + /* 0x88 */ f32 field_0x88; // 0.0f + /* 0x8C */ f32 field_0x8c; // 0.0f + /* 0x90 */ f32 field_0x90; // 0.0f + /* 0x94 */ f32 field_0x94; // 0.0f + /* 0x98 */ f32 field_0x98; // 16.0f + /* 0x9C */ f32 field_0x9c; // 1000.0f + /* 0x100 */ f32 field_0x100; // 500.0f + /* 0x104 */ f32 field_0x104; // -500.0f + }; + + static const Data m; +}; + class daNpc_Bou_c : public daNpcT_c { public: + + enum Type { + TYPE_0, + TYPE_1, + TYPE_2, + TYPE_3, + TYPE_4, + TYPE_5, + }; + /* 8096CF8C */ ~daNpc_Bou_c(); /* 8096D0D8 */ void create(); /* 8096D38C */ void CreateHeap(); @@ -23,7 +85,7 @@ public: /* 8096D8C0 */ void ctrlJointCallBack(J3DJoint*, int); /* 8096D918 */ void srchCow(void*, void*); /* 8096D9B4 */ void getCowP(); - /* 8096DA78 */ void getType(); + /* 8096DA78 */ u8 getType(); /* 8096DADC */ void isDelete(); /* 8096DBBC */ void reset(); /* 8096E18C */ void srchActors(); @@ -69,6 +131,12 @@ public: static void* mCutNameList[9]; static u8 mCutList[108]; + BOOL chkFindWolf() { + int iVar1 = daNpcT_getDistTableIdx(field_0xfe0, field_0xfe4); + return daNpcT_c::chkFindWolf(mCurAngle.y, iVar1, field_0xfdc, daNpc_Bou_Param_c::m.field_0x5c, + daNpc_Bou_Param_c::m.field_0x58, daNpc_Bou_Param_c::m.field_0x60, daNpc_Bou_Param_c::m.field_0x100, 1); + } + BOOL speakTo() { if (field_0xf80 == 4) { if (current.pos.absXZ(daPy_getPlayerActorClass()->current.pos) < 1100.0f && strlen(mpEvtData[5].eventName) != 0) { @@ -88,22 +156,19 @@ public: } private: - /* 0xE40 */ u8 field_0xE40[0xE44 - 0xE40]; + /* 0xE40 */ int field_0xe40; /* 0xE44 */ dCcD_Cyl field_0xe44; /* 0xF80 */ u8 field_0xf80; /* 0xF84 */ daNpcT_ActorMngr_c field_0xf84[3]; /* 0xF9C */ daNpcT_Path_c field_0xf9c; - /* 0xFC4 */ u8 field_0xfc4[0xFFC - 0xFC4]; + /* 0xFC4 */ u8 field_0xfc4[0xFDC - 0xFC4]; + /* 0xFDC */ int field_0xfdc; + /* 0xFE0 */ int field_0xfe0; + /* 0xFE4 */ int field_0xfe4; + /* 0xFE8 */ u8 field_0xfe8[0xFFC - 0xFE8]; }; STATIC_ASSERT(sizeof(daNpc_Bou_c) == 0xffc); -class daNpc_Bou_Param_c { -public: - /* 809727F4 */ ~daNpc_Bou_Param_c(); - - static u8 const m[156]; -}; - #endif /* D_A_NPC_BOU_H */ diff --git a/include/d/actor/d_a_npc_jagar.h b/include/d/actor/d_a_npc_jagar.h index 38732a793b..780cc2e862 100644 --- a/include/d/actor/d_a_npc_jagar.h +++ b/include/d/actor/d_a_npc_jagar.h @@ -11,75 +11,161 @@ * @details * */ -class daNpc_Jagar_c : public fopAc_ac_c { + +class daNpc_Jagar_c : public daNpcT_c { public: + typedef int (daNpc_Jagar_c::*cutFunc)(int); + typedef int (daNpc_Jagar_c::*actionFunc)(void*); + + enum Type { + TYPE_0, + TYPE_1, + TYPE_2, + TYPE_3, + }; + /* 80A1470C */ ~daNpc_Jagar_c(); - /* 80A14858 */ void create(); - /* 80A14B20 */ void CreateHeap(); - /* 80A14F4C */ void Delete(); - /* 80A14F80 */ void Execute(); - /* 80A14FA0 */ void Draw(); - /* 80A15034 */ void createHeapCallBack(fopAc_ac_c*); - /* 80A15054 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80A150AC */ void getType(); - /* 80A150F8 */ void isDelete(); + /* 80A14858 */ int create(); + /* 80A14B20 */ int CreateHeap(); + /* 80A14F4C */ int Delete(); + /* 80A14F80 */ int Execute(); + /* 80A14FA0 */ int Draw(); + /* 80A15034 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80A15054 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80A150AC */ u8 getType(); + /* 80A150F8 */ int isDelete(); /* 80A15198 */ void reset(); /* 80A15364 */ void afterJntAnm(int); /* 80A153E8 */ void setParam(); - /* 80A155E4 */ void checkChangeEvt(); + /* 80A155E4 */ BOOL checkChangeEvt(); /* 80A15714 */ void setAfterTalkMotion(); /* 80A157B4 */ void srchActors(); - /* 80A158A0 */ void evtTalk(); - /* 80A15940 */ void evtCutProc(); + /* 80A158A0 */ BOOL evtTalk(); + /* 80A15940 */ BOOL evtCutProc(); /* 80A15A08 */ void action(); /* 80A15CA4 */ void beforeMove(); /* 80A15D68 */ void setAttnPos(); /* 80A1607C */ void setCollision(); - /* 80A161EC */ bool drawDbgInfo(); + /* 80A161EC */ int drawDbgInfo(); /* 80A161F4 */ void changeBtp(int*, int*); - /* 80A16234 */ void selectAction(); - /* 80A162B0 */ void chkAction(int (daNpc_Jagar_c::*)(void*)); - /* 80A162DC */ void setAction(int (daNpc_Jagar_c::*)(void*)); - /* 80A16384 */ void cutClimbUp(int); - /* 80A16544 */ void cutNeedYourHelp(int); - /* 80A16CD8 */ void cutAnger(int); - /* 80A16EFC */ void cutConversationWithBou(int); - /* 80A1705C */ void cutConfidentialConversation(int); - /* 80A173D8 */ void cutFindWolf(int); - /* 80A17898 */ void chkSitMotion(); - /* 80A17924 */ void chkSitMotion2(); - /* 80A17984 */ void chkChuMotion(); - /* 80A179F8 */ void chkToMotion(); - /* 80A17A2C */ void wait(void*); - /* 80A1856C */ void talkwithBou(void*); - /* 80A18B74 */ void talk(void*); - /* 80A1A194 */ daNpc_Jagar_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, - daNpcT_evtData_c const*, char**); + /* 80A16234 */ int selectAction(); + /* 80A162B0 */ int chkAction(int (daNpc_Jagar_c::*)(void*)); + /* 80A162DC */ int setAction(int (daNpc_Jagar_c::*)(void*)); + /* 80A16384 */ int cutClimbUp(int); + /* 80A16544 */ int cutNeedYourHelp(int); + /* 80A16CD8 */ int cutAnger(int); + /* 80A16EFC */ int cutConversationWithBou(int); + /* 80A1705C */ int cutConfidentialConversation(int); + /* 80A173D8 */ int cutFindWolf(int); + /* 80A17898 */ int chkSitMotion(); + /* 80A17924 */ int chkSitMotion2(); + /* 80A17984 */ int chkChuMotion(); + /* 80A179F8 */ int chkToMotion(); + /* 80A17A2C */ int wait(void*); + /* 80A1856C */ int talkwithBou(void*); + /* 80A18B74 */ int talk(void*); + /* 80A1A194 */ daNpc_Jagar_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, + daNpcT_evtData_c const* param_7, char** param_8) : + daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) + {} /* 80A1A274 */ s32 getEyeballMaterialNo(); /* 80A1A27C */ s32 getHeadJointNo(); /* 80A1A284 */ s32 getNeckJointNo(); - /* 80A1A28C */ bool getBackboneJointNo(); - /* 80A1A294 */ void checkChangeJoint(int); - /* 80A1A2A4 */ void checkRemoveJoint(int); + /* 80A1A28C */ s32 getBackboneJointNo(); + /* 80A1A294 */ BOOL checkChangeJoint(int param_1) { return param_1 == 4; } + /* 80A1A2A4 */ BOOL checkRemoveJoint(int param_1) { return param_1 == 8; } /* 80A1A2B4 */ s32 getFootLJointNo(); /* 80A1A2BC */ s32 getFootRJointNo(); - static void* mCutNameList[7]; - static u8 mCutList[84]; + int getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; + } + + u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; } + static char* mCutNameList[7]; + static cutFunc mCutList[7]; private: - /* 0x568 */ u8 field_0x568[0x100c - 0x568]; + /* 0x0E40 */ int field_0xe40; + /* 0x0E44 */ dCcD_Cyl mCyl1; + /* 0x0F80 */ u8 mType; + /* 0x0F84 */ daNpcT_ActorMngr_c mActorMngr[5]; + /* 0x0FAC */ daNpcT_Path_c field_0xfac; + /* 0x0FD4 */ actionFunc field_0xfd4; + /* 0x0FE0 */ actionFunc field_0xfe0; + /* 0x0FEC */ int field_0xfec; + /* 0x0FF0 */ int field_0xff0; + /* 0x0FF4 */ int field_0xff4; + /* 0x0FF8 */ int field_0xff8; + /* 0x0FFC */ u8 field_0xffc[0x1000 - 0xffc]; + /* 0x1000 */ u8 field_0x1000; + /* 0x1001 */ u8 field_0x1001; + /* 0x1002 */ u8 field_0x1002; + /* 0x1003 */ u8 field_0x1003; + /* 0x1004 */ u8 field_0x1004; + /* 0x1005 */ u8 field_0x1005; + /* 0x1008 */ int field_0x1008; }; STATIC_ASSERT(sizeof(daNpc_Jagar_c) == 0x100c); class daNpc_Jagar_Param_c { public: - /* 80A1A2C4 */ ~daNpc_Jagar_Param_c(); + /* 80A1A2C4 */ virtual ~daNpc_Jagar_Param_c() {} - static u8 const m[160]; + struct Data { + /* 0x00 */ f32 field_0x00; // 170.0f + /* 0x04 */ f32 field_0x04; // -3.0f + /* 0x08 */ f32 field_0x08; // 1.0f + /* 0x0C */ f32 field_0x0c; // 400.0f + /* 0x10 */ f32 field_0x10; // 255.0f + /* 0x14 */ f32 field_0x14; // 160.0f + /* 0x18 */ f32 field_0x18; // 35.0f + /* 0x1C */ f32 field_0x1c; // 30.0f + /* 0x20 */ f32 field_0x20; // 0.0f + /* 0x24 */ f32 field_0x24; // 0.0f + /* 0x28 */ f32 field_0x28; // 10.0f + /* 0x2C */ f32 field_0x2c; // -10.0f + /* 0x30 */ f32 field_0x30; // 30.0f + /* 0x34 */ f32 field_0x34; // -10.0f + /* 0x38 */ f32 field_0x38; // 45.0f + /* 0x3C */ f32 field_0x3c; // -45.0f + /* 0x40 */ f32 field_0x40; // 0.6f + /* 0x44 */ f32 field_0x44; // 12.0f + /* 0x48 */ s16 field_0x48; + /* 0x4A */ s16 field_0x4a; + /* 0x4C */ s16 field_0x4c; + /* 0x4E */ s16 field_0x4e; + /* 0x50 */ f32 field_0x50; // 110.0f + /* 0x54 */ f32 field_0x54; // 500.0f + /* 0x58 */ f32 field_0x58; // 300.0f + /* 0x5C */ f32 field_0x5c; // -300.0f + /* 0x60 */ s16 field_0x60; // 60 + /* 0x62 */ s16 field_0x62; // 8 + /* 0x64 */ f32 field_0x64; // 0.0f + /* 0x68 */ f32 field_0x68; // 0.0f + /* 0x6C */ f32 field_0x6c; // 4.0f + /* 0x70 */ f32 field_0x70; // 0.0f + /* 0x74 */ f32 field_0x74; // 0.0f + /* 0x78 */ f32 field_0x78; // 0.0f + /* 0x7C */ f32 field_0x7c; // 0.0f + /* 0x80 */ f32 field_0x80; // 0.0f + /* 0x84 */ f32 field_0x84; // 0.0f + /* 0x88 */ f32 field_0x88; // 0.0f + /* 0x8C */ f32 field_0x8c; // 1400.0f + /* 0x90 */ f32 field_0x90; // 200.0f + /* 0x94 */ f32 field_0x94; // -800.0f + /* 0x98 */ f32 field_0x98; // 16.0f + /* 0x9C */ f32 field_0x9c; // 1800.0f + }; + + static const Data m; }; #endif /* D_A_NPC_JAGAR_H */ diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index cb65bc2f5f..f1be27ad5d 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -1102,6 +1102,8 @@ public: onNoResetFlg3(FLG3_UNK_200000); } + BOOL checkClimbEndHang() { return checkResetFlg0(RFLG0_UNK_40000); } + static daMidna_c* m_midnaActor; }; |
