diff options
| author | robojumper <robojumper@gmail.com> | 2025-10-02 13:41:05 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-10-02 13:41:05 +0200 |
| commit | cf6bc521bde2c4f01944a4eacb7896f380c3402c (patch) | |
| tree | 643efa64142029daee06e95600bc91f0e1a3cb57 /include/d | |
| parent | 3af8f03e78a56701d300a8c8f2639615c6cdc4ad (diff) | |
more map
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/d_stage.h | 11 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_map.h | 78 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_map_capture.h | 10 |
3 files changed, 78 insertions, 21 deletions
diff --git a/include/d/d_stage.h b/include/d/d_stage.h index d68d64b8..07c25499 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -74,11 +74,16 @@ public: /* 0x1F0 */ u8 field_0x1F0; public: + u8 getField_0x1EE() const { + return field_0x1EE; + } + void init(MapRelated *); void fn_801b4900(); void fn_801B4B80(u32 mapParams, const mVec3_c ¢er, const mVec3_c &size); void fn_801B4C70(const mVec3_c &); void fn_801B50C0(s32); + const mVec3_c &fn_801B4CB0() const; }; // OBJ NAME: STAGE @@ -128,6 +133,10 @@ public: return sInstance; } + MapRelated *getMapRelated() { + return &mMapRelated; + } + bool isFadedOut() const { return mFader.isStatus(mFaderBase_c::FADED_OUT); } @@ -154,7 +163,7 @@ private: /* 0x0068 */ sFPhase<dStage_c> mPhase; /* 0x007C */ dRoomTable_c rooms; /* 0x017C */ dFader_c mFader; - /* 0x01A0 */ MapRelated mapRelated; + /* 0x01A0 */ MapRelated mMapRelated; /* 0x0394 */ u8 _0x394[0x39C - 0x394]; /* 0x039C */ u32 loaded_entities[2047]; /* 0x2398 */ s8 curr_room_id; diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h index 6ca15fb8..cee9f4ce 100644 --- a/include/d/lyt/d_lyt_map.h +++ b/include/d/lyt/d_lyt_map.h @@ -16,6 +16,16 @@ #include "s/s_State.hpp" #include "toBeSorted/d_flow_mgr.h" +/** Bird Statue Definition (StatueSelectDestination) */ +struct dMapSaveDefinition { + /* 0x00 */ const char *stageName; + /* 0x04 */ u8 room; + /* 0x05 */ u8 layer; + /* 0x06 */ u8 enrance; + /* 0x08 */ UNKWORD field_0x08; + /* 0x0C */ const char *statueLabel; +}; + struct dMapFootPrintEntry { /* 0x00 */ dMapFootPrintEntry *pPrev; /* 0x04 */ dMapFootPrintEntry *pNext; @@ -261,8 +271,8 @@ public: mBaseFloorOffset = 0; mSelectedBtnIdx = 0; field_0x70C = 4; - field_0x710 = false; - field_0x711 = false; + mPointerVisible = false; + mPrevPointerVisible = false; field_0x712 = false; } virtual ~dLytMapFloorBtnMgr_c(); @@ -294,7 +304,8 @@ public: return getPointedAtBtnIdx() >= 0; } - void resetFloor(s32 newFloor); + void resetFloor(s32 newFloorBtn); + bool isUsingPointerNav() const; private: void checkPointedAtBtn(); @@ -311,8 +322,8 @@ private: /* 0x704 */ s32 mBaseFloorOffset; /* 0x708 */ s32 mSelectedBtnIdx; /* 0x70C */ UNKWORD field_0x70C; - /* 0x710 */ bool field_0x710; - /* 0x711 */ bool field_0x711; + /* 0x710 */ bool mPointerVisible; + /* 0x711 */ bool mPrevPointerVisible; /* 0x712 */ bool field_0x712; }; @@ -327,6 +338,11 @@ public: STATE_FUNC_DECLARE(dLytMapPopupInfo_c, WaitInvalid); STATE_FUNC_DECLARE(dLytMapPopupInfo_c, Out); + void build(d2d::ResAccIf_c *resAcc); + void remove(); + void execute(); + void draw(); + private: /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMapPopupInfo_c); /* 0x03C */ d2d::LytBase_c mLyt; @@ -335,33 +351,50 @@ private: // Size 0x4C class dLytMapSavePopupAction_c { + friend class dLytMapSavePopup_c; + public: - dLytMapSavePopupAction_c() : mStateMgr(*this, sStateID::null), field_0x44(0.0f), field_0x48(0) {} + dLytMapSavePopupAction_c() : mStateMgr(*this, sStateID::null), mInOutFrame(0.0f), mInRequest(false) {} STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Invisible); STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, In); STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Wait); STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Out); + void execute(); + void init(d2d::AnmGroup_c *pGroups); + void hide(); + private: /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMapSavePopupAction_c); - /* 0x3C */ u8 _0x3C[0x44 - 0x3C]; - /* 0x44 */ f32 field_0x44; - /* 0x48 */ u8 field_0x48; + /* 0x3C */ d2d::AnmGroup_c *mpAnmGroupInOut; + /* 0x40 */ d2d::AnmGroup_c *mpAnmGroupInput; + /* 0x44 */ f32 mInOutFrame; + /* 0x48 */ bool mInRequest; }; // Assumed name class dLytMapSavePopup_c { public: - dLytMapSavePopup_c() : field_0x4A0(0), field_0x4A4(0), field_0x4A8(-1) {} + dLytMapSavePopup_c() : mStatueNum(0), mpStatueBoundings(nullptr), mCurrentlyInStatue(-1) {} + + void build(d2d::ResAccIf_c *resAcc); + void remove(); + void execute(); + void draw(); + + void set(nw4r::lyt::Bounding **pStatueBoundings, s32 count); + void hide(s32 statueIdx); private: + f32 setStatueLabel(const char *label); + /* 0x000 */ d2d::LytBase_c mLyt; /* 0x090 */ d2d::AnmGroup_c mAnmGroups[2]; /* 0x110 */ dLytMapSavePopupAction_c mActions[12]; - /* 0x4A0 */ UNKWORD field_0x4A0; - /* 0x4A4 */ UNKWORD field_0x4A4; - /* 0x4A8 */ UNKWORD field_0x4A8; + /* 0x4A0 */ s32 mStatueNum; + /* 0x4A4 */ nw4r::lyt::Bounding **mpStatueBoundings; + /* 0x4A8 */ s32 mCurrentlyInStatue; }; class dLytMapSaveCaption_c { @@ -444,6 +477,8 @@ public: bool fn_80139EA0() const; void lightPillarRelated(s32, s32, s32); + const dMapSaveDefinition *getSaveDefinition(s32 province, s32 statueIdx) const; + STATE_FUNC_DECLARE(dLytMapMain_c, Invisible); STATE_FUNC_DECLARE(dLytMapMain_c, RenderingWait); STATE_FUNC_DECLARE(dLytMapMain_c, In); @@ -496,7 +531,7 @@ private: f32 fn_80142D90(s32); void fn_80142F00(mVec3_c &, s32 mapMode, u8, const mVec3_c &, const mAng &); - void fn_8013FB70(const mVec3_c&, f32); + void fn_8013FB70(const mVec3_c &, f32); void zoomOut(); void zoomIn(); @@ -527,8 +562,11 @@ private: /* 0x7BD0 */ dLytMapSavePopup_c mSavePopup; /* 0x807C */ dLytMapPopupInfo_c mPopupInfo; - /* 0x8208 */ u8 _0x8208[0x828C - 0x8208]; + /* 0x8208 */ u8 _0x8208[0x821C - 0x8208]; + /* 0x821C */ nw4r::lyt::Bounding **field_0x821C[10]; + /* 0x8244 */ nw4r::lyt::Bounding **field_0x8244[6]; + /* 0x825C */ nw4r::lyt::Bounding **field_0x825C[12]; /* 0x828C */ mVec3_c field_0x828C[12]; /* 0x831C */ u8 _0x831C[0x832C - 0x831C]; @@ -558,7 +596,11 @@ private: /* 0x8C90 */ u8 field_0x8C90; /* 0x8C94 */ s32 field_0x8C94; - /* 0x8C98 */ u8 _0x8C98[0x8CA4 - 0x8C98]; + /* 0x8C98 */ u8 _0x8C98[0x8C9C - 0x8C98]; + + /* 0x8C9C */ UNKWORD field_0x8C9C; + + /* 0x8CA0 */ u8 _0x8CA0[0x8CA4 - 0x8CA0]; /* 0x8CA4 */ s32 field_0x8CA4; /* 0x8CA8 */ s32 field_0x8CA8; @@ -665,6 +707,10 @@ public: mMapMain.lightPillarRelated(p1, p2, p3); } + const dMapSaveDefinition *getSaveDefinition(s32 statueIdx) const { + return mMapMain.getSaveDefinition(mMapMain.field_0x8C9C, statueIdx); + } + private: /* 0x0004 */ d2d::ResAccIf_c mResAcc; /* 0x0374 */ dLytMapMain_c mMapMain; diff --git a/include/d/lyt/d_lyt_map_capture.h b/include/d/lyt/d_lyt_map_capture.h index 974c095b..723d8c16 100644 --- a/include/d/lyt/d_lyt_map_capture.h +++ b/include/d/lyt/d_lyt_map_capture.h @@ -11,8 +11,8 @@ public: field_0x040 = 0; field_0x070 = 0.0f; field_0x074 = 0.0f; - field_0x078 = 0; - field_0x079 = 0; + mRenderRequest = false; + mIsBusyRendering = false; field_0x06C = 0.0f; field_0x068 = 0.0f; field_0x064 = 0.0f; @@ -24,6 +24,8 @@ public: STATE_FUNC_DECLARE(dLytMapCapture_c, RenderingWaitStep2); private: + void fn_8012D6F0(); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMapCapture_c); /* 0x040 */ UNKWORD field_0x040; /* 0x044 */ u8 _0x040[0x064 - 0x044]; @@ -32,8 +34,8 @@ private: /* 0x06C */ f32 field_0x06C; /* 0x070 */ f32 field_0x070; /* 0x074 */ f32 field_0x074; - /* 0x078 */ u8 field_0x078; - /* 0x079 */ u8 field_0x079; + /* 0x078 */ bool mRenderRequest; + /* 0x079 */ bool mIsBusyRendering; }; #endif |
