* Dowsing.

* d_t_dowsing

* d_t_holy_water OK
This commit is contained in:
robojumper
2024-09-12 22:23:11 +02:00
committed by GitHub
parent 9aa30ee499
commit e2c4bb7be7
40 changed files with 1041 additions and 160 deletions
+1 -15
View File
@@ -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
+3 -3
View File
@@ -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;
};
+66
View File
@@ -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
+23
View File
@@ -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
+24
View File
@@ -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
+5
View File
@@ -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
+3
View File
@@ -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;
};
+5
View File
@@ -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
-12
View File
@@ -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