|
1 | 1 | #ifndef D_LYT_CONTROL_GAME_H |
2 | 2 | #define D_LYT_CONTROL_GAME_H |
3 | 3 |
|
| 4 | +// clang-format off |
| 5 | +// vtable order |
| 6 | +#include "common.h" |
4 | 7 | #include "d/d_base.h" |
5 | | -#include "d/lyt/d_lyt_map.h" |
6 | | -#include "d/lyt/d_lyt_wipe.h" |
7 | 8 | #include "d/lyt/meter/d_lyt_meter.h" |
8 | 9 | #include "d/lyt/msg_window/d_lyt_msg_window.h" |
9 | 10 | #include "d/lyt/msg_window/d_lyt_simple_window.h" |
| 11 | +#include "d/lyt/d_lyt_wipe.h" |
| 12 | +#include "d/lyt/d_lyt_help.h" |
| 13 | +#include "d/lyt/d_lyt_map.h" |
10 | 14 | #include "s/s_State.hpp" |
11 | 15 | #include "toBeSorted/arc_managers/layout_arc_manager.h" |
12 | 16 | #include "toBeSorted/raii_ptr.h" |
| 17 | +// clang-format on |
| 18 | + |
| 19 | +class dLytDrawMark_c; |
13 | 20 |
|
14 | 21 | class dLytControlGame_c : public dBase_c { |
15 | 22 | public: |
16 | 23 | dLytControlGame_c(); |
17 | 24 | virtual ~dLytControlGame_c(); |
18 | 25 |
|
| 26 | + enum Cmd_e { |
| 27 | + CMD_NONE = 0, |
| 28 | + CMD_MAP = 1, |
| 29 | + CMD_PAUSE = 2, |
| 30 | + CMD_HELP = 3, |
| 31 | + }; |
| 32 | + |
| 33 | + virtual int create() override; |
| 34 | + virtual int doDelete() override; |
| 35 | + virtual int execute() override; |
| 36 | + virtual int draw() override; |
| 37 | + |
19 | 38 | bool isInSomeMapState() const; |
20 | 39 | bool isNotInStateMap() const; |
21 | | - void openCollectionScreenDemo(); |
22 | | - bool isStateNormalOrNotInEvent() const; |
23 | | - void somehowRelatedToEnteringLightPillars(s32, s32, s32); |
24 | | - |
25 | | - void fn_802CCD40(bool); |
| 40 | + bool isStateNotNormalOrInEvent() const; |
| 41 | + bool fn_802CFF60() const; |
| 42 | + |
| 43 | + void setMapEventDone(bool); |
26 | 44 | void fn_802D04F0(); |
| 45 | + void checkForBeaconNextToMark(); |
| 46 | + |
| 47 | + void hideHelp(); |
| 48 | + void changeHelpText(s32 textIndex); |
| 49 | + void openPause(); |
| 50 | + void openPauseDemo(); |
| 51 | + void openHelp(s32 textIndex); |
| 52 | + void openMap(); |
| 53 | + void openMapEvent(s32 mapEvent, s32 arg1, s32 arg2); |
| 54 | + |
| 55 | + void resetFootsteps(); |
27 | 56 |
|
28 | 57 | const dMapFootPrintsQueue_c *getFootprintsQueue() const { |
29 | 58 | return mFootprintsMgr.getQueue(); |
@@ -80,31 +109,43 @@ class dLytControlGame_c : public dBase_c { |
80 | 109 | } |
81 | 110 |
|
82 | 111 | private: |
| 112 | + bool checkStoryflag(s32 flag) const; |
| 113 | + void fn_802CFA90(); |
| 114 | + bool canOpenPause(); |
| 115 | + bool releaseRes(); |
| 116 | + bool decrementRes(); |
| 117 | + |
83 | 118 | /* 0x00068 */ UI_STATE_MGR_DECLARE(dLytControlGame_c); |
84 | | - /* 0x000A4 */ RaiiPtr<void*> field_0x000A4; |
| 119 | + /* 0x000A4 */ RaiiPtr<dLytMap_c> mpMap; |
85 | 120 | /* 0x000A8 */ dLytMeter_c mMeter; |
86 | 121 | /* 0x13C10 */ dLytMsgWindow_c mMsgWindow; |
87 | 122 | /* 0x14E34 */ dLytSimpleWindow_c mSimpleWindow; |
88 | 123 | /* 0x152A0 */ dLytWipe_c mWipe; |
89 | | - /* 0x15848 */ u8 _0x15848[0x15850 - 0x15848]; |
| 124 | + /* 0x15848 */ dLytHelp_c *mpHelp; |
| 125 | + /* 0x1584C */ dLytDrawMark_c *mpDrawMark; |
90 | 126 | /* 0x15850 */ dMapFootPrintsMgr_c mFootprintsMgr; |
91 | 127 |
|
92 | | - /* 0x15C24 */ UNKWORD field_0x15C24; |
93 | | - /* 0x15C28 */ UNKWORD field_0x15C28; |
94 | | - |
| 128 | + /* 0x15C24 */ s32 mCommand; |
| 129 | + /* 0x15C28 */ s32 mHelpTextIndex; |
95 | 130 | /* 0x15C2C */ s32 mCurrentPauseDisp; |
96 | 131 | /* 0x15C30 */ s32 mPauseDisp00Tab; |
| 132 | + /* 0x15C34 */ u8 mIsEvent; |
| 133 | + /* 0x15C38 */ s32 mMapEvent; |
97 | 134 |
|
98 | | - /* 0x15C34 */ u8 _0x15C34[0x15C40 - 0x15C34]; |
| 135 | + /* 0x15C3C */ u8 _0x15C3C[0x15C40 - 0x15C3C]; |
99 | 136 |
|
100 | 137 | /* 0x15C40 */ LayoutArcControl mLytArcControl; |
101 | 138 |
|
102 | | - /* 0x15C4C */ u8 _0x15C4C[0x15C60 - 0x15C4C]; |
| 139 | + /* 0x15C4C */ s32 mMapEventArg1; |
| 140 | + /* 0x15C50 */ s32 mMapEventArg2; |
103 | 141 |
|
104 | | - /* 0x15C60 */ u16 mItemForPauseDemo; |
| 142 | + /* 0x15C54 */ UNKWORD field_0x15C54; |
| 143 | + /* 0x15C58 */ UNKWORD field_0x15C58; |
105 | 144 |
|
106 | | - /* 0x15C62 */ u8 _0x15C62[0x15C64 - 0x15C62]; |
| 145 | + /* 0x15C5C */ u8 _0x15C5C[0x15C60 - 0x15C5C]; |
107 | 146 |
|
| 147 | + /* 0x15C60 */ u16 mItemForPauseDemo; |
| 148 | + /* 0x15C62 */ u16 mPickupItemCount; |
108 | 149 | /* 0x15C64 */ u16 mItemCountForPauseDemo; |
109 | 150 | /* 0x15C66 */ u8 field_0x15C66; |
110 | 151 | /* 0x15C67 */ bool mIsPauseDemo; |
|
0 commit comments