summaryrefslogtreecommitdiff
path: root/include/d/lyt/meter
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-04-12 23:53:55 +0200
committerrobojumper <robojumper@gmail.com>2025-04-21 21:51:02 +0200
commit27c8a5dac5f9d2299be461649fa344a955c298bf (patch)
tree1ad482efc4905e28a6c065362e9ca30b7b03cab8 /include/d/lyt/meter
parentd76002aaf5d3e7176033c590f43dcec42c662479 (diff)
d_lyt_meter_cross_btn OK
Diffstat (limited to 'include/d/lyt/meter')
-rw-r--r--include/d/lyt/meter/d_lyt_meter.h2
-rw-r--r--include/d/lyt/meter/d_lyt_meter_cross_btn.h82
-rw-r--r--include/d/lyt/meter/d_lyt_meter_minus_btn.h2
-rw-r--r--include/d/lyt/meter/d_lyt_meter_plus_btn.h4
4 files changed, 74 insertions, 16 deletions
diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h
index dadff933..4a68fb4a 100644
--- a/include/d/lyt/meter/d_lyt_meter.h
+++ b/include/d/lyt/meter/d_lyt_meter.h
@@ -188,7 +188,7 @@ public:
}
}
- static bool getItemSelect0x75B2() {
+ static bool getItemSelect0x75A2() {
if (sInstance != nullptr) {
return sInstance->mMeter.mItemSelect.getField_0x57A2();
} else {
diff --git a/include/d/lyt/meter/d_lyt_meter_cross_btn.h b/include/d/lyt/meter/d_lyt_meter_cross_btn.h
index f12c5f3a..571de597 100644
--- a/include/d/lyt/meter/d_lyt_meter_cross_btn.h
+++ b/include/d/lyt/meter/d_lyt_meter_cross_btn.h
@@ -2,23 +2,53 @@
#define D_LYT_METER_CROSS_BTN_H
#include "d/lyt/d2d.h"
+#include "d/lyt/d_textbox.h"
+#include "d/lyt/d_window.h"
+#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
-#include "s/s_StateMgr.hpp"
// Size 0x80
class dLytMeterCrossBtnParts_c {
+ friend class dLytMeterCrossBtn_c;
+
public:
- dLytMeterCrossBtnParts_c(): mStateMgr(*this, sStateID::null) {}
+ dLytMeterCrossBtnParts_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterCrossBtnParts_c() {}
+
+ void init();
+ void execute(bool bIsVisible);
+
+ bool isActive() const {
+ return *mStateMgr.getStateID() == StateID_Active;
+ }
+
private:
+ void setMessage(s32 id);
+
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Wait);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, On);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Active);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Off);
-
+
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterCrossBtnParts_c);
+
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtnParts_c);
- /* 0x3C */ u32 padding[17];
+ /* 0x3C */ d2d::LytBase_c *mpLyt;
+ /* 0x40 */ d2d::AnmGroup_c *mpAnm[2];
+ /* 0x48 */ dTextBox_c *mpTextBoxes[2];
+ /* 0x50 */ dWindow_c *mpWindow;
+ /* 0x54 */ dTextBox_c *mpSizeBox;
+ /* 0x58 */ nw4r::lyt::Pane *mpOwnerPane;
+ /* 0x5C */ s32 mIndex;
+ /* 0x60 */ s32 field_0x60;
+ /* 0x64 */ s32 field_0x64;
+ /* 0x68 */ s32 field_0x68;
+ /* 0x6C */ s32 field_0x6C;
+ /* 0x70 */ s32 field_0x70;
+ /* 0x74 */ s32 field_0x74;
+ /* 0x78 */ s32 mOnDelay;
+ /* 0x7C */ u8 field_0x7C;
};
class dLytMeterCrossBtn_c : public d2d::dSubPane {
@@ -27,28 +57,56 @@ public:
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool execute() override;
- virtual nw4r::lyt::Pane *getPane() override;
- virtual d2d::LytBase_c *getLyt() override;
- virtual const char *getName() const override;
+ virtual nw4r::lyt::Pane *getPane() override {
+ return mLyt.getLayout()->GetRootPane();
+ }
+ virtual d2d::LytBase_c *getLyt() override {
+ return &mLyt;
+ }
+ virtual const char *getName() const override {
+ return mLyt.getName();
+ }
virtual ~dLytMeterCrossBtn_c() {}
s32 getField_0x620() const {
return field_0x620;
}
+
+ void setOwnerPane(nw4r::lyt::Pane *pane);
+ bool fn_800FA730() const;
+
private:
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Unuse);
- /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c);
- /* 0x040 */ d2d::dLytSub mLyt;
- /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[12];
- /* 0x3D8 */ u8 field_0x3D8[0x420 - 0x3D8];
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtn_c);
+
+ /* 0x00C */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c);
+ /* 0x044 */ d2d::dLytSub mLyt;
+ /* 0x0D8 */ d2d::AnmGroup_c mAnm[12];
+ /* 0x3D8 */ nw4r::lyt::Pane *mpPane;
+ /* 0x3DC */ nw4r::lyt::Pane *mpOwnerPane;
+ /* 0x3E0 */ dTextBox_c *mpTextboxes[8];
+ /* 0x400 */ dWindow_c *mpWindows[4];
+ /* 0x410 */ dTextBox_c *mpSizeBoxes[4];
/* 0x420 */ dLytMeterCrossBtnParts_c mParts[4];
/* 0x620 */ s32 field_0x620;
- /* 0x624 */ u8 padding[0x640 - 0x624];
+ /* 0x624 */ s32 field_0x624;
+ /* 0x628 */ u16 field_0x628;
+ /* 0x62C */ s32 mCallCount0;
+ /* 0x630 */ s32 mCallCount1;
+ /* 0x634 */ u8 field_0x634;
+ /* 0x635 */ u8 field_0x635;
+ /* 0x636 */ u8 field_0x636;
+ /* 0x637 */ u8 field_0x637;
+ /* 0x638 */ u8 field_0x638;
+ /* 0x639 */ u8 field_0x639;
+ /* 0x63A */ u8 field_0x63A;
+ /* 0x63B */ u8 field_0x63B;
+ /* 0x63C */ u8 field_0x63C;
};
#endif
diff --git a/include/d/lyt/meter/d_lyt_meter_minus_btn.h b/include/d/lyt/meter/d_lyt_meter_minus_btn.h
index 40a697a6..2e1a2e1a 100644
--- a/include/d/lyt/meter/d_lyt_meter_minus_btn.h
+++ b/include/d/lyt/meter/d_lyt_meter_minus_btn.h
@@ -147,7 +147,7 @@ private:
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoMove);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoOut);
- STATE_MGR_DECLARE_UTIL_ISSTATE(dLytMeterMinusBtn_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterMinusBtn_c);
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtn_c);
/* 0x0008 */ dLytMeterMinusBtnMenuIcon_c mIcon[8];
diff --git a/include/d/lyt/meter/d_lyt_meter_plus_btn.h b/include/d/lyt/meter/d_lyt_meter_plus_btn.h
index 111a3f0c..29e03ede 100644
--- a/include/d/lyt/meter/d_lyt_meter_plus_btn.h
+++ b/include/d/lyt/meter/d_lyt_meter_plus_btn.h
@@ -39,8 +39,8 @@ private:
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterPlusBtn_c);
- /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c);
- /* 0x040 */ d2d::dLytSub mLyt;
+ /* 0x00C */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c);
+ /* 0x044 */ d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnm[3];
/* 0x198 */ nw4r::lyt::Pane *mpPane[1];
/* 0x19C */ nw4r::lyt::Pane *mpOwnerPane;