mirror of
https://github.com/zeldaret/ss
synced 2026-06-21 16:16:44 -04:00
more map
This commit is contained in:
+561
-14
@@ -11,6 +11,8 @@
|
||||
#include "d/d_pad_nav.h"
|
||||
#include "d/d_player.h"
|
||||
#include "d/d_rumble.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/d_stage.h"
|
||||
#include "d/lyt/d2d.h"
|
||||
#include "d/lyt/d_lyt_control_game.h"
|
||||
#include "d/lyt/d_lyt_map_global.h"
|
||||
@@ -21,10 +23,10 @@
|
||||
#include "egg/core/eggColorFader.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "m/m_video.h"
|
||||
#include "nw4r/g3d/g3d_obj.h"
|
||||
#include "nw4r/lyt/lyt_bounding.h"
|
||||
#include "nw4r/lyt/lyt_group.h"
|
||||
#include "nw4r/lyt/lyt_pane.h"
|
||||
#include "nw4r/lyt/lyt_window.h"
|
||||
#include "nw4r/lyt/lyt_types.h"
|
||||
#include "s/s_StateInterfaces.hpp"
|
||||
#include "sized_string.h"
|
||||
#include "toBeSorted/arc_managers/layout_arc_manager.h"
|
||||
@@ -1548,7 +1550,7 @@ void dLytMapSavePopup_c::draw() {
|
||||
pBounding = mpStatueBoundings[i];
|
||||
mAnmGroups[MAP_SAVE_POPUP_ACTION_ANIM_INPUT].bind(false);
|
||||
mAnmGroups[MAP_SAVE_POPUP_ACTION_ANIM_INPUT].setFrame(30.0f);
|
||||
const dMapSaveDefinition *def = dLytMap_c::GetInstance()->getSaveDefinition(i);
|
||||
const dMapSaveObjDefinition *def = dLytMap_c::GetInstance()->getSaveObjDefinition(i);
|
||||
f32 width = setStatueLabel(def->statueLabel);
|
||||
|
||||
f32 allScaleX = mLyt.findPane("N_all_00")->GetScale().x;
|
||||
@@ -1600,7 +1602,7 @@ f32 dLytMapSavePopup_c::setStatueLabel(const char *label) {
|
||||
textBox->GetLineWidth(nullptr);
|
||||
textBox = mLyt.getTextBox(sTPopup);
|
||||
textBox->setMessageWithGlobalTextProcessor2(label, nullptr);
|
||||
|
||||
|
||||
dWindow_c *w = mLyt.getWindow(sBg);
|
||||
w->UpdateSize(textBox, 60.0f);
|
||||
return w->GetSize().width;
|
||||
@@ -1610,48 +1612,297 @@ void dLytMapSavePopup_c::hide(s32 statueIdx) {
|
||||
mActions[statueIdx].hide();
|
||||
}
|
||||
|
||||
#define MAP_SAVE_CAPTION_ANIM_TYPE 0
|
||||
#define MAP_SAVE_CAPTION_ANIM_TEXTLINE 1
|
||||
#define MAP_SAVE_CAPTION_ANIM_IN 2
|
||||
#define MAP_SAVE_CAPTION_ANIM_LOOP 3
|
||||
#define MAP_SAVE_CAPTION_ANIM_OUT 4
|
||||
|
||||
#define MAP_SAVE_CAPTION_NUM_ANIMS 5
|
||||
|
||||
void dLytMapSaveCaption_c::initializeState_Invisible() {}
|
||||
void dLytMapSaveCaption_c::executeState_Invisible() {}
|
||||
void dLytMapSaveCaption_c::finalizeState_Invisible() {}
|
||||
|
||||
void dLytMapSaveCaption_c::initializeState_In() {}
|
||||
void dLytMapSaveCaption_c::executeState_In() {}
|
||||
void dLytMapSaveCaption_c::initializeState_In() {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].bind(false);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].setFrame(0.0f);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_LOOP].bind(false);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_LOOP].setFrame(0.0f);
|
||||
|
||||
mLyt.getLayout()->Animate(0);
|
||||
mLyt.calc();
|
||||
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_LOOP].unbind();
|
||||
}
|
||||
void dLytMapSaveCaption_c::executeState_In() {
|
||||
if (mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].isEndReached()) {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_LOOP].bind(false);
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].unbind();
|
||||
mStateMgr.changeState(StateID_In);
|
||||
}
|
||||
}
|
||||
void dLytMapSaveCaption_c::finalizeState_In() {}
|
||||
|
||||
void dLytMapSaveCaption_c::initializeState_Wait() {}
|
||||
void dLytMapSaveCaption_c::executeState_Wait() {}
|
||||
void dLytMapSaveCaption_c::finalizeState_Wait() {}
|
||||
|
||||
void dLytMapSaveCaption_c::initializeState_Out() {}
|
||||
void dLytMapSaveCaption_c::executeState_Out() {}
|
||||
void dLytMapSaveCaption_c::initializeState_Out() {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_OUT].bind(false);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_OUT].setFrame(0.0f);
|
||||
}
|
||||
void dLytMapSaveCaption_c::executeState_Out() {
|
||||
if (mAnmGroups[MAP_SAVE_CAPTION_ANIM_OUT].isEndReached()) {
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_OUT].unbind();
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_LOOP].unbind();
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
}
|
||||
}
|
||||
void dLytMapSaveCaption_c::finalizeState_Out() {}
|
||||
|
||||
static const d2d::LytBrlanMapping sMapSaveCaptionBrlanMap[] = {
|
||||
{ "mapSaveCaption_00_type.brlan", "G_type_00"},
|
||||
{"mapSaveCaption_00_textLine.brlan", "G_textLine_00"},
|
||||
{ "mapSaveCaption_00_in.brlan", "G__inOut_00"},
|
||||
{ "mapSaveCaption_00_loop.brlan", "G_loop_00"},
|
||||
{ "mapSaveCaption_00_out.brlan", "G__inOut_00"},
|
||||
};
|
||||
|
||||
void dLytMapSaveCaption_c::build(d2d::ResAccIf_c *resAcc) {
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("mapSaveCaption_00.brlyt", nullptr);
|
||||
for (int i = 0; i < MAP_SAVE_CAPTION_NUM_ANIMS; i++) {
|
||||
mAnmGroups[i].init(
|
||||
sMapSaveCaptionBrlanMap[i].mFile, resAcc, mLyt.getLayout(), sMapSaveCaptionBrlanMap[i].mName
|
||||
);
|
||||
}
|
||||
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
}
|
||||
|
||||
void dLytMapSaveCaption_c::remove() {
|
||||
for (int i = 0; i < MAP_SAVE_CAPTION_NUM_ANIMS; i++) {
|
||||
mAnmGroups[i].remove();
|
||||
}
|
||||
}
|
||||
|
||||
void dLytMapSaveCaption_c::execute() {
|
||||
mStateMgr.executeState();
|
||||
for (int i = 0; i < MAP_SAVE_CAPTION_NUM_ANIMS; i++) {
|
||||
if (mAnmGroups[i].isBound()) {
|
||||
mAnmGroups[i].play();
|
||||
}
|
||||
}
|
||||
mLyt.calc();
|
||||
}
|
||||
|
||||
void dLytMapSaveCaption_c::draw() {
|
||||
if (*mStateMgr.getStateID() != StateID_Invisible) {
|
||||
mLyt.draw();
|
||||
}
|
||||
}
|
||||
|
||||
void dLytMapSaveCaption_c::setType(s32 type) {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TYPE].bind(false);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TYPE].setFrame(type);
|
||||
|
||||
mLyt.getLayout()->Animate(0);
|
||||
mLyt.calc();
|
||||
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TYPE].unbind();
|
||||
}
|
||||
|
||||
void dLytMapSaveCaption_c::setLabel(const char *label) {
|
||||
mLyt.getTextBox("T_captionS_00")->setMessageWithGlobalTextProcessor2(label, nullptr);
|
||||
mLyt.getTextBox("T_caption_00")->setMessageWithGlobalTextProcessor2(label, nullptr);
|
||||
// ok
|
||||
const char *tmp = "T_captionS_00";
|
||||
dTextBox_c *box = mLyt.getTextBox(tmp);
|
||||
// Setting message twice...
|
||||
box->setMessageWithGlobalTextProcessor2(label, nullptr);
|
||||
|
||||
f32 width = box->GetLineWidth(nullptr);
|
||||
const wchar_t *text = dMessage_c::getTextMessageByLabel(label, true, nullptr, 0);
|
||||
s32 lines = box->calcTextLines(text, dMessage_c::getGlobalTagProcessor());
|
||||
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].bind(false);
|
||||
if (width < 226.0f) {
|
||||
if (lines == 1) {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].setFrame(0.0f);
|
||||
} else {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].setFrame(1.0f);
|
||||
}
|
||||
} else {
|
||||
if (lines == 1) {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].setFrame(2.0f);
|
||||
} else {
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].setFrame(3.0f);
|
||||
}
|
||||
}
|
||||
|
||||
mLyt.getLayout()->Animate(0);
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_TEXTLINE].unbind();
|
||||
}
|
||||
|
||||
#define MAP_SAVE_OBJ_ANIM_ON_OFF 0
|
||||
#define MAP_SAVE_OBJ_ANIM_DECIDE 1
|
||||
#define MAP_SAVE_OBJ_ANIM_LOOP 2
|
||||
|
||||
#define MAP_SAVE_OBJ_NUM_ANIMS 3
|
||||
|
||||
void dLytMapSaveObj_c::initializeState_Wait() {}
|
||||
void dLytMapSaveObj_c::executeState_Wait() {}
|
||||
void dLytMapSaveObj_c::executeState_Wait() {
|
||||
if (mSelectRequest) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].bind(false);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].setForward();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].setFrame(0.0f);
|
||||
mStateMgr.changeState(StateID_ToSelect);
|
||||
}
|
||||
}
|
||||
void dLytMapSaveObj_c::finalizeState_Wait() {}
|
||||
|
||||
void dLytMapSaveObj_c::initializeState_ToSelect() {}
|
||||
void dLytMapSaveObj_c::executeState_ToSelect() {}
|
||||
void dLytMapSaveObj_c::executeState_ToSelect() {
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].isEndReached()) {
|
||||
dRumble_c::start(dRumble_c::sRumblePreset1, dRumble_c::FLAG_SLOT0);
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_POINT_START_POINT);
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].unbind();
|
||||
mStateMgr.changeState(StateID_Select);
|
||||
}
|
||||
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].isBound()) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].play();
|
||||
}
|
||||
}
|
||||
void dLytMapSaveObj_c::finalizeState_ToSelect() {}
|
||||
|
||||
void dLytMapSaveObj_c::initializeState_Select() {}
|
||||
void dLytMapSaveObj_c::executeState_Select() {}
|
||||
void dLytMapSaveObj_c::executeState_Select() {
|
||||
if (!mSelectRequest) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].bind(false);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].setBackward();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].setToStart();
|
||||
mDecideRequest = false;
|
||||
mStateMgr.changeState(StateID_ToWait);
|
||||
} else if (mDecideRequest) {
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MAP_DECIDE_START_POINT);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].bind(false);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].setFrame(0.0f);
|
||||
mStateMgr.changeState(StateID_Decide);
|
||||
}
|
||||
}
|
||||
void dLytMapSaveObj_c::finalizeState_Select() {}
|
||||
|
||||
void dLytMapSaveObj_c::initializeState_ToWait() {}
|
||||
void dLytMapSaveObj_c::executeState_ToWait() {}
|
||||
void dLytMapSaveObj_c::executeState_ToWait() {
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].isStop2()) {
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].unbind();
|
||||
mStateMgr.changeState(StateID_Select);
|
||||
}
|
||||
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].isBound()) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].play();
|
||||
}
|
||||
}
|
||||
void dLytMapSaveObj_c::finalizeState_ToWait() {}
|
||||
|
||||
void dLytMapSaveObj_c::initializeState_Decide() {}
|
||||
void dLytMapSaveObj_c::executeState_Decide() {}
|
||||
void dLytMapSaveObj_c::executeState_Decide() {
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].isEndReached()) {
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].unbind();
|
||||
mDecideFinished = true;
|
||||
}
|
||||
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].isBound()) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].play();
|
||||
}
|
||||
}
|
||||
void dLytMapSaveObj_c::finalizeState_Decide() {}
|
||||
|
||||
void dLytMapSaveObj_c::setPosition(const mVec3_c &position) {
|
||||
mLyt.getLayout()->GetRootPane()->SetTranslate(position);
|
||||
}
|
||||
|
||||
void dLytMapSaveObj_c::setAlpha(u8 alpha) {
|
||||
mLyt.getLayout()->GetRootPane()->SetAlpha(alpha);
|
||||
}
|
||||
|
||||
void dLytMapSaveObj_c::init() {
|
||||
mSelectRequest = false;
|
||||
mDecideRequest = false;
|
||||
mDecideFinished = false;
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].bind(false);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].setFrame(0.0f);
|
||||
mLyt.calc();
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_ON_OFF].unbind();
|
||||
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_DECIDE].setFrame(0.0f);
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_LOOP].bind(false);
|
||||
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
|
||||
static const d2d::LytBrlanMapping sMapSaveObjBrlanMap[] = {
|
||||
{ "mapSaveObj_00_saveObjOnOff.brlan", "G_saveBtn_00"},
|
||||
{"mapSaveObj_00_saveObjDecide.brlan", "G_saveBtn_00"},
|
||||
{ "mapSaveObj_00_saveObjLoop.brlan", "G_saveBtnLoop_00"},
|
||||
};
|
||||
|
||||
void dLytMapSaveObj_c::build(d2d::ResAccIf_c *resAcc) {
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("mapSaveObj_00.brlyt", nullptr);
|
||||
for (int i = 0; i < MAP_SAVE_OBJ_NUM_ANIMS; i++) {
|
||||
mAnmGroups[i].init(sMapSaveObjBrlanMap[i].mFile, resAcc, mLyt.getLayout(), sMapSaveObjBrlanMap[i].mName);
|
||||
}
|
||||
|
||||
mLyt.getLayout()->GetRootPane()->SetInfluencedAlpha(true);
|
||||
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].bind(false);
|
||||
mAnmGroups[MAP_SAVE_CAPTION_ANIM_IN].setFrame(0.0f);
|
||||
mLyt.calc();
|
||||
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
|
||||
void dLytMapSaveObj_c::remove() {
|
||||
for (int i = 0; i < MAP_SAVE_OBJ_NUM_ANIMS; i++) {
|
||||
mAnmGroups[i].remove();
|
||||
}
|
||||
}
|
||||
|
||||
void dLytMapSaveObj_c::execute() {
|
||||
mStateMgr.executeState();
|
||||
if (mAnmGroups[MAP_SAVE_OBJ_ANIM_LOOP].isBound()) {
|
||||
mAnmGroups[MAP_SAVE_OBJ_ANIM_LOOP].play();
|
||||
}
|
||||
}
|
||||
|
||||
void dLytMapSaveObj_c::draw() {
|
||||
nw4r::lyt::Pane *root = mLyt.getLayout()->GetRootPane();
|
||||
// @bug calc should be in execute...
|
||||
mLyt.calc();
|
||||
root->Draw(mLyt.getDrawInfo());
|
||||
}
|
||||
|
||||
#pragma dont_inline on
|
||||
dLytMapMain_c::dLytMapMain_c()
|
||||
: mStateMgr(*this),
|
||||
mFlowMgr(&mFlow),
|
||||
mFloorBtnMgr(&mGlobal),
|
||||
mFootPrints(&mGlobal),
|
||||
field_0x8C6C(0),
|
||||
field_0x8C92(1),
|
||||
field_0x8C93(0),
|
||||
field_0x8C94(0),
|
||||
field_0x8C98(0),
|
||||
field_0x8CAC(0),
|
||||
field_0x8D38(0.0f, 0.0f),
|
||||
field_0x8D40(1.0f),
|
||||
field_0x8D44(0),
|
||||
@@ -1659,7 +1910,31 @@ dLytMapMain_c::dLytMapMain_c()
|
||||
field_0x8D48(0),
|
||||
field_0x8D4C(0.0f),
|
||||
field_0x8D50(0.0f),
|
||||
field_0x8D68(0) {}
|
||||
field_0x8D58(0),
|
||||
field_0x8D5C(1),
|
||||
field_0x8D60(0),
|
||||
field_0x8D64(0),
|
||||
field_0x8D68(0),
|
||||
field_0x8D6A(0),
|
||||
field_0x8D6B(0),
|
||||
field_0x8D6C(0),
|
||||
field_0x8D70(0),
|
||||
field_0x8DB0(0),
|
||||
mNavEnabled(false),
|
||||
field_0x8DB5(false),
|
||||
field_0x8DB8(0),
|
||||
mIslandNamesOn(false),
|
||||
field_0x8DBD(0),
|
||||
field_0x8DBE(0),
|
||||
field_0x8DBF(0),
|
||||
field_0x8DC0(-1),
|
||||
field_0x8DC4(0) {
|
||||
field_0x8D78 = 0.0f;
|
||||
field_0x8D7C = 0.0f;
|
||||
field_0x8D80 = 0.0f;
|
||||
field_0x8D84 = 0.0f;
|
||||
field_0x8D88 = 0.0f;
|
||||
}
|
||||
#pragma dont_inline reset
|
||||
|
||||
dLytMapMain_c::~dLytMapMain_c() {
|
||||
@@ -1674,6 +1949,252 @@ dLytMapGlobal_c *dLytMapMain_c::getGlobal() {
|
||||
return &mGlobal;
|
||||
}
|
||||
|
||||
dMapSavedData dLytMapMain_c::sSavedMapData = {
|
||||
{
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
},
|
||||
false
|
||||
};
|
||||
|
||||
const dMapSavedData dLytMapMain_c::sDefaultMapData = {
|
||||
{
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
{dLytMapGlobal_c::MAPMODE_STAGE, 1, 1, 0},
|
||||
},
|
||||
false
|
||||
};
|
||||
|
||||
static const char *const sTextboxLabelMapping[][2] = {
|
||||
{ "T_sNameS_00", "MAP_00"},
|
||||
{ "T_sName_00", "MAP_00"},
|
||||
{ "T_pNameS_00", "MAP_01"},
|
||||
{ "T_pName_00", "MAP_01"},
|
||||
{ "T_pNameS_01", "MAP_01"},
|
||||
{ "T_fNameS_00", "MAP_02"},
|
||||
{ "T_fName_00", "MAP_02"},
|
||||
{ "T_fNameS_01", "MAP_02"},
|
||||
{ "T_nFnameS_00", "MAP_03"},
|
||||
{ "T_nFname_00", "MAP_03"},
|
||||
{ "T_nFnameS_01", "MAP_03"},
|
||||
{ "T_lNameS_00", "MAP_04"},
|
||||
{ "T_lName_00", "MAP_04"},
|
||||
{ "T_lNameS_01", "MAP_04"},
|
||||
{ "T_sVnameS_00", "MAP_05"},
|
||||
{ "T_sVname_00", "MAP_05"},
|
||||
{ "T_sVnameS_01", "MAP_05"},
|
||||
{ "T_nVnameS_00", "MAP_06"},
|
||||
{ "T_nVname_00", "MAP_06"},
|
||||
{ "T_nVnameS_01", "MAP_06"},
|
||||
{ "T_dNameS_01", "MAP_08"},
|
||||
{ "T_dName_01", "MAP_08"},
|
||||
{ "T_dNameS_00", "MAP_08"},
|
||||
{ "T_dNameS_02", "MAP_07"},
|
||||
{ "T_dName_02", "MAP_07"},
|
||||
{ "T_dNameS_03", "MAP_07"},
|
||||
{ "T_gNameS_01", "MAP_10"},
|
||||
{ "T_gName_01", "MAP_10"},
|
||||
{ "T_gNameS_04", "MAP_10"},
|
||||
{ "T_gNameS_00", "MAP_09"},
|
||||
{ "T_gName_00", "MAP_09"},
|
||||
{ "T_gNameS_03", "MAP_09"},
|
||||
{ "T_gNameS_02", "MAP_40"},
|
||||
{ "T_gName_02", "MAP_40"},
|
||||
{ "T_gNameS_05", "MAP_40"},
|
||||
{ "T_lastDs_00", "MAP_17"},
|
||||
{ "T_lastD_00", "MAP_17"},
|
||||
{ "T_pampkinNS_00", "MAP_27"},
|
||||
{ "T_pampkinN_00", "MAP_27"},
|
||||
{ "T_teryNS_00", "MAP_28"},
|
||||
{ "T_teryN_00", "MAP_28"},
|
||||
{ "T_tikurinNS_00", "MAP_29"},
|
||||
{ "T_tikurinN_00", "MAP_29"},
|
||||
{ "T_musiNS_00", "MAP_31"},
|
||||
{ "T_musiN_00", "MAP_31"},
|
||||
{ "T_utaNS_00", "MAP_30"},
|
||||
{ "T_utaN_00", "MAP_30"},
|
||||
{ "T_ruretouNS_00", "MAP_26"},
|
||||
{ "T_ruretouN_00", "MAP_26"},
|
||||
{ "T_toForestS_00", "MAP_58"},
|
||||
{ "T_toForest_00", "MAP_58"},
|
||||
{"T_toVolcanoS_00", "MAP_59"},
|
||||
{ "T_toVolcano_00", "MAP_59"},
|
||||
{ "T_toDesertS_00", "MAP_60"},
|
||||
{ "T_toDesert_00", "MAP_60"},
|
||||
{ "T_fD1s_00", "MAP_11"},
|
||||
{ "T_fD1_00", "MAP_11"},
|
||||
{ "T_fD2s_00", "MAP_14"},
|
||||
{ "T_fD2_00", "MAP_14"},
|
||||
{ "T_vD2s_00", "MAP_16"},
|
||||
{ "T_vD2_00", "MAP_16"},
|
||||
{ "T_vD1s_00", "MAP_12"},
|
||||
{ "T_vD1_00", "MAP_12"},
|
||||
{ "T_dD1s_00", "MAP_13"},
|
||||
{ "T_dD1_00", "MAP_13"},
|
||||
{ "T_dD2s_00", "MAP_15"},
|
||||
{ "T_dD2_00", "MAP_15"},
|
||||
{ "T_lastDs_00", "MAP_17"},
|
||||
{ "T_lastD_00", "MAP_17"},
|
||||
};
|
||||
|
||||
static const char *sHyliasRealmMapLabel = "MAP_64";
|
||||
|
||||
void dLytMapMain_c::loadTextboxes() {
|
||||
bool hyliasRealm = dScGame_c::isCurrentStage("F403") || dScGame_c::isCurrentStage("F404");
|
||||
for (int i = 0; i < (int)ARRAY_LENGTH(sTextboxLabelMapping); i++) {
|
||||
dTextBox_c *box = mLyt.getTextBox(sTextboxLabelMapping[i][0]);
|
||||
if (hyliasRealm && (i == 2 || i == 3 || i == 4)) {
|
||||
// Replace "Sealed Grounds" with "Hylia's Realm"
|
||||
box->setMessageWithGlobalTextProcessor2(sHyliasRealmMapLabel, nullptr);
|
||||
} else {
|
||||
box->setMessageWithGlobalTextProcessor2(sTextboxLabelMapping[i][1], nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
static const d2d::LytBrlanMapping sMapMainBrlanMap[] = {
|
||||
{ "map_00_in.brlan", "G_inOut_00"},
|
||||
{ "map_00_titleOnOff.brlan", "G_titleOnOff_00"},
|
||||
{ "map_00_nOnOff.brlan", "G_nOnOff_00"},
|
||||
{ "map_00_mapV.brlan", "G_mapV_00"},
|
||||
{ "map_00_worldState.brlan", "G_worldState"},
|
||||
{ "map_00_player2patten.brlan", "G_2Pattern_00"},
|
||||
{ "map_00_rotate.brlan", "G_rotate_00"},
|
||||
{ "map_00_out.brlan", "G_inOut_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_plainC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_forestC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_nForestC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_sVolcanoC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_mineC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_desertC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_lakeC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_glenC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_seaC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_nVolcanoC_00"},
|
||||
{ "map_00_mapDraw.brlan", "G_glenC_01"},
|
||||
{ "map_00_skyLoftUpDown.brlan", "G_skyloftUD_00"},
|
||||
{"map_00_LinkPositionLight.brlan", "G_linkPointL_00"},
|
||||
{ "map_00_mapZinForest.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_zoomWakuIn.brlan", "G_zoomWaku_00"},
|
||||
{ "map_00_zoomWakuOut.brlan", "G_zoomWaku_00"},
|
||||
{ "map_00_mapZoutForest.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZinPlant.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutPlant.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInPlant.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZoutPlant.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZinDesert.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZoutDesert.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZinVolcano.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZoutVolcano.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutForest.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutDesert.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutVolcano.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInForest.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInDesert.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInVolcano.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInSkyMap.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutSkyMap.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInSkyMap2.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutSkyMap2.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaInSkyCorse.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_mapZaOutSkyCorse.brlan", "G_ZoomInOut_00"},
|
||||
{ "map_00_sunRote.brlan", "G_sun_00"},
|
||||
{ "map_00_inNoCam.brlan", "G_inOut_00"},
|
||||
{ "map_00_outNoCam.brlan", "G_inOut_00"},
|
||||
{ "map_00_cloudLoop.brlan", "G_cloudLoop_00"},
|
||||
{ "map_00_lightLoop.brlan", "G_lightLoop_00"},
|
||||
{ "map_00_nushiLoop.brlan", "G_nushiLoop_00"},
|
||||
{ "map_00_type.brlan", "G_type_00"},
|
||||
{ "map_00_kumoPattern.brlan", "G_kumoPattern_00"},
|
||||
{ "map_00_titleLine.brlan", "G_textLine_00"},
|
||||
};
|
||||
|
||||
#define MAP_MAIN_ANIM_IN 0
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
static const char *sBoundingNames[] = {
|
||||
"B_noroshi_00", "B_houkoul_00", "B_remoCon_00", "B_nunchaku_00", "B_tittle_00", "B_saveIcon_00",
|
||||
"B_saveIcon_01", "B_saveIcon_02", "B_saveIcon_03", "B_saveIcon_04", "B_saveIcon_05", "B_saveIcon_06",
|
||||
"B_saveIcon_07", "B_saveIcon_08", "B_saveIcon_28", "B_saveIcon_10", "B_saveIcon_11", "B_saveIcon_12",
|
||||
"B_saveIcon_13", "B_saveIcon_14", "B_saveIcon_15", "B_saveIcon_16", "B_saveIcon_17", "B_saveIcon_18",
|
||||
"B_saveIcon_19", "B_saveIcon_20", "B_saveIcon_21", "B_saveIcon_22", "B_saveIcon_23", "B_saveIcon_24",
|
||||
"B_saveIcon_25", "B_saveIcon_26", "B_saveIcon_27",
|
||||
};
|
||||
|
||||
void dLytMapMain_c::build() {
|
||||
field_0x8DBF = 0;
|
||||
field_0x8DB0 = 0;
|
||||
if (dScGame_c::isCurrentStage("F102")) {
|
||||
// awesome but unnecessary
|
||||
field_0x8DB0 = 0;
|
||||
}
|
||||
|
||||
dStage_c::GetInstance()->fn_801B3F20();
|
||||
d2d::ResAccIf_c *resAcc = dLytMap_c::getResAcc();
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("map_00.brlyt", nullptr);
|
||||
mVec2_c scale = mLyt.getDrawInfo().GetLocationAdjustScale();
|
||||
getGlobal()->setField_0x28(scale);
|
||||
|
||||
// TODO define
|
||||
for (int i = 0; i < 54; i++) {
|
||||
mAnmGroups[i].init(sMapMainBrlanMap[i].mFile, resAcc, mLyt.getLayout(), sMapMainBrlanMap[i].mName);
|
||||
}
|
||||
|
||||
mFloorBtnMgr.build(resAcc);
|
||||
mSubpane.mpLytPane = &mFloorBtnMgr;
|
||||
mSubpaneList.PushBack(&mSubpane);
|
||||
|
||||
d2d::dSubPane::linkMeters(mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName), &mSubpaneList);
|
||||
mFootPrints.build(resAcc);
|
||||
|
||||
mPinIconAggregate.build(resAcc);
|
||||
mPutIcon.build(resAcc);
|
||||
|
||||
for (int i = 0; i < (int)ARRAY_LENGTH(mSaveObjs); i++) {
|
||||
mSaveObjs[i].build(resAcc);
|
||||
}
|
||||
|
||||
mSaveCaption.build(resAcc);
|
||||
mSavePopup.build(resAcc);
|
||||
mPopupInfo.build(resAcc);
|
||||
|
||||
mAnmGroups[MAP_MAIN_ANIM_IN].bind(false);
|
||||
mAnmGroups[MAP_MAIN_ANIM_IN].setToEnd();
|
||||
mLyt.calc();
|
||||
|
||||
for (int i = 0; i < (int)ARRAY_LENGTH(sBoundingNames); i++) {
|
||||
nw4r::lyt::Bounding *b = mLyt.findBounding(sBoundingNames[i]);
|
||||
b->SetVisible(false);
|
||||
if (i >= 5 && i < 15) {
|
||||
field_0x821C[i - 5] = b;
|
||||
} else if (i >= 15 && i < 21) {
|
||||
field_0x8244[i - 15] = b;
|
||||
} else if (i >= 21 && i < 33) {
|
||||
field_0x825C[i - 21] = b;
|
||||
}
|
||||
|
||||
field_0x832C[i].init(b, 0x02, 2, 0);
|
||||
dCsMgr_c::GetInstance()->registCursorTarget(&field_0x832C[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < (int)ARRAY_LENGTH(sBoundingNames); i++) {
|
||||
field_0x832C[i].resetCachedHitboxes();
|
||||
field_0x832C[i].execute();
|
||||
}
|
||||
|
||||
mpMapBounding = mLyt.findBounding("B_map_00");
|
||||
mpMapBounding->SetScale(mVec2_c(1.0f, 1.0f));
|
||||
}
|
||||
|
||||
void dLytMapMain_c::draw() {}
|
||||
|
||||
void dLytMap_c::build() {
|
||||
@@ -1691,6 +2212,32 @@ void lytMapusesSizedWString() {
|
||||
sString.sprintf(L"%ld", 0);
|
||||
}
|
||||
|
||||
void dLytMapMain_c::saveUnkMapData() {
|
||||
dMapSavedDataEntry &data = sSavedMapData.entries[field_0x8C68];
|
||||
data.field_0x06 = 1;
|
||||
data.mapMode = field_0x8CA4;
|
||||
data.mapUpDirection = field_0x8C90;
|
||||
data.field_0x05 = field_0x8C92;
|
||||
sSavedMapData.islandNamesOn = mIslandNamesOn;
|
||||
}
|
||||
|
||||
void dLytMapMain_c::initUnkMapData() {
|
||||
for (int i = 0; i < 6; i++) {
|
||||
sSavedMapData.entries[i].field_0x06 = sDefaultMapData.entries[i].field_0x06;
|
||||
sSavedMapData.entries[i].mapMode = sDefaultMapData.entries[i].mapMode;
|
||||
sSavedMapData.entries[i].mapUpDirection = sDefaultMapData.entries[i].mapUpDirection;
|
||||
sSavedMapData.entries[i].field_0x05 = sDefaultMapData.entries[i].field_0x05;
|
||||
}
|
||||
sSavedMapData.islandNamesOn = sDefaultMapData.islandNamesOn;
|
||||
}
|
||||
|
||||
void dLytMapMain_c::loadUnkMapData() {
|
||||
field_0x8CA4 = sSavedMapData.entries[field_0x8C68].mapMode;
|
||||
field_0x8C90 = sSavedMapData.entries[field_0x8C68].mapUpDirection;
|
||||
field_0x8C92 = sSavedMapData.entries[field_0x8C68].field_0x05;
|
||||
mIslandNamesOn = sSavedMapData.islandNamesOn;
|
||||
}
|
||||
|
||||
void dLytMapMain_c::initializeState_Invisible() {}
|
||||
void dLytMapMain_c::executeState_Invisible() {}
|
||||
void dLytMapMain_c::finalizeState_Invisible() {}
|
||||
|
||||
Reference in New Issue
Block a user