summaryrefslogtreecommitdiff
path: root/include/d
diff options
context:
space:
mode:
Diffstat (limited to 'include/d')
-rw-r--r--include/d/a/d_a_base.h16
-rw-r--r--include/d/d_player.h6
-rw-r--r--include/d/tg/d_t_dowsing.h66
-rw-r--r--include/d/tg/d_t_genki_dws_tgt.h23
-rw-r--r--include/d/tg/d_t_holy_water.h24
-rw-r--r--include/d/tg/d_t_light_shaft_eff.h5
-rw-r--r--include/d/tg/d_t_map_inst.h3
-rw-r--r--include/d/tg/d_t_tackle.h5
-rw-r--r--include/d/tg/d_tg.h12
9 files changed, 130 insertions, 30 deletions
diff --git a/include/d/a/d_a_base.h b/include/d/a/d_a_base.h
index 46072cb0..659a3d59 100644
--- a/include/d/a/d_a_base.h
+++ b/include/d/a/d_a_base.h
@@ -10,6 +10,7 @@
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "toBeSorted/room_manager.h"
+#include "toBeSorted/tlist.h"
class dAcBase_c;
@@ -60,21 +61,6 @@ public:
}
};
-template <typename T, int offset>
-struct TList {
- T *GetOffset() {
- return (T *)((u8 *)this - offset);
- }
- TList() {
- sound_info_next = GetOffset();
- sound_info_tail = GetOffset();
- count = 0;
- }
- T *sound_info_tail;
- T *sound_info_next;
- s32 count;
-};
-
// Ghidra: ActorBase
// size: 0xFC
// non-official name
diff --git a/include/d/d_player.h b/include/d/d_player.h
index cc99016f..7477b0a9 100644
--- a/include/d/d_player.h
+++ b/include/d/d_player.h
@@ -7,9 +7,9 @@
class dPlayer: public dAcObjBase_c {
public:
/* 0x330 */ u8 unk_0x330[0x350 - 0x330];
- /* 0x350 */ u32 someFlags;
-
-
+ /* 0x350 */ u32 someFlags_0x350;
+ u8 UNK_0x354[0x35C - 0x354];
+ /* 0x35C */ u32 mForceOrPreventActionFlags;
static dPlayer *LINK;
};
diff --git a/include/d/tg/d_t_dowsing.h b/include/d/tg/d_t_dowsing.h
new file mode 100644
index 00000000..21a583a1
--- /dev/null
+++ b/include/d/tg/d_t_dowsing.h
@@ -0,0 +1,66 @@
+#ifndef D_T_DOWSING_H
+#define D_T_DOWSING_H
+
+#include <d/tg/d_tg.h>
+#include <toBeSorted/dowsing_target.h>
+
+class dTgDowsing_c : public dTg_c {
+public:
+ dTgDowsing_c();
+ virtual ~dTgDowsing_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+ virtual int draw() override;
+
+ bool checkDowsing() const;
+
+private:
+ enum DowsingOption {
+ TRIAL_0,
+ TRIAL_1,
+ TRIAL_2,
+ TRIAL_3,
+ PROPELLER,
+ WATER_BASIN,
+ CRYSTAL_BALL,
+ PUMPKIN,
+ NEW_PLANT_SPECIES,
+ PARTY_WHEEL,
+ ZELDA,
+ DOWSING_MAX
+ };
+
+ DowsingTarget mDowsingTarget; // 0x0FC
+ DowsingOption mDowsingOption; // 0x11C
+ u16 mUntriggerStoryFlag; // 0x120
+ u16 mTriggerStoryFlag; // 0x122
+ bool mTargetActive; // 0x124
+
+ u16 getTriggerSceneFlag() {
+ return params & 0xFF;
+ }
+
+ u16 getUntriggerSceneFlag() {
+ return params >> 0x8 & 0xFF;
+ }
+
+ DowsingOption getDowsingOption() {
+ return (DowsingOption)(params >> 0x10 & 0xF);
+ }
+
+ u32 getDowsingOptionNum() {
+ return mDowsingOption;
+ }
+
+ u16 getUntriggerStoryFlag() {
+ return params >> 0x14 & 0x7FF;
+ }
+
+ u16 getTriggerStoryFlag() {
+ return rotation.z.mVal & 0x7FF;
+ }
+};
+
+#endif
diff --git a/include/d/tg/d_t_genki_dws_tgt.h b/include/d/tg/d_t_genki_dws_tgt.h
new file mode 100644
index 00000000..b6d9899f
--- /dev/null
+++ b/include/d/tg/d_t_genki_dws_tgt.h
@@ -0,0 +1,23 @@
+#ifndef D_T_GENKI_DWS_TGT_H
+#define D_T_GENKI_DWS_TGT_H
+
+#include <d/tg/d_tg.h>
+#include <toBeSorted/dowsing_target.h>
+
+class dTgGenkiDwsTgt_c : public dTg_c {
+public:
+ dTgGenkiDwsTgt_c() : mDowsingTarget(this, DowsingTarget::SLOT_NONE) {}
+ virtual ~dTgGenkiDwsTgt_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+
+
+private:
+ u16 getSceneFlagFromParams();
+
+ DowsingTarget mDowsingTarget; // 0xFC
+};
+
+#endif
diff --git a/include/d/tg/d_t_holy_water.h b/include/d/tg/d_t_holy_water.h
new file mode 100644
index 00000000..fd6bacfe
--- /dev/null
+++ b/include/d/tg/d_t_holy_water.h
@@ -0,0 +1,24 @@
+#ifndef D_T_HOLY_WATER_H
+#define D_T_HOLY_WATER_H
+
+#include <d/tg/d_tg.h>
+#include <toBeSorted/dowsing_target.h>
+
+class dTgHolyWater_c : public dTg_c {
+public:
+ dTgHolyWater_c() : mDowsingTarget(this, DowsingTarget::SLOT_NONE) {}
+ virtual ~dTgHolyWater_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+ virtual int draw() override;
+
+ bool isLinkNearby();
+ bool dowsingActive();
+
+private:
+ DowsingTarget mDowsingTarget; // 0x0FC
+};
+
+#endif
diff --git a/include/d/tg/d_t_light_shaft_eff.h b/include/d/tg/d_t_light_shaft_eff.h
index 18928aad..d3d8a35f 100644
--- a/include/d/tg/d_t_light_shaft_eff.h
+++ b/include/d/tg/d_t_light_shaft_eff.h
@@ -7,6 +7,11 @@ class dTgLightShaftEff_c : public dTg_c {
public:
dTgLightShaftEff_c() {}
virtual ~dTgLightShaftEff_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+ virtual int draw() override;
};
#endif
diff --git a/include/d/tg/d_t_map_inst.h b/include/d/tg/d_t_map_inst.h
index 855cc6c0..f5545962 100644
--- a/include/d/tg/d_t_map_inst.h
+++ b/include/d/tg/d_t_map_inst.h
@@ -9,6 +9,9 @@ public:
virtual ~dTgMapInst_c() {}
virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+ virtual int draw() override;
u8 field_0xfc;
};
diff --git a/include/d/tg/d_t_tackle.h b/include/d/tg/d_t_tackle.h
index c325c7bb..aba9f97c 100644
--- a/include/d/tg/d_t_tackle.h
+++ b/include/d/tg/d_t_tackle.h
@@ -7,6 +7,11 @@ class dTgTackle_c : public dTg_c {
public:
dTgTackle_c() {}
virtual ~dTgTackle_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int actorExecute() override;
+ virtual int draw() override;
};
#endif
diff --git a/include/d/tg/d_tg.h b/include/d/tg/d_tg.h
index ceb14579..6f8f519e 100644
--- a/include/d/tg/d_tg.h
+++ b/include/d/tg/d_tg.h
@@ -6,18 +6,6 @@
class dTg_c : public dAcBase_c {
public:
virtual ~dTg_c() {}
- virtual int draw() override {
- return 1;
- }
- virtual int actorExecute() override {
- return 1;
- }
- virtual int doDelete() override {
- return 1;
- }
- virtual int create() override {
- return 1;
- }
};
#endif