This commit is contained in:
robojumper
2025-04-18 23:58:16 +02:00
parent 7f7a93451e
commit bc1fe76fd2
20 changed files with 666 additions and 167 deletions
+1
View File
@@ -75,6 +75,7 @@ public:
TRIAL_FARON,
TRIAL_ELDIN,
TRIAL_LANAYRU,
TRIAL_NONE,
};
static Trial_e getCurrentTrial();
+9
View File
@@ -30,12 +30,21 @@ public:
return sTagProcessor;
}
void init();
void reset();
bool getField_0x329() const {
return field_0x329;
}
s32 getField_0x2FC() const {
return field_0x2FC;
}
void setField_0x2FC(s32 val) {
field_0x2FC = val;
}
s32 getField_0x32C() const {
return field_0x32C;
}
+80 -16
View File
@@ -32,6 +32,26 @@
#include "d/lyt/d_lyt_bird_gauge.h"
#include "d/lyt/d_lyt_boss_gauge.h"
#include "d/lyt/d_lyt_sky_gauge.h"
#include "m/m_vec.h"
enum Meter_e {
METER_GANBARI = 0,
METER_RUPY = 1,
METER_ITEM_SELECT = 2,
METER_CROSS_BTN = 3,
METER_PLUS_BTN = 4,
METER_MINUS_BTN = 5,
METER_A_BTN = 6,
METER_DOWSING = 7,
METER_Z_BTN = 8,
METER_NUN_STK = 9,
METER_REMOCON_BG = 10,
METER_NUN_BG = 11,
METER_HEART = 12,
METER_SHIELD = 13,
METER_1_BTN = 14,
METER_2_BTN = 15,
};
// clang-format on
@@ -55,11 +75,11 @@ public:
u8 getUiMode();
u8 getField_0x13792() const {
return field_0x13792;
return field_0x13792[0];
}
u8 getField_0x13793() const {
return field_0x13793;
return field_0x13792[1];
}
u8 getField_0x1377E() const {
@@ -116,19 +136,26 @@ public:
/* 0x1373C */ mVec3_c mPos2;
/* 0x13748 */ u8 field_0x13748[0x13750 - 0x13748];
/* 0x13750 */ s32 field_0x13750;
/* 0x13754 */ u8 field_0x13754[0x13770 - 0x13754];
/* 0x13754 */ s32 field_0x13754;
/* 0x13758 */ s32 field_0x13758;
/* 0x1375C */ s32 field_0x1375C;
/* 0x13760 */ s32 field_0x13760;
/* 0x13764 */ s32 field_0x13764;
/* 0x13768 */ s32 field_0x13768;
/* 0x1376C */ s32 field_0x1376C;
/* 0x13770 */ u8 field_0x13770;
/* 0x13771 */ u8 field_0x13771[0x13774 - 0x13771];
/* 0x13771 */ u8 field_0x13771;
/* 0x13772 */ u8 field_0x13772;
/* 0x13773 */ u8 field_0x13773;
/* 0x13774 */ u8 field_0x13774;
/* 0x13775 */ u8 field_0x13775[0x1377E - 0x13775];
/* 0x1377E */ u8 field_0x1377E;
/* 0x1377F */ u8 field_0x1377F;
/* 0x13780 */ u8 field_0x13780[0x13792 - 0x13780];
/* 0x13792 */ u8 field_0x13792;
/* 0x13793 */ u8 field_0x13793;
/* 0x13794 */ u8 field_0x13794[0x1379A - 0x13794];
/* 0x1379A */ u8 field_0x1379A;
/* 0x1379B */ u8 field_0x1379B[0x137B4 - 0x1379B];
/* 0x13780 */ u8 field_0x13780[0x13782 - 0x13780];
/* 0x13782 */ u8 field_0x13782[16];
/* 0x13792 */ u8 field_0x13792[16];
/* 0x137A2 */ u8 field_0x137A2[16];
/* 0x137B2 */ u8 field_0x137B2;
/* 0x137B4 */ mVec3_c mPos3;
/* 0x137C0 */ u32 field_0x137C0;
};
@@ -193,7 +220,7 @@ public:
}
u8 getMeterField_0x1379A() const {
return mMeter.field_0x1379A;
return mMeter.field_0x13792[8];
}
bool checkAllFlags(u32 mask) const {
@@ -220,7 +247,7 @@ public:
}
}
static u8 getField_0x13B63() {
static u8 getField_0x13B63() {
if (sInstance != nullptr) {
return sInstance->field_0x13B63;
} else {
@@ -228,19 +255,52 @@ public:
}
}
static void setField_0x13B61(u8 val) {
static void setRupyField_0x8A9(u8 val) {
if (sInstance != nullptr) {
sInstance->mMeter.mRupy.setField_0x8A9(val);
}
}
static void setRupyField_0x8AA(u8 val) {
if (sInstance != nullptr) {
sInstance->mMeter.mRupy.setField_0x8AA(val);
}
}
static void setRupyField_0x8AC(u8 val) {
if (sInstance != nullptr) {
sInstance->mMeter.mRupy.setField_0x8AC(val);
}
}
static u8 getRupyField_0x8AC() {
if (sInstance != nullptr) {
return sInstance->mMeter.mRupy.getField_0x8AC();
} else {
return 0;
}
}
static s32 getHeartField_0x78C() {
if (sInstance != nullptr) {
return sInstance->mMeter.mHeart.getField_0x78C();
} else {
return 0;
}
}
static void setField_0x13B61(u8 val) {
if (sInstance != nullptr) {
sInstance->field_0x13B61 = val;
}
}
static void setField_0x13B64(u8 val) {
static void setField_0x13B64(u8 val) {
if (sInstance != nullptr) {
sInstance->field_0x13B64 = val;
}
}
static u8 getDowsing0x550A() {
if (sInstance != nullptr) {
return sInstance->mMeter.mDowsing.getField_0x550A();
@@ -275,11 +335,15 @@ private:
/* 0x13B48 */ bool mVisible;
/* 0x13B49 */ u8 _0x13B49[0x13B50 - 0x13B49];
/* 0x13B50 */ s32 mFlags;
/* 0x13B54 */ u8 _0x13B54[0x13B61 - 0x13B54];
/* 0x13B54 */ s32 field_0x13B54;
/* 0x13B58 */ u8 _0x13B58[0x13B60 - 0x13B58];
/* 0x13B60 */ u8 field_0x13B60;
/* 0x13B61 */ u8 field_0x13B61;
/* 0x13B62 */ u8 field_0x13B62;
/* 0x13B63 */ u8 field_0x13B63;
/* 0x13B64 */ u8 field_0x13B64;
/* 0x13B65 */ u8 field_0x13B65;
/* 0x13B66 */ u8 field_0x13B66;
static dLytMeterContainer_c *sInstance;
};
+4
View File
@@ -26,6 +26,10 @@ public:
mpContainerAnmGroup2 = g2;
}
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setMessage(s32 id);
@@ -156,6 +156,10 @@ public:
return field_0x550A;
}
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setItemName(s32 id);
void setMessage(s32 id);
@@ -27,6 +27,10 @@ public:
bool fn_80104760() const;
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void realizeAnimState();
static bool isStaminaLow(f32);
@@ -56,7 +60,7 @@ private:
/* 0x080 */ d2d::dLytSub mLyt;
/* 0x114 */ d2d::AnmGroup_c mAnm[16];
/* 0x514 */ nw4r::lyt::Pane *mpPane;
/* 0x514 */ nw4r::lyt::Pane *mpOwnerPane;
/* 0x518 */ f32 field_0x518;
/* 0x51C */ f32 field_0x51C;
/* 0x520 */ u8 _0x520[0x524 - 0x520];
+4
View File
@@ -21,6 +21,10 @@ public:
}
virtual ~dLytMeterHeart_c() {}
s32 getField_0x78C() const {
return field_0x78C;
}
private:
u8 getCurrentHealth() const;
+12 -4
View File
@@ -47,8 +47,12 @@ public:
dLytMeterBossKey_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterBossKey_c() {}
virtual void BossKey0x8() {}
virtual void BossKey0xC() {}
virtual d2d::LytBase_c *getLyt() {
return &mLyt;
}
virtual const char *getName() const {
return mLyt.getName();
}
bool build(d2d::ResAccIf_c *);
bool remove();
@@ -82,8 +86,12 @@ public:
dLytMeterSmallKey_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterSmallKey_c() {}
virtual void SmallKey0x8() {}
virtual void SmallKey0xC() {}
virtual d2d::LytBase_c *getLyt() {
return &mLyt;
}
virtual const char *getName() const {
return mLyt.getName();
}
bool build(d2d::ResAccIf_c *);
bool remove();
@@ -122,6 +122,10 @@ public:
bool demoRelated(s32 arg);
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
bool shouldCall() const;
bool fn_800F75E0() const;
@@ -27,6 +27,10 @@ public:
virtual ~dLytMeterNunStk_c() {}
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setMessage(s32 id);
@@ -22,6 +22,10 @@ public:
virtual ~dLytMeterNunchakuBg_c() {}
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setMessage(s32 id);
+42 -18
View File
@@ -2,6 +2,7 @@
#define D_LYT_METER_PARTS_H
#include "d/lyt/d2d.h"
#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
class dLytMeter1Button_c : public d2d::dSubPane {
@@ -21,6 +22,12 @@ public:
return mLyt.getName();
}
bool shouldCall() const;
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
STATE_FUNC_DECLARE(dLytMeter1Button_c, Wait);
STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUse);
@@ -29,14 +36,14 @@ private:
UI_STATE_MGR_DECLARE(dLytMeter1Button_c);
d2d::dLytSub mLyt;
d2d::AnmGroup_c mAnmGroups[3];
/* 0x198 */ dWindow_c *mpWindow;
/* 0x19C */ dTextBox_c *mpTextbox;
/* 0x1A0 */ u32 field_0x1A0;
/* 0x1A4 */ s32 field_0x1A4;
/* 0x1A8 */ s32 field_0x1A8;
/* 0x1AC */ u8 field_0x1AC;
/* 0x1AD */ u8 field_0x1AD;
d2d::AnmGroup_c mAnm[3];
/* 0x198 */ dWindow_c *mpWindow[1];
/* 0x19C */ dTextBox_c *mpSizeBox[1];
/* 0x1A0 */ nw4r::lyt::Pane *mpOwnerPane;
/* 0x1A4 */ s32 mUnuseDelay;
/* 0x1A8 */ s32 mCallCount;
/* 0x1AC */ bool mShouldCall;
/* 0x1AD */ bool mHasInitedCall;
};
class dLytMeter2Button_c : public d2d::dSubPane {
@@ -56,6 +63,12 @@ public:
return mLyt.getName();
}
bool shouldCall() const;
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
STATE_FUNC_DECLARE(dLytMeter2Button_c, Wait);
STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUse);
@@ -64,28 +77,39 @@ private:
UI_STATE_MGR_DECLARE(dLytMeter2Button_c);
d2d::dLytSub mLyt;
d2d::AnmGroup_c mAnmGroups[3];
/* 0x198 */ dWindow_c *mpWindow;
/* 0x19C */ dTextBox_c *mpTextbox;
/* 0x1A0 */ u32 field_0x1A0;
/* 0x1A4 */ s32 field_0x1A4;
/* 0x1A8 */ s32 field_0x1A8;
/* 0x1AC */ u8 field_0x1AC;
/* 0x1AD */ u8 field_0x1AD;
d2d::AnmGroup_c mAnm[3];
/* 0x198 */ dWindow_c *mpWindow[1];
/* 0x19C */ dTextBox_c *mpSizeBox[1];
/* 0x1A0 */ nw4r::lyt::Pane *mpOwnerPane;
/* 0x1A4 */ s32 mUnuseDelay;
/* 0x1A8 */ s32 mCallCount;
/* 0x1AC */ bool mShouldCall;
/* 0x1AD */ bool mHasInitedCall;
};
class dLytMeterParts_c {
public:
dLytMeterParts_c() : mStateMgr(*this, sStateID::null) {}
void build(s32 index);
void execute();
void setAnmGroups(d2d::AnmGroup_c *inAnm, d2d::AnmGroup_c *outAnm) {
mpAnm1 = inAnm;
mpAnm2 = outAnm;
}
private:
STATE_FUNC_DECLARE(dLytMeterParts_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterParts_c, In);
STATE_FUNC_DECLARE(dLytMeterParts_c, Visible);
STATE_FUNC_DECLARE(dLytMeterParts_c, Out);
UI_STATE_MGR_DECLARE(dLytMeterParts_c);
u8 field_0x3C[0x10];
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterParts_c);
/* 0x3C */ d2d::AnmGroup_c *mpAnm1;
/* 0x40 */ d2d::AnmGroup_c *mpAnm2;
/* 0x44 */ s32 mIndex;
/* 0x48 */ u8 mShouldBeVisible;
};
#endif
@@ -27,6 +27,10 @@ public:
bool isCalling() const;
void setCall(bool shouldCall);
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setMessage(s32 id);
bool isMapOpen() const;
+16
View File
@@ -89,6 +89,22 @@ public:
mVec3_c getLastVisibleDigitPosition();
void setField_0x8A9(u8 val) {
field_0x8A9 = val;
}
void setField_0x8AA(u8 val) {
field_0x8AA = val;
}
u8 getField_0x8AC() const {
return field_0x8AC;
}
void setField_0x8AC(u8 val) {
field_0x8AC = val;
}
private:
bool updateDisplayedAmount(bool suppressSound);
bool hasChangeInRupees() const;
@@ -27,6 +27,10 @@ public:
mpContainerAnmGroup = g;
}
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
s32 getLytFrameForShield(s32) const;
void setLevel(f32 level);
+21 -3
View File
@@ -1,6 +1,7 @@
#ifndef D_LYT_METER_TIMER_H
#define D_LYT_METER_TIMER_H
#include "common.h"
#include "d/a/d_a_item.h"
#include "d/lyt/d2d.h"
#include "m/m_color.h"
@@ -9,7 +10,8 @@
class LytMeterTimerPart1_c : public d2d::dSubPane {
public:
LytMeterTimerPart1_c() {
LytMeterTimerPart1_c()
: mActualTearCount(0), mDisplayedTearCount(0), field_0x760(0), mTrial(dAcItem_c::TRIAL_NONE), field_0x780(0) {
sInstance = this;
}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
@@ -95,7 +97,7 @@ private:
class LytMeterTimerPart2_c : public d2d::dSubPane {
public:
LytMeterTimerPart2_c() {
LytMeterTimerPart2_c(): mNumPetals(0), mTrial(dAcItem_c::TRIAL_NONE), mVisible(true), mFlowerLoopFrame(0.0f) {
sInstance = this;
}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
@@ -223,7 +225,22 @@ private:
class dLytMeterTimer_c {
public:
dLytMeterTimer_c() : mStateMgr(*this, sStateID::null) {}
dLytMeterTimer_c()
: mStateMgr(*this, sStateID::null),
mpPart1(nullptr),
mpPart2(nullptr),
field_0x48(0),
field_0x49(0),
mActualTime(0),
mLastTime(0),
field_0x54(0),
field_0x55(0),
field_0x56(8),
field_0x57(8),
field_0x58(0),
field_0x59(0),
field_0x5C(0),
field_0x60(0) {}
virtual ~dLytMeterTimer_c() {}
bool build();
bool remove();
@@ -267,6 +284,7 @@ private:
/* 0x40 */ LytMeterTimerPart1_c *mpPart1;
/* 0x44 */ LytMeterTimerPart2_c *mpPart2;
/* 0x48 */ u8 field_0x48;
/* 0x49 */ u8 field_0x49;
/* 0x4C */ s32 mActualTime;
/* 0x50 */ s32 mLastTime;
/* 0x54 */ u8 field_0x54;
+4
View File
@@ -28,6 +28,10 @@ public:
bool isCalling() const;
void setOwnerPane(nw4r::lyt::Pane *pane) {
mpOwnerPane = pane;
}
private:
void setMessage(s32 id);