mirror of
https://github.com/zeldaret/ss
synced 2026-05-27 16:13:08 -04:00
A bit
This commit is contained in:
@@ -7993,7 +7993,7 @@ fn_80142B90 = .text:0x80142B90; // type:function size:0xEC
|
||||
fn_80142C80 = .text:0x80142C80; // type:function size:0x8C
|
||||
fn_80142D10__13dLytMapMain_cFlbR4mAng = .text:0x80142D10; // type:function size:0x80
|
||||
fn_80142D90__13dLytMapMain_cFl = .text:0x80142D90; // type:function size:0x170
|
||||
fn_80142F00__13dLytMapMain_cFR7mVec3_clUcRC7mVec3_cRC4mAng = .text:0x80142F00; // type:function size:0x158
|
||||
fn_80142F00__13dLytMapMain_cFR7mVec3_clbRC7mVec3_cRC4mAng = .text:0x80142F00; // type:function size:0x158
|
||||
fn_80143060__13dLytMapMain_cFR7mVec3_cRC7mVec3_cRC7mVec3_cRC4mAng = .text:0x80143060; // type:function size:0xBC
|
||||
fn_80143120__13dLytMapMain_cFl = .text:0x80143120; // type:function size:0xC0
|
||||
fn_801431E0__13dLytMapMain_cFv = .text:0x801431E0; // type:function size:0x11C
|
||||
|
||||
@@ -75,6 +75,10 @@ public:
|
||||
mpResAcc = resAcc;
|
||||
}
|
||||
|
||||
void setPriorityDraw(u8 priority) {
|
||||
mLyt.setPriority(priority);
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x0C */ m2d::ResAccIf_c *mpResAcc;
|
||||
/* 0x10 */ d2d::LytBase_c mLyt;
|
||||
@@ -96,6 +100,10 @@ public:
|
||||
mpResAcc = resAcc;
|
||||
}
|
||||
|
||||
void setPriorityDraw(u8 priority) {
|
||||
mLyt.setPriority(priority);
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x0C */ m2d::ResAccIf_c *mpResAcc;
|
||||
/* 0x10 */ d2d::LytBase_c mLyt;
|
||||
@@ -344,6 +352,10 @@ public:
|
||||
mpResAcc = resAcc;
|
||||
}
|
||||
|
||||
void setPriorityDraw(u8 priority) {
|
||||
mLyt.setPriority(priority);
|
||||
}
|
||||
|
||||
void changeState(const sFStateID_c<lytItemCursor_c> &newState);
|
||||
|
||||
void pachinkoSetCharging(bool charging, f32 progress);
|
||||
@@ -356,6 +368,7 @@ public:
|
||||
void bowAimStart();
|
||||
void bowReady();
|
||||
|
||||
|
||||
private:
|
||||
STATE_FUNC_DECLARE(lytItemCursor_c, Invisible);
|
||||
STATE_FUNC_DECLARE(lytItemCursor_c, Bow);
|
||||
@@ -439,6 +452,12 @@ public:
|
||||
return &mCursorIf;
|
||||
}
|
||||
|
||||
void setPriorityDraw(u8 priority) {
|
||||
mLyt1.setPriorityDraw(priority);
|
||||
mLyt2.setPriorityDraw(priority);
|
||||
mCursor.setPriorityDraw(priority);
|
||||
}
|
||||
|
||||
private:
|
||||
static dCsGame_c *sInstance;
|
||||
bool isForcedHidden() const;
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/d_flow_mgr.h"
|
||||
|
||||
// TODO - this file uses a lot of `friend` classes because the necessary
|
||||
// inlines might mess up weak function order. Let's get the order right
|
||||
// first before introducing more problems...
|
||||
|
||||
class dAcTbox_c;
|
||||
|
||||
/** Bird Statue Definition (StatueSelectDestination) */
|
||||
@@ -294,6 +298,8 @@ private:
|
||||
};
|
||||
|
||||
class dLytMapFloorBtnMgr_c : public d2d::dSubPane {
|
||||
friend class dLytMapMain_c;
|
||||
|
||||
public:
|
||||
dLytMapFloorBtnMgr_c(dLytMapGlobal_c *global)
|
||||
: mpGlobal(global), mpPane(nullptr), mStateMgr(*this, sStateID::null) {
|
||||
@@ -342,8 +348,8 @@ public:
|
||||
}
|
||||
|
||||
void checkPointedAtBtn();
|
||||
private:
|
||||
|
||||
private:
|
||||
/* 0x008 */ dLytMapGlobal_c *mpGlobal;
|
||||
/* 0x00C */ UI_STATE_MGR_DECLARE(dLytMapFloorBtnMgr_c);
|
||||
/* 0x048 */ d2d::dLytSub mLyt;
|
||||
@@ -619,7 +625,7 @@ private:
|
||||
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_SAVE_OBJ = 10,
|
||||
MAP_EVENT_11 = 11,
|
||||
};
|
||||
|
||||
@@ -643,7 +649,7 @@ private:
|
||||
s32 getSelectedSaveObjIdx() const;
|
||||
|
||||
f32 fn_80142D90(s32);
|
||||
void fn_80142F00(mVec3_c &, s32 mapMode, u8, const mVec3_c &, const mAng &);
|
||||
void fn_80142F00(mVec3_c &, s32 mapMode, bool, const mVec3_c &, const mAng &);
|
||||
void fn_8013FB70(const mVec3_c &, f32);
|
||||
bool fn_80141530() const;
|
||||
bool fn_80142D10(s32, bool, mAng &);
|
||||
@@ -723,7 +729,7 @@ private:
|
||||
|
||||
/* 0x8324 */ u8 _0x8324[0x8328 - 0x8324];
|
||||
|
||||
/* 0x8328 */ d2d::AnmGroup_c *mpOutAnmGroup;
|
||||
/* 0x8328 */ d2d::AnmGroup_c *mpInOutAnmGroup;
|
||||
|
||||
// TODO - it appears the map abuses these hit check things
|
||||
// to calculate Lyt bounding boxes, and it stores the
|
||||
@@ -762,7 +768,7 @@ private:
|
||||
/* 0x8C7C */ f32 field_0x8C7C;
|
||||
/* 0x8C80 */ f32 field_0x8C80;
|
||||
|
||||
/* 0x8C84 */ u8 _0x8C84[0x8C88 - 0x8C84];
|
||||
/* 0x8C84 */ u8 field_0x8C84;
|
||||
|
||||
/* 0x8C88 */ f32 field_0x8C88;
|
||||
/* 0x8C8C */ f32 field_0x8C8C;
|
||||
@@ -892,7 +898,7 @@ public:
|
||||
}
|
||||
|
||||
bool isSomeMapFieldEq10() const {
|
||||
return mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_SAVE_OBJ_MSG_WINDOW;
|
||||
return mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_SAVE_OBJ;
|
||||
}
|
||||
|
||||
void lightPillarRelated(s32 p1, s32 p2, s32 p3) {
|
||||
|
||||
+120
-21
@@ -2400,7 +2400,7 @@ void dLytMapMain_c::loadStageProperties() {
|
||||
|
||||
void dLytMapMain_c::setupStage() {
|
||||
loadStageProperties();
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
mLyt.findPane("N_skyloft_00")->SetVisible(false);
|
||||
}
|
||||
|
||||
@@ -2468,7 +2468,7 @@ void dLytMapMain_c::setupStage() {
|
||||
if (mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_SKYFIELD_INTERIOR) {
|
||||
mLyt.findPane("N_houkoul_00")->SetVisible(false);
|
||||
}
|
||||
if (mMapEvent != MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent != MAP_EVENT_SAVE_OBJ) {
|
||||
loadTextboxes();
|
||||
}
|
||||
fn_8013AD50();
|
||||
@@ -2659,7 +2659,7 @@ void dLytMapMain_c::execute() {
|
||||
}
|
||||
}
|
||||
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
bool visible =
|
||||
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE || mNextMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE;
|
||||
setSaveObjsVisible(visible);
|
||||
@@ -2721,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) &&
|
||||
mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
initSaveObjs();
|
||||
}
|
||||
fn_80143120(-2);
|
||||
mMarkers.drawPopups();
|
||||
mPutIcon.draw();
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
mPopupInfo.draw();
|
||||
}
|
||||
|
||||
@@ -3052,7 +3052,7 @@ void dLytMapMain_c::setButtonMessages(
|
||||
|
||||
void dLytMapMain_c::setCursorType() {
|
||||
if (canCenterCursor1(mCurrentMapMode) && canCenterCursor1(mNextMapMode)) {
|
||||
if ((mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW ||
|
||||
if ((mMapEvent == MAP_EVENT_SAVE_OBJ ||
|
||||
((mRoomType == ROOMTYPE_BOSS_HOUSE || mRoomType == ROOMTYPE_DUNGEON) && mPointerOnMap)) ||
|
||||
(mPointerCanPlaceBeacon && isPointingAtMainMap()) ||
|
||||
(*mPinIconAggregate.mStateMgr.getStateID() == dLytMapPinIconAggregate_c::StateID_Select) ||
|
||||
@@ -3530,17 +3530,116 @@ void dLytMapMain_c::setupFlags() {
|
||||
}
|
||||
}
|
||||
|
||||
void dLytMapMain_c::initializeState_In() {}
|
||||
void dLytMapMain_c::initializeState_In() {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
displaySaveObjs();
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
mPopupInfo.mStateMgr.changeState(dLytMapPopupInfo_c::StateID_In);
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x8CAD != 0 || mMapEvent == MAP_EVENT_MAP_INTRO) {
|
||||
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_IN];
|
||||
} else {
|
||||
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_IN_NO_CAM];
|
||||
}
|
||||
|
||||
field_0x8C88 = mpInOutAnmGroup->getLastFrame();
|
||||
mpInOutAnmGroup->bind(false);
|
||||
mpInOutAnmGroup->setFrame(0.0f);
|
||||
mPinIconAggregate.setScale(getGlobal()->getZoomFrame());
|
||||
}
|
||||
void dLytMapMain_c::executeState_In() {
|
||||
field_0x8DBF = 1;
|
||||
|
||||
dLytMapGlobal_c *global = getGlobal();
|
||||
// TODO this should explain most of mMapEvent
|
||||
if ((!field_0x8CAD || !field_0x8C84) && field_0x8CAD) {
|
||||
return;
|
||||
}
|
||||
|
||||
f32 ratio = (mpInOutAnmGroup->getFrame() / mpInOutAnmGroup->getLastFrame());
|
||||
|
||||
f32 f1 = fn_80142D90(mCurrentMapMode) * 2.0f;
|
||||
f32 f2 = fn_80142D90(mCurrentMapMode);
|
||||
f32 f3 = cLib::easeOut(ratio, 3.0f);
|
||||
global->setField_0x44(f1 + f3 * (f2 - f1));
|
||||
|
||||
mVec3_c v1;
|
||||
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE ||
|
||||
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) {
|
||||
fn_80142F00(v1, mCurrentMapMode, true, global->getMapRotationCenter(), global->getField_0x56());
|
||||
} else {
|
||||
fn_80142F00(v1, mCurrentMapMode, mMapUpDirection, global->getMapRotationCenter(), global->getField_0x56());
|
||||
}
|
||||
global->setMapScroll(v1);
|
||||
if (mpInOutAnmGroup->isEndReached()) {
|
||||
dCsGame_c::GetInstance()->setPriorityDraw(0x8A);
|
||||
mLyt.getLayout()->Animate(0);
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_MAIN_ANIM_IN].unbind();
|
||||
mpInOutAnmGroup->unbind();
|
||||
for (int i = 0; i < (int)ARRAY_LENGTH(mHitChecks); i++) {
|
||||
mHitChecks[i].resetCachedHitboxes();
|
||||
mHitChecks[i].execute();
|
||||
}
|
||||
|
||||
switch (mMapEvent) {
|
||||
default: {
|
||||
mFloorBtnMgr.mStateMgr.changeState(dLytMapFloorBtnMgr_c::StateID_Wait);
|
||||
mStateMgr.changeState(StateID_Active);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_SW_BANK_SMALL: {
|
||||
mStateMgr.changeState(StateID_EventSwBankSmall_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_MAP_INTRO: {
|
||||
mStateMgr.changeState(StateID_EventMapIntro_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_DUNGEON_MAP_GET: {
|
||||
mStateMgr.changeState(StateID_EventDungeonMapGet_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_FIELD_MAP_CHANGE_5:
|
||||
case MAP_EVENT_FIELD_MAP_CHANGE_8: {
|
||||
mStateMgr.changeState(StateID_EventFieldMapChange_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_FOREST_MAP_CHANGE: {
|
||||
mStateMgr.changeState(StateID_EventForestMapChange_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_SIGNAL_ADD: {
|
||||
mStateMgr.changeState(StateID_EventSignalAdd_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_GODDESS_CUBE: {
|
||||
mStateMgr.changeState(StateID_EventGoddessCube_Step1);
|
||||
break;
|
||||
}
|
||||
case MAP_EVENT_SAVE_OBJ: {
|
||||
displaySaveObjs();
|
||||
mStateMgr.changeState(StateID_EventSaveObjMsgWindow);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mpInOutAnmGroup->isBound()) {
|
||||
mpInOutAnmGroup->play();
|
||||
}
|
||||
}
|
||||
void dLytMapMain_c::finalizeState_In() {
|
||||
if (fn_80141530()) {
|
||||
dBase_c::s_NextExecuteControlFlags |= dBase_c::BASE_PROP_0x10;
|
||||
}
|
||||
dBase_c::s_DrawControlFlags |= dBase_c::BASE_PROP_0x10;
|
||||
}
|
||||
void dLytMapMain_c::finalizeState_In() {}
|
||||
|
||||
s32 dLytMapMain_c::getAreaGroup(s32 stifArea) const {
|
||||
s32 ret = AREAGROUP_MAX;
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
switch (mSurfaceProvince) {
|
||||
case SURFACE_PROVINCE_FARON: ret = AREAGROUP_FARON; break;
|
||||
case SURFACE_PROVINCE_ELDIN: ret = AREAGROUP_ELDIN; break;
|
||||
@@ -3569,7 +3668,7 @@ s32 dLytMapMain_c::getAreaGroup(s32 stifArea) const {
|
||||
s32 dLytMapMain_c::getRoomType() const {
|
||||
s32 ret = ROOMTYPE_FIELD;
|
||||
s32 stifRoomType = dStageMgr_c::GetInstance()->getSTIFRoomType();
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
ret = ROOMTYPE_FIELD;
|
||||
}
|
||||
|
||||
@@ -3935,19 +4034,19 @@ void dLytMapMain_c::finalizeState_Active() {
|
||||
}
|
||||
|
||||
void dLytMapMain_c::initializeState_Out() {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ_MSG_WINDOW) {
|
||||
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
|
||||
mPopupInfo.mStateMgr.changeState(StateID_Out);
|
||||
}
|
||||
dLytMeter_c::GetInstance()->setMeterField_0x13750(0);
|
||||
if (field_0x8CAD || mMapEvent == MAP_EVENT_MAP_INTRO) {
|
||||
mpOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT];
|
||||
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT];
|
||||
} else {
|
||||
mpOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT_NO_CAM];
|
||||
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT_NO_CAM];
|
||||
}
|
||||
|
||||
mpOutAnmGroup->bind(false);
|
||||
mpOutAnmGroup->setFrame(0.0f);
|
||||
field_0x8C8C = mpOutAnmGroup->getLastFrame();
|
||||
mpInOutAnmGroup->bind(false);
|
||||
mpInOutAnmGroup->setFrame(0.0f);
|
||||
field_0x8C8C = mpInOutAnmGroup->getLastFrame();
|
||||
|
||||
if (fn_80141530()) {
|
||||
dBase_c::s_NextExecuteControlFlags &= ~dBase_c::BASE_PROP_0x10;
|
||||
@@ -3956,20 +4055,20 @@ void dLytMapMain_c::initializeState_Out() {
|
||||
dPadNav::setNavEnabled(false, false);
|
||||
}
|
||||
void dLytMapMain_c::executeState_Out() {
|
||||
if (mpOutAnmGroup->isEndReached()) {
|
||||
if (mpInOutAnmGroup->isEndReached()) {
|
||||
bool specialMode = isSomeFieldEq0Or1Or7Or9Or11();
|
||||
// Kind of a weird way to write `specialMode || ... != 3 `
|
||||
if ((specialMode && dScGame_c::getCamera(0)->getField_0xDA8() != 3) || !specialMode) {
|
||||
dBase_c::s_NextExecuteControlFlags &= ~dBase_c::BASE_PROP_0x10;
|
||||
mLyt.calc();
|
||||
mpOutAnmGroup->unbind();
|
||||
mpInOutAnmGroup->unbind();
|
||||
field_0x8DBF = 0;
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
}
|
||||
}
|
||||
|
||||
if (mpOutAnmGroup->isBound()) {
|
||||
mpOutAnmGroup->play();
|
||||
if (mpInOutAnmGroup->isBound()) {
|
||||
mpInOutAnmGroup->play();
|
||||
}
|
||||
}
|
||||
void dLytMapMain_c::finalizeState_Out() {}
|
||||
|
||||
Reference in New Issue
Block a user