summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-03-08 16:21:54 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-04-06 23:23:16 -0400
commitc743b47d7ea25bee800ee76b681dd5564bb38bc3 (patch)
tree1be14b4c3f699aac03bc40a08ae01df7b7b34177 /include
parentf637091a32c55307b99ff665cf5bac20294ddc46 (diff)
actorExecute 99%
Diffstat (limited to 'include')
-rw-r--r--include/d/a/e/d_a_e_remly.h140
-rw-r--r--include/d/a/e/d_a_en_base.h4
-rw-r--r--include/d/d_player_act.h7
-rw-r--r--include/toBeSorted/d_emitter.h2
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);