diff options
| author | robojumper <robojumper@gmail.com> | 2024-09-12 22:23:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-12 16:23:11 -0400 |
| commit | e2c4bb7be7fa731a335bce4bc22283d899133e39 (patch) | |
| tree | 91152d84cae384b376f4ce4c87e9e247255ec954 /include/d | |
| parent | 9aa30ee4995be938e1ea05f6d476d63fcb8cc67e (diff) | |
Dowsing (#17)
* Dowsing.
* d_t_dowsing
* d_t_holy_water OK
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/a/d_a_base.h | 16 | ||||
| -rw-r--r-- | include/d/d_player.h | 6 | ||||
| -rw-r--r-- | include/d/tg/d_t_dowsing.h | 66 | ||||
| -rw-r--r-- | include/d/tg/d_t_genki_dws_tgt.h | 23 | ||||
| -rw-r--r-- | include/d/tg/d_t_holy_water.h | 24 | ||||
| -rw-r--r-- | include/d/tg/d_t_light_shaft_eff.h | 5 | ||||
| -rw-r--r-- | include/d/tg/d_t_map_inst.h | 3 | ||||
| -rw-r--r-- | include/d/tg/d_t_tackle.h | 5 | ||||
| -rw-r--r-- | include/d/tg/d_tg.h | 12 |
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 |
