diff options
| author | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-03-08 16:21:54 -0400 |
|---|---|---|
| committer | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-04-06 23:23:16 -0400 |
| commit | c743b47d7ea25bee800ee76b681dd5564bb38bc3 (patch) | |
| tree | 1be14b4c3f699aac03bc40a08ae01df7b7b34177 /include | |
| parent | f637091a32c55307b99ff665cf5bac20294ddc46 (diff) | |
actorExecute 99%
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/a/e/d_a_e_remly.h | 140 | ||||
| -rw-r--r-- | include/d/a/e/d_a_en_base.h | 4 | ||||
| -rw-r--r-- | include/d/d_player_act.h | 7 | ||||
| -rw-r--r-- | include/toBeSorted/d_emitter.h | 2 |
4 files changed, 149 insertions, 4 deletions
diff --git a/include/d/a/e/d_a_e_remly.h b/include/d/a/e/d_a_e_remly.h index c958e582..07fc5716 100644 --- a/include/d/a/e/d_a_e_remly.h +++ b/include/d/a/e/d_a_e_remly.h @@ -1,14 +1,72 @@ #ifndef D_A_E_REMLY_H #define D_A_E_REMLY_H +#include "common.h" +#include "d/a/d_a_base.h" #include "d/a/e/d_a_en_base.h" +#include "d/col/bg/d_bg_s_acch.h" +#include "d/col/cc/d_cc_d.h" +#include "d/d_shadow.h" +#include "m/m3d/m_anmtexpat.h" +#include "m/m3d/m_mdl.h" +#include "m/m_angle.h" +#include "m/m_vec.h" #include "s/s_State.hpp" +#include "toBeSorted/d_d3d.h" +#include "toBeSorted/d_emitter.h" + +class dAcBomb_c; class dAcEremly_c : public dAcEnBase_c { public: + class callback_c : public m3d::callback_c { + public: + virtual ~callback_c() {} + virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override; + + private: + /* 0x04 */ mAng3_c mAng; + /* 0x0C */ UNKWORD field_0x0C; // Guess + }; + + enum State_e { + STATE_0 = 0, + STATE_1 = 1, + STATE_2 = 2, + STATE_3 = 3, + STATE_4 = 4, + STATE_5 = 5, + STATE_6 = 6, + STATE_7 = 7, + STATE_8 = 8, + STATE_9 = 9, + STATE_10 = 10, + STATE_11 = 11, + STATE_12 = 12, + STATE_13 = 13, + STATE_14 = 14, + STATE_15 = 15, + STATE_16 = 16, + STATE_17 = 17, + STATE_18 = 18, + STATE_19 = 19, + STATE_20 = 20, + + // + FAKE_STATE_30 = 30, + }; + +public: dAcEremly_c() : mStateMgr(*this) {} virtual ~dAcEremly_c() {} + virtual int doDelete() override; + virtual int draw() override; + virtual bool createHeap() override; + virtual int actorCreate() override; + virtual int actorPostCreate() override; + virtual int actorExecute() override; + STATE_FUNC_DECLARE(dAcEremly_c, Wait); STATE_FUNC_DECLARE(dAcEremly_c, Walk); STATE_FUNC_DECLARE(dAcEremly_c, Run); @@ -34,8 +92,88 @@ public: STATE_FUNC_DECLARE(dAcEremly_c, NightJumpAttack); STATE_FUNC_DECLARE(dAcEremly_c, BirthWait); + STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcEremly_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dAcEremly_c); + +private: + void fn_177_6A40(); + + // Checks if Batreaux is Human + bool fn_177_7330(); + + bool fn_177_75E0(); + + /** false -> comapres to camera + * true -> compares to player */ + bool fn_177_7650(bool comparePlayer); + + bool fn_177_7B10(); + + void fn_177_8520(bool); + bool fn_177_8980(f32); + bool fn_177_8AC0(); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcEremly_c); + /* 0x378 */ STATE_MGR_DECLARE(dAcEremly_c); + + /* 0x3B4 */ dShadowCircle_c mShadow; + /* 0x3BC */ d3d::AnmMdlWrapper mMdl; + /* 0x438 */ m3d::anmTexPat_c mTexPat; + + /* 0x458 */ dBgS_AcchCir mAcchCir; + /* 0x3B4 */ dBgS_ObjAcch mAcch; + /* 0x864 */ dCcD_Sph mSph; + + /* 0x9B4 */ callback_c mMdlCallback; + + /* 0x9C4 */ dEmitter_c mEmitters[2]; + + /* 0xA2C */ dAcRef_c<dAcBase_c> mRef1; // Temporary until type known + /* 0xA38 */ dAcRef_c<dAcBomb_c> mNearbyBombRef; + + /* 0xA44 */ u8 _A44[0xA5C - 0xA44]; + + /* 0xA5C */ dWaterEffect_c mWaterEffect; + + /* 0xAA4 */ mVec3_c field_0xAA4; + + /* 0xAB0 */ u8 _AB0[0xAF8 - 0xAB0]; + + /* 0xAF8 */ mVec3_c field_0xAF8; + + /* 0xB04 */ u8 _B04[0xB10 - 0xB04]; + /* 0xB10 */ f32 field_0xB10; + /* 0xB14 */ u8 _B14[0xB1E - 0xB14]; + /* 0xB1E */ mAng3_c field_0xB1E; + /* 0xB24 */ s16 field_0xB24; + /* 0xB26 */ s16 field_0xB26; + /* 0xB28 */ u8 _B28[0xB38 - 0xB28]; + /* 0xB38 */ f32 field_0xB38; + /* 0xB3C */ f32 field_0xB3C; + /* 0xB40 */ f32 field_0xB40; + /* */ u8 _B44[0xB48 - 0xB44]; + /* 0xB48 */ u16 field_0xB48; + /* */ u8 _B4A[0xB4E - 0xB4A]; + /* 0xB4E */ u16 field_0xB4E; + /* */ u8 _B50[0xB52 - 0xB50]; + /* 0xB52 */ u16 field_0xB52; + /* 0xB54 */ u16 field_0xB54; + /* 0xB56 */ u16 field_0xB56; + /* 0xB58 */ u16 field_0xB58; + /* */ u8 _B56[0xB60 - 0xB5A]; + /* 0xB60 */ u8 field_0xB60; // Some State representation + /* 0xB61 */ u8 field_0xB61; + /* */ u8 _B62; + /* */ u8 _B63; + /* 0xB64 */ u8 field_0xB64; + /* */ u8 _B65; + /* 0xB66 */ u8 field_0xB66; + /* */ u8 _B67; + /* 0xB68 */ u8 field_0xB68; + /* 0xB69 */ u8 field_0xB69; + /* 0xB6A */ u8 field_0xB6A; + /* 0xB6B */ u8 field_0xB6B; + /* 0xB6C */ u8 field_0xB6C; }; #endif diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h index 328992a1..48c9f920 100644 --- a/include/d/a/e/d_a_en_base.h +++ b/include/d/a/e/d_a_en_base.h @@ -5,6 +5,7 @@ #include "d/a/obj/d_a_obj_base.h" #include "d/a/obj/d_a_obj_bomb.h" #include "d/d_cc.h" +#include "m/m3d/m_mdl.h" #include "m/m_angle.h" #include "m/m_vec.h" @@ -22,6 +23,7 @@ public: INTERACT_0x4 = (1 << 2), INTERACT_0x40 = (1 << 6), INTERACT_0x1000 = (1 << 12), + INTERACT_0x2000 = (1 << 13), }; public: @@ -71,8 +73,8 @@ public: int fn_8002fde0(cCcD_Obj &mCc, u16 *pTgOut); // Returns 0-3 based on collision - // 2 int fn_800301b0(const mVec3_c &pos, mAng ang, bool, f32); + void fn_80030400(m3d::mdl_c &, u8, bool, u8); void fn_800306d0(); void fn_80030700(); void fn_80030c20(u32 flags, f32, f32, f32, f32); diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index a360676f..4df6e4db 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -1,6 +1,8 @@ #ifndef D_A_PLAYER_ACT_H #define D_A_PLAYER_ACT_H +#include "d/a/d_a_base.h" +#include "d/a/obj/d_a_obj_bomb.h" #include "d/d_player_base.h" #include "m/m_vec.h" @@ -413,7 +415,7 @@ public: /* vt 0x2A8 */ virtual void lookTowardItem() {} /* vt 0x2AC */ virtual void vt_0x2AC() {} /* vt 0x2B0 */ virtual void vt_0x2B0() {} - /* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng&, u32, u32) {} + /* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng &, u32, u32) {} /* vt 0x2B8 */ virtual void setActorRef9() {} /* vt 0x2BC */ virtual void unlinkActorRef9() {} /* vt 0x2C0 */ virtual bool vt_0x2C0() { @@ -654,6 +656,9 @@ public: return sCurrentSword; } + // Checks through beetle actor references and + static dAcBomb_c *getBombWithinRadius(dAcBase_c *, const mVec3_c &, f32); + static bool isInEvent(); bool isAttackingLeft() const; bool isAttackingRight() const; diff --git a/include/toBeSorted/d_emitter.h b/include/toBeSorted/d_emitter.h index 8f68cd05..8b8ae66f 100644 --- a/include/toBeSorted/d_emitter.h +++ b/include/toBeSorted/d_emitter.h @@ -207,7 +207,7 @@ private: } public: - dWaterEffect_c() : mIsInWater(1), mIsSmall(false) {} + dWaterEffect_c() : mIsInWater(true), mIsSmall(false) {} virtual ~dWaterEffect_c() {} void init(dAcObjBase_c *, f32 height, f32 scale, f32 depth); |
