diff options
| author | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-09-20 11:53:53 -0400 |
|---|---|---|
| committer | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-09-20 11:53:53 -0400 |
| commit | 600cefbc7dd1e00772c591be90a86f4567d2ab43 (patch) | |
| tree | e8ae834bf980256571cefba4ee74f1d2b840b9cc /include | |
| parent | 9481f3ab62d690bd6534cb0adf7e02db5579b333 (diff) | |
unrelated Bomb Changes
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/a/d_a_player.h | 26 | ||||
| -rw-r--r-- | include/d/a/e/d_a_en_base.h | 1 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_base.h | 3 | ||||
| -rw-r--r-- | include/d/col/bg/d_bg_pc.h | 1 | ||||
| -rw-r--r-- | include/d/col/bg/d_bg_s_acch.h | 21 | ||||
| -rw-r--r-- | include/d/col/c/c_cc_d.h | 17 | ||||
| -rw-r--r-- | include/d/col/c/c_m3d_g_pla.h | 7 | ||||
| -rw-r--r-- | include/d/col/cc/d_cc_s.h | 3 | ||||
| -rw-r--r-- | include/d/d_linkage.h | 27 | ||||
| -rw-r--r-- | include/d/d_player_act.h | 7 | ||||
| -rw-r--r-- | include/s/s_State.hpp | 10 |
11 files changed, 102 insertions, 21 deletions
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index e5e6669c..a768c823 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -4,6 +4,7 @@ #include "common.h" #include "d/a/d_a_base.h" #include "d/a/d_a_item.h" +#include "d/a/obj/d_a_obj_base.h" #include "d/col/c/c_bg_s_poly_info.h" #include "d/d_player_mdl.h" #include "m/m_angle.h" @@ -32,8 +33,22 @@ public: /* vt 0x314 */ virtual void vt_0x314(); /* vt 0x318 */ virtual void vt_0x318(); + struct ObjectArray { + static const size_t sNumObjects = 16; + + bool insert(dAcObjBase_c *); + void execute(); + dAcObjBase_c *get(s32 index); + void removeBombs(); + + dAcObjRef_c mObjs[sNumObjects]; + u32 mCounter[sNumObjects]; + }; + protected: - /* 0x137C */ u8 _0x137C[0x16F0 - 0x137C]; + /* 0x137C */ ObjectArray mOwnedObjects; + /* 0x147C */ ObjectArray mOwnedProjectiles; + /* 0x157C */ u8 _0x157C[0x16F0 - 0x157C]; /* 0x16F0 */ nw4r::g3d::ResFile mHeldResFile; /* 0x16F4 */ u8 _0x16F4[0x4564 - 0x16F4]; /* 0x4564 */ f32 field_0x4564; @@ -58,6 +73,7 @@ public: void setBeetleFlashClr(const mColor &); void setBeetleBackAnim(); s32 getBeetleWarningTimeLeft(); + void setBeetleReleasedObject(dAcObjBase_c *pObj); // Item select/equip/use functions [0x801E3160 - 0x801E7AD0] ? static s32 calcItemWheelSelection(bool reset, s32 numOptions); @@ -117,6 +133,14 @@ public: return LINK2; } + static bool insertOwnedObject(dAcObjBase_c *pObj) { + return LINK2->mOwnedObjects.insert(pObj); + } + + ObjectArray &getOwnedObjects() { + return mOwnedObjects; + } + void onShieldUpdate(); static dAcPy_c *LINK; diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h index adbc1d0c..1c1382e8 100644 --- a/include/d/a/e/d_a_en_base.h +++ b/include/d/a/e/d_a_en_base.h @@ -86,6 +86,7 @@ public: bool fn_80030570(m3d::mdl_c &, u8, f32); // lighting related void fn_800306D0(); void fn_80030700(); + static void fn_800307E0(mVec3_c *pPos, s32); dAcObjBase_c *targetPlayerOrScrapper(f32 biasToScrapper); static void fn_80030980(m3d::mdl_c &, s32, bool markDirty); diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index fab81e6d..1d8eff2e 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -1,7 +1,6 @@ #ifndef D_A_OBJ_BASE_H #define D_A_OBJ_BASE_H -#include "c/c_math.h" #include "common.h" #include "d/a/d_a_base.h" #include "d/a/d_a_salbage_if.h" @@ -14,11 +13,9 @@ #include "m/m3d/m_shadow.h" #include "m/m3d/m_smdl.h" #include "m/m_angle.h" -#include "m/m_color.h" #include "m/m_mtx.h" #include "m/m_vec.h" #include "m/types_m.h" -#include "nw4r/math/math_arithmetic.h" // Ghidra: ActorObjectBase // size: 0x330 diff --git a/include/d/col/bg/d_bg_pc.h b/include/d/col/bg/d_bg_pc.h index e3b05ced..a5845962 100644 --- a/include/d/col/bg/d_bg_pc.h +++ b/include/d/col/bg/d_bg_pc.h @@ -61,6 +61,7 @@ enum dBgPc_Attribute { POLY_ATTR_DAMAGE = 13, POLY_ATTR_SLOPE_RUN = 15, POLY_ATTR_SAND_DEEP_SLOW = 16, + POLY_ATTR_CURSED_WATER = 17, }; class dBgPc { public: diff --git a/include/d/col/bg/d_bg_s_acch.h b/include/d/col/bg/d_bg_s_acch.h index 6756420f..6eb05d22 100644 --- a/include/d/col/bg/d_bg_s_acch.h +++ b/include/d/col/bg/d_bg_s_acch.h @@ -532,8 +532,17 @@ public: return mRoof; } - void SetField_0xD4(f32 v) { - field_0x0D4 = v; + void SetGndChkOffset(f32 v) { + mGndChkOffset = v; + } + void SetRoofCrrHeight(f32 v) { + mRoofCrrHeight = v; + } + void SetWaterCheckOffset(f32 v) { + mWtrCheckOffset = v; + } + void SetWtrChkMode(u8 v) { + mWtrMode = v; } public: @@ -555,12 +564,12 @@ public: /* 0x0A8 */ f32 field_0x0A8; /* 0x0AC */ f32 field_0x0AC; /* 0x0B0 */ f32 mGroundHeight; - /* 0x0B4 */ f32 field_0x0B4; + /* 0x0B4 */ f32 mGndChkOffset; /* 0x0B8 */ cM3dGPla mPlane_0x0B8; /* 0x0C8 */ f32 field_0x0C8; /* 0x0CC */ f32 field_0x0CC; /* 0x0D0 */ f32 mRoofHeight; - /* 0x0D4 */ f32 field_0x0D4; + /* 0x0D4 */ f32 mRoofCrrHeight; /* 0x0D8 */ f32 field_0x0D8; /* 0x0DC */ cBgS_PolyInfo *mpOutPolyInfo; /* 0x0E0 */ f32 mRoofH_0x0E0; @@ -572,9 +581,9 @@ public: /* 0x1D0 */ f32 field_0x1D0; /* 0x1D4 */ dBgS_GndChk mGnd; /* 0x264 */ dBgS_RoofChk mRoof; - /* 0x2F4 */ f32 field_0x2F4; + /* 0x2F4 */ f32 mWtrCheckOffset; /* 0x2F8 */ dBgS_WtrChk mWtr; - /* 0x390 */ u8 field_0x390; + /* 0x390 */ u8 mWtrMode; /* 0x394 */ s32 field_0x394; /* 0x398 */ mVec3_c field_0x398; /* 0x3A4 */ mVec3_c field_0x3A4; diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h index fa5fec03..a6165353 100644 --- a/include/d/col/c/c_cc_d.h +++ b/include/d/col/c/c_cc_d.h @@ -526,6 +526,9 @@ public: void SetSrcModifer(u32 modifier) { mSrc.mInfo.mModifier = modifier; } + u32 GetSrcModifer() const { + return mSrc.mInfo.mModifier; + } void OnSrcModifer(u32 m) { mSrc.mInfo.mModifier |= m; } @@ -949,6 +952,10 @@ public: mAt.SetCallback(cb); } + void SetTgCallback(cCcD_HitCallback cb) { + mTg.SetCallback(cb); + } + void SetCoCallback(cCcD_HitCallback cb) { mCo.SetCallback(cb); } @@ -1006,6 +1013,13 @@ public: void OnAt_0x4000() { mAt.OnSPrm(0x4000); } + // Related to Beetle (no hook) + u32 ChkAt_0x4000() { + return mAt.MskSPrm(0x4000); + } + u32 GetAtSrcModifier() const { + return mAt.GetSrcModifer(); + } void SetAtInfo_0x0(u8 amount) { @@ -1115,6 +1129,9 @@ public: void ClrCo_0x400() { mCo.OffSPrm(0x400); } + u32 ChkCo_0x8000() { + return mCo.MskSPrm(0x8000); + } void OnCo_0x8000() { mCo.OnSPrm(0x8000); } diff --git a/include/d/col/c/c_m3d_g_pla.h b/include/d/col/c/c_m3d_g_pla.h index 2e178d45..9fdf5ffb 100644 --- a/include/d/col/c/c_m3d_g_pla.h +++ b/include/d/col/c/c_m3d_g_pla.h @@ -5,6 +5,7 @@ #include "d/col/c/c_m3d.h" #include "m/m_angle.h" #include "m/m_vec.h" +#include "nw4r/math/math_types.h" #include "rvl/MTX/vec.h" // Plane with a normal @@ -29,8 +30,12 @@ public: mD = -VECDotProduct(mNormal, point); } + void SetupNP(const mVec3_c &normal, const mVec3_c &point) { + mNormal = normal; + mD = -nw4r::math::VEC3Dot(mNormal, point); + } + // Unused - // void SetupNP(const mVec3_c &, const mVec3_c &); // bool getCrossY(const mVec3_c &, f32 *) const; // void Set(const cM3dGPla *); diff --git a/include/d/col/cc/d_cc_s.h b/include/d/col/cc/d_cc_s.h index 65b6d518..ae0f4945 100644 --- a/include/d/col/cc/d_cc_s.h +++ b/include/d/col/cc/d_cc_s.h @@ -41,6 +41,9 @@ public: dCcMassS_Mng &GetMassMng() { return mMassMng; } + void SetMass(cCcD_Obj *p_obj, u8 priority) { + mMassMng.SetObj(p_obj, priority); + } void Ct(); void Dt(); diff --git a/include/d/d_linkage.h b/include/d/d_linkage.h index 2739ab49..9cf24418 100644 --- a/include/d/d_linkage.h +++ b/include/d/d_linkage.h @@ -19,15 +19,15 @@ public: public: enum ConnectionType_e { CONNECTION_0 = 0, - CONNECTION_1 = 1, + CONNECTION_1 = 1, // Standard CONNECTION_2 = 2, CONNECTION_3 = 3, - CONNECTION_4 = 4, - CONNECTION_5 = 5, - CONNECTION_6 = 6, - CONNECTION_7 = 7, - CONNECTION_8 = 8, - CONNECTION_9 = 9, + CONNECTION_4 = 4, // clawshot + CONNECTION_5 = 5, // Beetle + CONNECTION_6 = 6, // From Sword Swing? + CONNECTION_7 = 7, // Whip + CONNECTION_8 = 8, // Arrow/Heartf + CONNECTION_9 = 9, // Chandelier/lotus flower }; enum State_e { STATE_0 = 0, @@ -87,6 +87,19 @@ public: return field_0xA0->getArrowOffsetPosAndAngle(param_1, param_2, param_3, param_4, param_5); } + dAcBase_c *getControllingActor() { + return static_cast<dAcBase_c *>(mControllingActor.p_owner); + } + + void setField_0x8C_0x90(f32 f0, f32 f1) { + field_0x8C = f0; + field_0x90 = f1; + } + void setField_0x94_0x98(f32 f0, f32 f1) { + field_0x94 = f0; + field_0x98 = f1; + } + public: void set(u32 flags, f32, f32, f32, void *unk); bool tryAttach(dAcObjBase_c *, dAcObjBase_c *, dAcRefBase_c *, ConnectionType_e, bool); diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index a9a9a2b3..0ddaaedf 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -2,10 +2,11 @@ #define D_A_PLAYER_ACT_H #include "d/a/d_a_base.h" -#include "d/a/obj/d_a_obj_bomb.h" +#include "d/a/obj/d_a_obj_base.h" #include "d/d_player_base.h" #include "m/m_vec.h" + class dAcEnBase_c; class dAcOFairy_c; @@ -247,7 +248,7 @@ public: return false; } /* vt 0x1B8 */ virtual void canHandleGameOver() {} - /* vt 0x1BC */ virtual UNKWORD vt_0x1BC() { + /* vt 0x1BC */ virtual dAcObjBase_c *getBeetleHeldActor() { return 0; } @@ -414,7 +415,7 @@ public: /* vt 0x2A4 */ virtual bool isRunningUpWall() { return false; } - /* vt 0x2A8 */ virtual void lookTowardItem() {} + /* vt 0x2A8 */ virtual void lookTowardItem(const mVec3_c &, u32, mAng, f32, f32, f32) {} /* 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) {} diff --git a/include/s/s_State.hpp b/include/s/s_State.hpp index 807a1bd9..fb8ab775 100644 --- a/include/s/s_State.hpp +++ b/include/s/s_State.hpp @@ -48,11 +48,21 @@ return *mStateMgr.getStateID() == value; \ } +#define STATE_MGR_DEFINE_UTIL_GETSTATEID(class_name) \ + const sFStateID_c<class_name> &getStateID() const { \ + return (sFStateID_c<class_name> &)*mStateMgr.getStateID(); \ + } + #define STATE_MGR_DEFINE_UTIL_GETOLDSTATEID(class_name) \ const sFStateID_c<class_name> &getOldStateID() const { \ return (sFStateID_c<class_name> &)*mStateMgr.getOldStateID(); \ } +#define STATE_MGR_DEFINE_UTIL_GETNEWSTATEID(class_name) \ + const sFStateID_c<class_name> &getNewStateID() const { \ + return (sFStateID_c<class_name> &)*mStateMgr.getNewStateID(); \ + } + // Use this when you need need sFStateID_c vtables to appear in a different order #define STATE_MGR_DEFINE_UTIL_INSTANCIATE_STATE(class_name) \ bool dummy_need_state_instanciation(const sFStateID_c<class_name> &value) const { \ |
