A few funcs

This commit is contained in:
robojumper
2025-10-11 22:36:33 +02:00
parent d8c41fdce4
commit 39fb08d58c
6 changed files with 433 additions and 88 deletions
+31 -14
View File
@@ -7492,7 +7492,7 @@ fn_8012D610 = .text:0x8012D610; // type:function size:0x5C
fn_8012D670 = .text:0x8012D670; // type:function size:0x5C
fn_8012D6D0 = .text:0x8012D6D0; // type:function size:0x20
fn_8012D6F0 = .text:0x8012D6F0; // type:function size:0xE4
fn_8012D7E0 = .text:0x8012D7E0; // type:function size:0x10
execute__16dLytMapCapture_cFv = .text:0x8012D7E0; // type:function size:0x10
isBusyRendering__16dLytMapCapture_cCFv = .text:0x8012D7F0; // type:function size:0x8
fn_8012D800 = .text:0x8012D800; // type:function size:0xEC
finalizeState__31sFStateID_c<16dLytMapCapture_c>CFR16dLytMapCapture_c = .text:0x8012D8F0; // type:function size:0x30
@@ -7824,10 +7824,10 @@ canZoomOut__13dLytMapMain_cCFl = .text:0x80138650; // type:function size:0x1E0
canCenterCursor__13dLytMapMain_cCFl = .text:0x80138830; // type:function size:0x254
needsNav__13dLytMapMain_cCFl = .text:0x80138A90; // type:function size:0x8C
getSelectedSaveObjIdx__13dLytMapMain_cCFv = .text:0x80138B20; // type:function size:0x110
fn_80138C30 = .text:0x80138C30; // type:function size:0x38
fn_80138C70 = .text:0x80138C70; // type:function size:0xA4
fn_80138D20 = .text:0x80138D20; // type:function size:0x5C
fn_80138D80 = .text:0x80138D80; // type:function size:0xB0
isPaneVisible__13dLytMapMain_cCFPQ34nw4r3lyt4Pane = .text:0x80138C30; // type:function size:0x38
setSaveObjsVisible__13dLytMapMain_cFb = .text:0x80138C70; // type:function size:0xA4
setSaveObjPanePtrs__13dLytMapMain_cFv = .text:0x80138D20; // type:function size:0x5C
initSaveObjs__13dLytMapMain_cFv = .text:0x80138D80; // type:function size:0xB0
isPointingAtMainMap__13dLytMapMain_cCFv = .text:0x80138E30; // type:function size:0xD4
canPlaceBeacons__13dLytMapMain_cCFl = .text:0x80138F10; // type:function size:0xA0
canResetPosition__13dLytMapMain_cCFlb = .text:0x80138FB0; // type:function size:0xA4
@@ -7848,7 +7848,7 @@ clearButtonMessages__13dLytMapMain_cFv = .text:0x8013A080; // type:function size
setButtonMessages__13dLytMapMain_cFlblb = .text:0x8013A170; // type:function size:0xA84
canCenterCursor1__13dLytMapMain_cCFl = .text:0x8013AC00; // type:function size:0x4
setCursorType__13dLytMapMain_cFv = .text:0x8013AC10; // type:function size:0x138
fn_8013AD50 = .text:0x8013AD50; // type:function size:0x370
fn_8013AD50__13dLytMapMain_cFv = .text:0x8013AD50; // type:function size:0x370
calculateBoundingWorldHitboxes__13dLytMapMain_cFv = .text:0x8013B0C0; // type:function size:0x28C
fn_8013B350 = .text:0x8013B350; // type:function size:0x10
initializeState_Invisible__13dLytMapMain_cFv = .text:0x8013B360; // type:function size:0x4
@@ -7863,7 +7863,7 @@ executeState_In__13dLytMapMain_cFv = .text:0x8013C2F0; // type:function size:0x3
finalizeState_In__13dLytMapMain_cFv = .text:0x8013C670; // type:function size:0x40
getAreaGroup__13dLytMapMain_cCFl = .text:0x8013C6B0; // type:function size:0xA8
getRoomType__13dLytMapMain_cCFv = .text:0x8013C760; // type:function size:0x100
fn_8013C860 = .text:0x8013C860; // type:function size:0x1C
canChangeFloor__13dLytMapMain_cCFl = .text:0x8013C860; // type:function size:0x1C
shouldDrawFootprints__13dLytMapMain_cCFv = .text:0x8013C880; // type:function size:0x64
zoomIn__13dLytMapMain_cFv = .text:0x8013C8F0; // type:function size:0x644
zoomOut__13dLytMapMain_cFv = .text:0x8013CF40; // type:function size:0x54C
@@ -7996,9 +7996,9 @@ fn_80142D90__13dLytMapMain_cFl = .text:0x80142D90; // type:function size:0x170
fn_80142F00__13dLytMapMain_cFR7mVec3_clUcRC7mVec3_cRC4mAng = .text:0x80142F00; // type:function size:0x158
fn_80143060__13dLytMapMain_cFR7mVec3_cRC7mVec3_cRC7mVec3_cRC4mAng = .text:0x80143060; // type:function size:0xBC
fn_80143120 = .text:0x80143120; // type:function size:0xC0
fn_801431E0 = .text:0x801431E0; // type:function size:0x11C
fn_801431E0__13dLytMapMain_cFv = .text:0x801431E0; // type:function size:0x11C
fn_80143300__13dLytMapMain_cFv = .text:0x80143300; // type:function size:0x54
fn_80143360 = .text:0x80143360; // type:function size:0x1D4
fn_80143360__13dLytMapMain_cFv = .text:0x80143360; // type:function size:0x1D4
checkScroll__13dLytMapMain_cFv = .text:0x80143540; // type:function size:0x374
build__9dLytMap_cFv = .text:0x801438C0; // type:function size:0x6C
fn_80143930 = .text:0x80143930; // type:function size:0x60
@@ -10969,7 +10969,7 @@ forceFadeOut__8dStage_cFv = .text:0x801B3E60; // type:function size:0x40
forceFadeIn__8dStage_cFv = .text:0x801B3EA0; // type:function size:0x40
fn_801B3EE0__8dStage_cFv = .text:0x801B3EE0; // type:function size:0x3C
fn_801B3F20__8dStage_cFv = .text:0x801B3F20; // type:function size:0x8
fn_801B3F30 = .text:0x801B3F30; // type:function size:0x8
fn_801B3F30__8dStage_cFv = .text:0x801B3F30; // type:function size:0x8
drawMap__8dStage_cFP6mMtx_ci = .text:0x801B3F40; // type:function size:0x90
RoomManager__getRMPLForRoom = .text:0x801B3FD0; // type:function size:0x34
getFlagPositionForRoomVisit__FiPUsPUs = .text:0x801B4010; // type:function size:0x34
@@ -33730,9 +33730,26 @@ lbl_8051FE84 = .data:0x8051FE84; // type:object size:0xC
lbl_8051FE90 = .data:0x8051FE90; // type:object size:0xC
lbl_8051FE9C = .data:0x8051FE9C; // type:object size:0x28
lbl_8051FEC4 = .data:0x8051FEC4; // type:object size:0x10
lbl_8051FED4 = .data:0x8051FED4; // type:object size:0x104
lbl_8051FFD8 = .data:0x8051FFD8; // type:object size:0x10
lbl_8051FFE8 = .data:0x8051FFE8; // type:object size:0x10
lbl_8051FED4 = .data:0x8051FED4; // type:object size:0xE data:string
lbl_8051FEE4 = .data:0x8051FEE4; // type:object size:0xD data:string
lbl_8051FEF4 = .data:0x8051FEF4; // type:object size:0x9 data:string
lbl_8051FF00 = .data:0x8051FF00; // type:object size:0x9 data:string
lbl_8051FF0C = .data:0x8051FF0C; // type:object size:0xB data:string
lbl_8051FF18 = .data:0x8051FF18; // type:object size:0xD data:string
lbl_8051FF28 = .data:0x8051FF28; // type:object size:0x10 data:string
lbl_8051FF38 = .data:0x8051FF38; // type:object size:0xA data:string
lbl_8051FF44 = .data:0x8051FF44; // type:object size:0xC data:string
lbl_8051FF50 = .data:0x8051FF50; // type:object size:0xD data:string
lbl_8051FF60 = .data:0x8051FF60; // type:object size:0xF data:string
lbl_8051FF70 = .data:0x8051FF70; // type:object size:0xE data:string
lbl_8051FF80 = .data:0x8051FF80; // type:object size:0xE data:string
lbl_8051FF90 = .data:0x8051FF90; // type:object size:0xC data:string
lbl_8051FF9C = .data:0x8051FF9C; // type:object size:0xC data:string
lbl_8051FFA8 = .data:0x8051FFA8; // type:object size:0xD data:string
lbl_8051FFB8 = .data:0x8051FFB8; // type:object size:0xD data:string
lbl_8051FFC8 = .data:0x8051FFC8; // type:object size:0xE data:string
lbl_8051FFD8 = .data:0x8051FFD8; // type:object size:0xD data:string
lbl_8051FFE8 = .data:0x8051FFE8; // type:object size:0xD data:string
jumptable_8051FFF8 = .data:0x8051FFF8; // type:object size:0x30 scope:local
lbl_80520028 = .data:0x80520028; // type:object size:0xC
lbl_80520034 = .data:0x80520034; // type:object size:0xC data:string
@@ -40088,7 +40105,7 @@ lbl_80572750 = .sdata:0x80572750; // type:object size:0x5 data:string
lbl_80572758 = .sdata:0x80572758; // type:object size:0x5 data:string
lbl_80572760 = .sdata:0x80572760; // type:object size:0x8 data:4byte
lbl_80572768 = .sdata:0x80572768; // type:object size:0x8 data:4byte
lbl_80572770 = .sdata:0x80572770; // type:object size:0x8
lbl_80572770 = .sdata:0x80572770; // type:object size:0x5 data:string
lbl_80572778 = .sdata:0x80572778; // type:object size:0x8 data:wstring
lbl_80572780 = .sdata:0x80572780; // type:object size:0x4 data:4byte
lbl_80572784 = .sdata:0x80572784; // type:object size:0x4 data:4byte
+1
View File
@@ -160,6 +160,7 @@ public:
bool fn_801B3EE0();
void fn_801B3F20();
void fn_801B3F30();
private:
dRoom_c *createRoom(int roomid, bool flag0x40);
+57 -16
View File
@@ -101,6 +101,18 @@ public:
bool execute();
void draw();
void setVisible(bool visible) {
mVisible = visible;
}
void setField_0x198(f32 f) {
field_0x198 = f;
}
void setField_0x19C(f32 f) {
field_0x19C = f;
}
private:
dLytMapGlobal_c *getGlobal() const;
@@ -113,7 +125,7 @@ private:
/* 0x196 */ u16 mCurrentNumSteps;
/* 0x198 */ f32 field_0x198;
/* 0x19C */ f32 field_0x19C;
/* 0x1A0 */ u8 field_0x1A0;
/* 0x1A0 */ bool mVisible;
};
struct LytMap0x80520B5C {
@@ -221,7 +233,7 @@ public:
void setUnk(LytMap0x80520B5C *unk);
bool setPosition(s32 index, const mVec3_c &position);
void unsetAll();
s32 getNumSetPins() const;
u32 getNumSetPins() const;
STATE_FUNC_DECLARE(dLytMapPinIconAggregate_c, Wait);
STATE_FUNC_DECLARE(dLytMapPinIconAggregate_c, Select);
@@ -291,7 +303,7 @@ public:
field_0x70C = 4;
mPointerVisible = false;
mPrevPointerVisible = false;
field_0x712 = false;
mForceNoNav = false;
}
virtual ~dLytMapFloorBtnMgr_c();
@@ -325,8 +337,12 @@ public:
void resetFloor(s32 newFloorBtn);
bool isUsingPointerNav() const;
private:
void setForceNoNav(bool b) {
mForceNoNav = b;
}
void checkPointedAtBtn();
private:
/* 0x008 */ dLytMapGlobal_c *mpGlobal;
/* 0x00C */ UI_STATE_MGR_DECLARE(dLytMapFloorBtnMgr_c);
@@ -342,7 +358,7 @@ private:
/* 0x70C */ UNKWORD field_0x70C;
/* 0x710 */ bool mPointerVisible;
/* 0x711 */ bool mPrevPointerVisible;
/* 0x712 */ bool field_0x712;
/* 0x712 */ bool mForceNoNav;
};
// Size 0x4C
@@ -591,6 +607,22 @@ private:
ROOMTYPE_MAX = 6,
};
enum MapEvent_e {
MAP_EVENT_NONE = 0,
MAP_EVENT_1 = 1,
// ???
MAP_EVENT_SW_BANK_SMALL = 2,
MAP_EVENT_MAP_INTRO = 3,
MAP_EVENT_DUNGEON_MAP_GET = 4,
MAP_EVENT_FIELD_MAP_CHANGE_5 = 5,
MAP_EVENT_FOREST_MAP_CHANGE = 6,
MAP_EVENT_SIGNAL_ADD = 7,
MAP_EVENT_FIELD_MAP_CHANGE_8 = 8,
MAP_EVENT_GODDESS_CUBE = 9,
MAP_EVENT_SAVE_OBJ_MSG_WINDOW = 10,
MAP_EVENT_11 = 11,
};
dLytMapGlobal_c *getGlobal();
void checkScroll();
bool needsNav(s32 mapMode) const;
@@ -601,6 +633,7 @@ private:
bool canCenterCursor(s32 mapMode) const;
bool canCenterCursor1(s32 mapMode) const;
bool canPlaceBeacons(s32 mapMode) const;
bool canChangeFloor(s32 mapMode) const;
bool isPointingAtMainMap() const;
void loadStageProperties();
@@ -621,6 +654,7 @@ private:
void fn_80138D80();
void fn_801431E0();
void fn_8013AD50();
void fn_80143360();
bool shouldDrawFootprints() const;
void zoomIn();
@@ -646,12 +680,17 @@ private:
dAcTbox_c *findGoddessChestForStoryflag(s32 flag) const;
bool checkStoryflag(s32 flag) const;
void displaySaveObjs();
bool isPaneVisible(nw4r::lyt::Pane *pane) const;
void setSaveObjsVisible(bool visible);
void setSaveObjPanePtrs();
void initSaveObjs();
static dMapSavedData sSavedMapData;
static const dMapSavedData sDefaultMapData;
bool isSomeFieldEq0Or1Or7Or9Or11() const {
return field_0x8C94 == 0 || field_0x8C94 == 1 || field_0x8C94 == 7 || field_0x8C94 == 9 || field_0x8C94 == 11;
return mMapEvent == MAP_EVENT_NONE || mMapEvent == MAP_EVENT_1 || mMapEvent == MAP_EVENT_SIGNAL_ADD ||
mMapEvent == MAP_EVENT_GODDESS_CUBE || mMapEvent == MAP_EVENT_11;
}
/* 0x0010 */ UI_STATE_MGR_DECLARE(dLytMapMain_c);
@@ -676,12 +715,12 @@ private:
/* 0x8210 */ nw4r::lyt::Pane *mpNoroshiPane;
/* 0x8214 */ nw4r::lyt::Pane *mpScaleFramePane;
/* 0x8218 */ dWindow_c *mpWakuWindow;
/* 0x821C */ nw4r::lyt::Bounding *field_0x821C[10];
/* 0x8244 */ nw4r::lyt::Bounding *field_0x8244[6];
/* 0x825C */ nw4r::lyt::Bounding *field_0x825C[12];
/* 0x821C */ nw4r::lyt::Bounding *mpSaveObjBoundingsFaron[10];
/* 0x8244 */ nw4r::lyt::Bounding *mpSaveObjBoundingsEldin[6];
/* 0x825C */ nw4r::lyt::Bounding *mpSaveObjBoundingsLanayru[12];
/* 0x828C */ mVec3_c field_0x828C[12];
/* 0x831C */ UNKWORD field_0x831C;
/* 0x8320 */ u32 field_0x8320;
/* 0x831C */ nw4r::lyt::Bounding **mpCurrentSaveObjBoundings;
/* 0x8320 */ u32 mNumSaveObjs;
/* 0x8324 */ u8 _0x8324[0x8328 - 0x8324];
@@ -732,8 +771,8 @@ private:
/* 0x8C91 */ bool mNextMapUpDirection;
/* 0x8C92 */ bool mMapUpDirectionAfterZoomToDetail;
/* 0x8C93 */ u8 field_0x8C93;
/* 0x8C94 */ s32 field_0x8C94;
/* 0x8C98 */ UNKWORD field_0x8C98;
/* 0x8C94 */ s32 mMapEvent;
/* 0x8C98 */ s32 mNextMapEvent;
/* 0x8C9C */ s32 mSurfaceProvince;
/* 0x8CA0 */ u8 _0x8CA0[0x8CA4 - 0x8CA0];
@@ -847,12 +886,14 @@ public:
void build();
bool isSomeMapFieldEq2Or4Or5Or6() const {
return mMapMain.field_0x8C94 == 2 || mMapMain.field_0x8C94 == 4 || mMapMain.field_0x8C94 == 5 ||
mMapMain.field_0x8C94 == 6;
return mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_SW_BANK_SMALL ||
mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_DUNGEON_MAP_GET ||
mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_FIELD_MAP_CHANGE_5 ||
mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_FOREST_MAP_CHANGE;
}
bool isSomeMapFieldEq10() const {
return mMapMain.field_0x8C94 == 10;
return mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_SAVE_OBJ_MSG_WINDOW;
}
void lightPillarRelated(s32 p1, s32 p2, s32 p3) {
+3 -2
View File
@@ -26,11 +26,12 @@ public:
void renderRequest() {
mRenderRequest = true;
}
void setPicture(nw4r::lyt::Picture *pic) {
mpPicture = pic;
}
void execute();
bool isBusyRendering() const;
private:
+16
View File
@@ -96,10 +96,18 @@ public:
return mCurrentMapMode;
}
void setCurrentMapMode(s32 mode) {
mCurrentMapMode = mode;
}
s32 getNextMapMode() const {
return mNextMapMode;
}
void setNextMapMode(s32 mode) {
mNextMapMode = mode;
}
f32 getZoomFrame() const {
return mZoomFrame;
}
@@ -112,6 +120,10 @@ public:
field_0x58 = v;
}
f32 getField_0x58() const {
return field_0x58;
}
f32 getField_0x44() const {
return field_0x44;
}
@@ -140,6 +152,10 @@ public:
return field_0x4D;
}
void setField_0x4D(u8 v) {
field_0x4D = v;
}
u8 getField_0x4F() const {
return field_0x4F;
}
+325 -56
View File
@@ -1,6 +1,6 @@
#include "c/c_math.h"
#include "m/m_pad.h"
#define NEED_DIRECT_FRAMECTRL_ACCESS
#include "d/lyt/d_lyt_map.h"
#include "c/c_lib.h"
#include "common.h"
#include "d/a/d_a_player.h"
@@ -23,6 +23,7 @@
#include "d/flag/storyflag_manager.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_control_game.h"
#include "d/lyt/d_lyt_map.h"
#include "d/lyt/d_lyt_map_global.h"
#include "d/lyt/d_lyt_unknowns.h"
#include "d/lyt/d_textbox.h"
@@ -184,7 +185,7 @@ dLytMapFootPrints_c::dLytMapFootPrints_c(dLytMapGlobal_c *global)
mCurrentNumSteps(0),
field_0x198(0.0f),
field_0x19C(0.0f),
field_0x1A0(0) {
mVisible(false) {
for (int i = 0; i < (int)ARRAY_LENGTH(mFootprintPositions); i++) {
mFootprintPositions[i].set(0.0f, 0.0f);
}
@@ -259,7 +260,7 @@ bool dLytMapFootPrints_c::execute() {
}
void dLytMapFootPrints_c::draw() {
if (!field_0x1A0) {
if (!mVisible) {
return;
}
@@ -766,7 +767,7 @@ void dLytMapPinIconAggregate_c::unsetAll() {
}
}
s32 dLytMapPinIconAggregate_c::getNumSetPins() const {
u32 dLytMapPinIconAggregate_c::getNumSetPins() const {
s32 num = 0;
for (int idx = 0; idx < (int)ARRAY_LENGTH(mPins); idx++) {
if (mPins[idx].mIsSet) {
@@ -1164,7 +1165,7 @@ bool dLytMapFloorBtnMgr_c::execute() {
void dLytMapFloorBtnMgr_c::checkPointedAtBtn() {
mPrevPointerVisible = mPointerVisible;
mPointerVisible = dPadNav::isPointerVisible();
if (field_0x712) {
if (mForceNoNav) {
dPadNav::stopFSStickNav();
mPointerVisible = true;
}
@@ -1914,8 +1915,8 @@ dLytMapMain_c::dLytMapMain_c()
mAreaGroup(0),
mMapUpDirectionAfterZoomToDetail(true),
field_0x8C93(0),
field_0x8C94(0),
field_0x8C98(0),
mMapEvent(MAP_EVENT_NONE),
mNextMapEvent(MAP_EVENT_NONE),
field_0x8CAC(0),
field_0x8D38(0.0f, 0.0f),
field_0x8D40(1.0f),
@@ -2173,13 +2174,15 @@ static const d2d::LytBrlanMapping sMapMainBrlanMap[] = {
#define MAP_MAIN_ANIM_SUN_ROTE 45
#define MAP_MAIN_ANIM_IN_NO_CAM 46
#define MAP_MAIN_ANIM_OUT_NO_CAM 47
#define MAP_MAIN_ANIM_CLOUD_LOOK 48
#define MAP_MAIN_ANIM_CLOUD_LOOP 48
#define MAP_MAIN_ANIM_LIGHT_LOOP 49
#define MAP_MAIN_ANIM_NUSHI_LOOP 50
#define MAP_MAIN_ANIM_TYPE 51
#define MAP_MAIN_ANIM_KUMO_PATTERN 52
#define MAP_MAIN_ANIM_TITE_LINE 53
#define MAP_MAIN_NUM_ANIMS 54
static const char *sGroupName = "G_ref_00";
static const char *sBoundingNames[] = {
@@ -2229,8 +2232,7 @@ void dLytMapMain_c::build() {
mLyt.build("map_00.brlyt", nullptr);
getGlobal()->setField_0x28(mLyt.getDrawInfo().GetLocationAdjustScale());
// TODO define
for (int i = 0; i < 54; i++) {
for (int i = 0; i < MAP_MAIN_NUM_ANIMS; i++) {
mAnmGroups[i].init(sMapMainBrlanMap[i].mFile, resAcc, mLyt.getLayout(), sMapMainBrlanMap[i].mName);
}
@@ -2262,11 +2264,11 @@ void dLytMapMain_c::build() {
b->SetVisible(false);
// TODO - bird statues
if (i >= 5 && i < 15) {
field_0x821C[i - 5] = b;
mpSaveObjBoundingsFaron[i - 5] = b;
} else if (i >= 15 && i < 21) {
field_0x8244[i - 15] = b;
mpSaveObjBoundingsEldin[i - 15] = b;
} else if (i >= 21 && i < 33) {
field_0x825C[i - 21] = b;
mpSaveObjBoundingsLanayru[i - 21] = b;
}
mHitChecks[i].init(b, 0x02, 2, 0);
@@ -2398,7 +2400,7 @@ void dLytMapMain_c::loadStageProperties() {
void dLytMapMain_c::setupStage() {
loadStageProperties();
if (field_0x8C94 == 10) {
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
mLyt.findPane("N_skyloft_00")->SetVisible(false);
}
@@ -2466,18 +2468,223 @@ void dLytMapMain_c::setupStage() {
if (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
mLyt.findPane("N_houkoul_00")->SetVisible(false);
}
if (field_0x8C94 != 10) {
if (mMapEvent != MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
loadTextboxes();
}
fn_8013AD50();
}
void dLytMapMain_c::remove() {
// TODO - ...
for (int i = 0; i < (int)ARRAY_LENGTH(mHitChecks); i++) {
dCsMgr_c::GetInstance()->unregistCursorTarget(&mHitChecks[i]);
}
for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) {
d2d::dSubPane *subPane = it->mpLytPane;
if (subPane != nullptr) {
nw4r::lyt::Pane *parent = subPane->getPane()->GetParent();
parent->RemoveChild(subPane->getPane());
}
}
mPopupInfo.remove();
mSavePopup.remove();
mSaveCaption.remove();
for (int i = 0; i < (int)ARRAY_LENGTH(mSaveObjs); i++) {
mSaveObjs[i].remove();
}
mFloorBtnMgr.remove();
mFootPrints.remove();
mMarkers.remove();
mPinIconAggregate.remove();
mPutIcon.remove();
for (int i = 0; i < MAP_MAIN_NUM_ANIMS; i++) {
mAnmGroups[i].remove();
}
dStage_c::GetInstance()->fn_801B3F30();
}
void dLytMapMain_c::execute() {
// TODO - ...
if ((*mStateMgr.getStateID() == StateID_Invisible)) {
return;
}
if ((*mStateMgr.getStateID() == StateID_RenderingWait)) {
mStateMgr.executeState();
mMapCapture.execute();
return;
}
field_0xF1C.field_0x05 = 0;
dLytMapGlobal_c *global = getGlobal();
mDrawScaleFrame = false;
mPointerOnMap = false;
mPointerCanPlaceBeacon = false;
checkCursorPointedAtMap();
if (dPad::getDownTrigDown() && canCenterCursor(mCurrentMapMode) && canCenterCursor(mNextMapMode)) {
dPad::ex_c::getInstance()->centerCursor(mPad::getCurrentCoreID(), true);
}
if (mRoomType == ROOMTYPE_DUNGEON && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
mFloorBtnMgr.setForceNoNav(true);
} else {
mFloorBtnMgr.setForceNoNav(false);
}
mFloorBtnMgr.checkPointedAtBtn();
mStateMgr.executeState();
if (*mStateMgr.getStateID() != StateID_ResetPosWithFloorChange) {
mFloorBtnMgr.execute();
}
s32 beaconId = -1;
field_0x8DBD = false;
if (canCenterCursor1(mCurrentMapMode) && canCenterCursor1(mNextMapMode) && canPlaceBeacons(mCurrentMapMode) &&
canPlaceBeacons(mNextMapMode)) {
bool exhaustedPins = mPinIconAggregate.getNumSetPins() >= getMaxBeaconCount();
if (!exhaustedPins && mPointerCanPlaceBeacon &&
*mPinIconAggregate.mStateMgr.getStateID() != dLytMapPinIconAggregate_c::StateID_Select &&
isPointingAtMainMap()) {
mPinIconAggregate.findNewBeaconId(&beaconId);
if (beaconId >= 0) {
field_0x8DBD = true;
}
}
}
if (field_0x8DBD) {
mPutIcon.setPosition(dCsGame_c::GetInstance()->getCursorIf()->getCursorPos());
mPutIcon.setScale(1.0f);
mPutIcon.setVisible(true);
} else {
mPutIcon.setVisible(false);
}
static SizedWString<0x20> buf;
buf.sprintf(L"%ld", (mDisplayedBeaconCount - mPinIconAggregate.getNumSetPins()) % 10);
mpNumberTextBox->setTextWithGlobalTextProcessor(buf, nullptr);
mpNumberTextBoxS->setTextWithGlobalTextProcessor(buf, nullptr);
if (canChangeFloor(mCurrentMapMode) && canChangeFloor(mNextMapMode)) {
const sStateIDIf_c *state = mStateMgr.getStateID();
if (*state != StateID_FloorChange && *state != StateID_RenderingWait &&
*state != StateID_ResetPosWithFloorChange) {
mMapCapture.renderRequest();
}
}
mMapCapture.execute();
fn_80143360();
global->setCurrentMapMode(mCurrentMapMode);
global->setNextMapMode(mNextMapMode);
mFootPrints.setVisible(shouldDrawFootprints());
f32 f1 = 1.0f;
if (mRoomType != ROOMTYPE_BOSS_HOUSE && mRoomType != ROOMTYPE_SKYFIELD_INTERIOR) {
// why does everyone clamp things differently ???
f32 tmp = global->getField_0x58();
if (tmp < 0.0f) {
tmp = 0.0f;
} else if (tmp > 1.0f) {
tmp = 1.0f;
}
f1 = tmp;
}
f32 f2 = fn_80142D90(dLytMapGlobal_c::MAPMODE_ZOOM);
if (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
f2 = fn_80142D90(dLytMapGlobal_c::MAPMODE_STAGE);
}
mFootPrints.setField_0x198(f2);
mFootPrints.setField_0x19C(f1);
mFootPrints.execute();
setCursorType();
if (canCenterCursor1(mCurrentMapMode) && canCenterCursor1(mNextMapMode) &&
(field_0x8D5C < 2 || !mFloorBtnMgr.hasPointedAtABtnIdx())) {
global->setField_0x4D(1);
} else {
global->setField_0x4D(0);
}
if (mMapEvent == MAP_EVENT_DUNGEON_MAP_GET || mMapEvent == MAP_EVENT_FIELD_MAP_CHANGE_5 ||
mMapEvent == MAP_EVENT_FOREST_MAP_CHANGE || mMapEvent == MAP_EVENT_SW_BANK_SMALL) {
clearButtonMessages();
} else {
setButtonMessages(mCurrentMapMode, mMapUpDirection, mNextMapMode, mNextMapUpDirection);
}
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY && mAnmGroups[MAP_MAIN_ANIM_SUN_ROTE].isBound()) {
mAnmGroups[MAP_MAIN_ANIM_SUN_ROTE].play();
}
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY ||
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) {
if (mAnmGroups[MAP_MAIN_ANIM_LIGHT_LOOP].isBound()) {
mAnmGroups[MAP_MAIN_ANIM_LIGHT_LOOP].play();
}
mAnmGroups[MAP_MAIN_ANIM_SKYLOFT_UP_DOWN].play();
}
switch (mCurrentMapMode) {
case dLytMapGlobal_c::MAPMODE_PROVINCE: {
if (mpRegionPane1 != nullptr) {
mpRegionPane1->SetVisible(true);
}
if (mpRegionPane2 != nullptr) {
mpRegionPane2->SetVisible(true);
}
if (mAnmGroups[MAP_MAIN_ANIM_LINK_POSITION_LIGHT].isBound()) {
mAnmGroups[MAP_MAIN_ANIM_LINK_POSITION_LIGHT].play();
}
break;
}
case dLytMapGlobal_c::MAPMODE_WORLD: {
if (mpRegionPane1 != nullptr) {
mpRegionPane1->SetVisible(false);
}
if (mpRegionPane2 != nullptr) {
mpRegionPane2->SetVisible(false);
}
break;
}
}
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) {
if (mAnmGroups[MAP_MAIN_ANIM_CLOUD_LOOP].isBound()) {
mAnmGroups[MAP_MAIN_ANIM_CLOUD_LOOP].play();
}
if (mAnmGroups[MAP_MAIN_ANIM_NUSHI_LOOP].isBound()) {
mAnmGroups[MAP_MAIN_ANIM_NUSHI_LOOP].play();
}
}
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
bool visible =
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE || mNextMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE;
setSaveObjsVisible(visible);
mPopupInfo.executeState_Invisible();
}
mSaveCaption.execute();
mPutIcon.execute();
mLyt.calc();
u8 alpha = 0;
if (mpAllPane->IsVisible()) {
alpha = mpAllPane->GetAlpha();
}
global->setAlpha(alpha);
fn_80143300();
mPinIconAggregate.setScale(global->getZoomFrame());
mMarkers.execute();
if (mNextMapEvent == MAP_EVENT_FIELD_MAP_CHANGE_5 || mNextMapEvent == MAP_EVENT_FIELD_MAP_CHANGE_8) {
mStateMgr.changeState(StateID_EventFieldMapChange_Step1);
mMapEvent = mNextMapEvent;
mNextMapEvent = 0;
}
mMaxBeaconCount = 0;
}
void dLytMapMain_c::draw() {
@@ -2497,7 +2704,8 @@ void dLytMapMain_c::draw() {
mMarkers.draw();
}
if (mRoomType != ROOMTYPE_BOSS_HOUSE && mRoomType != ROOMTYPE_SKYFIELD_INTERIOR && field_0x8C94 != 2) {
if (mRoomType != ROOMTYPE_BOSS_HOUSE && mRoomType != ROOMTYPE_SKYFIELD_INTERIOR &&
mMapEvent != MAP_EVENT_SW_BANK_SMALL) {
mPinIconAggregate.draw();
}
@@ -2513,13 +2721,13 @@ void dLytMapMain_c::draw() {
mpScaleFramePane->SetVisible(mDrawScaleFrame ? true : false);
mLyt.getLayout()->GetRootPane()->Draw(mLyt.getDrawInfo());
if ((mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE || mNextMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) &&
field_0x8C94 == 10) {
mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
fn_80138D80();
}
fn_80143120(-2);
mMarkers.drawPopups();
mPutIcon.draw();
if (field_0x8C94 == 10) {
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
mPopupInfo.draw();
}
@@ -2566,9 +2774,66 @@ s32 dLytMapMain_c::getSelectedSaveObjIdx() const {
return idx;
}
void lytMapusesSizedWString() {
static SizedWString<0x20> sString;
sString.sprintf(L"%ld", 0);
bool dLytMapMain_c::isPaneVisible(nw4r::lyt::Pane *pane) const {
bool ret = true;
while (pane != nullptr) {
if (!pane->IsVisible() || pane->GetAlpha() == 0) {
ret = false;
break;
}
pane = pane->GetParent();
}
return ret;
}
void dLytMapMain_c::setSaveObjsVisible(bool visible) {
nw4r::lyt::Pane *p;
nw4r::lyt::Bounding **ptrs = mpCurrentSaveObjBoundings;
for (int i = 0; i < mNumSaveObjs; i++) {
p = ptrs[i];
if (visible) {
// This makes like no sense - the isPaneVisible check ensures
// that the pane is already visible when we enter the branch...
if (p != nullptr && p != nullptr && isPaneVisible(p)) {
p->SetVisible(true);
}
} else {
p->SetVisible(false);
}
}
}
void dLytMapMain_c::setSaveObjPanePtrs() {
nw4r::lyt::Bounding **p = nullptr;
u32 count = 0;
if (mSurfaceProvince == SURFACE_PROVINCE_FARON) {
p = mpSaveObjBoundingsFaron;
count = ARRAY_LENGTH(mpSaveObjBoundingsFaron);
} else if (mSurfaceProvince == SURFACE_PROVINCE_ELDIN) {
p = mpSaveObjBoundingsEldin;
count = ARRAY_LENGTH(mpSaveObjBoundingsEldin);
} else if (mSurfaceProvince == SURFACE_PROVINCE_LANAYRU) {
p = mpSaveObjBoundingsLanayru;
count = ARRAY_LENGTH(mpSaveObjBoundingsLanayru);
}
mNumSaveObjs = count;
mpCurrentSaveObjBoundings = p;
mSavePopup.set(mpCurrentSaveObjBoundings, mNumSaveObjs);
}
void dLytMapMain_c::initSaveObjs() {
nw4r::lyt::Bounding **ptrs = mpCurrentSaveObjBoundings;
nw4r::lyt::Bounding *p;
for (u32 i = 0; i < mNumSaveObjs; i++) {
p = *ptrs;
if (p->IsVisible()) {
mVec3_c pos(p->GetGlobalMtx()._03, p->GetGlobalMtx()._13, 0.0f);
mSaveObjs[i].setPosition(pos);
mSaveObjs[i].setAlpha(p->GetGlobalAlpha());
mSaveObjs[i].draw();
}
ptrs++;
}
}
void dLytMapMain_c::saveUnkMapData() {
@@ -2787,7 +3052,7 @@ void dLytMapMain_c::setButtonMessages(
void dLytMapMain_c::setCursorType() {
if (canCenterCursor1(mCurrentMapMode) && canCenterCursor1(mNextMapMode)) {
if ((field_0x8C94 == 10 ||
if ((mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW ||
((mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON) && mPointerOnMap)) ||
(mPointerCanPlaceBeacon && isPointingAtMainMap()) ||
(*mPinIconAggregate.mStateMgr.getStateID() == dLytMapPinIconAggregate_c::StateID_Select) ||
@@ -2948,7 +3213,7 @@ static const char *sAreaPicNamesLink[] = {
#define MAP_MAIN_NUM_AREA_PICS 12
void dLytMapMain_c::setupFlags() {
if (field_0x8C94 == 4 || field_0x8C94 == 6) {
if (mMapEvent == MAP_EVENT_DUNGEON_MAP_GET || mMapEvent == MAP_EVENT_FOREST_MAP_CHANGE) {
field_0x8DBE = 0;
} else {
field_0x8DBE = -1;
@@ -3060,7 +3325,7 @@ void dLytMapMain_c::setupFlags() {
}
}
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
if (field_0x88AC < 0) {
field_0x88AC = 0;
}
@@ -3152,7 +3417,7 @@ void dLytMapMain_c::setupFlags() {
}
mAnmGroups[MAP_MAIN_ANIM_SKYLOFT_UP_DOWN].bind(false);
mAnmGroups[MAP_MAIN_ANIM_CLOUD_LOOK].bind(false);
mAnmGroups[MAP_MAIN_ANIM_CLOUD_LOOP].bind(false);
mAnmGroups[MAP_MAIN_ANIM_LIGHT_LOOP].bind(false);
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
@@ -3181,7 +3446,7 @@ void dLytMapMain_c::setupFlags() {
mAnmGroups[MAP_MAIN_ANIM_ROTATE].setToEnd();
}
if (field_0x8C94 == 2) {
if (mMapEvent == MAP_EVENT_SW_BANK_SMALL) {
mAnmGroups[MAP_MAIN_ANIM_N_ON_OFF].bind(false);
mAnmGroups[MAP_MAIN_ANIM_N_ON_OFF].setToEnd();
} else {
@@ -3266,12 +3531,16 @@ void dLytMapMain_c::setupFlags() {
}
void dLytMapMain_c::initializeState_In() {}
void dLytMapMain_c::executeState_In() {}
void dLytMapMain_c::executeState_In() {
field_0x8DBF = 1;
dLytMapGlobal_c *global = getGlobal();
// TODO this should explain most of mMapEvent
}
void dLytMapMain_c::finalizeState_In() {}
s32 dLytMapMain_c::getAreaGroup(s32 stifArea) const {
s32 ret = AREAGROUP_MAX;
if (field_0x8C94 == 10) {
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
switch (mSurfaceProvince) {
case SURFACE_PROVINCE_FARON: ret = AREAGROUP_FARON; break;
case SURFACE_PROVINCE_ELDIN: ret = AREAGROUP_ELDIN; break;
@@ -3300,7 +3569,7 @@ s32 dLytMapMain_c::getAreaGroup(s32 stifArea) const {
s32 dLytMapMain_c::getRoomType() const {
s32 ret = ROOMTYPE_FIELD;
s32 stifRoomType = dStageMgr_c::GetInstance()->getSTIFRoomType();
if (field_0x8C94 == 10) {
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
ret = ROOMTYPE_FIELD;
}
@@ -3598,12 +3867,12 @@ void dLytMapMain_c::executeState_Active() {
if (mPointerOnMap && (field_0x8D5C < 2 || !mFloorBtnMgr.hasPointedAtABtnIdx())) {
// Can zoom in around cursor, use the cursor pos
getGlobal()->unprojectFromMap(field_0x8CF4, dCsGame_c::GetInstance()->getCursorIf()->getCursorPos());
f32 tmp = fn_80142D90(4);
f32 tmp = fn_80142D90(dLytMapGlobal_c::MAPMODE_STAGE);
fn_8013FB70(field_0x8CF4, getGlobal()->getField_0x44() / tmp);
mDrawScaleFrame = true;
} else {
// Cannot zoom in around cursor, use the player pos
f32 tmp = fn_80142D90(4);
f32 tmp = fn_80142D90(dLytMapGlobal_c::MAPMODE_STAGE);
f32 val = getGlobal()->getField_0x44() / tmp;
fn_8013FB70(getGlobal()->getPlayerPos(), val);
mDrawScaleFrame = true;
@@ -3666,11 +3935,11 @@ void dLytMapMain_c::finalizeState_Active() {
}
void dLytMapMain_c::initializeState_Out() {
if (field_0x8C94 == 10) {
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
mPopupInfo.mStateMgr.changeState(StateID_Out);
}
dLytMeter_c::GetInstance()->setMeterField_0x13750(0);
if (field_0x8CAD || field_0x8C94 == 3) {
if (field_0x8CAD || mMapEvent == MAP_EVENT_MAP_INTRO) {
mpOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT];
} else {
mpOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT_NO_CAM];
@@ -3720,7 +3989,7 @@ void dLytMapMain_c::initializeState_ChgMapUpDirection() {
mNextMapUpDirection = !mMapUpDirection;
field_0x8D44 = getGlobal()->getMapRotation();
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
field_0x8D46 = dAcPy_c::GetLink()->mRotation.y + mAng(0x8000);
mNextMapUpDirection = false;
} else {
@@ -3740,7 +4009,7 @@ void dLytMapMain_c::initializeState_ChgMapUpDirection() {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_CHANGE_DIRECT);
}
void dLytMapMain_c::executeState_ChgMapUpDirection() {
if (field_0x8C94 == 3 && field_0x8D6A) {
if (mMapEvent == MAP_EVENT_MAP_INTRO && field_0x8D6A) {
fn_80140B90();
} else {
dLytMapGlobal_c *global = getGlobal();
@@ -3757,7 +4026,7 @@ void dLytMapMain_c::executeState_ChgMapUpDirection() {
if (field_0x8C70 >= sHio.field_0x1B) {
mLyt.calc();
mMapUpDirection = mNextMapUpDirection;
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
mStateMgr.changeState(StateID_EventMapIntro_Step4);
} else {
mStateMgr.changeState(StateID_Active);
@@ -3766,7 +4035,7 @@ void dLytMapMain_c::executeState_ChgMapUpDirection() {
field_0x8C70++;
}
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
EventManager::execute();
}
}
@@ -3780,7 +4049,7 @@ void dLytMapMain_c::initializeState_ChgDispAreaMode_MapRot() {
field_0x8D44 = global->getMapRotation();
field_0x8D4C = fn_80142D90(mNextMapMode);
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
field_0x8D46 = dAcPy_c::GetLink()->mRotation.y + mAng(0x8000);
mNextMapUpDirection = false;
} else {
@@ -3849,7 +4118,7 @@ void dLytMapMain_c::initializeState_ChgDispAreaMode_MapRot() {
}
}
void dLytMapMain_c::executeState_ChgDispAreaMode_MapRot() {
if (field_0x8C94 == 3 && field_0x8D6A) {
if (mMapEvent == MAP_EVENT_MAP_INTRO && field_0x8D6A) {
fn_80140B90();
} else {
dLytMapGlobal_c *global = getGlobal();
@@ -3898,7 +4167,7 @@ void dLytMapMain_c::executeState_ChgDispAreaMode_MapRot() {
mAnmGroups[MAP_MAIN_ANIM_ROTATE].setFrame(length - f3 * length);
if (field_0x8C70 >= sHio.field_0x1C) {
if (field_0x8C94 == 3 && field_0x0108 > 0) {
if (mMapEvent == MAP_EVENT_MAP_INTRO && field_0x0108 > 0) {
field_0x0108--;
} else {
mDrawScaleFrame = false;
@@ -3915,7 +4184,7 @@ void dLytMapMain_c::executeState_ChgDispAreaMode_MapRot() {
global->setField_0x44(field_0x8D4C);
global->setMapScroll(mPlayerPos);
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
mStateMgr.changeState(StateID_EventMapIntro_Step4);
} else {
mStateMgr.changeState(StateID_Active);
@@ -3925,7 +4194,7 @@ void dLytMapMain_c::executeState_ChgDispAreaMode_MapRot() {
} else {
field_0x8C70++;
}
if (field_0x8C94 == 3) {
if (mMapEvent == MAP_EVENT_MAP_INTRO) {
EventManager::execute();
}
}
@@ -4219,7 +4488,7 @@ void dLytMapMain_c::initializeState_EventFieldMapChange_Step3() {
void dLytMapMain_c::executeState_EventFieldMapChange_Step3() {
if (mEventTimer != 0) {
mEventTimer--;
} else if (field_0x8C94 == 8) {
} else if (mMapEvent == MAP_EVENT_FIELD_MAP_CHANGE_8) {
mStateMgr.changeState(StateID_Active);
} else {
mStateMgr.changeState(StateID_EventFieldMapChange_Step4);
@@ -4321,7 +4590,7 @@ void dLytMapMain_c::executeState_EventSignalAdd_Step3() {
void dLytMapMain_c::finalizeState_EventSignalAdd_Step3() {}
bool dLytMapMain_c::fn_80141530() const {
return EventManager::isInEvent() && field_0x8C94 != 11;
return EventManager::isInEvent() && mMapEvent != MAP_EVENT_11;
}
dAcTbox_c *dLytMapMain_c::findGoddessChestForStoryflag(s32 flag) const {
@@ -4447,22 +4716,22 @@ static const dLytMapSaveObjFlagDefinition sSaveObjFlagsLanayru[] = {
};
void dLytMapMain_c::displaySaveObjs() {
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
mSaveObjs[i].init();
}
s32 numFlags = ARRAY_LENGTH(sSaveObjFlagsFaron);
nw4r::lyt::Bounding **pBoundings = field_0x821C;
nw4r::lyt::Bounding **pBoundings = mpSaveObjBoundingsFaron;
const dLytMapSaveObjFlagDefinition *flagSet = sSaveObjFlagsFaron;
switch (mSurfaceProvince) {
case SURFACE_PROVINCE_ELDIN: {
pBoundings = field_0x8244;
pBoundings = mpSaveObjBoundingsEldin;
flagSet = sSaveObjFlagsEldin;
numFlags = ARRAY_LENGTH(sSaveObjFlagsEldin);
break;
}
case SURFACE_PROVINCE_LANAYRU: {
pBoundings = field_0x825C;
pBoundings = mpSaveObjBoundingsLanayru;
flagSet = sSaveObjFlagsLanayru;
numFlags = ARRAY_LENGTH(sSaveObjFlagsLanayru);
break;
@@ -4508,13 +4777,13 @@ void dLytMapMain_c::executeState_EventSaveObjSelect() {
s32 currentSelected = getSelectedSaveObjIdx();
bool anyDecide = false;
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
if (mSaveObjs[i].mStateMgr.isState(dLytMapSaveObj_c::StateID_Decide)) {
anyDecide = true;
}
}
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
mSaveObjs[i].mSelectRequest = false;
if (currentSelected == i && !anyDecide) {
mSaveObjs[i].mSelectRequest = true;
@@ -4541,7 +4810,7 @@ void dLytMapMain_c::executeState_EventSaveObjSelect() {
bool found = false;
s32 statueIdx = 0;
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
if (mSaveObjs[i].mDecideFinished) {
found = true;
statueIdx = i;
@@ -4645,7 +4914,7 @@ void dLytMapMain_c::executeState_EventSaveObjConfirmMsgWindow() {
dBase_c::s_DrawControlFlags &= ~dBase_c::BASE_PROP_0x10;
s32 idx = 0;
s32 statueIdx = -1;
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
if (mSaveObjs[i].mDecideFinished) {
statueIdx = i;
break;
@@ -4663,7 +4932,7 @@ void dLytMapMain_c::executeState_EventSaveObjConfirmMsgWindow() {
mSaveCaption.mStateMgr.changeState(dLytMapSaveCaption_c::StateID_Out);
} else {
// cancel
for (int i = 0; i < field_0x8320; i++) {
for (int i = 0; i < mNumSaveObjs; i++) {
mSaveObjs[i].init();
}
mStateMgr.changeState(StateID_EventSaveObjSelect);