diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-07-30 10:25:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-30 20:25:42 +0300 |
| commit | 2b873ea14430e00f2d2180bcd503a597c719688e (patch) | |
| tree | 88b8d3022f555aa6f4d29a8ae4009fd61dc3c4f8 /include | |
| parent | a1b63ae94018e89a7b8321ca110ead3076e2512f (diff) | |
kbrg/obrg done (#2558)
* kbrg done
* obrg done
* cleanup
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_midna.h | 5 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_warp_kbrg.h | 74 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_warp_obrg.h | 59 |
3 files changed, 116 insertions, 22 deletions
diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index 5f57975630..d78bbb8097 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -383,6 +383,11 @@ public: mpKago = NULL; } + void onTagWaitPosPortalObj(const cXyz* i_pos) { + mTagWaitPos = *i_pos; + onStateFlg0(daMidna_FLG0(FLG0_PORTAL_OBJ_CALL | FLG0_TAG_WAIT)); + } + static daMidna_texData_s const m_texDataTable[21]; static daMidna_anmData_s const m_anmDataTable[53]; diff --git a/include/d/actor/d_a_obj_warp_kbrg.h b/include/d/actor/d_a_obj_warp_kbrg.h index dd11213092..6b8dc9d8cd 100644 --- a/include/d/actor/d_a_obj_warp_kbrg.h +++ b/include/d/actor/d_a_obj_warp_kbrg.h @@ -2,23 +2,36 @@ #define D_A_OBJ_WARP_KBRG_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_msg_flow.h" /** * @ingroup actors-objects * @class daObjWarpKBrg_c - * @brief Warp K Bridge (Kakariko Gorge Bridge?) + * @brief Kakariko Gorge Warp Bridge * * @details * */ -class daObjWarpKBrg_c : public fopAc_ac_c { +class daObjWarpKBrg_c : public dBgS_MoveBgActor { public: + enum Action_e { + ACTION_WAIT_e, + ACTION_ORDER_EVENT_e, + ACTION_TALK_EVENT_e, + ACTION_WAIT_WARP_EVENT_e, + ACTION_WARP_EVENT_e, + ACTION_ORDER_A_TALK_EVENT_e, + ACTION_DEAD_e, + ACTION_WAIT2_e, + ACTION_ORDER_EVENT2_e, + ACTION_WARP_EVENT2_e, + ACTION_DEAD2_e, + }; + /* 80D26FA8 */ void initBaseMtx(); /* 80D27008 */ void setBaseMtx(); - /* 80D270C4 */ void Create(); - /* 80D27300 */ void CreateHeap(); - /* 80D276B4 */ void create1st(); - /* 80D2781C */ void Execute(f32 (**)[3][4]); + /* 80D276B4 */ int create1st(); /* 80D27890 */ void event_proc_call(); /* 80D27A38 */ void orderZHintEvent(); /* 80D27B2C */ void actionWait(); @@ -34,7 +47,7 @@ public: /* 80D28248 */ void actionDead2(); /* 80D2824C */ void demoProc(); /* 80D28A50 */ void calcObjPos(); - /* 80D28AE0 */ void checkTalkDistance(); + /* 80D28AE0 */ bool checkTalkDistance(); /* 80D28B7C */ void calcMidnaWaitPos(); /* 80D28C10 */ void setBindEffect(); /* 80D28CDC */ void followBindEffect(); @@ -44,11 +57,50 @@ public: /* 80D290A8 */ void followDstEffect(); /* 80D29158 */ void endSrcEffect(); /* 80D291FC */ void endDstEffect(); - /* 80D292A0 */ void Draw(); - /* 80D29448 */ void Delete(); -private: - /* 0x568 */ u8 field_0x568[0x69c - 0x568]; + /* 80D27300 */ virtual int CreateHeap(); + /* 80D270C4 */ virtual int Create(); + /* 80D2781C */ virtual int Execute(Mtx**); + /* 80D292A0 */ virtual int Draw(); + /* 80D29448 */ virtual int Delete(); + + u8 getNameArg() { return fopAcM_GetParamBit(this, 31, 2); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); } + + void setAction(u8 i_action) { mAction = i_action; } + u16 getMsgID() { return mMsgID; } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ request_of_phase_process_class mEvPhase; + /* 0x5B0 */ J3DModel* mpBridgeModel; + /* 0x5B4 */ mDoExt_btkAnm* mpBridgeBtk; + /* 0x5B8 */ mDoExt_bckAnm* mpBridgeBck; + /* 0x5BC */ J3DModel* mpPortalModel; + /* 0x5C0 */ mDoExt_btkAnm* mpPortalBtk; + /* 0x5C4 */ mDoExt_brkAnm* mpPortalBrk; + /* 0x5C8 */ u8 field_0x5c8; + /* 0x5C9 */ u8 mTimer; + /* 0x5CA */ u8 mAction; + /* 0x5CB */ u8 mPrmInit; + /* 0x5CC */ u16 mMsgID; + /* 0x5CE */ s16 mEventId[2]; + /* 0x5D4 */ int mStaffId; + /* 0x5D8 */ u8 mEventType; + /* 0x5D9 */ u8 field_0x5d9; + /* 0x5DC */ dMsgFlow_c mMsgFlow; + /* 0x628 */ cXyz mMidnaWaitPos; + /* 0x634 */ cXyz mObjPos; + /* 0x640 */ JPABaseEmitter* mStartEfEmitterID[3]; + /* 0x64C */ JPABaseEmitter* mDisappEfEmitterID[5]; + /* 0x660 */ JPABaseEmitter* mAppEfEmitterID[6]; + /* 0x678 */ JPABaseEmitter* mEndEfEmitterID[2]; + /* 0x680 */ u8 field_0x680[0x688 - 0x680]; + /* 0x688 */ JPABaseEmitter* mBindEfEmitterID[4]; + /* 0x698 */ u16 mEffJointNo; + /* 0x69A */ u8 field_0x69a; + /* 0x69B */ u8 field_0x69b; }; STATIC_ASSERT(sizeof(daObjWarpKBrg_c) == 0x69c); diff --git a/include/d/actor/d_a_obj_warp_obrg.h b/include/d/actor/d_a_obj_warp_obrg.h index e70bb75670..784ab467f9 100644 --- a/include/d/actor/d_a_obj_warp_obrg.h +++ b/include/d/actor/d_a_obj_warp_obrg.h @@ -2,23 +2,32 @@ #define D_A_OBJ_WARP_OBRG_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_msg_flow.h" /** * @ingroup actors-objects * @class daObjWarpOBrg_c - * @brief Warp O Bridge (Eldin Bridge?) + * @brief Eldin Warp Bridge * * @details * */ -class daObjWarpOBrg_c : public fopAc_ac_c { +class daObjWarpOBrg_c : public dBgS_MoveBgActor { public: + enum Action_e { + ACTION_WAIT_e, + ACTION_ORDER_EVENT_e, + ACTION_TALK_EVENT_e, + ACTION_WARP_EVENT_e, + ACTION_DEAD_e, + ACTION_ORDER_EVENT_DST_e, + ACTION_WARP_EVENT_DST_e, + }; + /* 80D299B8 */ void initBaseMtx(); /* 80D29A00 */ void setBaseMtx(); - /* 80D29ACC */ void Create(); - /* 80D29BB4 */ void CreateHeap(); - /* 80D29E7C */ void create1st(); - /* 80D2A008 */ void Execute(f32 (**)[3][4]); + /* 80D29E7C */ int create1st(); /* 80D2A04C */ void event_proc_call(); /* 80D2A194 */ void actionWait(); /* 80D2A4CC */ void actionOrderEvent(); @@ -28,13 +37,41 @@ public: /* 80D2A9E4 */ void actionWarpEventDst(); /* 80D2AA30 */ void actionDead(); /* 80D2AA34 */ void demoProc(); - /* 80D2B3BC */ void checkTalkDistance(); + /* 80D2B3BC */ bool checkTalkDistance(); /* 80D2B534 */ void calcMidnaWaitPos(); - /* 80D2B5C8 */ void Draw(); - /* 80D2B6C0 */ void Delete(); -private: - /* 0x568 */ u8 field_0x568[0x640 - 0x568]; + /* 80D29BB4 */ virtual int CreateHeap(); + /* 80D29ACC */ virtual int Create(); + /* 80D2A008 */ virtual int Execute(Mtx**); + /* 80D2B5C8 */ virtual int Draw(); + /* 80D2B6C0 */ virtual int Delete(); + + u8 getNameArg() { return subtype; } + u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); } + u8 getMyPortalID() { return fopAcM_GetParamBit(this, 24, 7); } + + void setAction(u8 i_action) { mAction = i_action; } + u16 getMsgID() { return mMsgID; } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ mDoExt_bckAnm* mpBck; + /* 0x5B0 */ mDoExt_btkAnm* mpBtk; + /* 0x5B4 */ dMsgFlow_c mMsgFlow; + /* 0x600 */ JPABaseEmitter* mEfEmitter[5]; + /* 0x614 */ cXyz field_0x614; + /* 0x620 */ cXyz mMidnaWaitPos; + /* 0x62C */ f32 mTalkRange; + /* 0x630 */ int mStaffId; + /* 0x634 */ s16 mEventId; + /* 0x636 */ u16 mMsgID; + /* 0x638 */ u8 mPrmInit; + /* 0x639 */ u8 field_0x639; + /* 0x63A */ u8 field_0x63a; + /* 0x63B */ u8 mAction; + /* 0x63C */ u8 mTimer; }; STATIC_ASSERT(sizeof(daObjWarpOBrg_c) == 0x640); |
