mirror of
https://github.com/zeldaret/ss
synced 2026-07-11 14:48:32 -04:00
91 lines
2.0 KiB
C++
91 lines
2.0 KiB
C++
#ifndef D_LYT_COMMON_ARROW_H
|
|
#define D_LYT_COMMON_ARROW_H
|
|
|
|
#include "d/lyt/d2d.h"
|
|
// clang-format off
|
|
// vtable order
|
|
#include "d/d_cursor_hit_check.h"
|
|
// clang-format on
|
|
#include "m/m_vec.h"
|
|
#include "nw4r/lyt/lyt_bounding.h"
|
|
#include "s/s_State.hpp"
|
|
|
|
class dLytCommonArrow_c {
|
|
public:
|
|
dLytCommonArrow_c();
|
|
virtual ~dLytCommonArrow_c() {}
|
|
|
|
enum Arrow_e {
|
|
ARROW_LEFT = 0,
|
|
ARROW_RIGHT = 1,
|
|
ARROW_NONE = 2,
|
|
};
|
|
|
|
bool build();
|
|
|
|
STATE_FUNC_DECLARE(dLytCommonArrow_c, None);
|
|
STATE_FUNC_DECLARE(dLytCommonArrow_c, In);
|
|
STATE_FUNC_DECLARE(dLytCommonArrow_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytCommonArrow_c, Out);
|
|
|
|
void setState(s32 state);
|
|
bool draw();
|
|
|
|
bool remove();
|
|
bool execute();
|
|
bool requestIn();
|
|
bool requestOut();
|
|
|
|
s32 getPointedAtArrow() const {
|
|
return mPointedAtArrow;
|
|
}
|
|
|
|
bool isChangingState() const {
|
|
return mIsChangingState;
|
|
}
|
|
|
|
nw4r::lyt::Bounding *getArrowBounding(s32 idx) const {
|
|
return mpBoundings[idx];
|
|
}
|
|
|
|
s32 getActiveArrow() const {
|
|
return mActiveArrow;
|
|
}
|
|
|
|
void setActiveArrow(s32 v) {
|
|
mActiveArrow = v;
|
|
}
|
|
|
|
void setBackwards(bool b) {
|
|
mBackwards = b;
|
|
}
|
|
bool triggerArrowPress();
|
|
void setTranslate(const mVec2_c *);
|
|
|
|
private:
|
|
void displayElement(s32, f32);
|
|
void unbindAt(s32);
|
|
void tickDown(d2d::AnmGroup_c *);
|
|
void checkPointAtPane();
|
|
|
|
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytCommonArrow_c);
|
|
/* 0x40 */ d2d::LytBase_c mLytBase;
|
|
d2d::ResAccIf_c mResAcc;
|
|
d2d::AnmGroup_c mAnmGroups[9];
|
|
dCursorHitCheckLyt_c mCsHitCheck;
|
|
/* 0x6A8 */ nw4r::lyt::Bounding *mpBoundings[2];
|
|
/* 0x6B0 */ s32 mType;
|
|
/* 0x6B4 */ s32 mPointedAtArrow;
|
|
/* 0x6B8 */ s32 mActiveArrow;
|
|
/* 0x6BC */ s32 mLastActiveArrow;
|
|
/* 0x6C0 */ s32 mTriggeredArrow;
|
|
/* 0x6C4 */ s32 mTimer;
|
|
/* 0x6C8 */ bool mInRequested;
|
|
/* 0x6C9 */ bool mOutRequested;
|
|
/* 0x6CA */ bool mIsChangingState;
|
|
/* 0x6CB */ bool mVisible;
|
|
/* 0x6CC */ bool mBackwards;
|
|
};
|
|
|
|
#endif
|