mirror of
https://github.com/zeldaret/ss
synced 2026-06-25 01:32:01 -04:00
156 lines
3.6 KiB
C++
156 lines
3.6 KiB
C++
#ifndef D_LYT_METER_RUPY_H
|
|
#define D_LYT_METER_RUPY_H
|
|
|
|
#include "d/lyt/d2d.h"
|
|
#include "m/m_vec.h"
|
|
#include "nw4r/lyt/lyt_pane.h"
|
|
#include "s/s_State.hpp"
|
|
|
|
class dLytMeterRupyStart_c {
|
|
public:
|
|
dLytMeterRupyStart_c() : mStateMgr(*this, sStateID::null) {}
|
|
|
|
void init();
|
|
void execute();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anm) {
|
|
mpAnm = anm;
|
|
}
|
|
|
|
void setShouldStart(bool b) {
|
|
mShouldStart = b;
|
|
}
|
|
|
|
bool isStarting() const {
|
|
return mShouldStart;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Start);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupyStart_c);
|
|
|
|
UI_STATE_MGR_DECLARE(dLytMeterRupyStart_c);
|
|
|
|
d2d::AnmGroup_c *mpAnm;
|
|
bool mShouldStart;
|
|
};
|
|
|
|
class dLytMeterRupyBlink_c {
|
|
public:
|
|
dLytMeterRupyBlink_c() : mStateMgr(*this, sStateID::null) {}
|
|
|
|
void init();
|
|
void execute();
|
|
|
|
void setAnm(d2d::AnmGroup_c *anm) {
|
|
mpAnm = anm;
|
|
}
|
|
|
|
void doFlash() {
|
|
mShouldFlash = true;
|
|
}
|
|
|
|
void cancelFlash() {
|
|
mImmediatelyCancelFlash = true;
|
|
}
|
|
|
|
private:
|
|
STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Flash);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupyBlink_c);
|
|
|
|
UI_STATE_MGR_DECLARE(dLytMeterRupyBlink_c);
|
|
|
|
d2d::AnmGroup_c *mpAnm;
|
|
bool mShouldFlash;
|
|
bool mImmediatelyCancelFlash;
|
|
};
|
|
|
|
class dLytMeterRupy_c : public d2d::dSubPane {
|
|
public:
|
|
dLytMeterRupy_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 ~dLytMeterRupy_c() {}
|
|
|
|
mVec3_c getLastVisibleDigitPosition();
|
|
|
|
void setField_0x8A9(u8 val) {
|
|
field_0x8A9 = val;
|
|
}
|
|
|
|
u8 getField_0x8A9() const {
|
|
return field_0x8A9;
|
|
}
|
|
|
|
void setField_0x8AA(u8 val) {
|
|
field_0x8AA = val;
|
|
}
|
|
|
|
u8 getField_0x8AC() const {
|
|
return field_0x8AC;
|
|
}
|
|
|
|
void setField_0x8AC(u8 val) {
|
|
field_0x8AC = val;
|
|
}
|
|
|
|
void setSize(u8 size) {
|
|
mSize = size;
|
|
}
|
|
|
|
private:
|
|
bool updateDisplayedAmount(bool suppressSound);
|
|
bool hasChangeInRupees() const;
|
|
s32 getRupeeDifference() const;
|
|
void setDigit(s32 index, s32 digit);
|
|
void executeDigitJump();
|
|
void executeDigitBlink(s32 amount);
|
|
|
|
STATE_FUNC_DECLARE(dLytMeterRupy_c, In);
|
|
STATE_FUNC_DECLARE(dLytMeterRupy_c, Active);
|
|
STATE_FUNC_DECLARE(dLytMeterRupy_c, Start);
|
|
STATE_FUNC_DECLARE(dLytMeterRupy_c, Out);
|
|
|
|
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupy_c);
|
|
|
|
UI_STATE_MGR_DECLARE(dLytMeterRupy_c);
|
|
|
|
/* 0x044 */ d2d::dLytSub mLyt;
|
|
/* 0x0D8 */ d2d::AnmGroup_c mAnm[22];
|
|
/* 0x658 */ dLytMeterRupyStart_c mStartParts[4];
|
|
/* 0x768 */ dLytMeterRupyBlink_c mBlinkParts[4];
|
|
/* 0x878 */ nw4r::lyt::Pane *mpPanes[4];
|
|
/* 0x888 */ s32 mNumDisplayedDigits;
|
|
/* 0x88C */ s32 mDisplayedRupeeCount;
|
|
/* 0x890 */ s32 field_0x890;
|
|
/* 0x894 */ s32 mBlinkDelay;
|
|
/* 0x898 */ s32 mRupeeColor;
|
|
/* 0x89C */ u8 mSize;
|
|
/* 0x89D */ u8 mDisplayedDigits[4];
|
|
/* 0x8A1 */ u8 mPrevDigits[4];
|
|
/* 0x8A5 */ u8 mJumpState[4];
|
|
/* 0x8A9 */ u8 field_0x8A9;
|
|
/* 0x8AA */ u8 field_0x8AA;
|
|
/* 0x8AB */ u8 field_0x8AB;
|
|
/* 0x8AC */ u8 field_0x8AC;
|
|
/* 0x8AD */ u8 field_0x8AD;
|
|
/* 0x8AE */ u8 field_0x8AE;
|
|
};
|
|
|
|
#endif
|