mirror of
https://github.com/zeldaret/ss
synced 2026-06-17 07:07:39 -04:00
238 lines
6.6 KiB
C++
238 lines
6.6 KiB
C++
#ifndef D_LYT_METER_DOWSING_H
|
|
#define D_LYT_METER_DOWSING_H
|
|
|
|
#include "d/lyt/d2d.h"
|
|
#include "d/lyt/d_lyt_common_icon_item.h"
|
|
#include "d/lyt/d_textbox.h"
|
|
#include "nw4r/lyt/lyt_pane.h"
|
|
#include "s/s_State.hpp"
|
|
|
|
class dLytMeterDowsingMenuIcon_c {
|
|
public:
|
|
dLytMeterDowsingMenuIcon_c() : mStateMgr(*this, sStateID::null) {}
|
|
virtual ~dLytMeterDowsingMenuIcon_c() {}
|
|
|
|
void init();
|
|
void execute();
|
|
void reset();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anim) {
|
|
mpAnm = anim;
|
|
}
|
|
|
|
void setShouldBeSelect(u32 v) {
|
|
mShouldBeSelect = v;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, On);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Select);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Off);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingMenuIcon_c);
|
|
|
|
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingMenuIcon_c);
|
|
|
|
/* 0x40 */ d2d::AnmGroup_c *mpAnm;
|
|
/* 0x44 */ u32 mShouldBeSelect;
|
|
};
|
|
|
|
class dLytMeterDowsingBlink_c {
|
|
public:
|
|
dLytMeterDowsingBlink_c() : mStateMgr(*this, sStateID::null) {}
|
|
~dLytMeterDowsingBlink_c() {}
|
|
|
|
void init();
|
|
void execute();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anim) {
|
|
mpAnm = anim;
|
|
}
|
|
|
|
void setShouldBeSelect(u32 v) {
|
|
mShouldBeSelect = v;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, On);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Select);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Off);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingBlink_c);
|
|
|
|
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingBlink_c);
|
|
|
|
/* 0x40 */ d2d::AnmGroup_c *mpAnm;
|
|
/* 0x44 */ u32 mShouldBeSelect;
|
|
};
|
|
|
|
class dLytMeterDowsingInput_c {
|
|
public:
|
|
dLytMeterDowsingInput_c() : mStateMgr(*this, sStateID::null) {}
|
|
~dLytMeterDowsingInput_c() {}
|
|
|
|
void init();
|
|
void execute();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anim) {
|
|
mpAnm = anim;
|
|
}
|
|
|
|
void setShouldBeSelect(u32 v) {
|
|
mShouldBeSelect = v;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, On);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Select);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Off);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingInput_c);
|
|
|
|
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingInput_c);
|
|
|
|
/* 0x3C */ d2d::AnmGroup_c *mpAnm;
|
|
/* 0x40 */ u32 mShouldBeSelect;
|
|
};
|
|
|
|
class dLytMeterDowsingText_c {
|
|
public:
|
|
dLytMeterDowsingText_c() : mStateMgr(*this, sStateID::null) {}
|
|
~dLytMeterDowsingText_c() {}
|
|
|
|
void init();
|
|
void execute();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anim) {
|
|
mpAnm = anim;
|
|
}
|
|
|
|
void setShouldBeSelect(u32 v) {
|
|
mShouldBeSelect = v;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, On);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Select);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Off);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingText_c);
|
|
|
|
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingText_c);
|
|
|
|
/* 0x3C */ d2d::AnmGroup_c *mpAnm;
|
|
/* 0x40 */ u32 mShouldBeSelect;
|
|
};
|
|
|
|
class dLytMeterDowsing_c : public d2d::dSubPane {
|
|
public:
|
|
dLytMeterDowsing_c() : mStateMgr(*this, sStateID::null) {}
|
|
virtual bool build(d2d::ResAccIf_c *resAcc) override;
|
|
virtual bool remove() override;
|
|
virtual bool execute() 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 ~dLytMeterDowsing_c() {}
|
|
|
|
bool shouldCall() const;
|
|
bool fn_800FE3C0(s32 arg);
|
|
bool fn_800FE490() const;
|
|
bool fn_800FE4B0() const;
|
|
bool fn_800FE610();
|
|
|
|
u8 getField_0x550A() const {
|
|
return field_0x550A;
|
|
}
|
|
|
|
void setOwnerPane(nw4r::lyt::Pane *pane) {
|
|
mpOwnerPane = pane;
|
|
}
|
|
|
|
void setField_0x54E0(s32 value) {
|
|
field_0x54E0 = value;
|
|
}
|
|
|
|
private:
|
|
void setItemName(s32 id);
|
|
void setMessage(s32 id);
|
|
u8 getSelectedDowsingSlot() const;
|
|
void fn_800FE110();
|
|
void fn_800FE220();
|
|
s32 convertToLytIndex(s32 slot) const;
|
|
s32 convertSlotIndexToAnm(s32 slot) const;
|
|
s32 fn_800FE9C0(s32) const;
|
|
|
|
nw4r::lyt::Pane *getPaneByIndex(s32 idx) const {
|
|
return mpPanes[idx];
|
|
}
|
|
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Invisible);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelectingIn);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelecting);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelectingOut);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Reset);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, ToUse);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, ToUnuse);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Unuse);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoMove);
|
|
STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoOut);
|
|
|
|
STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterDowsing_c);
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsing_c);
|
|
|
|
/* 0x0008 */ dLytMeterDowsingMenuIcon_c mIcon[8];
|
|
/* 0x0248 */ dLytMeterDowsingBlink_c mBlink;
|
|
/* 0x028C */ dLytMeterDowsingInput_c mInput;
|
|
/* 0x02D0 */ dLytMeterDowsingText_c mText[2];
|
|
/* 0x0358 */ UI_STATE_MGR_DECLARE(dLytMeterDowsing_c);
|
|
|
|
/* 0x0490 */ d2d::dLytSub mLyt;
|
|
|
|
/* 0x0428 */ d2d::AnmGroup_c mAnm[29];
|
|
/* 0x0B68 */ nw4r::lyt::Pane *mpPanes[22];
|
|
/* 0x0BC0 */ nw4r::lyt::Pane *mpOwnerPane;
|
|
/* 0x0BC4 */ dWindow_c *mpWindows[3];
|
|
/* 0x0BD0 */ dTextBox_c *mpSizeBoxes[3];
|
|
/* 0x0BDC */ dTextBox_c *mpTextBoxes[4];
|
|
/* 0x0BEC */ dLytCommonIconItem_c mItemIcons[9];
|
|
|
|
/* 0x5434 */ d2d::SubPaneList mSubpaneList;
|
|
/* 0x5440 */ d2d::SubPaneListNode mSubpanes[9];
|
|
/* 0x54D0 */ f32 mArrowRotation;
|
|
/* 0x54D4 */ f32 mArrowLength;
|
|
/* 0x54D8 */ s32 field_0x54D8;
|
|
/* 0x54D8 */ s32 field_0x54DC;
|
|
/* 0x54E0 */ s32 field_0x54E0;
|
|
/* 0x54E4 */ s32 field_0x54E4;
|
|
/* 0x54E8 */ s32 field_0x54E8;
|
|
/* 0x54EC */ s32 field_0x54EC;
|
|
/* 0x54F0 */ s32 field_0x54F0;
|
|
/* 0x54F4 */ s32 field_0x54F4;
|
|
/* 0x54F8 */ u32 field_0x54F8;
|
|
/* 0x54FC */ s32 mDemoFrame;
|
|
/* 0x5500 */ s32 field_0x5500;
|
|
/* 0x5504 */ u8 field_0x5504;
|
|
/* 0x5505 */ u8 field_0x5505;
|
|
/* 0x5506 */ u8 field_0x5506;
|
|
/* 0x5507 */ u8 field_0x5507;
|
|
/* 0x5508 */ u8 field_0x5508;
|
|
/* 0x5509 */ u8 field_0x5509;
|
|
/* 0x550A */ u8 field_0x550A;
|
|
/* 0x550B */ u8 field_0x550B;
|
|
};
|
|
|
|
#endif
|