mirror of
https://github.com/zeldaret/ss
synced 2026-05-31 09:21:42 -04:00
A few funcs
This commit is contained in:
+31
-14
@@ -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
|
||||
|
||||
@@ -160,6 +160,7 @@ public:
|
||||
|
||||
bool fn_801B3EE0();
|
||||
void fn_801B3F20();
|
||||
void fn_801B3F30();
|
||||
|
||||
private:
|
||||
dRoom_c *createRoom(int roomid, bool flag0x40);
|
||||
|
||||
+57
-16
@@ -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) {
|
||||
|
||||
@@ -26,11 +26,12 @@ public:
|
||||
void renderRequest() {
|
||||
mRenderRequest = true;
|
||||
}
|
||||
|
||||
|
||||
void setPicture(nw4r::lyt::Picture *pic) {
|
||||
mpPicture = pic;
|
||||
}
|
||||
|
||||
|
||||
void execute();
|
||||
bool isBusyRendering() const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user