diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-09-12 14:29:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-13 00:29:20 +0300 |
| commit | f91257cc6206ab4b47c2509b3a747e2dc4fa84f9 (patch) | |
| tree | 3dee331bd06fccb27db6a9adcee9062f2dcba7c1 /include | |
| parent | 8a3a6d29971e37c01025303af9931feea651af9c (diff) | |
npc_kakashi done (#2651)
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_npc.h | 2 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_kakashi.h | 137 | ||||
| -rw-r--r-- | include/d/d_com_static.h | 4 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 59 |
4 files changed, 130 insertions, 72 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 74c1ee543b..f83dd3e10b 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -790,6 +790,8 @@ BOOL daNpcT_chkTmpBit(u32 i_idx); BOOL daNpcT_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz* o_spawnPos, csXyz* o_angle); int daNpcT_judgeRace(dPath* i_path, fopAc_ac_c** param_1, daNpcT_pntData_c* i_pntData, int param_3, int* param_4); +BOOL daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32 param_3, + f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8); class daBaseNpc_matAnm_c : public J3DMaterialAnm { public: diff --git a/include/d/actor/d_a_npc_kakashi.h b/include/d/actor/d_a_npc_kakashi.h index 5a8b977a18..c23e811160 100644 --- a/include/d/actor/d_a_npc_kakashi.h +++ b/include/d/actor/d_a_npc_kakashi.h @@ -11,63 +11,116 @@ * @details * */ -class daNpc_Kakashi_c : public fopAc_ac_c { +class daNpc_Kakashi_c : public daNpcT_c { public: - /* 8054B36C */ ~daNpc_Kakashi_c(); - /* 8054B4E8 */ void create(); - /* 8054B7D8 */ void CreateHeap(); - /* 8054B908 */ void Delete(); - /* 8054B93C */ void Execute(); - /* 8054B994 */ void Draw(); - /* 8054B9D8 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 8054BB34 */ void createHeapCallBack(fopAc_ac_c*); - /* 8054BB54 */ void ctrlJointCallBack(J3DJoint*, int); - /* 8054BBAC */ void getType(); - /* 8054BC10 */ void isDelete(); + typedef int (daNpc_Kakashi_c::*ActionFunc)(void*); + + /* 8054B4E8 */ int create(); + /* 8054B7D8 */ int CreateHeap(); + /* 8054B908 */ int Delete(); + /* 8054B93C */ int Execute(); + /* 8054B994 */ int Draw(); + /* 8054BB34 */ static int createHeapCallBack(fopAc_ac_c*); + /* 8054BB54 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 8054BBAC */ int getType(); + /* 8054BC10 */ int isDelete(); /* 8054BC98 */ void reset(); - /* 8054BEA8 */ void setParam(); /* 8054BF88 */ void srchActors(); - /* 8054BF8C */ void checkChangeEvt(); - /* 8054C034 */ void evtTalk(); - /* 8054C0D4 */ void evtEndProc(); - /* 8054C0E8 */ void evtCutProc(); - /* 8054C1B0 */ void action(); - /* 8054C268 */ void beforeMove(); - /* 8054C2E0 */ void setAttnPos(); - /* 8054C584 */ void setCollision(); - /* 8054C924 */ bool drawDbgInfo(); - /* 8054C92C */ void selectAction(); - /* 8054CA1C */ void chkAction(int (daNpc_Kakashi_c::*)(void*)); - /* 8054CA48 */ void setAction(int (daNpc_Kakashi_c::*)(void*)); - /* 8054CAF0 */ void hitChk(); + /* 8054C92C */ int selectAction(); + /* 8054CA1C */ BOOL chkAction(ActionFunc); + /* 8054CA48 */ int setAction(ActionFunc); + /* 8054CAF0 */ fopAc_ac_c* hitChk(); /* 8054CEA0 */ void setStaggerParam(fopAc_ac_c*); /* 8054D26C */ void setPrtcls(int); - /* 8054D374 */ void judgeSwdTutorial(); - /* 8054D490 */ void cutSwdTutorial(int); - /* 8054D57C */ void cutGetWoodSwd(int); - /* 8054D604 */ void cutMarosWhisper(int); - /* 8054D668 */ void wait(void*); - /* 8054D694 */ void swdTutorial(void*); - /* 8054D8BC */ void talk(void*); - /* 8054E804 */ daNpc_Kakashi_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**); + /* 8054D374 */ int judgeSwdTutorial(); + /* 8054D490 */ int cutSwdTutorial(int); + /* 8054D57C */ int cutGetWoodSwd(int); + /* 8054D604 */ int cutMarosWhisper(int); + /* 8054D668 */ int wait(void*); + /* 8054D694 */ int swdTutorial(void*); + /* 8054D8BC */ int talk(void*); - static void* mCutNameList[4]; - static u8 mCutList[48]; + /* 8054E804 */ daNpc_Kakashi_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) + { + OS_REPORT("|%06d:%x|daNpc_Kakashi_c -> コンストラクト\n", g_Counter.mCounter0, this); + } + + /* 8054B36C */ virtual ~daNpc_Kakashi_c(); + /* 8054B9D8 */ virtual int ctrlJoint(J3DJoint*, J3DModel*); + /* 8054BEA8 */ virtual void setParam(); + /* 8054BF8C */ virtual BOOL checkChangeEvt(); + /* 8054C034 */ virtual BOOL evtTalk(); + /* 8054C0D4 */ virtual BOOL evtEndProc(); + /* 8054C0E8 */ virtual BOOL evtCutProc(); + /* 8054C1B0 */ virtual void action(); + /* 8054C268 */ virtual void beforeMove(); + /* 8054C2E0 */ virtual void setAttnPos(); + /* 8054C584 */ virtual void setCollision(); + /* 8054C924 */ virtual int drawDbgInfo(); + + int getFlowNodeNo() { + u16 prm = home.angle.x; + return prm == 0xFFFF ? -1 : prm; + } + + u8 getTalkPattern() { + u8 var_r31 = (fopAcM_GetParam(this) & 0xF0000000) >> 0x1C; + if (var_r31 == 15) { + var_r31 = 0; + } + return var_r31; + } + + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } + u8 getBitSW2() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; } + + static char* mCutNameList[4]; + static int (daNpc_Kakashi_c::*mCutList[])(int); private: - /* 0x568 */ u8 field_0x568[0x1398 - 0x568]; + /* 0x0E40 */ u8 field_0xE40[0xE44 - 0xE40]; + /* 0x0E44 */ Z2SoundObjSimple mSound; + /* 0x0E64 */ dCcD_Cyl mCcCyl; + /* 0x0FA0 */ dCcD_Sph mCcSph[3]; + /* 0x1348 */ u8 mType; + /* 0x134C */ ActionFunc mSelectAction; + /* 0x1358 */ ActionFunc mAction; + /* 0x1364 */ csXyz field_0x1364[3]; + /* 0x1378 */ f32 field_0x1378[3]; + /* 0x1384 */ s16 field_0x1384[3]; + /* 0x138A */ u8 field_0x138A[0x138C - 0x138A]; + /* 0x138C */ s16 field_0x138c; + /* 0x138E */ u8 field_0x138e; + /* 0x138F */ u8 field_0x138f; + /* 0x1390 */ u8 field_0x1390; + /* 0x1391 */ u8 field_0x1391; + /* 0x1392 */ u8 field_0x1392; + /* 0x1393 */ u8 field_0x1393; + /* 0x1394 */ u8 field_0x1394; }; STATIC_ASSERT(sizeof(daNpc_Kakashi_c) == 0x1398); +struct daNpc_Kakashi_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ f32 field_0x8c; + /* 0x90 */ f32 field_0x90; + /* 0x94 */ f32 field_0x94; +}; + class daNpc_Kakashi_Param_c { public: - /* 8054EA58 */ ~daNpc_Kakashi_Param_c(); + /* 8054EA58 */ virtual ~daNpc_Kakashi_Param_c() {} - static u8 const m[152]; + static const daNpc_Kakashi_HIOParam m; }; diff --git a/include/d/d_com_static.h b/include/d/d_com_static.h index 84277ff2f6..df814b3223 100644 --- a/include/d/d_com_static.h +++ b/include/d/d_com_static.h @@ -6,9 +6,11 @@ u8 daNpcKakashi_getSwdTutorialStep(); void daNpcKakashi_setSwdTutorialStep(u8 iEvtNum); bool daNpcKakashi_getSwdTutorialResult(); -BOOL daNpcKakashi_chkSwdTutorialStage(); +u8 daNpcKakashi_chkSwdTutorialStage(); u8 daNpcKakashi_getSuccessCount(); void daNpcKakashi_clrSuccessCount(); +void daNpcKakashi_setSwdTutorialResult(bool param_0); +void daNpcKakashi_incSuccessCount(); int daNpcMsg_setEvtNum(u8 iEvtNum); #endif /* D_COM_D_COM_STATIC_H */ diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index ae501319ff..3be6217137 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -114,35 +114,36 @@ struct DOUBLE_POS { }; enum fopAcM_STATUS { - /* 0x0000001 */ fopAcM_STATUS_UNK_000001 = 1 << 0, - /* 0x0000002 */ fopAcM_STATUS_UNK_000002 = 1 << 1, - /* 0x0000004 */ fopAcM_STATUS_UNK_000004 = 1 << 2, - /* 0x0000008 */ fopAcM_STATUS_UNK_000008 = 1 << 3, - /* 0x0000010 */ fopAcM_STATUS_UNK_000010 = 1 << 4, - /* 0x0000020 */ fopAcM_STATUS_UNK_000020 = 1 << 5, - /* 0x0000040 */ fopAcM_STATUS_UNK_000040 = 1 << 6, - /* 0x0000080 */ fopAcM_STATUS_UNK_000080 = 1 << 7, - /* 0x0000100 */ fopAcM_STATUS_UNK_000100 = 1 << 8, - /* 0x0000200 */ fopAcM_STATUS_UNK_000200 = 1 << 9, - /* 0x0000400 */ fopAcM_STATUS_UNK_000400 = 1 << 10, - /* 0x0000800 */ fopAcM_STATUS_UNK_000800 = 1 << 11, - /* 0x0001000 */ fopAcM_STATUS_UNK_001000 = 1 << 12, - /* 0x0002000 */ fopAcM_STATUS_CARRY_NOW = 1 << 13, - /* 0x0004000 */ fopAcM_STATUS_UNK_004000 = 1 << 14, - /* 0x0008000 */ fopAcM_STATUS_UNK_008000 = 1 << 15, - /* 0x0010000 */ fopAcM_STATUS_UNK_010000 = 1 << 16, - /* 0x0020000 */ fopAcM_STATUS_UNK_200000 = 1 << 17, - /* 0x0040000 */ fopAcM_STATUS_UNK_400000 = 1 << 18, - /* 0x0080000 */ fopAcM_STATUS_UNK_800000 = 1 << 19, - /* 0x0100000 */ fopAcM_STATUS_HOOK_CARRY_NOW = 1 << 20, - /* 0x0200000 */ fopAcM_STATUS_UNK_2000000 = 1 << 21, - /* 0x0400000 */ fopAcM_STATUS_UNK_4000000 = 1 << 22, - /* 0x0800000 */ fopAcM_STATUS_UNK_8000000 = 1 << 23, - /* 0x1000000 */ fopAcM_STATUS_UNK_10000000 = 1 << 24, - /* 0x2000000 */ fopAcM_STATUS_UNK_20000000 = 1 << 25, - /* 0x4000000 */ fopAcM_STATUS_UNK_40000000 = 1 << 26, - /* 0x8000000 */ fopAcM_STATUS_UNK_80000000 = 1 << 27, - /* 0x8000000 */ fopAcM_STATUS_HAWK_CARRY_NOW = 1 << 31, + /* 0x00000001 */ fopAcM_STATUS_UNK_0x1 = 1 << 0, + /* 0x00000002 */ fopAcM_STATUS_UNK_0x2 = 1 << 1, + /* 0x00000004 */ fopAcM_STATUS_UNK_0x4 = 1 << 2, + /* 0x00000008 */ fopAcM_STATUS_UNK_0x8 = 1 << 3, + /* 0x00000010 */ fopAcM_STATUS_UNK_0x10 = 1 << 4, + /* 0x00000020 */ fopAcM_STATUS_UNK_0x20 = 1 << 5, + /* 0x00000040 */ fopAcM_STATUS_UNK_0x40 = 1 << 6, + /* 0x00000080 */ fopAcM_STATUS_UNK_0x80 = 1 << 7, + /* 0x00000100 */ fopAcM_STATUS_UNK_0x100 = 1 << 8, + /* 0x00000200 */ fopAcM_STATUS_UNK_0x200 = 1 << 9, + /* 0x00000400 */ fopAcM_STATUS_UNK_0x400 = 1 << 10, + /* 0x00000800 */ fopAcM_STATUS_UNK_0x800 = 1 << 11, + /* 0x00001000 */ fopAcM_STATUS_UNK_0x1000 = 1 << 12, + /* 0x00002000 */ fopAcM_STATUS_CARRY_NOW = 1 << 13, + /* 0x00004000 */ fopAcM_STATUS_UNK_0x4000 = 1 << 14, + /* 0x00008000 */ fopAcM_STATUS_UNK_0x8000 = 1 << 15, + /* 0x00010000 */ fopAcM_STATUS_UNK_0x10000 = 1 << 16, + /* 0x00020000 */ fopAcM_STATUS_UNK_0x20000 = 1 << 17, + /* 0x00040000 */ fopAcM_STATUS_UNK_0x40000 = 1 << 18, + /* 0x00080000 */ fopAcM_STATUS_UNK_0x80000 = 1 << 19, + /* 0x00100000 */ fopAcM_STATUS_HOOK_CARRY_NOW = 1 << 20, + /* 0x00200000 */ fopAcM_STATUS_UNK_0x200000 = 1 << 21, + /* 0x00400000 */ fopAcM_STATUS_UNK_0x400000 = 1 << 22, + /* 0x00800000 */ fopAcM_STATUS_UNK_0x800000 = 1 << 23, + /* 0x01000000 */ fopAcM_STATUS_UNK_0x1000000 = 1 << 24, + /* 0x02000000 */ fopAcM_STATUS_UNK_0x2000000 = 1 << 25, + /* 0x04000000 */ fopAcM_STATUS_UNK_0x4000000 = 1 << 26, + /* 0x08000000 */ fopAcM_STATUS_UNK_0x8000000 = 1 << 27, + + /* 0x80000000 */ fopAcM_STATUS_HAWK_CARRY_NOW = 1 << 31, }; inline s8 fopAcM_GetRoomNo(const fopAc_ac_c* i_actor) { |
