mirror of
https://github.com/zeldaret/ss
synced 2026-08-09 10:53:09 -04:00
101 lines
2.5 KiB
C++
101 lines
2.5 KiB
C++
#ifndef D_LYT_DRAW_MARK_H
|
|
#define D_LYT_DRAW_MARK_H
|
|
|
|
#include "common.h"
|
|
#include "d/lyt/d2d.h"
|
|
#include "m/m_vec.h"
|
|
#include "nw4r/lyt/lyt_pane.h"
|
|
#include "s/s_State.hpp"
|
|
|
|
/** 2D UI - Handles drawing the shape for re-sealing the Imprisoned One */
|
|
class dLytDrawMark_c {
|
|
public:
|
|
dLytDrawMark_c() : mStateMgr(*this) {}
|
|
~dLytDrawMark_c() {}
|
|
|
|
bool build(UNKWORD);
|
|
bool remove();
|
|
bool execute();
|
|
bool draw();
|
|
|
|
u8 getField_0x940() const {
|
|
return field_0x940;
|
|
}
|
|
|
|
void setForceComplete(bool v) {
|
|
mForceComplete = v;
|
|
}
|
|
|
|
private:
|
|
enum Variant_e {
|
|
VAR_IMP_1,
|
|
VAR_IMP_2,
|
|
VAR_IMP_3,
|
|
};
|
|
|
|
void buildVariant01();
|
|
void buildVariant02();
|
|
void buildVariant03();
|
|
|
|
void convertScreenPosToDpdPos(mVec2_c *pOutDpd, mVec2_c *screenPos) const;
|
|
void fn_800ADC10(mVec2_c screenPos) const;
|
|
s32 getNumLines() const;
|
|
void loadPanePos();
|
|
void detectSwordSwing();
|
|
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, Wait);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, In);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, RingIn);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, MoveWait);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, MoveDraw);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, MoveFix);
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, MoveEnd); // Unused?
|
|
STATE_FUNC_DECLARE(dLytDrawMark_c, Complete);
|
|
|
|
/* 0x000 */ UI_STATE_MGR_DECLARE(dLytDrawMark_c);
|
|
/* 0x03C */ d2d::LytBase_c mLyt;
|
|
/* 0x0CC */ d2d::AnmGroup_c mAnm[16];
|
|
|
|
/* 0x4CC */ nw4r::lyt::Pane *mpPanes[13];
|
|
/* 0x500 */ nw4r::lyt::Pane *field_0x500;
|
|
|
|
/* 0x504 */ d2d::ResAccIf_c mResAcc;
|
|
|
|
/* 0x874 */ mVec2_c field_0x874;
|
|
/* 0x87C */ mVec2_c mDpdPosLastFrame;
|
|
/* 0x884 */ mVec2_c mDpdPosScreen;
|
|
|
|
/* 0x88C */ mVec2_c mStartPositions[6];
|
|
/* 0x8BC */ mVec2_c mEndPositions[6];
|
|
|
|
/* 0x8EC */ s32 mLineLoopIndex;
|
|
|
|
/* 0x8F0 */ s32 mVariant;
|
|
/* 0x8F4 */ s32 mSavedLineLoopIndex;
|
|
/* 0x8F8 */ s32 field_0x8F8;
|
|
/* 0x8FC */ s32 mLineFixIndex;
|
|
/* 0x900 */ s32 field_0x900;
|
|
/* 0x904 */ s32 mDpdPosInitTimer;
|
|
/* 0x908 */ s32 mSampleTimer;
|
|
|
|
/* 0x90C */ u8 _0x90C[0x910 - 0x90C];
|
|
|
|
/* 0x910 */ f32 field_0x910;
|
|
/* 0x914 */ f32 field_0x914;
|
|
/* 0x918 */ f32 field_0x918[10];
|
|
|
|
/* 0x940 */ bool field_0x940;
|
|
/* 0x941 */ bool mForceComplete;
|
|
/* 0x942 */ bool mLastLine;
|
|
/* 0x943 */ bool mNeedEnableLineLoop;
|
|
/* 0x944 */ u8 field_0x944;
|
|
|
|
/* 0x945 */ bool mAnmCtrlInUse[16];
|
|
|
|
/* 0x955 */ bool field_0x955;
|
|
/* 0x956 */ bool field_0x956;
|
|
/* 0x957 */ bool field_0x957;
|
|
};
|
|
|
|
#endif
|