diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_e_bu.h | 4 | ||||
| -rw-r--r-- | include/d/actor/d_a_e_zh.h | 2 | ||||
| -rw-r--r-- | include/d/actor/d_a_midna.h | 6 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_twGate.h | 31 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_volcbom.h | 107 | ||||
| -rw-r--r-- | include/d/actor/d_a_player.h | 3 | ||||
| -rw-r--r-- | include/d/d_com_inf_game.h | 4 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 12 | ||||
| -rw-r--r-- | include/f_pc/f_pc_base.h | 8 | ||||
| -rw-r--r-- | include/f_pc/f_pc_manager.h | 2 |
10 files changed, 154 insertions, 25 deletions
diff --git a/include/d/actor/d_a_e_bu.h b/include/d/actor/d_a_e_bu.h index 8ec8f9a9a5..639ab6c7a9 100644 --- a/include/d/actor/d_a_e_bu.h +++ b/include/d/actor/d_a_e_bu.h @@ -67,11 +67,13 @@ public: STATIC_ASSERT(sizeof(e_bu_class) == 0xaa4); -class daE_BU_HIO_c { +class daE_BU_HIO_c : public JORReflexible { public: /* 806911AC */ daE_BU_HIO_c(); /* 806941D4 */ virtual ~daE_BU_HIO_c() {} + void genMessage(JORMContext* ctx); + /* 0x04 */ s8 id; /* 0x08 */ f32 base_size; /* 0x0C */ f32 fly_speed; diff --git a/include/d/actor/d_a_e_zh.h b/include/d/actor/d_a_e_zh.h index 6bcbb6524a..9ddb99f390 100644 --- a/include/d/actor/d_a_e_zh.h +++ b/include/d/actor/d_a_e_zh.h @@ -118,6 +118,8 @@ public: /* 8082902C */ daE_ZH_HIO_c(); /* 8082F160 */ virtual ~daE_ZH_HIO_c() {} + void genMessage(JORMContext* ctx); + // ボールマスター (Ball Master) /* 0x04 */ s8 field_0x4; /* 0x08 */ f32 model_size; // モデルサイズ (Model Size) diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index 8e2fef4509..5f57975630 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -136,6 +136,7 @@ public: FLG0_UNK_4 = 4, FLG0_UNK_2 = 2, FLG0_UNK_1 = 1, + FLG0_TAG_PORTAL = FLG0_TAG_WAIT | FLG0_PORTAL_OBJ_CALL, }; enum daMidna_FLG1 { @@ -298,6 +299,11 @@ public: onEndResetStateFlg0(ERFLG0_UNK_2); } + void onTagWaitPosPortalObj(const cXyz& i_pos) { + mTagWaitPos = i_pos; + onStateFlg0(FLG0_TAG_PORTAL); + } + void onTagWaitPos(const cXyz* param_0) { mTagWaitPos = *param_0; onStateFlg0(FLG0_TAG_WAIT); diff --git a/include/d/actor/d_a_obj_twGate.h b/include/d/actor/d_a_obj_twGate.h index 36a79741a1..56ad450466 100644 --- a/include/d/actor/d_a_obj_twGate.h +++ b/include/d/actor/d_a_obj_twGate.h @@ -2,6 +2,7 @@ #define D_A_OBJ_TWGATE_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" /** * @ingroup actors-objects @@ -11,24 +12,36 @@ * @details * */ -class daTwGate_c : public fopAc_ac_c { +class daTwGate_c : public dBgS_MoveBgActor { public: /* 80D1FB84 */ void setBaseMtx(); - /* 80D1FC0C */ void CreateHeap(); - /* 80D1FD44 */ void create(); - /* 80D1FFA4 */ void Execute(f32 (**)[3][4]); - /* 80D200B4 */ void Draw(); - /* 80D20180 */ void Delete(); + /* 80D1FC0C */ int CreateHeap(); + /* 80D1FD44 */ int create(); + /* 80D1FFA4 */ int Execute(Mtx**); + /* 80D200B4 */ int Draw(); + /* 80D20180 */ int Delete(); + + int getGateType() { return fopAcM_GetParamBit(this, 4, 8); } + private: - /* 0x568 */ u8 field_0x568[0x5fc - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mModel; + /* 0x5AC */ mDoExt_btkAnm mBtk; + /* 0x5C4 */ mDoExt_brkAnm mBrk; + /* 0x5DC */ u8 mGateType; + /* 0x5E0 */ cM3dGLin mLine; }; STATIC_ASSERT(sizeof(daTwGate_c) == 0x5fc); -class daTwGate_HIO_c { +class daTwGate_HIO_c : public fOpAcm_HIO_entry_c { public: /* 80D1FAAC */ daTwGate_HIO_c(); - /* 80D2024C */ ~daTwGate_HIO_c(); + /* 80D2024C */ ~daTwGate_HIO_c() {} + + void genMessage(JORMContext* ctx); + + /* 0x4 */ f32 mRange; }; #endif /* D_A_OBJ_TWGATE_H */ diff --git a/include/d/actor/d_a_obj_volcbom.h b/include/d/actor/d_a_obj_volcbom.h index f79dd3d893..3b8f512440 100644 --- a/include/d/actor/d_a_obj_volcbom.h +++ b/include/d/actor/d_a_obj_volcbom.h @@ -1,6 +1,10 @@ #ifndef D_A_OBJ_VOLCBOM_H #define D_A_OBJ_VOLCBOM_H +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" +#include "d/d_msg_flow.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,14 +15,33 @@ * @details * */ -class daObjVolcBom_c : public fopAc_ac_c { +class daObjVolcBom_c : public dBgS_MoveBgActor { public: + typedef void (daObjVolcBom_c::*modeFunc)(); + typedef void (daObjVolcBom_c::*actionFunc)(); + + enum Mode { + MODE_WAIT_APPEAR, + MODE_FALL, + MODE_WAIT_END_FALL_DEMO, + MODE_WAIT, + }; + + enum Action { + ACTION_WAIT, + ACTION_ORDER_EVENT, + ACTION_TALK_EVENT, + ACTION_WARP_EVENT, + ACTION_ORDER_A_TALK_EVENT, + ACTION_DEAD, + }; + /* 80D241E0 */ void initBaseMtx(); /* 80D24238 */ void setBaseMtx(); - /* 80D242A8 */ void Create(); - /* 80D244E0 */ void CreateHeap(); - /* 80D248F4 */ void create1st(); - /* 80D249D0 */ void Execute(f32 (**)[3][4]); + /* 80D242A8 */ int Create(); + /* 80D244E0 */ int CreateHeap(); + /* 80D248F4 */ int create1st(); + /* 80D249D0 */ int Execute(Mtx**); /* 80D24A2C */ void mode_proc_call(); /* 80D24B18 */ void init_modeWaitAppear(); /* 80D24B6C */ void modeWaitAppear(); @@ -33,7 +56,7 @@ public: /* 80D25224 */ void appear(); /* 80D25230 */ void disappear(); /* 80D2523C */ void setSmoke(); - /* 80D252C8 */ void checkTalkDistance(); + /* 80D252C8 */ bool checkTalkDistance(); /* 80D25364 */ void calcMidnaWaitPos(); /* 80D253FC */ void setSrcEffect(); /* 80D25528 */ void setBindEffect(); @@ -51,20 +74,82 @@ public: /* 80D25EE4 */ void actionDead(); /* 80D25EE8 */ void demoProc(); /* 80D26468 */ void calcObjPos(); - /* 80D264E8 */ void Draw(); - /* 80D266FC */ void Delete(); + /* 80D264E8 */ int Draw(); + /* 80D266FC */ int Delete(); void startFall() { field_0x95f = 1; } void startSearch() { field_0x960 = 1; } + void setAction(u8 action) { mAction = action; } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); } + u16 getMsgID() { return mMsgID; } private: - /* 0x568 */ u8 field_0x568[0x95F - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mModel1; + /* 0x5AC */ mDoExt_btkAnm* mBtk1; + /* 0x5B0 */ mDoExt_brkAnm* mBrk1; + /* 0x5B4 */ mDoExt_bckAnm* mBck1; + /* 0x5B8 */ J3DModel* mModel2; + /* 0x5BC */ mDoExt_btkAnm* mBtk2; + /* 0x5C0 */ mDoExt_brkAnm* mBrk2; + /* 0x5C4 */ JPABaseEmitter* mSmokeEmitter; + /* 0x5C8 */ u8 mSmokeTimer; + /* 0x5C9 */ bool field_0x5c9; + /* 0x5CA */ u8 mAction; + /* 0x5CB */ bool field_0x5cb; + /* 0x5CC */ dBgS_ObjAcch mAcch; + /* 0x7A4 */ dBgS_AcchCir mAcchCir; + /* 0x7E4 */ dCcD_Stts mStts; + /* 0x820 */ dCcD_Cyl mCyl; + /* 0x95C */ u8 mDemoTimer; + /* 0x95D */ u8 mWaitAppearState; + /* 0x95E */ bool field_0x95e; /* 0x95F */ u8 field_0x95f; - /* 0x960 */ u8 field_0x960; - /* 0x961 */ u8 field_0x961[0xA1C - 0x961]; + /* 0x960 */ bool field_0x960; + /* 0x961 */ u8 mMode; + /* 0x962 */ bool misAppearing; + /* 0x963 */ bool mIsMsgIDInit; + /* 0x964 */ u16 mMsgID; + /* 0x968 */ cXyz mLightPosWorld; + /* 0x974 */ u32 mShadowID; + /* 0x978 */ f32 field_0x978; + /* 0x97C */ f32 mBaseScale; + /* 0x980 */ cXyz mWarpSEPos; + /* 0x98C */ cXyz mWaitSEPos; + /* 0x998 */ cXyz mMidnaWaitPos; + /* 0x9A4 */ dMsgFlow_c mMsgFlow; + /* 0x9F0 */ s16 mEventId; + /* 0x9F4 */ int mStaffId; + /* 0x9F8 */ JPABaseEmitter* mStartEmitters[3]; + /* 0xA04 */ JPABaseEmitter* mDisappearEmitters[1]; + /* 0xA08 */ JPABaseEmitter* mBindEmitters[4]; + /* 0xA18 */ u16 mEffectJntNo; + /* 0xA1A */ bool field_0xa1a; + /* 0xA1B */ u8 mNaviTimer; }; STATIC_ASSERT(sizeof(daObjVolcBom_c) == 0xa1c); +#ifdef DEBUG +class daObjVolcBom_HIO_c : public mDoHIO_entry_c { +public: + daObjVolcBom_HIO_c(); + void genMessage(JORMContext* ctx); + + /* 0x04 */ u8 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ u8 field_0x0c[0x14 - 0x0c]; + /* 0x14 */ u8 field_0x14; + /* 0x15 */ u8 field_0x15; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ u8 field_0x28[0x34 - 0x28]; + /* 0x34 */ u8 field_0x34; +}; +#endif + #endif /* D_A_OBJ_VOLCBOM_H */ diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index e970e61617..b3c6e716f1 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -437,7 +437,7 @@ public: FLG3_COPY_ROD_ATN_KEEP = 0x10000000, FLG3_BOOMERANG_ATN_KEEP = 0x8000000, FLG3_UNK_4000000 = 0x4000000, - FLG3_UNK_2000000 = 0x2000000, + FLG3_WARP_OBJ_DEMO = 0x2000000, FLG3_UNK_1000000 = 0x1000000, FLG3_UNK_800000 = 0x800000, FLG3_UNK_400000 = 0x400000, @@ -963,6 +963,7 @@ public: } } void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); } + void onWarpObjDemo() { onNoResetFlg3(FLG3_WARP_OBJ_DEMO); } void offCargoCarry() { if (checkCargoCarry()) { diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 71a9c43873..c15edc9348 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -3517,6 +3517,10 @@ inline BOOL dComIfGp_evmng_startCheck(char const* i_event) { return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_event); } +inline BOOL dComIfGp_evmng_startCheck(s16 i_eventId) { + return g_dComIfG_gameInfo.play.getEvtManager().startCheck(i_eventId); +} + inline BOOL dComIfGp_evmng_endCheck(const char* event) { return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event); } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index ea2854dee6..8995430969 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -88,6 +88,18 @@ struct fopAcM_search_prm { struct fOpAcm_HIO_entry_c : public mDoHIO_entry_c { virtual ~fOpAcm_HIO_entry_c() {} + + #ifdef DEBUG + void removeHIO(const fopAc_ac_c* i_this) { removeHIO(*i_this); } + void removeHIO(const fopAc_ac_c& i_this) { removeHIO(static_cast<const leafdraw_class&>(i_this)); } + void removeHIO(const leafdraw_class& i_this) { removeHIO(i_this.base); } + void removeHIO(const base_process_class& i_this) { removeHIO(i_this.state); } + void removeHIO(const state_class& state) { + if (state.create_phase == cPhs_NEXT_e) { + mDoHIO_entry_c::removeHIO(); + } + } + #endif }; class l_HIO { diff --git a/include/f_pc/f_pc_base.h b/include/f_pc/f_pc_base.h index 10f9041783..896e7a9c9d 100644 --- a/include/f_pc/f_pc_base.h +++ b/include/f_pc/f_pc_base.h @@ -14,14 +14,18 @@ typedef struct process_method_class process_method_class; typedef struct process_profile_definition process_profile_definition; typedef struct profile_method_class profile_method_class; +typedef struct state_class { + /* 0x00 */ s8 init_state; // maybe inaccurate name + /* 0x01 */ u8 create_phase; +} state_class; + typedef struct base_process_class { /* 0x00 */ int type; /* 0x04 */ fpc_ProcID id; /* 0x08 */ s16 name; /* 0x0A */ s8 unk_0xA; /* 0x0B */ u8 pause_flag; - /* 0x0C */ s8 init_state; // maybe inaccurate name - /* 0x0D */ u8 create_phase; + /* 0x0C */ state_class state; /* 0x0E */ s16 profname; /* 0x10 */ process_profile_definition* profile; /* 0x14 */ struct create_request* create_req; diff --git a/include/f_pc/f_pc_manager.h b/include/f_pc/f_pc_manager.h index a9ac53dff6..2150558827 100644 --- a/include/f_pc/f_pc_manager.h +++ b/include/f_pc/f_pc_manager.h @@ -54,7 +54,7 @@ inline BOOL fpcM_IsJustType(int i_typeA, int i_typeB) { } inline bool fpcM_IsFirstCreating(void* i_process) { - return ((base_process_class*)i_process)->init_state == 0; + return ((base_process_class*)i_process)->state.init_state == 0; } inline process_profile_definition* fpcM_GetProfile(void* i_process) { |
