summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-11-09 14:56:31 +0100
committerGitHub <noreply@github.com>2025-11-09 14:56:31 +0100
commitcd4f0d74de1e285ed9dbc37bca4cb32bba5b12cb (patch)
tree3f544bde578447e4a967d7c79ae3598d45f3dc05 /include
parent9711767bf78c050cef43a053a685538b26a4f2ea (diff)
parente911d7ce67b7877768ef5fcd43f60c065f2fe52e (diff)
Merge pull request #261 from swekka/d_a_obj_grave
d_a_obj_grave OK
Diffstat (limited to 'include')
-rw-r--r--include/c/c_lib.h1
-rw-r--r--include/d/a/obj/d_a_obj_grave.h43
-rw-r--r--include/d/col/bg/d_bg_w.h3
-rw-r--r--include/d/d_player_act.h4
4 files changed, 50 insertions, 1 deletions
diff --git a/include/c/c_lib.h b/include/c/c_lib.h
index 6cba820d..04829ddd 100644
--- a/include/c/c_lib.h
+++ b/include/c/c_lib.h
@@ -11,6 +11,7 @@ s16 targetAngleX(const mVec3_c &target, const mVec3_c &source);
void addCalcPos2(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep);
f32 addCalcPosXZ(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep, f32 minStep);
f32 addCalcPos(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep, f32 minStep);
+bool chasePosXZ(mVec3_c &, mVec3_c &, f32);
// made up name
f32 easeIn(f32 value, f32 exponent);
diff --git a/include/d/a/obj/d_a_obj_grave.h b/include/d/a/obj/d_a_obj_grave.h
index 153e8d28..1cd82c67 100644
--- a/include/d/a/obj/d_a_obj_grave.h
+++ b/include/d/a/obj/d_a_obj_grave.h
@@ -2,6 +2,13 @@
#define D_A_OBJ_GRAVE_H
#include "d/a/obj/d_a_obj_base.h"
+#include "d/col/bg/d_bg_w.h"
+#include "d/col/cc/d_cc_d.h"
+#include "d/d_shadow.h"
+#include "m/m3d/m_anmmatclr.h"
+#include "m/m3d/m_smdl.h"
+#include "m/m_vec.h"
+#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
@@ -10,11 +17,45 @@ public:
dAcOGrave_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOGrave_c() {}
+ virtual bool createHeap();
+ virtual int create();
+ virtual int doDelete();
+ virtual int actorExecute();
+ virtual int draw();
+
+ void fn_580_480(dAcObjBase_c *link, dBgW_Base::PushPullLabel label);
+
+ void executeState() {
+ mStateMgr.executeState();
+ }
+
STATE_FUNC_DECLARE(dAcOGrave_c, Wait);
STATE_FUNC_DECLARE(dAcOGrave_c, Move);
private:
- /* 0x??? */ STATE_MGR_DECLARE(dAcOGrave_c);
+ static dAcObjBase_c *pushPullCb(dAcObjBase_c *grave, dAcObjBase_c *link, dBgW_Base::PushPullLabel label);
+ static bool unkCb(dBgW *bgW, dAcObjBase_c *grave, dAcObjBase_c *link);
+
+ /* 0x330 */ nw4r::g3d::ResFile mResFile;
+ /* 0x334 */ m3d::smdl_c mMdl;
+ /* 0x350 */ dShadowCircle_c mShadow;
+ /* 0x358 */ dBgW mBgW;
+ /* 0x568 */ STATE_MGR_DECLARE(dAcOGrave_c);
+ /* 0x5A4 */ dCcD_Unk mCollider;
+ /* 0x7AC */ m3d::anmMatClr_c mAnmMatClr;
+ /* 0x7D8 */ mVec3_c mOrigPos1;
+ /* 0x7E4 */ mVec3_c mOrigPos2;
+ /* 0x7F0 */ u16 mTimer;
+ /* 0x7F2 */ u8 mSceneflag;
+ /* 0x7F3 */ bool mShouldGlow;
+ /* 0x7F4 */ bool mPush;
+ /* 0x7F5 */ bool mPull;
+ /* 0x7F6 */ bool field_0x7F6;
+ /* 0x7F7 */ bool field_0x7F7;
+
+ static dCcD_SrcUnk sUnkSrc;
+ static const u8 lbl_580_rodata_0;
+ static const f32 lbl_580_rodata_30;
};
#endif
diff --git a/include/d/col/bg/d_bg_w.h b/include/d/col/bg/d_bg_w.h
index a61d78f0..6c8424df 100644
--- a/include/d/col/bg/d_bg_w.h
+++ b/include/d/col/bg/d_bg_w.h
@@ -386,6 +386,9 @@ public:
void SetRideCallback(dBgW_RideCallback func) {
mpRide_cb = func;
}
+ void SetUnkCallback(dBgW_UnkCallback func) {
+ mpUnk_cb = func;
+ }
void OnMoveFlag() {
mFlags |= 1;
}
diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h
index 3da4e570..b358835f 100644
--- a/include/d/d_player_act.h
+++ b/include/d/d_player_act.h
@@ -556,6 +556,10 @@ public:
field_0x360 |= mask;
}
+ inline void offFlags_0x360(u32 mask) {
+ field_0x360 &= ~mask;
+ }
+
inline void onForceOrPreventActionFlags(u32 mask) {
mForceOrPreventActionFlags |= mask;
}