diff options
| author | robojumper <robojumper@gmail.com> | 2025-04-12 23:53:55 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-04-21 21:51:02 +0200 |
| commit | 27c8a5dac5f9d2299be461649fa344a955c298bf (patch) | |
| tree | 1ad482efc4905e28a6c065362e9ca30b7b03cab8 /include/d/lyt/meter | |
| parent | d76002aaf5d3e7176033c590f43dcec42c662479 (diff) | |
d_lyt_meter_cross_btn OK
Diffstat (limited to 'include/d/lyt/meter')
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter.h | 2 | ||||
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter_cross_btn.h | 82 | ||||
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter_minus_btn.h | 2 | ||||
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter_plus_btn.h | 4 |
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; |
