diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-11-07 05:26:52 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-07 15:26:52 +0200 |
| commit | 1f701cd132e9caf2336db6609518fea90edd9835 (patch) | |
| tree | a4902c2637de58d5c70c0d6d58a394fc2fac318a /include | |
| parent | 1704a3acba64ba1def3e2f85681bc9d52925f225 (diff) | |
npc_hoz done (#2775)
* npc_hoz done
* pr
* remove include
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_npc.h | 6 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_hoz.h | 151 | ||||
| -rw-r--r-- | include/d/actor/d_a_startAndGoal.h | 28 | ||||
| -rw-r--r-- | include/d/d_meter2_info.h | 5 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 6 |
5 files changed, 133 insertions, 63 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 537ae86bef..9dd14737b0 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -799,6 +799,12 @@ public: STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40); +#define daNpcT_ct(ptr, ClassName, faceMotionAnmData, motionAnmData, faceMotionSequenceData, faceMotionStepNum, motionSequenceData, motionStepNum, evtData, arcNames) \ + if (!fopAcM_CheckCondition(ptr, fopAcCnd_INIT_e)) { \ + new (ptr) ClassName(faceMotionAnmData, motionAnmData, faceMotionSequenceData, faceMotionStepNum, motionSequenceData, motionStepNum, evtData, arcNames); \ + fopAcM_OnCondition(ptr, fopAcCnd_INIT_e); \ + } + BOOL daNpcT_chkEvtBit(u32 i_idx); BOOL daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3, BOOL param_4); u8 daNpcT_getDistTableIdx(int param_0, int param_1); diff --git a/include/d/actor/d_a_npc_hoz.h b/include/d/actor/d_a_npc_hoz.h index 6175729534..1082ffbe9d 100644 --- a/include/d/actor/d_a_npc_hoz.h +++ b/include/d/actor/d_a_npc_hoz.h @@ -2,6 +2,7 @@ #define D_A_NPC_HOZ_H #include "d/actor/d_a_npc.h" +#include "d/actor/d_a_startAndGoal.h" /** * @ingroup actors-npcs @@ -13,6 +14,9 @@ */ class daNpc_Hoz_c : public daNpcT_c { public: + typedef int (daNpc_Hoz_c::*actionFunc)(void*); + typedef int (daNpc_Hoz_c::*cutFunc)(int); + enum Type { /* 0 */ TYPE_0, /* 1 */ TYPE_1, @@ -23,80 +27,113 @@ public: /* 6 */ TYPE_6, }; - /* 80A0150C */ ~daNpc_Hoz_c(); - /* 80A01658 */ void create(); - /* 80A01904 */ void CreateHeap(); - /* 80A01D54 */ void Delete(); - /* 80A01D88 */ void Execute(); - /* 80A01DA8 */ void Draw(); - /* 80A01E44 */ void createHeapCallBack(fopAc_ac_c*); - /* 80A01E64 */ void ctrlJointCallBack(J3DJoint*, int); + /* 80A01658 */ int create(); + /* 80A01904 */ int CreateHeap(); + /* 80A01D54 */ int Delete(); + /* 80A01D88 */ int Execute(); + /* 80A01DA8 */ int Draw(); + /* 80A01E44 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80A01E64 */ static int ctrlJointCallBack(J3DJoint*, int); /* 80A01F54 */ u8 getType(); - /* 80A01FC8 */ void getFlowNodeNo(); - /* 80A01FE4 */ bool isDelete(); + /* 80A01FC8 */ int getFlowNodeNo(); + /* 80A01FE4 */ int isDelete(); /* 80A01FEC */ void reset(); - /* 80A021DC */ void setParam(); - /* 80A0236C */ void setAfterTalkMotion(); /* 80A02370 */ void srchActors(); - /* 80A02374 */ BOOL checkChangeEvt(); - /* 80A023EC */ BOOL evtTalk(); - /* 80A024D0 */ BOOL evtEndProc(); - /* 80A0260C */ BOOL evtCutProc(); - /* 80A026D4 */ int evtProc(); - /* 80A02918 */ void action(); - /* 80A029A0 */ void beforeMove(); - /* 80A02A18 */ void setAttnPos(); - /* 80A02C50 */ void setCollision(); - /* 80A02DD4 */ void evtOrder(); - /* 80A02F78 */ int drawDbgInfo(); - /* 80A02F80 */ void selectAction(); - /* 80A030A8 */ void chkAction(int (daNpc_Hoz_c::*)(void*)); - /* 80A030D4 */ void setAction(int (daNpc_Hoz_c::*)(void*)); - /* 80A0317C */ void wait(void*); - /* 80A03304 */ void waitBattle(void*); - /* 80A03578 */ void waitTwilightBattle(void*); - /* 80A037E4 */ void waitBoat(void*); - /* 80A03BDC */ void waitBoat2(void*); - /* 80A03F8C */ void waitBoat1_5(void*); - /* 80A04400 */ void waitTw(void*); - /* 80A045FC */ void talk(void*); - /* 80A0487C */ void ECut_boatRace(int); - /* 80A04BE4 */ void ECut_beforeBattle(int); - /* 80A04CDC */ void ECut_afterBattle(int); - /* 80A04E24 */ void ECut_beforeBlast(int); - /* 80A04F6C */ void ECut_afterBlast(int); - /* 80A050B4 */ void ECut_yMushi(int); - /* 80A051C8 */ void ECut_talkBreak(int); - /* 80A064E4 */ daNpc_Hoz_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**); - /* 80A065A4 */ u16 getEyeballMaterialNo(); - /* 80A065AC */ s32 getHeadJointNo(); - /* 80A065B4 */ s32 getNeckJointNo(); - /* 80A065BC */ s32 getBackboneJointNo(); - /* 80A065C4 */ int checkChangeJoint(int); - /* 80A065D4 */ int checkRemoveJoint(int); + /* 80A02F80 */ int selectAction(); + /* 80A030A8 */ int chkAction(int (daNpc_Hoz_c::*)(void*)); + /* 80A030D4 */ int setAction(int (daNpc_Hoz_c::*)(void*)); + /* 80A0317C */ int wait(void*); + /* 80A03304 */ int waitBattle(void*); + /* 80A03578 */ int waitTwilightBattle(void*); + /* 80A037E4 */ int waitBoat(void*); + /* 80A03BDC */ int waitBoat2(void*); + /* 80A03F8C */ int waitBoat1_5(void*); + /* 80A04400 */ int waitTw(void*); + /* 80A045FC */ int talk(void*); + /* 80A0487C */ int ECut_boatRace(int); + /* 80A04BE4 */ int ECut_beforeBattle(int); + /* 80A04CDC */ int ECut_afterBattle(int); + /* 80A04E24 */ int ECut_beforeBlast(int); + /* 80A04F6C */ int ECut_afterBlast(int); + /* 80A050B4 */ int ECut_yMushi(int); + /* 80A051C8 */ int ECut_talkBreak(int); + /* 80A064E4 */ daNpc_Hoz_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_Hoz_c -> コンストラクト\n", g_Counter.mCounter0, this); + } + + /* 80A0150C */ virtual ~daNpc_Hoz_c(); + /* 80A065C4 */ virtual int checkChangeJoint(int i_jointNo) { return i_jointNo == 4; } + /* 80A065D4 */ virtual int checkRemoveJoint(int i_jointNo) { return i_jointNo == 9; } + /* 80A065BC */ virtual s32 getBackboneJointNo() { return 1; } + /* 80A065B4 */ virtual s32 getNeckJointNo() { return 3; } + /* 80A065AC */ virtual s32 getHeadJointNo() { return 4; } + /* 80A065A4 */ virtual u16 getEyeballMaterialNo() { return 1; } + /* 80A021DC */ virtual void setParam(); + /* 80A02374 */ virtual BOOL checkChangeEvt(); + /* 80A023EC */ virtual BOOL evtTalk(); + /* 80A024D0 */ virtual BOOL evtEndProc(); + /* 80A0260C */ virtual BOOL evtCutProc(); + /* 80A0236C */ virtual void setAfterTalkMotion(); + /* 80A026D4 */ virtual int evtProc(); + /* 80A02918 */ virtual void action(); + /* 80A029A0 */ virtual void beforeMove(); + /* 80A02A18 */ virtual void setAttnPos(); + /* 80A02C50 */ virtual void setCollision(); + /* 80A02DD4 */ virtual void evtOrder(); + /* 80A02F78 */ virtual int drawDbgInfo(); + + #if DEBUG + int test(void*); + #endif bool getGameStartFlag() { return mGameStartFlag; } void setPotBreakFlag() { mPotBreakFlag = true; } static char* mCutNameList[8]; - static u8 mCutList[96]; + static cutFunc mCutList[]; private: - /* 0xE40 */ u8 field_0xe40[0x14d]; + /* 0xE40 */ u8 field_0xE40[0xE44 - 0xE40]; + /* 0xE44 */ dCcD_Cyl mCyl; + /* 0xF80 */ u8 mType; + /* 0xF84 */ daStartAndGoal_c* field_0xf84; + /* 0xF88 */ u8 field_0xf88; + /* 0xF89 */ u8 field_0xf89; + /* 0xF8A */ u8 field_0xf8a; + /* 0xF8B */ u8 field_0xf8b; + /* 0xF8C */ u8 field_0xf8c; /* 0xF8D */ bool mGameStartFlag; /* 0xF8E */ bool mPotBreakFlag; - /* 0xF8F */ u8 field_0xf8f[0x39]; + /* 0xF90 */ cXyz field_0xf90; + /* 0xF9C */ s16 field_0xf9c; + /* 0xFA0 */ daNpcT_ActorMngr_c field_0xfa0; + /* 0xFA8 */ int field_0xfa8; + /* 0xFAC */ int (daNpc_Hoz_c::*field_0xfac)(void*); + /* 0xFB8 */ int (daNpc_Hoz_c::*mAction)(void*); + /* 0xFC4 */ u8 field_0xfc4; }; STATIC_ASSERT(sizeof(daNpc_Hoz_c) == 0xFC8); -struct daNpc_Hoz_Param_c { - /* 80A065E4 */ ~daNpc_Hoz_Param_c(); +struct daNpc_Hoz_HIOParam { + /* 0x00 */ daNpcT_HIOParam common; + /* 0x8C */ f32 field_0x8c; +}; + +class daNpc_Hoz_Param_c { +public: + /* 80A065E4 */ virtual ~daNpc_Hoz_Param_c() {} - static u8 const m[144]; + static const daNpc_Hoz_HIOParam m; }; #endif /* D_A_NPC_HOZ_H */ diff --git a/include/d/actor/d_a_startAndGoal.h b/include/d/actor/d_a_startAndGoal.h index 3e8d121ee7..f4984dae11 100644 --- a/include/d/actor/d_a_startAndGoal.h +++ b/include/d/actor/d_a_startAndGoal.h @@ -1,5 +1,33 @@ #ifndef D_A_STARTANDGOAL_H #define D_A_STARTANDGOAL_H +#include "d/actor/d_a_npc.h" + +class daStartAndGoal_Path_c : public daNpcF_Path_c { +public: + /* 80D4D7B8 */ BOOL chkPassed2(cXyz); + + /* 80D4D928 */ virtual ~daStartAndGoal_Path_c(); +}; + +class daStartAndGoal_c : public fopAc_ac_c { +public: + /* 80D4D84C */ int getType(); + /* 80D4D884 */ int Create(); + /* 80D4D998 */ void init(); + /* 80D4DA68 */ void actorPosCheck(); + /* 80D4DB30 */ int readyStartTimer(); + /* 80D4DBAC */ BOOL isStartCheck(); + /* 80D4DBD0 */ BOOL isReadyCheck(); + /* 80D4DC50 */ int Execute(); + /* 80D4DCF4 */ int Draw(); + /* 80D4DCFC */ int Delete(); + + /* 0x568 */ daStartAndGoal_Path_c mPath; + /* 0xB98 */ u8 field_0xb98; + /* 0xB99 */ u8 mType; + /* 0xB9C */ int mAction; + /* 0xBA0 */ bool mStarted; +}; #endif /* D_A_STARTANDGOAL_H */ diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index 6865ac2ccb..b41fcfd51a 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -206,6 +206,7 @@ public: void resetWindowAccept() { mWindowAccept = 0xFFFF; } void onWindowAccept(int param_0) { mWindowAccept |= (u16)(1 << param_0); } void offWindowAccept(int param_0) { mWindowAccept &= ~(u16)(1 << param_0); } + void onMenuInForce(int param_0) { unk_0x98 |= (u16)(1 << param_0); } public: /* 0x04 */ u8 unk_0x4[4]; @@ -853,4 +854,8 @@ inline void dMeter2Info_offWindowAccept(int param_0) { g_meter2_info.offWindowAccept(param_0); } +inline void dMeter2Info_onMenuInForce(int param_0) { + g_meter2_info.onMenuInForce(param_0); +} + #endif /* D_METER_D_METER2_INFO_H */ diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 8621493209..52a032253f 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -18,12 +18,6 @@ fopAcM_OnCondition(ptr, fopAcCnd_INIT_e); \ } -#define fopAcM_SetupActor2(ptr, ClassName, ...) \ - if (!fopAcM_CheckCondition(ptr, fopAcCnd_INIT_e)) { \ - new (ptr) ClassName(__VA_ARGS__); \ - fopAcM_OnCondition(ptr, fopAcCnd_INIT_e); \ - } - #define fopAcM_RegisterDeleteID(i_this, actor_name_str) \ const fpc_ProcID procID = fopAcM_GetID(i_this); \ "Delete -> " actor_name_str "(id=%d)\n" |
