diff options
| author | hev7 <143887945+hev7@users.noreply.github.com> | 2025-09-25 16:20:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-25 18:20:14 +0300 |
| commit | 4635fcb666d7c5f256016d733584712a55f1c130 (patch) | |
| tree | 894a754e309ffd8d2e92f4773e602b361d07f965 /include | |
| parent | 749de8e36dc88390fe3349205aeaa1898b9b0b6e (diff) | |
d_a_npc_lud matching (#2694)
* d_a_npc_lud matching
* Fixes
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_npc.h | 5 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_lud.h | 142 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_moi.h | 40 |
3 files changed, 108 insertions, 79 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index c4e4b662b5..4f79103d66 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -182,6 +182,11 @@ public: sVar3 * (1.0f / param_4); } + void setEyeAngleY(s16 param_1, f32 param_2) { + mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_2) + + param_1 * (1.0f / param_2); + } + s16 getEyeAngleX() { return mEyeAngle.x; } s16 getEyeAngleY() { return mEyeAngle.y; } diff --git a/include/d/actor/d_a_npc_lud.h b/include/d/actor/d_a_npc_lud.h index 0d40519942..1bea412e64 100644 --- a/include/d/actor/d_a_npc_lud.h +++ b/include/d/actor/d_a_npc_lud.h @@ -11,73 +11,115 @@ * @details * */ -class daNpc_Lud_c : public fopAc_ac_c { + +struct daNpc_Lud_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ f32 play_speed; +}; + +class daNpc_Lud_Param_c { +public: + /* 80A6FD10 */ virtual ~daNpc_Lud_Param_c() {} + + static const daNpc_Lud_HIOParam m; +}; + +class daNpc_Lud_c : public daNpcT_c { public: + typedef int (daNpc_Lud_c::*actionFunc)(void*); + typedef int (daNpc_Lud_c::*cutFunc)(int); + /* 80A6ABAC */ ~daNpc_Lud_c(); - /* 80A6ACF4 */ void create(); - /* 80A6AFA8 */ void CreateHeap(); - /* 80A6B5FC */ void Delete(); - /* 80A6B630 */ void Execute(); - /* 80A6B650 */ void Draw(); - /* 80A6B6E4 */ void createHeapCallBack(fopAc_ac_c*); - /* 80A6B704 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80A6B75C */ void getType(); - /* 80A6B7CC */ void isDelete(); + /* 80A6ACF4 */ int create(); + /* 80A6AFA8 */ int CreateHeap(); + /* 80A6B5FC */ int Delete(); + /* 80A6B630 */ int Execute(); + /* 80A6B650 */ int Draw(); + /* 80A6B6E4 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80A6B704 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80A6B75C */ u8 getType(); + /* 80A6B7CC */ BOOL isDelete(); /* 80A6B954 */ void reset(); /* 80A6BB1C */ void afterJntAnm(int); /* 80A6BBA8 */ void setParam(); - /* 80A6BD44 */ void checkChangeEvt(); + /* 80A6BD44 */ BOOL checkChangeEvt(); /* 80A6BE6C */ void setAfterTalkMotion(); /* 80A6BEE4 */ void srchActors(); - /* 80A6BFA4 */ void evtTalk(); - /* 80A6C044 */ void evtCutProc(); + /* 80A6BFA4 */ BOOL evtTalk(); + /* 80A6C044 */ BOOL evtCutProc(); /* 80A6C10C */ void action(); /* 80A6C2E4 */ void beforeMove(); /* 80A6C3A8 */ void setAttnPos(); /* 80A6C8EC */ void setCollision(); - /* 80A6CA9C */ bool drawDbgInfo(); + /* 80A6CA9C */ int drawDbgInfo(); /* 80A6CAA4 */ void drawOtherMdl(); - /* 80A6CC2C */ void setBowlAnm(int, int, f32); - /* 80A6CCFC */ void afterSetMotionAnm(int, int, f32, int); - /* 80A6CD30 */ void selectAction(); - /* 80A6CDF4 */ void chkAction(int (daNpc_Lud_c::*)(void*)); - /* 80A6CE20 */ void setAction(int (daNpc_Lud_c::*)(void*)); + /* 80A6CC2C */ bool setBowlAnm(int, int, f32); + /* 80A6CCFC */ bool afterSetMotionAnm(int, int, f32, int); + /* 80A6CD30 */ int selectAction(); + /* 80A6CDF4 */ BOOL chkAction(actionFunc); + /* 80A6CE20 */ int setAction(actionFunc); /* 80A6CEC8 */ void mop(int, int); - /* 80A6D01C */ void cutHurry(int); - /* 80A6D160 */ void cutConversationInHotel(int); - /* 80A6D450 */ void cutConversationAboutDeathMt(int); - /* 80A6D708 */ void cutConversationAboutGoron(int); - /* 80A6D998 */ void cutNurse(int); - /* 80A6DC48 */ void cutClothTry(int); - /* 80A6DCE8 */ void cutThankYou(int); - /* 80A6DE14 */ void wait(void*); - /* 80A6E32C */ void nurse(void*); - /* 80A6E6EC */ void giveSoup(void*); - /* 80A6E7EC */ void talk(void*); - /* 80A6FC04 */ daNpc_Lud_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**); - /* 80A6FCD0 */ u16 getEyeballMaterialNo(); - /* 80A6FCD8 */ s32 getHeadJointNo(); - /* 80A6FCE0 */ s32 getNeckJointNo(); - /* 80A6FCE8 */ bool getBackboneJointNo(); - /* 80A6FCF0 */ void checkChangeJoint(int); - /* 80A6FD00 */ void checkRemoveJoint(int); + /* 80A6D01C */ int cutHurry(int); + /* 80A6D160 */ int cutConversationInHotel(int); + /* 80A6D450 */ int cutConversationAboutDeathMt(int); + /* 80A6D708 */ int cutConversationAboutGoron(int); + /* 80A6D998 */ int cutNurse(int); + /* 80A6DC48 */ int cutClothTry(int); + /* 80A6DCE8 */ int cutThankYou(int); + /* 80A6DE14 */ int wait(void*); + /* 80A6E32C */ int nurse(void*); + /* 80A6E6EC */ int giveSoup(void*); + /* 80A6E7EC */ int talk(void*); + /* 80A6FC04 */ daNpc_Lud_c( + daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, + daNpcT_motionAnmData_c const* i_motionAnmData, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, + int i_faceMotionStepNum, + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, + daNpcT_evtData_c const* i_evtData, char** i_arcNames) + : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, + i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, + i_arcNames) {} + /* 80A6FCD0 */ u16 getEyeballMaterialNo() { return 1; } + /* 80A6FCD8 */ s32 getHeadJointNo() { return 4; } + /* 80A6FCE0 */ s32 getNeckJointNo() { return 3; } + /* 80A6FCE8 */ s32 getBackboneJointNo() { return 1; } + /* 80A6FCF0 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; } + /* 80A6FD00 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 10; } + + int getFlowNodeNo() { + u16 nodeNo = home.angle.x; + if (nodeNo == 0xffff) { + return -1; + } + return nodeNo; + } + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; } + + static char* mCutNameList[8]; + static cutFunc mCutList[8]; - static void* mCutNameList[8]; - static u8 mCutList[96]; private: - /* 0x568 */ u8 field_0x568[0xfdc - 0x568]; + /* 0xE40 */ mDoExt_McaMorfSO* mpBowlMorf; + /* 0xE44 */ u8 field_0xe44[0xe48 - 0xe44]; + /* 0xE48 */ J3DModel* mpModel[2]; + /* 0xE50 */ dCcD_Cyl mCyl; + /* 0xF8C */ u8 mType; + /* 0xF90 */ daNpcT_ActorMngr_c mActorMngr[3]; + /* 0xFA8 */ actionFunc field_0xfa8; + /* 0xFB4 */ actionFunc mAction; + /* 0xFC0 */ int field_0xfc0; + /* 0xFC4 */ int field_0xfc4; + /* 0xFC8 */ int field_0xfc8; + /* 0xFCC */ int field_0xfcc; + /* 0xFD0 */ s16 field_0xfd0; + /* 0xFD2 */ u8 field_0xfd2; + /* 0xFD3 */ u8 field_0xfd3; + /* 0xFD4 */ u8 field_0xfd4; + /* 0xFD5 */ u8 field_0xfd5; + /* 0xFD8 */ int field_0xfd8; }; STATIC_ASSERT(sizeof(daNpc_Lud_c) == 0xfdc); -class daNpc_Lud_Param_c { -public: - /* 80A6FD10 */ ~daNpc_Lud_Param_c(); - - static u8 const m[144]; -}; - #endif /* D_A_NPC_LUD_H */ diff --git a/include/d/actor/d_a_npc_moi.h b/include/d/actor/d_a_npc_moi.h index 142d25fe89..5b15e11aa4 100644 --- a/include/d/actor/d_a_npc_moi.h +++ b/include/d/actor/d_a_npc_moi.h @@ -13,32 +13,8 @@ */ struct daNpc_Moi_HIOParam { - /* 0x00 */ f32 field_0x00; - /* 0x04 */ f32 field_0x04; - /* 0x08 */ f32 field_0x08; - /* 0x0C */ f32 field_0x0c; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ f32 field_0x1c; - /* 0x20 */ f32 field_0x20; - /* 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 */ s16 field_0x48; - /* 0x4A */ s16 field_0x4a; - /* 0x4C */ s16 field_0x4c; - /* 0x4E */ s16 field_0x4e; - /* 0x50 */ f32 field_0x50; - /* 0x54 */ u8 field_0x54[24]; - /* 0x6C */ f32 field_0x6c; - /* 0x70 */ u8 field_0x70[40]; + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ u8 field_0x70[12]; /* 0x98 */ s16 field_0x98; /* 0x9A */ s16 field_0x9a; /* 0x9C */ s16 field_0x9c; @@ -55,7 +31,7 @@ class daNpc_Moi_Param_c { public: /* 80A7AE84 */ virtual ~daNpc_Moi_Param_c() {}; - static daNpc_Moi_HIOParam const m; + static const daNpc_Moi_HIOParam m; }; class daNpc_Moi_HIO_c @@ -146,7 +122,13 @@ public: : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, i_arcNames) {} - /* 80A7AE0C */ u16 getEyeballMaterialNo() { if (chkMoiN()) { return 4; } else { return 2; } } + /* 80A7AE0C */ u16 getEyeballMaterialNo() { + if (chkMoiN()) { + return 4; + } else { + return 2; + } + } /* 80A7AE3C */ s32 getHeadJointNo() { return 4; } /* 80A7AE44 */ s32 getNeckJointNo() { return 3; } /* 80A7AE4C */ s32 getBackboneJointNo() { return 1; } @@ -166,7 +148,7 @@ public: bool chkSFight() { return field_0x166b == 1; } u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; } - static const char* mCutNameList[5]; + static char* mCutNameList[5]; static cutFunc mCutList[5]; private: |
