This commit is contained in:
robojumper
2025-10-10 01:05:19 +02:00
parent a7ab2f6fee
commit 6d7a7007c0
12 changed files with 577 additions and 121 deletions
+8
View File
@@ -78,6 +78,14 @@ public:
return field_0x1EE;
}
void setField_0x1E8(u8 v) {
field_0x1E8 = v;
}
void setField_0x1EF(u8 v) {
field_0x1EF = v;
}
void init(MapRelated *);
void fn_801b4900();
void fn_801B4B80(u32 mapParams, const mVec3_c &center, const mVec3_c &size);
+2 -2
View File
@@ -96,7 +96,7 @@ enum StoryFlags_e {
* 3 / Water Dragon's Lair layer 3 / Behind The Temple layer 7)] Story Flag #16 (0x0010) - JP 805ACD5B 0x02 / US
* 805A9ADB 0x02
*/
STORYFLAG_16,
STORYFLAG_WATER_DRAGON_SOTH_PART,
/** [Triforce Completed]
* Story Flag #17 (0x0011) - JP 805ACD5B 0x04 / US 805A9ADB 0x04
@@ -2657,7 +2657,7 @@ enum StoryFlags_e {
/** [Flooded Faron Woods Introductory Cutscene]
* Story Flag #527 (0x020F) - JP 805ACD94 0x10 / US 805A9B14 0x10
*/
STORYFLAG_527,
STORYFLAG_FLOODED_FARON_WOODS_DISCOVERED,
/** [Finishing a Silent Realm for the First time]
* Story Flag #528 (0x0210) - JP 805ACD94 0x20 / US 805A9B14 0x20
+36 -16
View File
@@ -20,13 +20,15 @@
#include "s/s_State.hpp"
#include "toBeSorted/d_flow_mgr.h"
class dAcTbox_c;
/** Bird Statue Definition (StatueSelectDestination) */
struct dMapSaveObjDefinition {
/* 0x00 */ const char *stageName;
/* 0x04 */ u8 room;
/* 0x05 */ u8 layer;
/* 0x06 */ u8 enrance;
/* 0x08 */ UNKWORD field_0x08;
/* 0x06 */ u8 entrance;
/* 0x08 */ s32 type;
/* 0x0C */ const char *statueLabel;
};
@@ -129,10 +131,9 @@ struct dLytMapFloorBtnAnmGroups {
/* 0xC0 */ d2d::AnmGroup_c mOnOffLight;
};
// Ostensibly a bounding box for lyt elements
struct LytMapTwoVecs {
/* 0x00 */ mVec3_c field_0x00;
/* 0x0C */ mVec3_c field_0x0C;
struct dLytMapBoundingWorldBounds {
/* 0x00 */ mVec3_c min;
/* 0x0C */ mVec3_c max;
};
/** 2D UI - Map - a placed down beacon */
@@ -405,6 +406,10 @@ public:
void set(nw4r::lyt::Bounding **pStatueBoundings, s32 count);
void hide(s32 statueIdx);
void setCurrentStatue(s32 idx) {
mCurrentlyInStatue = idx;
}
private:
f32 setStatueLabel(const char *label);
@@ -417,6 +422,8 @@ private:
};
class dLytMapSaveCaption_c {
friend class dLytMapMain_c;
public:
dLytMapSaveCaption_c() : mStateMgr(*this, sStateID::null) {}
@@ -441,6 +448,8 @@ private:
// Size 0x190
class dLytMapSaveObj_c {
friend class dLytMapMain_c;
public:
dLytMapSaveObj_c()
: mStateMgr(*this, sStateID::null), mSelectRequest(false), mDecideRequest(false), mDecideFinished(false) {}
@@ -549,6 +558,13 @@ public:
STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjDecide);
private:
// TODO - used elsewhere?
enum Province_e {
PROVINCE_FARON = 0,
PROVINCE_ELDIN = 1,
PROVINCE_LANAYRU = 2,
};
dLytMapGlobal_c *getGlobal();
void checkScroll();
bool needsNav(s32 mapMode) const;
@@ -561,6 +577,8 @@ private:
bool canPlaceBeacons(s32 mapMode) const;
bool isPointingAtMainMap() const;
s32 getSelectedSaveObjIdx() const;
f32 fn_80142D90(s32);
void fn_80142F00(mVec3_c &, s32 mapMode, u8, const mVec3_c &, const mAng &);
void fn_8013FB70(const mVec3_c &, f32);
@@ -588,7 +606,11 @@ private:
void checkCursorPointedAtMap();
void fn_8013B0C0();
void calculateBoundingWorldHitboxes();
dAcTbox_c *findGoddessChestForStoryflag(s32 flag) const;
bool checkStoryflag(s32 flag) const;
void displaySaveObjs();
static dMapSavedData sSavedMapData;
static const dMapSavedData sDefaultMapData;
@@ -624,7 +646,7 @@ private:
/* 0x825C */ nw4r::lyt::Bounding *field_0x825C[12];
/* 0x828C */ mVec3_c field_0x828C[12];
/* 0x831C */ UNKWORD field_0x831C;
/* 0x8320 */ UNKWORD field_0x8320;
/* 0x8320 */ u32 field_0x8320;
/* 0x8324 */ u8 _0x8324[0x8328 - 0x8324];
@@ -655,7 +677,7 @@ private:
/* 0x8930 */ mVec3_c field_0x8930;
/* 0x893C */ mVec3_c field_0x893C;
/* 0x8948 */ LytMapTwoVecs field_0x8948[33];
/* 0x8948 */ dLytMapBoundingWorldBounds mBoundingWorldBounds[33];
/* 0x8C60 */ s32 mMaxBeaconCount;
/* 0x8C64 */ s32 field_0x8C64;
@@ -673,7 +695,7 @@ private:
/* 0x8C93 */ u8 field_0x8C93;
/* 0x8C94 */ s32 field_0x8C94;
/* 0x8C98 */ UNKWORD field_0x8C98;
/* 0x8C9C */ UNKWORD field_0x8C9C;
/* 0x8C9C */ s32 mProvince;
/* 0x8CA0 */ u8 _0x8CA0[0x8CA4 - 0x8CA0];
@@ -685,11 +707,9 @@ private:
/* 0x8CAE */ u8 _0x8CAE[0x8CB0 - 0x8CAE];
/* 0x8CB0 */ u32 field_0x8CB0;
/* 0x8CB0 */ u32 mEventTimer;
/* 0x8CB4 */ UNKWORD field_0x8CB4;
/* 0x8CB8 */ u8 _0x8CB8[0x8CBC - 0x8CB8];
/* 0x8CB8 */ u32 field_0x8CB8;
/* 0x8CBC */ nw4r::lyt::Bounding *mpMapBounding;
/* 0x8CC0 */ bool mPointerOnMap;
/* 0x8CC1 */ bool mPointerCanPlaceBeacon;
@@ -732,7 +752,7 @@ private:
/* 0x8DB0 */ UNKWORD field_0x8DB0;
/* 0x8DB4 */ bool mNavEnabled;
/* 0x8DB5 */ bool mDrawScaleFrame;
/* 0x8DB8 */ UNKWORD field_0x8DB8;
/* 0x8DB8 */ s32 mDisplayedBeaconCount;
/* 0x8DBC */ bool mShowIslandNames;
/* 0x8DBD */ bool field_0x8DBD;
/* 0x8DBE */ u8 field_0x8DBE;
@@ -801,7 +821,7 @@ public:
}
const dMapSaveObjDefinition *getSaveObjDefinition(s32 statueIdx) const {
return mMapMain.getSaveObjDefinition(mMapMain.field_0x8C9C, statueIdx);
return mMapMain.getSaveObjDefinition(mMapMain.mProvince, statueIdx);
}
private:
+8
View File
@@ -128,6 +128,10 @@ public:
return field_0x4C;
}
void setField_0x4C(u8 v) {
field_0x4C = v;
}
u8 getField_0x4D() const {
return field_0x4D;
}
@@ -136,6 +140,10 @@ public:
return field_0x4F;
}
void setField_0x4F(u8 v) {
field_0x4F = v;
}
UNKWORD getField_0x50() const {
return field_0x50;
}
+4
View File
@@ -480,6 +480,10 @@ public:
field_0x06F4 = v;
}
void setField_0x0702(u8 v) {
field_0x0702 = v;
}
void setField_0x0703(u8 v) {
field_0x0703 = v;
}
+3
View File
@@ -10,6 +10,9 @@ public:
dFlowMgrBase_c(dFlow_c *flow);
virtual ~dFlowMgrBase_c() {}
void triggerEntryPoint(s32 labelPart1, s32 labelPart2, u8 p4, u8 p5);
bool checkFinished();
private:
/* 0x04 */ dFlow_c *mpFlow;
/* 0x08 */ u8 _0x08[0x14 - 0x08];