Files
ss/include/d/lyt/meter/d_lyt_meter_dowsing.h
T
robojumper 4874cda264 Progress
2025-04-21 21:51:05 +02:00

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