Figuring out more things

This commit is contained in:
robojumper
2025-10-11 00:04:22 +02:00
parent 631d950d13
commit d8c41fdce4
5 changed files with 228 additions and 53 deletions
+12 -12
View File
@@ -7804,17 +7804,17 @@ __dt__26sFState_c<13dLytMapMain_c>Fv = .text:0x801363A0; // type:function size:0
__dt__29sFStateFct_c<13dLytMapMain_c>Fv = .text:0x80136400; // type:function size:0x6C
__dt__82sStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80136470; // type:function size:0xA0
__dt__52sFStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c>Fv = .text:0x80136510; // type:function size:0xA4
fn_801365C0 = .text:0x801365C0; // type:function size:0x4
fn_801365D0 = .text:0x801365D0; // type:function size:0x40
__ct__26dLytMapBoundingWorldBoundsFv = .text:0x801365C0; // type:function size:0x4
__dt__26dLytMapBoundingWorldBoundsFv = .text:0x801365D0; // type:function size:0x40
__dt__13dLytMapMain_cFv = .text:0x80136610; // type:function size:0x608
getGlobal__13dLytMapMain_cFv = .text:0x80136C20; // type:function size:0xC
loadTextboxes__13dLytMapMain_cFv = .text:0x80136C30; // type:function size:0xC8
build__13dLytMapMain_cFv = .text:0x80136D00; // type:function size:0x6CC
changeState__82sStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x801373D0; // type:function size:0x10
fn_801373E0 = .text:0x801373E0; // type:function size:0xAC
fn_80137490 = .text:0x80137490; // type:function size:0x2E8
fn_80137780 = .text:0x80137780; // type:function size:0x15C
fn_801378E0 = .text:0x801378E0; // type:function size:0x838
loadStageProperties__13dLytMapMain_cFv = .text:0x801373E0; // type:function size:0xAC
setupStage__13dLytMapMain_cFv = .text:0x80137490; // type:function size:0x2E8
remove__13dLytMapMain_cFv = .text:0x80137780; // type:function size:0x15C
execute__13dLytMapMain_cFv = .text:0x801378E0; // type:function size:0x838
getStateID__94sStateMgr_c<25dLytMapPinIconAggregate_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80138120; // type:function size:0x10
draw__13dLytMapMain_cFv = .text:0x80138130; // type:function size:0x238
fn_80138370 = .text:0x80138370; // type:function size:0x138
@@ -7862,7 +7862,7 @@ initializeState_In__13dLytMapMain_cFv = .text:0x8013C1F0; // type:function size:
executeState_In__13dLytMapMain_cFv = .text:0x8013C2F0; // type:function size:0x380
finalizeState_In__13dLytMapMain_cFv = .text:0x8013C670; // type:function size:0x40
getAreaGroup__13dLytMapMain_cCFl = .text:0x8013C6B0; // type:function size:0xA8
fn_8013C760 = .text:0x8013C760; // type:function size:0x100
getRoomType__13dLytMapMain_cCFv = .text:0x8013C760; // type:function size:0x100
fn_8013C860 = .text:0x8013C860; // type:function size:0x1C
shouldDrawFootprints__13dLytMapMain_cCFv = .text:0x8013C880; // type:function size:0x64
zoomIn__13dLytMapMain_cFv = .text:0x8013C8F0; // type:function size:0x644
@@ -10577,7 +10577,7 @@ isSTIFAreaFaron__11dStageMgr_cCFv = .text:0x80199A60; // type:function size:0x3C
isSTIFAreaEldin__11dStageMgr_cCFv = .text:0x80199AA0; // type:function size:0x3C
isSTIFAreaLanayru__11dStageMgr_cCFv = .text:0x80199AE0; // type:function size:0x3C
getSTIFunk1__11dStageMgr_cCFv = .text:0x80199B20; // type:function size:0x20
StageManager__getSTIFunk3 = .text:0x80199B40; // type:function size:0x1C
getSTIFRoomType__11dStageMgr_cCFv = .text:0x80199B40; // type:function size:0x1C
fn_80199B60 = .text:0x80199B60; // type:function size:0xC
fn_80199B70 = .text:0x80199B70; // type:function size:0x1C
fn_80199B90 = .text:0x80199B90; // type:function size:0x3A8
@@ -40092,10 +40092,10 @@ lbl_80572770 = .sdata:0x80572770; // type:object size:0x8
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
lbl_80572788 = .sdata:0x80572788; // type:object size:0x8
lbl_80572790 = .sdata:0x80572790; // type:object size:0x8
lbl_80572798 = .sdata:0x80572798; // type:object size:0x8
lbl_805727A0 = .sdata:0x805727A0; // type:object size:0x8
lbl_80572788 = .sdata:0x80572788; // type:object size:0x6 data:string
lbl_80572790 = .sdata:0x80572790; // type:object size:0x6 data:string
lbl_80572798 = .sdata:0x80572798; // type:object size:0x6 data:string
lbl_805727A0 = .sdata:0x805727A0; // type:object size:0x6 data:string
lbl_805727A8 = .sdata:0x805727A8; // type:object size:0x8
lbl_805727B0 = .sdata:0x805727B0; // type:object size:0x8
lbl_805727B8 = .sdata:0x805727B8; // type:object size:0x8
+1 -1
View File
@@ -195,7 +195,7 @@ struct STIF {
/* 0x0E */ u8 areaType;
/* 0x0F */ u8 area;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 field_0x11;
/* 0x11 */ u8 roomType;
/* 0x12 */ s8 mapNameId;
/* 0x13 */ u8 field_0x13;
};
+11
View File
@@ -76,6 +76,15 @@ public:
STIF_AREA_LANAYRU_GORGE = 11,
};
// room is a not great name since this is really stage-wide...
enum StifRoomType_e {
STIF_ROOMTYPE_FIELD = 0,
STIF_ROOMTYPE_DUNGEON = 1,
STIF_ROOMTYPE_SKYLOFT = 2,
STIF_ROOMTYPE_BOSS_HOUSE = 3,
STIF_ROOMTYPE_SKYFIELD = 4,
};
s32 getSTIFArea() const;
bool isSTIFAreaFaron() const;
bool isSTIFAreaEldin() const;
@@ -87,6 +96,8 @@ public:
return getSTIFArea() == STIF_AREA_SKY;
}
s32 getSTIFRoomType() const;
s32 getAreaType() const;
s32 getMapNameId() const;
+26 -4
View File
@@ -41,7 +41,7 @@ struct dMapSavedDataEntry {
};
struct dMapSavedData {
/* 0x00 */ dMapSavedDataEntry entries[6];
/* 0x00 */ dMapSavedDataEntry entries[/* dLytMapMain_c::ROOMTYPE_MAX */ 6];
/* 0x30 */ bool showIslandNames;
};
@@ -512,6 +512,8 @@ public:
virtual void dLytMapMain_vt0x10();
void build();
void remove();
void execute();
bool isNotInvisible() const;
bool isOpenMaybe() const;
@@ -562,7 +564,8 @@ public:
STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjDecide);
private:
// TODO - need to come up with better names
// TODO - need to come up with better names for all of these enums and concepts
enum SurfaceProvince_e {
SURFACE_PROVINCE_FARON = 0,
SURFACE_PROVINCE_ELDIN = 1,
@@ -578,6 +581,16 @@ private:
AREAGROUP_MAX = 6,
};
enum RoomType_e {
ROOMTYPE_FIELD = 0,
ROOMTYPE_DUNGEON = 1,
ROOMTYPE_SKYLOFT = 2,
ROOMTYPE_BOSS_HOUSE = 3,
ROOMTYPE_SKYFIELD = 4,
ROOMTYPE_SKYFIELD_INTERIOR = 5,
ROOMTYPE_MAX = 6,
};
dLytMapGlobal_c *getGlobal();
void checkScroll();
bool needsNav(s32 mapMode) const;
@@ -590,7 +603,9 @@ private:
bool canPlaceBeacons(s32 mapMode) const;
bool isPointingAtMainMap() const;
void loadStageProperties();
s32 getAreaGroup(s32 stifArea) const;
s32 getRoomType() const;
s32 getSelectedSaveObjIdx() const;
@@ -604,6 +619,8 @@ private:
void fn_80143300();
void fn_80143120(s32);
void fn_80138D80();
void fn_801431E0();
void fn_8013AD50();
bool shouldDrawFootprints() const;
void zoomIn();
@@ -614,6 +631,7 @@ private:
void setCursorType();
void setupFlags();
void setupStage();
void loadTextboxes();
@@ -698,11 +716,15 @@ private:
/* 0x8C60 */ s32 mMaxBeaconCount;
/* 0x8C64 */ s32 field_0x8C64;
/* 0x8C68 */ s32 field_0x8C68;
/* 0x8C68 */ s32 mRoomType;
/* 0x8C6C */ s32 mAreaGroup;
/* 0x8C70 */ u32 field_0x8C70;
/* 0x8C74 */ u8 _0x8C74[0x8C88 - 0x8C74];
/* 0x8C74 */ u8 _0x8C74[0x8C7C - 0x8C74];
/* 0x8C7C */ f32 field_0x8C7C;
/* 0x8C80 */ f32 field_0x8C80;
/* 0x8C84 */ u8 _0x8C84[0x8C88 - 0x8C84];
/* 0x8C88 */ f32 field_0x8C88;
/* 0x8C8C */ f32 field_0x8C8C;
+178 -36
View File
@@ -2366,6 +2366,120 @@ void dLytMapMain_c::build() {
fn_80143300();
}
void dLytMapMain_c::loadStageProperties() {
mAreaGroup = getAreaGroup(dStageMgr_c::GetInstance()->getSTIFArea());
mRoomType = getRoomType();
// Yes, it does need to be written this way, otherwise the catch-all else
// branch is collapsed with the other ones.
if (mRoomType == ROOMTYPE_FIELD) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_ZOOM;
return;
}
if (mRoomType == ROOMTYPE_DUNGEON) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
return;
}
if (mRoomType == ROOMTYPE_SKYLOFT) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
return;
}
if (mRoomType == ROOMTYPE_BOSS_HOUSE) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
return;
}
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
}
void dLytMapMain_c::setupStage() {
loadStageProperties();
if (field_0x8C94 == 10) {
mLyt.findPane("N_skyloft_00")->SetVisible(false);
}
mAnmGroups[MAP_MAIN_ANIM_PLAYER_2_PATTERN].bind(false);
if (dAcPy_c::getCurrentTunicType() == 1) {
mAnmGroups[MAP_MAIN_ANIM_PLAYER_2_PATTERN].setFrame(1.0f);
} else {
mAnmGroups[MAP_MAIN_ANIM_PLAYER_2_PATTERN].setFrame(0.0f);
}
if (mRoomType == ROOMTYPE_SKYLOFT ||
(mAreaGroup == AREAGROUP_SKY && (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR ||
mRoomType == ROOMTYPE_DUNGEON))) {
mAnmGroups[MAP_MAIN_ANIM_SUN_ROTE].bind(false);
}
s32 type = 0;
mAnmGroups[MAP_MAIN_ANIM_TYPE].bind(false);
if (dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL) {
type = 8;
} else if (mAreaGroup == AREAGROUP_FARON || mAreaGroup == AREAGROUP_SEALED_GROUNDS) {
if (dStageMgr_c::GetInstance()->getSTIFArea() == dStageMgr_c::STIF_AREA_SEALED_GROUNDS) {
type = 7;
} else if (mRoomType == ROOMTYPE_FIELD) {
type = 1;
} else {
type = 2;
}
} else if (mAreaGroup == AREAGROUP_ELDIN) {
if (mRoomType == ROOMTYPE_FIELD) {
type = 3;
} else {
type = 4;
}
} else if (mAreaGroup == AREAGROUP_LANAYRU) {
if (mRoomType == ROOMTYPE_FIELD) {
type = 5;
} else {
type = 6;
}
} else if (mAreaGroup == AREAGROUP_SKY) {
if (dStageMgr_c::GetInstance()->getSTIFRoomType() == dStageMgr_c::STIF_ROOMTYPE_DUNGEON) {
type = 11;
} else {
// TODO - probably an enum but this matches too
type = 9;
if (dScGame_c::currentSpawnInfo.getTimeOfDay() == SpawnInfo::NIGHT) {
type = 10;
}
}
}
mAnmGroups[MAP_MAIN_ANIM_TYPE].setFrame(type);
mLyt.calc();
mAnmGroups[MAP_MAIN_ANIM_TYPE].unbind();
field_0x8C7C = 0.0f;
field_0x8C80 = 0.0f;
mAnmGroups[MAP_MAIN_ANIM_IN].bind(false);
mAnmGroups[MAP_MAIN_ANIM_IN].setFrame(0.0f);
mAnmGroups[MAP_MAIN_ANIM_MAP_V].bind(false);
fn_801431E0();
mLyt.calc();
mAnmGroups[MAP_MAIN_ANIM_MAP_V].unbind();
mAnmGroups[MAP_MAIN_ANIM_IN].unbind();
if (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
mLyt.findPane("N_houkoul_00")->SetVisible(false);
}
if (field_0x8C94 != 10) {
loadTextboxes();
}
fn_8013AD50();
}
void dLytMapMain_c::remove() {
// TODO - ...
}
void dLytMapMain_c::execute() {
// TODO - ...
}
void dLytMapMain_c::draw() {
if (!field_0x8DBF) {
return;
@@ -2383,7 +2497,7 @@ void dLytMapMain_c::draw() {
mMarkers.draw();
}
if (field_0x8C68 != 3 && field_0x8C68 != 5 && field_0x8C94 != 2) {
if (mRoomType != ROOMTYPE_BOSS_HOUSE && mRoomType != ROOMTYPE_SKYFIELD_INTERIOR && field_0x8C94 != 2) {
mPinIconAggregate.draw();
}
@@ -2458,7 +2572,7 @@ void lytMapusesSizedWString() {
}
void dLytMapMain_c::saveUnkMapData() {
dMapSavedDataEntry &data = sSavedMapData.entries[field_0x8C68];
dMapSavedDataEntry &data = sSavedMapData.entries[mRoomType];
data.field_0x06 = 1;
data.mapMode = mCurrentMapMode;
data.mapUpDirection = mMapUpDirection;
@@ -2478,9 +2592,9 @@ void dLytMapMain_c::initUnkMapData() {
}
void dLytMapMain_c::loadUnkMapData() {
mCurrentMapMode = sSavedMapData.entries[field_0x8C68].mapMode;
mMapUpDirection = sSavedMapData.entries[field_0x8C68].mapUpDirection;
mMapUpDirectionAfterZoomToDetail = sSavedMapData.entries[field_0x8C68].mapUpDirectionAfterZoomToDetail;
mCurrentMapMode = sSavedMapData.entries[mRoomType].mapMode;
mMapUpDirection = sSavedMapData.entries[mRoomType].mapUpDirection;
mMapUpDirectionAfterZoomToDetail = sSavedMapData.entries[mRoomType].mapUpDirectionAfterZoomToDetail;
mShowIslandNames = sSavedMapData.showIslandNames;
}
@@ -2524,12 +2638,12 @@ void dLytMapMain_c::setButtonMessages(
}
if (canZoomOut(currentMapMode) && canZoomOut(nextMapMode)) {
if ((field_0x8C68 == 0 && currentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) ||
(field_0x8C68 == 2 && currentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) ||
(field_0x8C68 == 4 && currentMapMode == dLytMapGlobal_c::MAPMODE_STAGE) ||
(field_0x8C68 == 3 && currentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) ||
(field_0x8C68 == 5 && currentMapMode == dLytMapGlobal_c::MAPMODE_STAGE) ||
(field_0x8C68 == 1 && currentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE)) {
if ((mRoomType == ROOMTYPE_FIELD && currentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) ||
(mRoomType == ROOMTYPE_SKYLOFT && currentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) ||
(mRoomType == ROOMTYPE_SKYFIELD && currentMapMode == dLytMapGlobal_c::MAPMODE_STAGE) ||
(mRoomType == ROOMTYPE_BOSS_HOUSE && currentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) ||
(mRoomType == ROOMTYPE_SKYFIELD_INTERIOR && currentMapMode == dLytMapGlobal_c::MAPMODE_STAGE) ||
(mRoomType == ROOMTYPE_DUNGEON && currentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE)) {
dLytMeter_c::GetInstance()->setFlags(METER_BTN_CROSS_LEFT);
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_L, LytDoButtonRelated::ACT_IE_ETC_WORLD_MAP);
} else {
@@ -2575,8 +2689,8 @@ void dLytMapMain_c::setButtonMessages(
}
}
switch (field_0x8C68) {
case 2: {
switch (mRoomType) {
case ROOMTYPE_SKYLOFT: {
if (currentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
dLytMeter_c::GetInstance()->setFlags(METER_BTN_CROSS_UP);
LytDoButtonRelated::setCrossTop(LytDoButtonRelated::ACT_IE_ETC_CURRENT_LOCATION, true);
@@ -2598,8 +2712,8 @@ void dLytMapMain_c::setButtonMessages(
}
break;
}
case 0:
case 4: {
case ROOMTYPE_FIELD:
case ROOMTYPE_SKYFIELD: {
if (currentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
dLytMeter_c::GetInstance()->setFlags(METER_BTN_CROSS_UP);
LytDoButtonRelated::setCrossTop(LytDoButtonRelated::ACT_IE_ETC_CURRENT_LOCATION, true);
@@ -2621,7 +2735,7 @@ void dLytMapMain_c::setButtonMessages(
dLytMeter_c::GetInstance()->setFlags(METER_BTN_0x4000);
}
if (field_0x8C68 == 4 && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE &&
if (mRoomType == ROOMTYPE_SKYFIELD && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE &&
mNextMapMode == dLytMapGlobal_c::MAPMODE_STAGE) {
dLytMeter_c::GetInstance()->setFlags(METER_BTN_Z);
if (mShowIslandNames) {
@@ -2636,7 +2750,7 @@ void dLytMapMain_c::setButtonMessages(
}
break;
}
case 1: {
case ROOMTYPE_DUNGEON: {
if (currentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
dLytMeter_c::GetInstance()->setFlags(METER_BTN_CROSS_UP);
LytDoButtonRelated::setCrossTop(LytDoButtonRelated::ACT_IE_ETC_CURRENT_LOCATION, true);
@@ -2673,7 +2787,8 @@ void dLytMapMain_c::setButtonMessages(
void dLytMapMain_c::setCursorType() {
if (canCenterCursor1(mCurrentMapMode) && canCenterCursor1(mNextMapMode)) {
if ((field_0x8C94 == 10 || ((field_0x8C68 == 3 || field_0x8C68 == 1) && mPointerOnMap)) ||
if ((field_0x8C94 == 10 ||
((mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON) && mPointerOnMap)) ||
(mPointerCanPlaceBeacon && isPointingAtMainMap()) ||
(*mPinIconAggregate.mStateMgr.getStateID() == dLytMapPinIconAggregate_c::StateID_Select) ||
(needsNav(mCurrentMapMode) && needsNav(mNextMapMode) && mFloorBtnMgr.hasPointedAtABtnIdx())) {
@@ -2894,7 +3009,7 @@ void dLytMapMain_c::setupFlags() {
}
mAnmGroups[MAP_MAIN_ANIM_KUMO_PATTERN].setFrame(titleLineFrame);
mAnmGroups[MAP_MAIN_ANIM_MAP_V].bind(false);
if (field_0x8C68 == 1 || field_0x8C68 == 3) {
if (mRoomType == ROOMTYPE_DUNGEON || mRoomType == ROOMTYPE_BOSS_HOUSE) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
mAnmGroups[MAP_MAIN_ANIM_MAP_V].setFrame(3.0f);
}
@@ -3030,7 +3145,8 @@ void dLytMapMain_c::setupFlags() {
grpZAIn = &mAnmGroups[MAP_MAIN_ANIM_MAP_ZA_IN_DESERT];
}
if (field_0x8C68 == 2 || (mAreaGroup == AREAGROUP_SKY && (field_0x8C68 == 3 || field_0x8C68 == 1))) {
if (mRoomType == ROOMTYPE_SKYLOFT ||
(mAreaGroup == AREAGROUP_SKY && (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON))) {
grpZIn = &mAnmGroups[MAP_MAIN_ANIM_MAP_ZA_IN_SKY_MAP_2];
grpZAIn = &mAnmGroups[MAP_MAIN_ANIM_MAP_ZA_OUT_SKY_COURSE];
}
@@ -3128,7 +3244,7 @@ void dLytMapMain_c::setupFlags() {
}
}
if (field_0x8C68 == 4 || field_0x8C68 == 5) {
if (mRoomType == ROOMTYPE_SKYFIELD || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
mLyt.findPane("P_skyloftLink_00")->SetVisible(false);
}
@@ -3140,7 +3256,7 @@ void dLytMapMain_c::setupFlags() {
mPutIcon.setVisible(false);
}
if (field_0x8C68 == 4) {
if (mRoomType == ROOMTYPE_SKYFIELD) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE && mNextMapMode == dLytMapGlobal_c::MAPMODE_STAGE) {
mMarkers.setIslandNamesOn(mShowIslandNames);
} else if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_ZOOM && mNextMapMode == dLytMapGlobal_c::MAPMODE_ZOOM) {
@@ -3181,8 +3297,34 @@ s32 dLytMapMain_c::getAreaGroup(s32 stifArea) const {
return ret;
}
s32 dLytMapMain_c::getRoomType() const {
s32 ret = ROOMTYPE_FIELD;
s32 stifRoomType = dStageMgr_c::GetInstance()->getSTIFRoomType();
if (field_0x8C94 == 10) {
ret = ROOMTYPE_FIELD;
}
if (dScGame_c::isCurrentStage("F011r") ||
(dScGame_c::isCurrentStage("F002r") && dScGame_c::currentSpawnInfo.isNight()) ||
dScGame_c::isCurrentStage("F010r") || dScGame_c::isCurrentStage("F019r")) {
ret = ROOMTYPE_SKYFIELD_INTERIOR;
} else if (stifRoomType == dStageMgr_c::STIF_ROOMTYPE_FIELD) {
ret = ROOMTYPE_FIELD;
} else if (stifRoomType == dStageMgr_c::STIF_ROOMTYPE_DUNGEON) {
ret = ROOMTYPE_DUNGEON;
} else if (stifRoomType == dStageMgr_c::STIF_ROOMTYPE_SKYLOFT) {
ret = ROOMTYPE_SKYLOFT;
} else if (stifRoomType == dStageMgr_c::STIF_ROOMTYPE_BOSS_HOUSE) {
ret = ROOMTYPE_BOSS_HOUSE;
} else if (stifRoomType == dStageMgr_c::STIF_ROOMTYPE_SKYFIELD) {
ret = ROOMTYPE_SKYFIELD;
}
return ret;
}
void dLytMapMain_c::zoomIn() {
if (field_0x8C68 == 2 || (mAreaGroup == AREAGROUP_SKY && (field_0x8C68 == 3 || field_0x8C68 == 1))) {
if (mRoomType == ROOMTYPE_SKYLOFT ||
(mAreaGroup == AREAGROUP_SKY && (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON))) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD) {
if (dPad::getDownTrigRight()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMIN_TO_AREA);
@@ -3208,7 +3350,7 @@ void dLytMapMain_c::zoomIn() {
}
}
}
} else if (field_0x8C68 == 4 || field_0x8C68 == 5) {
} else if (mRoomType == ROOMTYPE_SKYFIELD || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD) {
if (dPad::getDownTrigRight()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMIN_TO_COURSE);
@@ -3234,7 +3376,7 @@ void dLytMapMain_c::zoomIn() {
}
}
}
} else if (field_0x8C68 == 0) {
} else if (mRoomType == ROOMTYPE_FIELD) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD) {
if (dPad::getDownTrigRight()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMIN_TO_AREA);
@@ -3260,7 +3402,7 @@ void dLytMapMain_c::zoomIn() {
}
}
}
} else if (field_0x8C68 == 1) {
} else if (mRoomType == ROOMTYPE_DUNGEON) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD) {
if (dPad::getDownTrigRight()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMIN_TO_AREA);
@@ -3286,7 +3428,7 @@ void dLytMapMain_c::zoomIn() {
}
}
}
} else if (field_0x8C68 == 3) {
} else if (mRoomType == ROOMTYPE_BOSS_HOUSE) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD) {
if (dPad::getDownTrigRight()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMIN_TO_AREA);
@@ -3304,7 +3446,8 @@ void dLytMapMain_c::zoomIn() {
}
void dLytMapMain_c::zoomOut() {
if (field_0x8C68 == 2 || (mAreaGroup == AREAGROUP_SKY && (field_0x8C68 == 3 || field_0x8C68 == 1))) {
if (mRoomType == ROOMTYPE_SKYLOFT ||
(mAreaGroup == AREAGROUP_SKY && (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON))) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) {
if (dPad::getDownTrigLeft()) {
mNextMapMode = dLytMapGlobal_c::MAPMODE_WORLD;
@@ -3327,7 +3470,7 @@ void dLytMapMain_c::zoomOut() {
mStateMgr.changeState(StateID_ChgDispAreaMode_MapRot);
}
}
} else if (field_0x8C68 == 4 || field_0x8C68 == 5) {
} else if (mRoomType == ROOMTYPE_SKYFIELD || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) {
if (dPad::getDownTrigLeft()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMOUT_TO_WORLD);
@@ -3350,7 +3493,7 @@ void dLytMapMain_c::zoomOut() {
mStateMgr.changeState(StateID_ChgDispAreaMode_MapRot);
}
}
} else if (field_0x8C68 == 0) {
} else if (mRoomType == ROOMTYPE_FIELD) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) {
if (dPad::getDownTrigLeft()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMOUT_TO_WORLD);
@@ -3373,7 +3516,7 @@ void dLytMapMain_c::zoomOut() {
mStateMgr.changeState(StateID_ChgDispAreaMode_MapRot);
}
}
} else if (field_0x8C68 == 1) {
} else if (mRoomType == ROOMTYPE_DUNGEON) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) {
if (dPad::getDownTrigLeft()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMOUT_TO_WORLD);
@@ -3396,7 +3539,7 @@ void dLytMapMain_c::zoomOut() {
mStateMgr.changeState(StateID_ChgDispAreaMode_MapRot);
}
}
} else if (field_0x8C68 == 3) {
} else if (mRoomType == ROOMTYPE_BOSS_HOUSE) {
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE) {
if (dPad::getDownTrigLeft()) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ZOOMOUT_TO_WORLD);
@@ -3420,8 +3563,7 @@ void dLytMapMain_c::executeState_Active() {
return;
}
// TODO figure out and double check numbers
if (field_0x8C68 == 4 && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE &&
if (mRoomType == ROOMTYPE_SKYFIELD && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE &&
mNextMapMode == dLytMapGlobal_c::MAPMODE_STAGE && dPad::getDownTrigZ()) {
if (mShowIslandNames) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_ISLAND_NAME_OFF);
@@ -3488,8 +3630,8 @@ void dLytMapMain_c::executeState_Active() {
(dPad::getDownTrigA() && mCurrentMapMode == dLytMapGlobal_c::MAPMODE_STAGE && canZoomIn(mCurrentMapMode)
)) {
zoomIn();
} else if ((field_0x8C68 == dLytMapGlobal_c::MAPMODE_WORLD || field_0x8C68 == dLytMapGlobal_c::MAPMODE_PROVINCE ||
field_0x8C68 == dLytMapGlobal_c::MAPMODE_WORLD_SKY || field_0x8C68 == dLytMapGlobal_c::MAPMODE_ZOOM) &&
} else if ((mRoomType == ROOMTYPE_FIELD || mRoomType == ROOMTYPE_DUNGEON || mRoomType == ROOMTYPE_SKYLOFT ||
mRoomType == ROOMTYPE_SKYFIELD) &&
canResetPosition(mCurrentMapMode, mMapUpDirection) && dPad::getDownTrigUp()) {
mVec3_c pos;
fn_80142F00(pos, mCurrentMapMode, mMapUpDirection, global->getMapRotationCenter(), global->getField_0x56());