mirror of https://github.com/zeldaret/tp.git
2853 lines
108 KiB
C++
2853 lines
108 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/d_menu_fmap2D
|
|
//
|
|
|
|
#include "d/dolzel.h"
|
|
|
|
#include "d/d_menu_fmap2D.h"
|
|
#include "JSystem/J2DGraph/J2DAnmLoader.h"
|
|
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
|
#include "JSystem/J2DGraph/J2DScreen.h"
|
|
#include "JSystem/JKernel/JKRExpHeap.h"
|
|
#include "JSystem/JUtility/JUTTexture.h"
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "d/actor/d_a_player.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "d/d_lib.h"
|
|
#include "d/d_menu_fmap.h"
|
|
#include "d/d_meter2_info.h"
|
|
#include "d/d_meter_HIO.h"
|
|
#include "d/d_msg_class.h"
|
|
#include "d/d_msg_scrn_explain.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
#include "d/actor/d_a_midna.h"
|
|
|
|
/* 801CF56C-801CFCDC 1C9EAC 0770+00 0/0 1/1 0/0 .text __ct__18dMenu_Fmap2DBack_cFv */
|
|
dMenu_Fmap2DBack_c::dMenu_Fmap2DBack_c() {
|
|
dMeter2Info_setMapDrugFlag(0);
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
mpAreaTex[i] = NULL;
|
|
mRegionMinMapX[i] = 0.0;
|
|
mRegionMinMapY[i] = 0.0;
|
|
mRegionMapSizeX[i] = 0.0;
|
|
mRegionMapSizeY[i] = 0.0;
|
|
field_0xf0c[i] = 0.0;
|
|
field_0xf2c[i] = 0.0;
|
|
field_0xf4c[i] = 0.0;
|
|
field_0xf6c[i] = 0.0;
|
|
mRegionOriginX[i] = 0.0;
|
|
mRegionOriginZ[i] = 0.0;
|
|
mRegionTexData[i].mMinX = 0.0;
|
|
mRegionTexData[i].mMinZ = 0.0;
|
|
mRegionTexData[i].mMaxX = 0.0;
|
|
mRegionTexData[i].mMaxZ = 0.0;
|
|
mRegionTexData[i].mScale = 0.0;
|
|
mRegionTextureReadNum[i] = 0xff;
|
|
field_0x1230[i] = 0xff;
|
|
mRegionScrollMinX[i] = 0.0;
|
|
mRegionScrollMinZ[i] = 0.0;
|
|
mRegionScrollMaxX[i] = 0.0;
|
|
mRegionScrollMaxZ[i] = 0.0;
|
|
mRegionScrollMapMinX[i] = 0.0;
|
|
mRegionScrollMapMinY[i] = 0.0;
|
|
mRegionScrollMapMaxX[i] = 0.0;
|
|
mRegionScrollMapMaxY[i] = 0.0;
|
|
}
|
|
|
|
for (int i = 0; i < 20; i++) {
|
|
mStageOriginX[i] = 0.0;
|
|
mStageOriginZ[i] = 0.0;
|
|
mStageOriginPathX[i] = 0.0;
|
|
mStageOriginPathZ[i] = 0.0;
|
|
}
|
|
|
|
mpStages = NULL;
|
|
mTexMinX = 0.0;
|
|
mTexMinZ = 0.0;
|
|
mTexMaxX = 0.0;
|
|
mTexMaxZ = 0.0;
|
|
mAllMapScaleRate = 0.0;
|
|
mWorldMinX = 0.0;
|
|
mWorldMinZ = 0.0;
|
|
mWorldMaxX = 0.0;
|
|
mWorldMaxZ = 0.0;
|
|
field_0x1184 = 0.0;
|
|
field_0x1188 = 0.0;
|
|
mRenderingPosX = 0.0;
|
|
mRenderingPosZ = 0.0;
|
|
mRenderingScale = 1.0;
|
|
field_0xf98 = 1.0;
|
|
mMapZoomRate = 0.0;
|
|
mZoom = getAllMapZoomRate();
|
|
field_0xfa4 = 1.0;
|
|
field_0xfa8 = 0.0;
|
|
mpBackTex = NULL;
|
|
mpSpotTexture = NULL;
|
|
mTransX = 0.0;
|
|
mTransZ = 0.0;
|
|
mAlphaRate = 0.0;
|
|
mpMenuFmapMap = NULL;
|
|
mpMeterHaihai = NULL;
|
|
field_0x122d = 0;
|
|
field_0x122e = false;
|
|
mSpotNum = 0;
|
|
mStageDataNum = 0;
|
|
mStageTransX = 0.0;
|
|
mStageTransZ = 0.0;
|
|
field_0xfd0 = 0.0;
|
|
field_0xfd4 = 0.0;
|
|
field_0xfd8 = 0.0;
|
|
field_0xfdc = 0.0;
|
|
control_xpos = 0.0;
|
|
control_ypos = 0.0;
|
|
field_0x11b4 = 0.0;
|
|
field_0x11b8 = 0.0;
|
|
field_0x11bc = 0.0;
|
|
field_0x11c0 = 0.0;
|
|
field_0x11c4 = 0.0;
|
|
field_0x11c8 = 0.0;
|
|
field_0x11cc = 0.0;
|
|
field_0x11d0 = 0.0;
|
|
mRegionFlag = 0;
|
|
mMapDrawFlag = false;
|
|
field_0x1238 = 0;
|
|
field_0x1218 = 0;
|
|
field_0x121a = 0;
|
|
mSelectRegion = 0xff;
|
|
mRegionCursor = 0;
|
|
field_0x1228 = 0;
|
|
mSpotCursor = 0;
|
|
field_0x122a = 0;
|
|
field_0x122b = 1;
|
|
field_0xfb0 = 0.0;
|
|
field_0xfb4 = 0.0;
|
|
field_0xfb8 = 1.0;
|
|
mArrowAlpha = 0.0;
|
|
mArrowPos3DZ = 0.0;
|
|
mArrowPos3DX = 0.0;
|
|
field_0x11a8 = 0.0;
|
|
field_0x11a4 = 0.0;
|
|
field_0x11b0 = 0.0;
|
|
field_0x11ac = 0.0;
|
|
mArrowPos2DY = 0.0;
|
|
mArrowPos2DX = 0.0;
|
|
mSpotTextureFadeAlpha = 0.0;
|
|
field_0x11dc = 0.0;
|
|
field_0x11e0 = 360.0;
|
|
mBackAlpha = 0.0;
|
|
field_0x11e8 = 0.0;
|
|
field_0x11ec = 0.0;
|
|
|
|
mSelectedRegionBlack.set(0, 0, 0, 0);
|
|
mSelectedRegionWhite.set(255, 255, 255, 255);
|
|
mUnselectedRegionBlack.set(0, 0, 0, 0);
|
|
mUnselectedRegionWhite.set(255, 255, 255, 255);
|
|
mUnreachedRegionBlack.set(0, 0, 0, 0);
|
|
mUnreachedRegionWhite.set(0, 0, 0, 255);
|
|
field_0x1208.set(0, 0, 0, 0);
|
|
field_0x120c.set(0, 0, 0, 255);
|
|
|
|
field_0x1210 = 1.0;
|
|
field_0x1214 = 1.0;
|
|
mArrowDrawFlag = true;
|
|
mAllPathShowFlag = false;
|
|
|
|
initiate(dComIfGp_getFmapResArchive());
|
|
|
|
mpBackScreen = new J2DScreen();
|
|
JUT_ASSERT(238, mpBackScreen != 0);
|
|
|
|
bool fg = mpBackScreen->setPriority("zelda_map_screen_stone_base.blo", 0x20000,
|
|
dComIfGp_getFmapResArchive());
|
|
JUT_ASSERT(242, fg != false);
|
|
|
|
dPaneClass_showNullPane(mpBackScreen);
|
|
|
|
mpBaseScreen = new J2DScreen();
|
|
JUT_ASSERT(248, mpBaseScreen != 0)
|
|
|
|
fg = mpBaseScreen->setPriority("zelda_map_screen_base.blo", 0x20000,
|
|
dComIfGp_getFmapResArchive());
|
|
JUT_ASSERT(252, fg != false);
|
|
|
|
dPaneClass_showNullPane(mpBaseScreen);
|
|
|
|
mpBaseAnm = static_cast<J2DAnmTextureSRTKey*>(J2DAnmLoaderDataBase::load(
|
|
JKRGetNameResource("zelda_map_screen_base.btk", dComIfGp_getFmapResArchive())));
|
|
mpBaseAnm->searchUpdateMaterialID(mpBaseScreen);
|
|
|
|
mAnmFrame = 0.0;
|
|
|
|
mpBaseRoot = new CPaneMgrAlphaMorf(mpBaseScreen, 'ROOT', 2, NULL);
|
|
JUT_ASSERT(264, mpBaseRoot != 0);
|
|
|
|
mpMapArea = new CPaneMgr(mpBaseScreen, 'center_n', 0, NULL);
|
|
JUT_ASSERT(269, mpMapArea != 0);
|
|
|
|
mpMapBlack = new CPaneMgr(mpBaseScreen, 'map_blak', 0, NULL);
|
|
JUT_ASSERT(273, mpMapBlack != 0);
|
|
|
|
mpMeterHaihai = new dMeterHaihai_c(1);
|
|
JUT_ASSERT(277, mpMeterHaihai != 0);
|
|
|
|
ResTIMG* backTexResource =
|
|
(ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
|
|
mpBackTex = new J2DPicture(backTexResource);
|
|
JUT_ASSERT(282, mpBackTex != 0);
|
|
|
|
mpBackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
|
|
mpBackTex->setAlpha(0);
|
|
|
|
mpPointScreen = new J2DScreen();
|
|
JUT_ASSERT(293, mpPointScreen != 0);
|
|
|
|
fg = mpPointScreen->setPriority("zelda_field_map_point_cursor.blo", 0x20000,
|
|
dComIfGp_getFmapResArchive());
|
|
JUT_ASSERT(252, fg != false);
|
|
|
|
dPaneClass_showNullPane(mpPointScreen);
|
|
|
|
mpPointParent = new CPaneMgr(mpPointScreen, 'f_po_n', 2, NULL);
|
|
JUT_ASSERT(301, mpPointParent != 0);
|
|
|
|
mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale);
|
|
|
|
static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'};
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
J2DPicture* picture = static_cast<J2DPicture*>(mpPointScreen->search(cur_tag[i]));
|
|
picture->setBlackWhite(g_fmapHIO.mCursorBlack, g_fmapHIO.mCursorWhite);
|
|
}
|
|
|
|
dMeter2Info_set2DWidth(getMapScissorAreaSizeX());
|
|
dMeter2Info_set2DHeight(getMapScissorAreaSizeY());
|
|
dMeter2Info_set2DPosH(getMapScissorAreaLX());
|
|
dMeter2Info_set2DPosV(getMapScissorAreaLY());
|
|
setDebugData(NULL, NULL, 0);
|
|
}
|
|
|
|
/* 801CFCDC-801CFF34 1CA61C 0258+00 2/1 0/0 0/0 .text __dt__18dMenu_Fmap2DBack_cFv */
|
|
dMenu_Fmap2DBack_c::~dMenu_Fmap2DBack_c() {
|
|
delete mpBackScreen;
|
|
mpBackScreen = NULL;
|
|
|
|
delete mpBaseScreen;
|
|
mpBaseScreen = NULL;
|
|
|
|
delete mpBaseAnm;
|
|
mpBaseAnm = NULL;
|
|
|
|
delete mpBaseRoot;
|
|
mpBaseRoot = NULL;
|
|
|
|
delete mpMapArea;
|
|
mpMapArea = NULL;
|
|
|
|
delete mpMapBlack;
|
|
mpMapBlack = NULL;
|
|
|
|
delete mpMeterHaihai;
|
|
mpMeterHaihai = NULL;
|
|
|
|
delete mpBackTex;
|
|
mpBackTex = NULL;
|
|
|
|
delete mpPointScreen;
|
|
mpPointScreen = NULL;
|
|
|
|
delete mpPointParent;
|
|
mpPointParent = NULL;
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
if (mpAreaTex[i] != NULL) {
|
|
delete mpAreaTex[i];
|
|
mpAreaTex[i] = NULL;
|
|
}
|
|
}
|
|
|
|
deleteSpotPane();
|
|
dMeter2Info_setMapDrugFlag(0);
|
|
}
|
|
|
|
/* 801CFF34-801D0804 1CA874 08D0+00 1/0 0/0 0/0 .text draw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::draw() {
|
|
calcBlink();
|
|
|
|
J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort();
|
|
|
|
grafPort->setup2D();
|
|
|
|
u32 scissorLeft, scissorTop, scissorWidth, scissorHeight;
|
|
GXGetScissor(&scissorLeft, &scissorTop, &scissorWidth, &scissorHeight);
|
|
|
|
grafPort->scissor(mTransX, 0.0f, 608.0f, 448.0f);
|
|
grafPort->setScissor();
|
|
|
|
mpBackTex->setBlackWhite(field_0x1208, field_0x120c);
|
|
mpBackTex->setAlpha(mAlphaRate * 255.0f * g_fmapHIO.mBackgroundAlpha);
|
|
mpBackTex->draw(mTransX + mDoGph_gInf_c::getMinXF(),
|
|
mTransZ + mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(),
|
|
mDoGph_gInf_c::getHeightF(), false, false, false);
|
|
|
|
mpBackScreen->draw(mTransX, mTransZ, grafPort);
|
|
mpBaseScreen->draw(mTransX, mTransZ, grafPort);
|
|
|
|
Mtx mtx;
|
|
Vec vec1 = mpMapArea->getGlobalVtx(&mtx, 0, false, 0);
|
|
|
|
Vec vec2 = mpMapArea->getGlobalVtx(&mtx, 3, false, 0);
|
|
|
|
f32 width = mDoGph_gInf_c::getWidthF() / 608.0f;
|
|
f32 height = mDoGph_gInf_c::getHeightF() / 448.0f;
|
|
|
|
grafPort->scissor(mTransX + ((vec1.x - mDoGph_gInf_c::getMinXF()) / width),
|
|
mTransZ + (vec1.y / height), (vec2.x - vec1.x) / width,
|
|
(vec2.y - vec1.y) / height);
|
|
|
|
grafPort->setScissor();
|
|
|
|
field_0x11dc = (mTransX + getMapScissorAreaLX()) + (getMapScissorAreaSizeRealX() * 0.5f);
|
|
|
|
if (g_fmapHIO.mRangeCheck && g_fmapHIO.mRangeCheckDrawPriority) {
|
|
drawDebugRegionArea();
|
|
}
|
|
|
|
regionTextureDraw();
|
|
|
|
if (g_fmapHIO.mRangeCheck && g_fmapHIO.mRangeCheckDrawPriority) {
|
|
drawDebugStageArea();
|
|
}
|
|
|
|
if (mMapDrawFlag && mpSpotTexture) {
|
|
if (g_fmapHIO.mDisplayRegionGrid && g_fmapHIO.mRegionGridWidth > 0.0f) {
|
|
regionGridDraw();
|
|
}
|
|
|
|
stageTextureDraw();
|
|
|
|
if (g_fmapHIO.mDisplayStageOrigin) {
|
|
stageOriginDraw();
|
|
}
|
|
}
|
|
|
|
if (g_fmapHIO.mDisplayRegionOrigin) {
|
|
regionOriginDraw();
|
|
}
|
|
|
|
if (g_fmapHIO.mDisplayWorldGrid && g_fmapHIO.mWorldGridWidth > 0.0f) {
|
|
worldGridDraw();
|
|
}
|
|
|
|
if (g_fmapHIO.mDisplayWorldOrigin) {
|
|
worldOriginDraw();
|
|
}
|
|
|
|
if (g_fmapHIO.mScrollRangeDisplay) {
|
|
scrollAreaDraw();
|
|
}
|
|
|
|
blinkMove(30);
|
|
moveLightDropAnime();
|
|
setCenterPosX(field_0x11dc, 1);
|
|
drawIcon(mTransX, mTransZ, mAlphaRate, field_0xfa8 * mSpotTextureFadeAlpha);
|
|
|
|
if (g_fmapHIO.mRangeCheck && !g_fmapHIO.mRangeCheckDrawPriority) {
|
|
drawDebugRegionArea();
|
|
}
|
|
|
|
grafPort->scissor(scissorLeft, scissorTop, scissorWidth, scissorHeight);
|
|
grafPort->setScissor();
|
|
|
|
if (isArrowDrawFlag()) {
|
|
f32 fVar2 = 0.0f;
|
|
f32 fVar3 = 0.0f;
|
|
f32 fVar4, fVar5;
|
|
|
|
if (mMapZoomRate > 1.0f && mMapZoomRate < 2.0f) {
|
|
f32 tmp = 2.0f - mMapZoomRate;
|
|
if (field_0x11a4 != 0.0f) {
|
|
fVar2 = field_0x11a4 * tmp;
|
|
}
|
|
if (field_0x11a8 != 0.0f) {
|
|
fVar3 = field_0x11a8 * tmp;
|
|
}
|
|
fVar4 = field_0x11ac;
|
|
fVar5 = field_0x11b0;
|
|
} else {
|
|
fVar4 = mStageTransX;
|
|
fVar5 = mStageTransZ;
|
|
}
|
|
|
|
calcAllMapPos2D((mArrowPos3DX + control_xpos + fVar2) - fVar4,
|
|
(mArrowPos3DZ + control_ypos + fVar3) - fVar5, &mArrowPos2DX,
|
|
&mArrowPos2DY);
|
|
|
|
field_0x11e0 -= g_fmapHIO.mCursorSpeed;
|
|
|
|
if (field_0x11e0 < 0.0f) {
|
|
field_0x11e0 += 360.0f;
|
|
}
|
|
|
|
mpPointParent->getPanePtr()->rotate(mpPointParent->getSizeX() / 2.0f,
|
|
mpPointParent->getSizeY() / 2.0f, ROTATE_Z,
|
|
field_0x11e0);
|
|
|
|
if (g_fmapHIO.mCursorDebugON) {
|
|
mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale);
|
|
|
|
static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'};
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
J2DPicture* picture = static_cast<J2DPicture*>(mpPointScreen->search(cur_tag[i]));
|
|
picture->setBlackWhite(g_fmapHIO.mCursorBlack, g_fmapHIO.mCursorWhite);
|
|
}
|
|
}
|
|
|
|
mpPointParent->setAlphaRate(mArrowAlpha * mSpotTextureFadeAlpha);
|
|
mpPointParent->translate(mArrowPos2DX + mTransX, mArrowPos2DY + mTransZ);
|
|
mpPointScreen->draw(0.0f, 0.0f, grafPort);
|
|
}
|
|
|
|
if (g_fmapHIO.mDisplayReferenceArea) {
|
|
J2DDrawFrame(mTransX + getMapAreaGlobalPosX(), mTransZ + getMapAreaGlobalPosY(),
|
|
getMapAreaSizeX(), getMapAreaSizeY(), JUtility::TColor(255, 255, 255, 255), 6);
|
|
J2DFillBox(getMapAreaGlobalCenterPosX() - 3.0f, getMapAreaGlobalCenterPosY() - 3.0f, 6.0f,
|
|
6.0f, JUtility::TColor(255, 255, 255, 255));
|
|
}
|
|
|
|
if (field_0x122d) {
|
|
mpMeterHaihai->drawHaihai(field_0x122d);
|
|
field_0x122d = 0;
|
|
}
|
|
|
|
if (g_fmapHIO.mRangeCheck && !g_fmapHIO.mRangeCheckDrawPriority) {
|
|
drawDebugStageArea();
|
|
}
|
|
|
|
mpBackTex->setBlackWhite(field_0x1208, field_0x120c);
|
|
mpBackTex->setAlpha((mAlphaRate * 255.0f) * g_fmapHIO.mBackgroundFrontAlpha * mBackAlpha);
|
|
mpBackTex->draw(mTransX + mDoGph_gInf_c::getMinXF(),
|
|
mTransZ + mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(),
|
|
mDoGph_gInf_c::getHeightF(), false, false, false);
|
|
}
|
|
|
|
/* 801D0804-801D0AC8 1CB144 02C4+00 0/0 1/1 0/0 .text
|
|
* setRegionTexData__18dMenu_Fmap2DBack_cFUcP7ResTIMGfffffffff */
|
|
void dMenu_Fmap2DBack_c::setRegionTexData(u8 i_regionNo, ResTIMG* i_timg, f32 i_originX,
|
|
f32 i_originZ, f32 i_posX, f32 i_posZ, f32 i_scale,
|
|
f32 i_scrollMinX, f32 i_scrollMinZ, f32 i_scrollMaxX,
|
|
f32 i_scrollMaxZ) {
|
|
if (i_scale == 0.0f) {
|
|
i_scale = 100.0f;
|
|
}
|
|
|
|
mpAreaTex[i_regionNo] = new J2DPicture(i_timg);
|
|
JUT_ASSERT(763, mpAreaTex[i_regionNo] != 0);
|
|
|
|
mRegionOriginX[i_regionNo] = i_originX;
|
|
mRegionOriginZ[i_regionNo] = i_originZ;
|
|
mRegionTexData[i_regionNo].mScale = i_scale * 100.0f;
|
|
|
|
f32 width = i_timg->width;
|
|
f32 height = i_timg->height;
|
|
|
|
f32 min_x = (mRegionOriginX[i_regionNo] + i_posX) -
|
|
((width * 0.5f) * mRegionTexData[i_regionNo].mScale);
|
|
f32 min_z = (mRegionOriginZ[i_regionNo] + i_posZ) -
|
|
((height * 0.5f) * mRegionTexData[i_regionNo].mScale);
|
|
f32 max_x = (mRegionOriginX[i_regionNo] + i_posX) +
|
|
((width * 0.5f) * mRegionTexData[i_regionNo].mScale);
|
|
f32 max_z = (mRegionOriginZ[i_regionNo] + i_posZ) +
|
|
((height * 0.5f) * mRegionTexData[i_regionNo].mScale);
|
|
|
|
mRegionTexData[i_regionNo].mMinX = min_x;
|
|
mRegionTexData[i_regionNo].mMinZ = min_z;
|
|
mRegionTexData[i_regionNo].mMaxX = max_x;
|
|
mRegionTexData[i_regionNo].mMaxZ = max_z;
|
|
|
|
mRegionScrollMinX[i_regionNo] = i_scrollMinX;
|
|
mRegionScrollMinZ[i_regionNo] = i_scrollMinZ;
|
|
mRegionScrollMaxX[i_regionNo] = i_scrollMaxX;
|
|
mRegionScrollMaxZ[i_regionNo] = i_scrollMaxZ;
|
|
|
|
bool first = false;
|
|
|
|
mTexMinX = 0.0f;
|
|
mTexMinZ = 0.0f;
|
|
mTexMaxX = 0.0f;
|
|
mTexMaxZ = 0.0f;
|
|
|
|
bool bVar14 = false;
|
|
for (int i = 0; i < 8; i++) {
|
|
if (mpAreaTex[i] != NULL) {
|
|
if (!first) {
|
|
mTexMinX = mRegionTexData[i].mMinX;
|
|
mTexMinZ = mRegionTexData[i].mMinZ;
|
|
mTexMaxX = mRegionTexData[i].mMaxX;
|
|
mTexMaxZ = mRegionTexData[i].mMaxZ;
|
|
first = true;
|
|
} else {
|
|
if (mTexMinX > mRegionTexData[i].mMinX) {
|
|
mTexMinX = mRegionTexData[i].mMinX;
|
|
}
|
|
if (mTexMinZ > mRegionTexData[i].mMinZ) {
|
|
mTexMinZ = mRegionTexData[i].mMinZ;
|
|
}
|
|
if (mTexMaxX < mRegionTexData[i].mMaxX) {
|
|
mTexMaxX = mRegionTexData[i].mMaxX;
|
|
}
|
|
if (mTexMaxZ < mRegionTexData[i].mMaxZ) {
|
|
mTexMaxZ = mRegionTexData[i].mMaxZ;
|
|
}
|
|
}
|
|
}
|
|
if ((!bVar14) && (field_0x1230[i] == 0xff)) {
|
|
field_0x1230[i] = i_regionNo;
|
|
bVar14 = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D0AC8-801D0BF8 1CB408 0130+00 1/1 1/1 0/0 .text calcAllMapPos__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPos() {
|
|
bool set = false;
|
|
calcAllMapScaleRate();
|
|
for (int i = 0; i < 8; i++) {
|
|
if (mpAreaTex[i] != NULL) {
|
|
f32 min_x, min_y, max_x, max_y;
|
|
|
|
calcAllMapPos2DFirst(mRegionTexData[i].mMinX, mRegionTexData[i].mMinZ, &min_x, &min_y);
|
|
calcAllMapPos2DFirst(mRegionTexData[i].mMaxX, mRegionTexData[i].mMaxZ, &max_x, &max_y);
|
|
mRegionMinMapX[i] = min_x;
|
|
mRegionMinMapY[i] = min_y;
|
|
mRegionMapSizeX[i] = max_x - min_x;
|
|
mRegionMapSizeY[i] = max_y - min_y;
|
|
|
|
calcAllMapPos2DFirst(mRegionScrollMinX[i], mRegionScrollMinZ[i],
|
|
&mRegionScrollMapMinX[i], &mRegionScrollMapMinY[i]);
|
|
calcAllMapPos2DFirst(mRegionScrollMaxX[i], mRegionScrollMaxZ[i],
|
|
&mRegionScrollMapMaxX[i], &mRegionScrollMapMaxY[i]);
|
|
|
|
onShowRegionFlag(i);
|
|
|
|
if (!set) {
|
|
set = true;
|
|
calcRenderingScale();
|
|
calcRenderingPos();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D0BF8-801D0C6C 1CB538 0074+00 1/1 0/0 0/0 .text calcAllMapScaleRate__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::calcAllMapScaleRate() {
|
|
f32 width = mTexMaxX - mTexMinX;
|
|
f32 height = mTexMaxZ - mTexMinZ;
|
|
|
|
f32 size = width;
|
|
if (width < height) {
|
|
size = height;
|
|
}
|
|
|
|
mAllMapScaleRate = getMapAreaSizeX() / size;
|
|
|
|
return mAllMapScaleRate;
|
|
}
|
|
|
|
/* 801D0C6C-801D0D18 1CB5AC 00AC+00 1/1 0/0 0/0 .text
|
|
* calcAllMapPos2DFirst__18dMenu_Fmap2DBack_cFffPfPf */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPos2DFirst(f32 i_texPosX, f32 i_texPosZ, f32* o_posX,
|
|
f32* o_posY) {
|
|
f32 pos_x = (mAllMapScaleRate * (i_texPosX - (mTexMaxX + mTexMinX) * 0.5f));
|
|
f32 pos_y = (mAllMapScaleRate * (i_texPosZ - (mTexMaxZ + mTexMinZ) * 0.5f));
|
|
|
|
*o_posX = pos_x + getMapAreaGlobalCenterPosX();
|
|
*o_posY = pos_y + getMapAreaGlobalCenterPosY();
|
|
}
|
|
|
|
/* 801D0D18-801D0D50 1CB658 0038+00 13/13 1/1 0/0 .text
|
|
* calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPf */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* o_posX, f32* o_posY) {
|
|
calcAllMapPos2D(param_0, param_1, o_posX, o_posY, field_0xf0c[mRegionCursor],
|
|
field_0xf2c[mRegionCursor], mZoom);
|
|
}
|
|
|
|
/* 801D0D50-801D0E00 1CB690 00B0+00 0/0 1/1 0/0 .text
|
|
* calcAllMapPos2D__18dMenu_Fmap2DBack_cFPCcffPfPf */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPos2D(char const* param_0, f32 param_1, f32 param_2,
|
|
f32* o_posX, f32* o_posY) {
|
|
f32 tmp1, tmp2;
|
|
calcOffset(mRegionCursor, param_0, &tmp1, &tmp2);
|
|
calcAllMapPos2D(param_1 + tmp1, param_2 + tmp2, o_posX, o_posY, field_0xf0c[mRegionCursor],
|
|
field_0xf2c[mRegionCursor], mZoom);
|
|
}
|
|
|
|
/* 801D0E00-801D0F7C 1CB740 017C+00 3/3 0/0 0/0 .text
|
|
* calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPffff */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* param_2, f32* param_3,
|
|
f32 param_4, f32 param_5, f32 i_zoom) {
|
|
getMapAreaSizeX();
|
|
getMapAreaSizeY();
|
|
|
|
f32 tmp1 = (mRegionTexData[mRegionCursor].mMinX + mRegionTexData[mRegionCursor].mMaxX) * 0.5f;
|
|
f32 tmp2 = (mRegionTexData[mRegionCursor].mMinZ + mRegionTexData[mRegionCursor].mMaxZ) * 0.5f;
|
|
f32 tmp3 = mRegionMinMapX[mRegionCursor] + param_4 + (mRegionMapSizeX[mRegionCursor] * i_zoom) * 0.5f;
|
|
f32 tmp4 = mRegionMinMapY[mRegionCursor] + param_5 + (mRegionMapSizeY[mRegionCursor] * i_zoom) * 0.5f;
|
|
|
|
f32 scaleRatio = (getPathScale(i_zoom) / getMapScissorAreaSizeRealY());
|
|
|
|
f32 tmp5 = (param_0 - tmp1) / scaleRatio;
|
|
*param_2 = tmp5 + tmp3;
|
|
tmp5 = (param_1 - tmp2) / scaleRatio;
|
|
*param_3 = tmp5 + tmp4;
|
|
}
|
|
|
|
/* 801D0F7C-801D1094 1CB8BC 0118+00 8/8 3/3 0/0 .text
|
|
* calcAllMapPosWorld__18dMenu_Fmap2DBack_cFffPfPf */
|
|
void dMenu_Fmap2DBack_c::calcAllMapPosWorld(f32 param_0, f32 param_1, f32* param_2, f32* param_3) {
|
|
f32 tmp1 = (mRegionTexData[mRegionCursor].mMinX + mRegionTexData[mRegionCursor].mMaxX) * 0.5f;
|
|
f32 tmp2 = (mRegionTexData[mRegionCursor].mMinZ + mRegionTexData[mRegionCursor].mMaxZ) * 0.5f;
|
|
f32 tmp3 = (param_0 - ((mRegionMinMapX[mRegionCursor] + field_0xf0c[mRegionCursor]) +
|
|
mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f));
|
|
f32 tmp4 = (param_1 - ((mRegionMinMapY[mRegionCursor] + field_0xf2c[mRegionCursor]) +
|
|
mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f));
|
|
|
|
f32 tmp5 = field_0xf98 / getMapScissorAreaSizeRealY();
|
|
|
|
*param_2 = tmp1 + (tmp3 * tmp5);
|
|
*param_3 = tmp2 + (tmp4 * tmp5);
|
|
}
|
|
|
|
/* 801D1094-801D10F4 1CB9D4 0060+00 0/0 1/1 0/0 .text setSpotPane__18dMenu_Fmap2DBack_cFP7ResTIMG
|
|
*/
|
|
void dMenu_Fmap2DBack_c::setSpotPane(ResTIMG* i_timg) {
|
|
if (mpSpotTexture == NULL) {
|
|
mpSpotTexture = new J2DPicture(i_timg);
|
|
JUT_ASSERT(1169, mpSpotTexture != 0);
|
|
}
|
|
}
|
|
|
|
/* 801D10F4-801D1148 1CBA34 0054+00 1/1 1/1 0/0 .text deleteSpotPane__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::deleteSpotPane() {
|
|
if (mpSpotTexture != NULL) {
|
|
delete mpSpotTexture;
|
|
mpSpotTexture = NULL;
|
|
}
|
|
}
|
|
|
|
/* 801D1148-801D1478 1CBA88 0330+00 0/0 8/8 0/0 .text zoomMapCalc__18dMenu_Fmap2DBack_cFf
|
|
*/
|
|
void dMenu_Fmap2DBack_c::zoomMapCalc(f32 i_zoom) {
|
|
mMapZoomRate = i_zoom;
|
|
field_0xfa8 = i_zoom;
|
|
mZoom = getAllMapZoomRate() +
|
|
(i_zoom * (getRegionMapZoomRate(mRegionCursor) - getAllMapZoomRate()));
|
|
calcRenderingScale();
|
|
|
|
f32 centerX = getMapAreaGlobalCenterPosX();
|
|
f32 centerY = getMapAreaGlobalCenterPosY();
|
|
if (g_fmapHIO.field_0x308 == false) {
|
|
f32 region_centerX = mRegionMinMapX[mRegionCursor] + (mRegionMapSizeX[mRegionCursor] * 0.5f);
|
|
f32 region_centerY = mRegionMinMapY[mRegionCursor] + (mRegionMapSizeY[mRegionCursor] * 0.5f);
|
|
field_0xf0c[mRegionCursor] = region_centerX + (i_zoom * (centerX - region_centerX)) -
|
|
(mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
field_0xf2c[mRegionCursor] = region_centerY + (i_zoom * (centerY - region_centerY)) -
|
|
(mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
} else {
|
|
f32 dVar12 = (mRegionScrollMapMinX[mRegionCursor] + mRegionScrollMapMaxX[mRegionCursor]) * 0.5f;
|
|
f32 dVar11 = (mRegionScrollMapMinY[mRegionCursor] + mRegionScrollMapMaxY[mRegionCursor]) * 0.5f;
|
|
|
|
f32 tmp = (mRegionMinMapY[mRegionCursor] + (mRegionMapSizeY[mRegionCursor] * 0.5f)) - dVar11;
|
|
|
|
f32 tmp2 = (dVar12 + (i_zoom * (centerX - dVar12)));
|
|
f32 tmp3 = (((mRegionMinMapX[mRegionCursor] + mRegionMapSizeX[mRegionCursor] * 0.5f) - dVar12));
|
|
field_0xf0c[mRegionCursor] =
|
|
(((tmp2 + (tmp3 * mZoom))) - mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
|
|
field_0xf2c[mRegionCursor] =
|
|
(((dVar11 + (i_zoom * (centerY - dVar11))) + tmp * mZoom) -
|
|
mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
if (i != mRegionCursor) {
|
|
field_0xf0c[i] =
|
|
field_0xf0c[mRegionCursor] +
|
|
(mRegionMinMapX[i] - mRegionMinMapX[mRegionCursor]) * (mZoom - getAllMapZoomRate());
|
|
field_0xf2c[i] =
|
|
field_0xf2c[mRegionCursor] +
|
|
(mRegionMinMapY[i] - mRegionMinMapY[mRegionCursor]) * (mZoom - getAllMapZoomRate());
|
|
}
|
|
}
|
|
|
|
if (i_zoom == 1.0f) {
|
|
for (int i = 0; i < 8; i++) {
|
|
field_0xf4c[i] = field_0xf0c[i];
|
|
field_0xf6c[i] = field_0xf2c[i];
|
|
}
|
|
}
|
|
|
|
calcRenderingPos();
|
|
setSpotCursor(mSpotCursor);
|
|
|
|
field_0xfb8 =
|
|
((mRegionMapSizeX[mRegionCursor] + (i_zoom * (getMapAreaSizeX() - mRegionMapSizeX[mRegionCursor]))) /
|
|
getMapAreaSizeX());
|
|
}
|
|
|
|
/* 801D1478-801D1858 1CBDB8 03E0+00 0/0 10/10 0/0 .text zoomMapCalc2__18dMenu_Fmap2DBack_cFf */
|
|
void dMenu_Fmap2DBack_c::zoomMapCalc2(f32 param_0) {
|
|
f32 spotZoomRate = getSpotMapZoomRate();
|
|
f32 regionZoomRate = getRegionMapZoomRate(mRegionCursor);
|
|
mZoom = regionZoomRate + (param_0 * (spotZoomRate - regionZoomRate));
|
|
|
|
if (mArrowPos3DX + control_xpos < mRegionScrollMinX[mRegionCursor]) {
|
|
if (field_0x11a4 == 0.0f) {
|
|
field_0x11a4 = (mArrowPos3DX + control_xpos) - mRegionScrollMinX[mRegionCursor];
|
|
}
|
|
control_xpos = mRegionScrollMinX[mRegionCursor] - mArrowPos3DX;
|
|
} else {
|
|
if (mArrowPos3DX + control_xpos > mRegionScrollMaxX[mRegionCursor]) {
|
|
if (field_0x11a4 == 0.0f) {
|
|
field_0x11a4 = (mArrowPos3DX + control_xpos) - mRegionScrollMaxX[mRegionCursor];
|
|
}
|
|
control_xpos = mRegionScrollMaxX[mRegionCursor] - mArrowPos3DX;
|
|
}
|
|
}
|
|
|
|
if (mArrowPos3DZ + control_ypos < mRegionScrollMinZ[mRegionCursor]) {
|
|
if (field_0x11a8 == 0.0f) {
|
|
field_0x11a8 = (mArrowPos3DZ + control_ypos) - mRegionScrollMinZ[mRegionCursor];
|
|
}
|
|
control_ypos = mRegionScrollMinZ[mRegionCursor] - this->mArrowPos3DZ;
|
|
} else {
|
|
if (mArrowPos3DZ + control_ypos > mRegionScrollMaxZ[mRegionCursor]) {
|
|
if (field_0x11a8 == 0.0f) {
|
|
field_0x11a8 = (mArrowPos3DZ + control_ypos) - mRegionScrollMaxZ[mRegionCursor];
|
|
}
|
|
control_ypos = mRegionScrollMaxZ[mRegionCursor] - mArrowPos3DZ;
|
|
}
|
|
}
|
|
|
|
calcRenderingScale();
|
|
|
|
mMapZoomRate = param_0 + 1.0f;
|
|
f32 centerX = getMapAreaGlobalCenterPosX();
|
|
f32 centerY = getMapAreaGlobalCenterPosY();
|
|
if (g_fmapHIO.field_0x308 == false) {
|
|
field_0xf0c[mRegionCursor] = (centerX - (mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f)) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
field_0xf2c[mRegionCursor] = (centerY - (mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f)) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
} else {
|
|
f32 tmp1 = (mRegionMinMapY[mRegionCursor] + (mRegionMapSizeY[mRegionCursor] * 0.5f)) -
|
|
((mRegionScrollMapMinY[mRegionCursor] + mRegionScrollMapMaxY[mRegionCursor]) * 0.5f);
|
|
|
|
f32 tmp2 = ((mRegionMinMapX[mRegionCursor] + mRegionMapSizeX[mRegionCursor] * 0.5f) -
|
|
(mRegionScrollMapMinX[mRegionCursor] + mRegionScrollMapMaxX[mRegionCursor]) * 0.5f);
|
|
|
|
field_0xf0c[mRegionCursor] =
|
|
((centerX + (tmp2 * mZoom)) - mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
field_0xf2c[mRegionCursor] =
|
|
((centerY + (tmp1 * mZoom)) - mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
if (i != mRegionCursor) {
|
|
field_0xf0c[i] =
|
|
field_0xf0c[mRegionCursor] +
|
|
(mRegionMinMapX[i] - mRegionMinMapX[mRegionCursor]) * (mZoom - getAllMapZoomRate());
|
|
field_0xf2c[i] =
|
|
field_0xf2c[mRegionCursor] +
|
|
(mRegionMinMapY[i] - mRegionMinMapY[mRegionCursor]) * (mZoom - getAllMapZoomRate());
|
|
}
|
|
}
|
|
|
|
scrollCalc(param_0);
|
|
|
|
if (param_0 == 1.0f) {
|
|
field_0x11b4 = (mArrowPos3DX + control_xpos) - mStageTransX;
|
|
field_0x11b8 = (mArrowPos3DZ + control_ypos) - mStageTransZ;
|
|
field_0x11a4 = 0.0f;
|
|
field_0x11a8 = 0.0f;
|
|
}
|
|
}
|
|
|
|
/* 801D1858-801D1AA4 1CC198 024C+00 0/0 1/1 0/0 .text zoomMapCalcHIO__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::zoomMapCalcHIO() {
|
|
if (mZoom != getSpotMapZoomRate()) {
|
|
f32 spotZoomRate = getSpotMapZoomRate();
|
|
f32 regionZoomRate = getRegionMapZoomRate(mRegionCursor);
|
|
mZoom = getSpotMapZoomRate();
|
|
calcRenderingScale();
|
|
|
|
f32 centerX = getMapAreaGlobalCenterPosX();
|
|
f32 centerY = getMapAreaGlobalCenterPosY();
|
|
if (g_fmapHIO.field_0x308 == false) {
|
|
field_0xf0c[mRegionCursor] =
|
|
(centerX - (mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f)) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
field_0xf2c[mRegionCursor] =
|
|
(centerY - (mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f)) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
} else {
|
|
f32 tmp1 = (mRegionMinMapY[mRegionCursor] + (mRegionMapSizeY[mRegionCursor] * 0.5f)) -
|
|
((mRegionScrollMapMinY[mRegionCursor] + mRegionScrollMapMaxY[mRegionCursor]) * 0.5f);
|
|
|
|
f32 tmp2 = ((mRegionMinMapX[mRegionCursor] + mRegionMapSizeX[mRegionCursor] * 0.5f) -
|
|
(mRegionScrollMapMinX[mRegionCursor] + mRegionScrollMapMaxX[mRegionCursor]) * 0.5f);
|
|
|
|
field_0xf0c[mRegionCursor] = ((centerX + (tmp2 * mZoom)) -
|
|
mRegionMapSizeX[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapX[mRegionCursor];
|
|
field_0xf2c[mRegionCursor] = ((centerY + (tmp1 * mZoom)) -
|
|
mRegionMapSizeY[mRegionCursor] * mZoom * 0.5f) -
|
|
mRegionMinMapY[mRegionCursor];
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
if (i != mRegionCursor) {
|
|
field_0xf0c[i] =
|
|
field_0xf0c[mRegionCursor] + (mRegionMinMapX[i] - mRegionMinMapX[mRegionCursor]) *
|
|
(mZoom - getAllMapZoomRate());
|
|
field_0xf2c[i] =
|
|
field_0xf2c[mRegionCursor] + (mRegionMinMapY[i] - mRegionMinMapY[mRegionCursor]) *
|
|
(mZoom - getAllMapZoomRate());
|
|
}
|
|
}
|
|
|
|
scrollCalc(1.0f);
|
|
}
|
|
}
|
|
|
|
/* 801D1AA4-801D1D50 1CC3E4 02AC+00 2/2 0/0 0/0 .text scrollCalc__18dMenu_Fmap2DBack_cFf
|
|
*/
|
|
void dMenu_Fmap2DBack_c::scrollCalc(f32 param_0) {
|
|
f32 tmp1, tmp2;
|
|
calcAllMapPos2D(mArrowPos3DX + control_xpos, mArrowPos3DZ + control_ypos, &tmp1, &tmp2,
|
|
field_0xf4c[mRegionCursor], field_0xf6c[mRegionCursor],
|
|
getRegionMapZoomRate(mRegionCursor));
|
|
|
|
f32 centerX = getMapAreaGlobalCenterPosX();
|
|
f32 centerY = getMapAreaGlobalCenterPosY();
|
|
|
|
f32 tmp3, tmp4;
|
|
calcAllMapPosWorld(tmp1 + (param_0 * (centerX - tmp1)), tmp2 + (param_0 * (centerY - tmp2)),
|
|
&tmp3, &tmp4);
|
|
|
|
mStageTransX = (mArrowPos3DX + control_xpos) - tmp3;
|
|
mStageTransZ = (mArrowPos3DZ + control_ypos) - tmp4;
|
|
|
|
field_0x11ac = mStageTransX;
|
|
field_0x11b0 = mStageTransZ;
|
|
|
|
if ((((field_0x11a4 != 0.0f) || (field_0x11a8 != 0.0f)) && (mMapZoomRate > 1.0f)) &&
|
|
(mMapZoomRate < 2.0f))
|
|
{
|
|
f32 local_40 = 2.0f - mMapZoomRate;
|
|
|
|
//!@bug local_44 or local_48 can be uninitialized if field_0x11a4 or field_0x11a8 is not 0
|
|
f32 local_44, local_48;
|
|
|
|
if (field_0x11a4 != 0.0f) {
|
|
local_44 = field_0x11a4 * local_40;
|
|
}
|
|
|
|
if (field_0x11a8 != 0.0f) {
|
|
local_48 = field_0x11a8 * local_40;
|
|
}
|
|
|
|
calcAllMapPos2D(mArrowPos3DX + control_xpos + local_44,
|
|
mArrowPos3DZ + control_ypos + local_48, &tmp1, &tmp2,
|
|
field_0xf4c[mRegionCursor], field_0xf6c[mRegionCursor],
|
|
getRegionMapZoomRate(mRegionCursor));
|
|
|
|
f32 local_54, local_58;
|
|
calcAllMapPosWorld(tmp1 + (param_0 * (centerX - tmp1)), tmp2 + (param_0 * (centerY - tmp2)),
|
|
&local_54, &local_58);
|
|
|
|
field_0x11ac = (mArrowPos3DX + control_xpos + local_44) - local_54;
|
|
field_0x11b0 = (mArrowPos3DZ + control_ypos + local_48) - local_58;
|
|
}
|
|
|
|
if (param_0 == 0.0f) {
|
|
field_0xfd4 = 0.0f;
|
|
field_0xfd0 = 0.0f;
|
|
field_0xfdc = 0.0f;
|
|
field_0xfd8 = 0.0f;
|
|
} else if (param_0 == 1.0f) {
|
|
field_0xfd0 = mStageTransX;
|
|
field_0xfd4 = mStageTransZ;
|
|
}
|
|
|
|
calcRenderingPos();
|
|
}
|
|
|
|
/* 801D1D50-801D1D74 1CC690 0024+00 0/0 1/1 0/0 .text mapBlink__18dMenu_Fmap2DBack_cFPs
|
|
*/
|
|
void dMenu_Fmap2DBack_c::mapBlink(s16* param_0) {
|
|
*param_0 += 1;
|
|
if (*param_0 >= 30) {
|
|
*param_0 -= 30;
|
|
}
|
|
}
|
|
|
|
/* 801D1D74-801D1DC4 1CC6B4 0050+00 1/1 5/5 0/0 .text setSpotCursor__18dMenu_Fmap2DBack_cFUc */
|
|
void dMenu_Fmap2DBack_c::setSpotCursor(u8 param_0) {
|
|
this->mSpotCursor = param_0;
|
|
|
|
f32 tmp1, tmp2;
|
|
getStageOriginPath(param_0, &tmp1, &tmp2);
|
|
calcAllMapPos2D(tmp1, tmp2, &field_0x1184, &field_0x1188);
|
|
}
|
|
|
|
/* 801D1DC4-801D2100 1CC704 033C+00 0/0 1/1 0/0 .text
|
|
* allmap_move2__18dMenu_Fmap2DBack_cFP9STControl */
|
|
void dMenu_Fmap2DBack_c::allmap_move2(STControl* param_0) {
|
|
f32 tmp1, tmp2;
|
|
calcAllMapPosWorld(getMapScissorAreaLX(), getMapScissorAreaLY(), &tmp1, &tmp2);
|
|
|
|
f32 local_50, local_54;
|
|
calcAllMapPosWorld(getMapScissorAreaLX() + getMapScissorAreaSizeRealX(),
|
|
getMapScissorAreaLY() + getMapScissorAreaSizeRealY(), &local_50, &local_54);
|
|
|
|
f32 scrollSpeed1 = g_fmapHIO.mScrollSpeedSlowBound < g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound :
|
|
g_fmapHIO.mScrollSpeedFastBound;
|
|
f32 scrollSpeed2 = g_fmapHIO.mScrollSpeedSlowBound > g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound :
|
|
g_fmapHIO.mScrollSpeedFastBound;
|
|
|
|
f32 stickValue = param_0->getValueStick();
|
|
if (stickValue >= scrollSpeed1) {
|
|
s16 angle = param_0->getAngleStick();
|
|
f32 local_68 = (mTexMaxX - mTexMinX);
|
|
f32 zoomRate = local_68 / getAllMapZoomRate();
|
|
|
|
f32 speed = ((stickValue < scrollSpeed2 ? g_fmapHIO.mScrollSpeedWorldSlow :
|
|
g_fmapHIO.mScrollSpeedWorldFast) /
|
|
100.0f);
|
|
|
|
f32 delta_y = (speed * zoomRate) * cM_ssin(angle);
|
|
f32 delta_x = (speed * zoomRate) * cM_scos(angle);
|
|
|
|
control_xpos = control_xpos + delta_y;
|
|
control_ypos = control_ypos + delta_x;
|
|
}
|
|
|
|
if (mArrowPos3DX + control_xpos < tmp1) {
|
|
control_xpos = tmp1 - mArrowPos3DX;
|
|
}
|
|
|
|
if (mArrowPos3DX + control_xpos > local_50) {
|
|
control_xpos = local_50 - mArrowPos3DX;
|
|
}
|
|
|
|
if (mArrowPos3DZ + control_ypos < tmp2) {
|
|
control_ypos = tmp2 - mArrowPos3DZ;
|
|
}
|
|
|
|
if (mArrowPos3DZ + control_ypos > local_54) {
|
|
control_ypos = local_54 - mArrowPos3DZ;
|
|
}
|
|
|
|
calcRenderingScale();
|
|
calcRenderingPos();
|
|
calcAllMapPos();
|
|
|
|
f32 local_7c, local_80;
|
|
calcAllMapPos2D((mArrowPos3DX + control_xpos) - mStageTransX,
|
|
(mArrowPos3DZ + control_ypos) - mStageTransZ, &local_7c, &local_80);
|
|
|
|
mSelectRegion = 0xff;
|
|
for (int i = 7; i >= 0; i--) {
|
|
int val = field_0x1230[i];
|
|
if (val != 0xff && val != 7) {
|
|
const ResTIMG* timg = mpAreaTex[val]->getTexture(0)->getTexInfo();
|
|
bool pixel = dMeter2Info_getPixel(
|
|
local_7c, local_80, (mRegionMinMapX[val] + field_0xf0c[val] + mTransX),
|
|
(mRegionMinMapY[val] + field_0xf2c[val] + mTransZ),
|
|
(mRegionMapSizeX[val] * mZoom), (mRegionMapSizeY[val] * mZoom), timg);
|
|
if (pixel) {
|
|
mSelectRegion = val;
|
|
}
|
|
}
|
|
if (mSelectRegion != 0xff)
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801D2100-801D241C 1CCA40 031C+00 1/1 3/3 0/0 .text setIcon2DPos__18dMenu_Fmap2DBack_cFUcfffUcb
|
|
*/
|
|
void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, f32 param_1, f32 param_2, f32 param_3, u8 param_4,
|
|
bool param_5) {
|
|
f32 local_68, local_6c;
|
|
|
|
f32 local_70 = mMapZoomRate;
|
|
u8 uVar9 = 1;
|
|
if (param_0 == 17) {
|
|
uVar9 = 2;
|
|
|
|
f32 local_74, local_78;
|
|
calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &local_74,
|
|
&local_78);
|
|
|
|
f32 local_7c, local_80;
|
|
calcAllMapPos2D(local_74 + mStageTransX, local_78 + mStageTransZ, &local_7c, &local_80);
|
|
|
|
f32 dVar11 = getMapScissorAreaCenterPosX() - local_7c;
|
|
f32 dVar10 = getMapScissorAreaCenterPosY() - local_80;
|
|
|
|
if (mRegionCursor + 1 == dComIfGp_getNowLevel()) {
|
|
calcAllMapPos2D(param_1 - mStageTransX, param_2 - mStageTransZ, &local_68, &local_6c);
|
|
f32 tmp1 = (dVar10 + (mRegionMinMapY[mRegionCursor] + field_0xf2c[mRegionCursor])) +
|
|
((mRegionMapSizeY[mRegionCursor] * mZoom) / 2.0f);
|
|
f32 tmp2 = (dVar11 + (mRegionMinMapX[mRegionCursor] + field_0xf0c[mRegionCursor])) +
|
|
((mRegionMapSizeX[mRegionCursor] * mZoom) / 2.0f);
|
|
|
|
field_0x11e8 = local_68 - tmp2;
|
|
field_0x11ec = local_6c - tmp1;
|
|
} else {
|
|
f32 tmp1 = (dVar11 + (mRegionScrollMapMaxY[dComIfGp_getNowLevel() + 7] +
|
|
mRegionMapSizeY[dComIfGp_getNowLevel() + 7])) +
|
|
((mRegionMinMapY[dComIfGp_getNowLevel() + 7] * mZoom) / 2.0f);
|
|
f32 tmp2 = (dVar10 + (mRegionMinMapX[dComIfGp_getNowLevel() + 7] +
|
|
field_0xf0c[dComIfGp_getNowLevel() + 7])) +
|
|
((mRegionMapSizeX[dComIfGp_getNowLevel() + 7] * mZoom) / 2.0f);
|
|
local_68 = tmp1 + (field_0x11e8 * mZoom);
|
|
local_6c = tmp2 + (field_0x11ec * mZoom);
|
|
}
|
|
} else {
|
|
calcAllMapPos2D(param_1 - mStageTransX, param_2 - mStageTransZ, &local_68, &local_6c);
|
|
}
|
|
|
|
if (!param_5) {
|
|
if (param_0 == 1) {
|
|
local_70 = (mMapZoomRate * 0.5f) + 0.5f;
|
|
uVar9 = 2;
|
|
}
|
|
|
|
if (param_4 != 0) {
|
|
uVar9 = 3;
|
|
}
|
|
setIconInfo(param_0, local_68, local_6c, 1.0f, param_3, local_70, uVar9);
|
|
}
|
|
}
|
|
|
|
/* 801D241C-801D2454 1CCD5C 0038+00 0/0 2/2 0/0 .text
|
|
* setIcon2DPos__18dMenu_Fmap2DBack_cFUcPCcfffUcb */
|
|
void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, char const* param_1, f32 param_2, f32 param_3,
|
|
f32 param_4, u8 param_5, bool param_6) {
|
|
setIcon2DPos(param_0, mRegionCursor, param_1, param_2, param_3, param_4, param_5, param_6);
|
|
}
|
|
|
|
/* 801D2454-801D2508 1CCD94 00B4+00 1/1 0/0 0/0 .text
|
|
* setIcon2DPos__18dMenu_Fmap2DBack_cFUcUcPCcfffUcb */
|
|
void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, u8 param_1, char const* param_2, f32 param_3,
|
|
f32 param_4, f32 param_5, u8 param_6, bool param_7) {
|
|
f32 tmp1, tmp2;
|
|
calcOffset(param_1, param_2, &tmp1, &tmp2);
|
|
|
|
setIcon2DPos(param_0, param_3 + tmp1, param_4 + tmp2, param_5, param_6, param_7);
|
|
}
|
|
|
|
/* 801D2508-801D2658 1CCE48 0150+00 1/1 1/1 0/0 .text isShowRegion__18dMenu_Fmap2DBack_cFi */
|
|
int dMenu_Fmap2DBack_c::isShowRegion(int param_0) {
|
|
if (param_0 == 7) {
|
|
return 1;
|
|
}
|
|
|
|
if (g_fmapHIO.mAllRegionsUnlocked) {
|
|
if (isShowRegionFlag(param_0)) {
|
|
return 1;
|
|
}
|
|
} else {
|
|
if (g_fmapHIO.mDebugRegionBits[param_0] && isShowRegionFlag(param_0)) {
|
|
return 1;
|
|
}
|
|
if (param_0 == 6) {
|
|
if (isShowRegionFlag(3) && dComIfGs_isRegionBit(4)) {
|
|
return 1;
|
|
}
|
|
if (dComIfGp_getNowLevel() == 4) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
if (isShowRegionFlag(param_0) && dComIfGs_isRegionBit(param_0 + 1)) {
|
|
return 1;
|
|
}
|
|
if (param_0 + 1 == dComIfGp_getNowLevel()) {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 801D2658-801D2668 1CCF98 0010+00 2/2 0/0 0/0 .text getMapAreaGlobalPosX__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaGlobalPosX() {
|
|
return g_fmapHIO.mMapTopLeftPosX;
|
|
}
|
|
|
|
/* 801D2668-801D2678 1CCFA8 0010+00 2/2 0/0 0/0 .text getMapAreaGlobalPosY__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaGlobalPosY() {
|
|
return g_fmapHIO.mMapTopLeftPosY;
|
|
}
|
|
|
|
/* 801D2678-801D26C8 1CCFB8 0050+00 7/7 1/1 0/0 .text
|
|
* getMapAreaGlobalCenterPosX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosX() {
|
|
return getMapAreaGlobalPosX() + (getMapAreaSizeX() / 2.0f);
|
|
}
|
|
|
|
/* 801D26C8-801D2718 1CD008 0050+00 7/7 1/1 0/0 .text
|
|
* getMapAreaGlobalCenterPosY__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosY() {
|
|
return getMapAreaGlobalPosY() + (getMapAreaSizeY() / 2.0f);
|
|
}
|
|
|
|
/* 801D2718-801D2728 1CD058 0010+00 8/8 0/0 0/0 .text getMapAreaSizeX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaSizeX() {
|
|
return g_fmapHIO.mMapScale;
|
|
}
|
|
|
|
/* 801D2728-801D2738 1CD068 0010+00 6/6 0/0 0/0 .text getMapAreaSizeY__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapAreaSizeY() {
|
|
return g_fmapHIO.mMapScale;
|
|
}
|
|
|
|
/* 801D2738-801D2790 1CD078 0058+00 10/10 0/0 0/0 .text
|
|
* getMapScissorAreaLX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaLX() {
|
|
Mtx mtx;
|
|
Vec vec = mpMapArea->getGlobalVtx(mpMapArea->getPanePtr(), &mtx, 0, false, 0);
|
|
return vec.x;
|
|
}
|
|
|
|
/* 801D2790-801D27E8 1CD0D0 0058+00 9/9 0/0 0/0 .text getMapScissorAreaLY__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaLY() {
|
|
Mtx mtx;
|
|
Vec vec = mpMapArea->getGlobalVtx(mpMapArea->getPanePtr(), &mtx, 0, false, 0);
|
|
return vec.y;
|
|
}
|
|
|
|
/* 801D27E8-801D2860 1CD128 0078+00 2/2 0/0 0/0 .text
|
|
* getMapScissorAreaSizeX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeX() {
|
|
f32 scale = mpMapArea->getScaleX();
|
|
|
|
for (J2DPane* pane = mpMapArea->getPanePtr()->getParentPane(); pane != NULL;
|
|
pane = pane->getParentPane())
|
|
{
|
|
scale *= pane->getScaleX();
|
|
}
|
|
|
|
return scale * mpMapArea->getSizeX();
|
|
}
|
|
|
|
/* 801D2860-801D2880 1CD1A0 0020+00 8/8 0/0 0/0 .text
|
|
* getMapScissorAreaSizeRealX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealX() {
|
|
return getMapScissorAreaSizeX();
|
|
}
|
|
|
|
/* 801D2880-801D28D0 1CD1C0 0050+00 3/3 0/0 0/0 .text
|
|
* getMapScissorAreaCenterPosX__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosX() {
|
|
return getMapScissorAreaLX() + (getMapScissorAreaSizeRealX() / 2.0f);
|
|
}
|
|
|
|
/* 801D28D0-801D2920 1CD210 0050+00 3/3 0/0 0/0 .text
|
|
* getMapScissorAreaCenterPosY__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosY() {
|
|
return getMapScissorAreaLY() + (getMapScissorAreaSizeRealY() / 2.0f);
|
|
}
|
|
|
|
/* 801D2920-801D2998 1CD260 0078+00 2/2 0/0 0/0 .text
|
|
* getMapScissorAreaSizeY__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeY() {
|
|
f32 scale = mpMapArea->getScaleY();
|
|
|
|
for (J2DPane* pane = mpMapArea->getPanePtr()->getParentPane(); pane != NULL;
|
|
pane = pane->getParentPane())
|
|
{
|
|
scale *= pane->getScaleY();
|
|
}
|
|
|
|
return scale * mpMapArea->getSizeY();
|
|
}
|
|
|
|
/* 801D2998-801D29B8 1CD2D8 0020+00 11/11 0/0 0/0 .text
|
|
* getMapScissorAreaSizeRealY__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealY() {
|
|
return getMapScissorAreaSizeY();
|
|
}
|
|
|
|
/* 801D29B8-801D2A34 1CD2F8 007C+00 6/6 0/0 0/0 .text calcRenderingPos__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::calcRenderingPos() {
|
|
calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &mRenderingPosX,
|
|
&mRenderingPosZ);
|
|
|
|
mRenderingPosX += mStageTransX;
|
|
mRenderingPosZ += mStageTransZ;
|
|
}
|
|
|
|
/* 801D2A34-801D2AC8 1CD374 0094+00 7/7 0/0 0/0 .text calcRenderingScale__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
void dMenu_Fmap2DBack_c::calcRenderingScale() {
|
|
f32 xScale = (mTexMaxX - mTexMinX) / getMapAreaSizeX();
|
|
f32 yScale = (mTexMaxZ - mTexMinZ) / getMapAreaSizeY();
|
|
|
|
f32 scale = xScale;
|
|
if (xScale < yScale) {
|
|
scale = yScale;
|
|
}
|
|
|
|
mRenderingScale = scale / mZoom;
|
|
field_0xf98 = mRenderingScale * getMapScissorAreaSizeRealY();
|
|
}
|
|
|
|
/* 801D2AC8-801D2B5C 1CD408 0094+00 1/1 0/0 0/0 .text getPathScale__18dMenu_Fmap2DBack_cFf */
|
|
f32 dMenu_Fmap2DBack_c::getPathScale(f32 i_zoom) {
|
|
JUT_ASSERT(2204, i_zoom != 0.0f);
|
|
|
|
f32 xScale = (mTexMaxX - mTexMinX) / getMapAreaSizeX();
|
|
f32 yScale = (mTexMaxZ - mTexMinZ) / getMapAreaSizeY();
|
|
|
|
f32 scale = xScale;
|
|
if (xScale < yScale) {
|
|
scale = yScale;
|
|
}
|
|
|
|
return (scale * getMapScissorAreaSizeRealY()) / i_zoom;
|
|
}
|
|
|
|
/* 801D2B5C-801D2B64 1CD49C 0008+00 6/6 0/0 0/0 .text getAllMapZoomRate__18dMenu_Fmap2DBack_cFv */
|
|
f32 dMenu_Fmap2DBack_c::getAllMapZoomRate() {
|
|
return 1.0f;
|
|
}
|
|
|
|
/* 801D2B64-801D2C4C 1CD4A4 00E8+00 6/6 0/0 0/0 .text getRegionMapZoomRate__18dMenu_Fmap2DBack_cFi
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::getRegionMapZoomRate(int i_regionNo) {
|
|
f32 tmp1, tmp2;
|
|
|
|
if (g_fmapHIO.field_0x308 == false) {
|
|
tmp1 = getMapAreaSizeX() / mRegionMapSizeX[i_regionNo];
|
|
tmp2 = getMapAreaSizeY() / mRegionMapSizeY[i_regionNo];
|
|
} else {
|
|
tmp1 = getMapAreaSizeX() /
|
|
(mRegionScrollMapMaxX[mRegionCursor] - mRegionScrollMapMinX[mRegionCursor]);
|
|
tmp2 = getMapAreaSizeY() /
|
|
(mRegionScrollMapMaxY[mRegionCursor] - mRegionScrollMapMinY[mRegionCursor]);
|
|
}
|
|
|
|
if (tmp1 < tmp2) {
|
|
field_0x122e = false;
|
|
tmp2 = tmp1;
|
|
} else {
|
|
field_0x122e = true;
|
|
}
|
|
|
|
return tmp2;
|
|
}
|
|
|
|
/* 801D2C4C-801D2C88 1CD58C 003C+00 4/4 0/0 0/0 .text getSpotMapZoomRate__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
f32 dMenu_Fmap2DBack_c::getSpotMapZoomRate() {
|
|
f32 tmp1 = mTexMaxX - mTexMinX;
|
|
f32 tmp2 = mTexMaxZ - mTexMinZ;
|
|
|
|
f32 tmp3 = tmp1;
|
|
if (tmp1 < tmp2) {
|
|
tmp3 = tmp2;
|
|
}
|
|
|
|
return tmp3 / g_fmapHIO.mRegionZoomRange;
|
|
}
|
|
|
|
/* 801D2C88-801D2CC8 1CD5C8 0040+00 1/1 0/0 0/0 .text
|
|
* getStageOriginPath__18dMenu_Fmap2DBack_cFUcPfPf */
|
|
void dMenu_Fmap2DBack_c::getStageOriginPath(u8 param_0, f32* param_1, f32* param_2) {
|
|
for (int i = 0; i < 20; i++) {
|
|
if (i == param_0) {
|
|
*param_1 = mStageOriginPathX[i];
|
|
*param_2 = mStageOriginPathZ[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D2CC8-801D2DA8 1CD608 00E0+00 4/4 0/0 0/0 .text calcOffset__18dMenu_Fmap2DBack_cFUcPCcPfPf
|
|
*/
|
|
void dMenu_Fmap2DBack_c::calcOffset(u8 i_regionNo, char const* i_stageName,
|
|
f32* o_offsetX, f32* o_offsetZ) {
|
|
if (mpStages != NULL) {
|
|
Stage_c::data* data = mpStages->mData;
|
|
for (int i = 0; i < mStageDataNum; i++) {
|
|
if (i_regionNo + 1 == data[i].mRegionNo && strcmp(i_stageName, data[i].mName) == 0) {
|
|
*o_offsetX = mRegionOriginX[i_regionNo] + data[i].mOffsetX;
|
|
*o_offsetZ = mRegionOriginZ[i_regionNo] + data[i].mOffsetZ;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
*o_offsetX = mRegionOriginX[i_regionNo];
|
|
*o_offsetZ = mRegionOriginZ[i_regionNo];
|
|
}
|
|
|
|
/* 801D2DA8-801D3094 1CD6E8 02EC+00 1/1 0/0 0/0 .text regionTextureDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::regionTextureDraw() {
|
|
f32 local_84, local_88;
|
|
calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &local_84,
|
|
&local_88);
|
|
|
|
f32 local_8c, local_90;
|
|
calcAllMapPos2D(local_84 + mStageTransX, local_88 + mStageTransZ, &local_8c, &local_90);
|
|
|
|
f32 dVar14 = getMapScissorAreaCenterPosX() - local_8c;
|
|
f32 dVar13 = getMapScissorAreaCenterPosY() - local_90;
|
|
|
|
s32 uVar9 = mRegionCursor;
|
|
|
|
s32 local_94;
|
|
if (mMapZoomRate == 0.0f) {
|
|
local_94 = mSelectRegion;
|
|
} else {
|
|
local_94 = mRegionCursor;
|
|
}
|
|
|
|
if (g_fmapHIO.mDrawBackground == false) {
|
|
return;
|
|
}
|
|
|
|
for (int iVar8 = 0; iVar8 < 8; iVar8++) {
|
|
s32 uVar10 = field_0x1230[iVar8];
|
|
if (uVar10 != 0xff && mpAreaTex[uVar10] != NULL) {
|
|
f32 fVar3;
|
|
if (isShowRegion(uVar10)) {
|
|
if (uVar10 != local_94) {
|
|
mpAreaTex[uVar10]->setBlackWhite(mUnselectedRegionBlack, mUnselectedRegionWhite);
|
|
fVar3 = field_0x1214;
|
|
|
|
} else {
|
|
mpAreaTex[uVar10]->setBlackWhite(mSelectedRegionBlack, mSelectedRegionWhite);
|
|
fVar3 = field_0x1210;
|
|
}
|
|
} else {
|
|
mpAreaTex[uVar10]->setBlackWhite(mUnreachedRegionBlack, mUnreachedRegionWhite);
|
|
fVar3 = 0.5f;
|
|
}
|
|
|
|
mpAreaTex[uVar10]->setAlpha(mAlphaRate * 255.0f * fVar3 * field_0xfa4);
|
|
|
|
if (uVar10 != uVar9) {
|
|
mpAreaTex[uVar10]->draw(
|
|
mTransX + (dVar14 + (mRegionMinMapX[uVar10] + field_0xf0c[uVar10])),
|
|
mTransZ + (dVar13 + (mRegionMinMapY[uVar10] + field_0xf2c[uVar10])),
|
|
mRegionMapSizeX[uVar10] * mZoom, mRegionMapSizeY[uVar10] * mZoom, false,
|
|
false, false);
|
|
} else {
|
|
mpAreaTex[uVar9]->draw(
|
|
mTransX + (dVar14 + (mRegionMinMapX[uVar9] + field_0xf0c[uVar9])),
|
|
mTransZ + (dVar13 + (mRegionMinMapY[uVar9] + field_0xf2c[uVar9])),
|
|
mRegionMapSizeX[uVar9] * mZoom, mRegionMapSizeY[uVar9] * mZoom, false,
|
|
false, false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D3094-801D31D0 1CD9D4 013C+00 1/1 0/0 0/0 .text stageTextureDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::stageTextureDraw() {
|
|
if (mAllPathShowFlag) {
|
|
mpSpotTexture->setAlpha(mAlphaRate * 255.0f * mSpotTextureFadeAlpha);
|
|
} else {
|
|
f32 tmp = mAlphaRate * 255.0f * field_0xfa8;
|
|
mpSpotTexture->setAlpha(mSpotTextureFadeAlpha * tmp);
|
|
}
|
|
|
|
mpSpotTexture->draw(mTransX + getMapScissorAreaLX(), mTransZ + getMapScissorAreaLY(),
|
|
getMapScissorAreaSizeRealX(), getMapScissorAreaSizeRealY(), false, false,
|
|
false);
|
|
}
|
|
|
|
/* 801D31D0-801D34DC 1CDB10 030C+00 1/1 0/0 0/0 .text worldGridDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::worldGridDraw() {
|
|
f32 local_74, local_78;
|
|
|
|
f32 xPos, yPos;
|
|
f32 dVar9 = -mStageTransX;
|
|
f32 dVar8 = -mStageTransZ;
|
|
calcAllMapPos2D(dVar9, dVar8, &local_74, &local_78);
|
|
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
|
|
xPos = dVar9 - g_fmapHIO.mWorldGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(xPos, dVar8, &local_74, &local_78);
|
|
if (local_74 >= getMapScissorAreaLX()) {
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
xPos -= g_fmapHIO.mWorldGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
xPos = dVar9 + g_fmapHIO.mWorldGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(xPos, dVar8, &local_74, &local_78);
|
|
if (local_74 <= getMapScissorAreaLX() + getMapScissorAreaSizeRealX()) {
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
xPos += g_fmapHIO.mWorldGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
|
|
yPos = dVar8 - g_fmapHIO.mWorldGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(dVar9, yPos, &local_74, &local_78);
|
|
if (local_78 >= getMapScissorAreaLY()) {
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
yPos -= g_fmapHIO.mWorldGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
yPos = dVar8 + g_fmapHIO.mWorldGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(dVar9, yPos, &local_74, &local_78);
|
|
if (local_78 <= getMapScissorAreaLY() + getMapScissorAreaSizeRealY()) {
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
yPos += g_fmapHIO.mWorldGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D34DC-801D382C 1CDE1C 0350+00 1/1 0/0 0/0 .text regionGridDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::regionGridDraw() {
|
|
f32 local_74, local_78;
|
|
|
|
f32 xPos, yPos;
|
|
f32 dVar9 = mRegionOriginX[mRegionCursor] - mStageTransX;
|
|
f32 dVar8 = mRegionOriginZ[mRegionCursor] - mStageTransZ;
|
|
calcAllMapPos2D(dVar9, dVar8, &local_74, &local_78);
|
|
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
|
|
xPos = dVar9 - g_fmapHIO.mRegionGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(xPos, dVar8, &local_74, &local_78);
|
|
if (local_74 >= getMapScissorAreaLX()) {
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
xPos -= g_fmapHIO.mRegionGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
xPos = dVar9 + g_fmapHIO.mRegionGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(xPos, dVar8, &local_74, &local_78);
|
|
if (local_74 <= getMapScissorAreaLX() + getMapScissorAreaSizeRealX()) {
|
|
J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74,
|
|
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(),
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
xPos += g_fmapHIO.mRegionGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
|
|
yPos = dVar8 - g_fmapHIO.mRegionGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(dVar9, yPos, &local_74, &local_78);
|
|
if (local_78 >= getMapScissorAreaLY()) {
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
yPos -= g_fmapHIO.mRegionGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
yPos = dVar8 + g_fmapHIO.mRegionGridWidth;
|
|
while (true) {
|
|
calcAllMapPos2D(dVar9, yPos, &local_74, &local_78);
|
|
if (local_78 <= getMapScissorAreaLY() + getMapScissorAreaSizeRealY()) {
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78,
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78,
|
|
JUtility::TColor(180, 0, 0, 255), 6);
|
|
yPos += g_fmapHIO.mRegionGridWidth;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// needed to make sdata2 match
|
|
static f32 dummy(int param_0) {
|
|
return param_0;
|
|
}
|
|
|
|
/* 801D382C-801D38FC 1CE16C 00D0+00 1/1 0/0 0/0 .text worldOriginDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::worldOriginDraw() {
|
|
f32 local_44, local_48;
|
|
calcAllMapPos2D(-mStageTransX, -mStageTransZ, &local_44, &local_48);
|
|
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_48 - local_44 + mDoGph_gInf_c::getMinXF(),
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(),
|
|
local_48 - local_44 + (mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF()),
|
|
JUtility::TColor(0, 255, 0, 255), 6);
|
|
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_48 + local_44 + -mDoGph_gInf_c::getMinXF(),
|
|
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(),
|
|
local_48 + local_44 + -(mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF()),
|
|
JUtility::TColor(0, 255, 0, 255), 6);
|
|
}
|
|
|
|
/* 801D38FC-801D3AF8 1CE23C 01FC+00 1/1 0/0 0/0 .text scrollAreaDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::scrollAreaDraw() {
|
|
for (int i = 0; i < 8; i++) {
|
|
if (mMapZoomRate != 0.0f && i != mRegionCursor) {
|
|
continue;
|
|
}
|
|
|
|
f32 x_min, z_min, x_max, z_max;
|
|
if (g_fmapHIO.mScrollRangeDebugON) {
|
|
x_min = g_fmapHIO.mRegionScrollRangeMinX[i];
|
|
z_min = g_fmapHIO.mRegionScrollRangeMinZ[i];
|
|
x_max = g_fmapHIO.mRegionScrollRangeMaxX[i];
|
|
z_max = g_fmapHIO.mRegionScrollRangeMaxZ[i];
|
|
} else {
|
|
x_min = mRegionScrollMinX[i];
|
|
z_min = mRegionScrollMinZ[i];
|
|
x_max = mRegionScrollMaxX[i];
|
|
z_max = mRegionScrollMaxZ[i];
|
|
}
|
|
|
|
f32 local_4c, local_50, local_54, local_58;
|
|
calcAllMapPos2D(x_min - mStageTransX, z_min - mStageTransZ, &local_4c, &local_50);
|
|
calcAllMapPos2D(x_max - mStageTransX, z_max - mStageTransZ, &local_54, &local_58);
|
|
|
|
J2DDrawLine(local_4c, local_50, local_4c, local_58,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
J2DDrawLine(local_54, local_50, local_54, local_58,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
J2DDrawLine(local_4c, local_50, local_54, local_50,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
J2DDrawLine(local_4c, local_58, local_54, local_58,
|
|
JUtility::TColor(255, 255, 255, 255), 6);
|
|
}
|
|
}
|
|
|
|
/* 801D3AF8-801D3BBC 1CE438 00C4+00 1/1 0/0 0/0 .text regionOriginDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::regionOriginDraw() {
|
|
for (int i = 0; i < 8; i++) {
|
|
if (!mpAreaTex[i]) {
|
|
continue;
|
|
}
|
|
|
|
f32 center_x, center_y;
|
|
calcAllMapPos2D(mRegionOriginX[i] - mStageTransX, mRegionOriginZ[i] - mStageTransZ,
|
|
¢er_x, ¢er_y);
|
|
J2DFillBox(center_x - 3.0f, center_y - 3.0f, 6.0f, 6.0f, JUtility::TColor(255, 0, 0, 255));
|
|
}
|
|
}
|
|
|
|
/* 801D3BBC-801D3CB8 1CE4FC 00FC+00 1/1 0/0 0/0 .text stageOriginDraw__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::stageOriginDraw() {
|
|
if (!mpStages) {
|
|
return;
|
|
}
|
|
|
|
dMenuMapCommon_c::Stage_c::data* stage_data = mpStages->mData;
|
|
|
|
for (int i = 0; i < mStageDataNum; i++) {
|
|
if (mRegionCursor + 1 == stage_data[i].mRegionNo) {
|
|
f32 center_x, center_y;
|
|
calcAllMapPos2D(
|
|
mRegionOriginX[mRegionCursor] + stage_data[i].mOffsetX - mStageTransX,
|
|
mRegionOriginZ[mRegionCursor] + stage_data[i].mOffsetZ - mStageTransZ,
|
|
¢er_x, ¢er_y
|
|
);
|
|
J2DFillBox(center_x - 3.0f, center_y - 3.0f, 6.0f, 6.0f,
|
|
JUtility::TColor(0, 0, 255, 255));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D3CB8-801D4928 1CE5F8 0C70+00 1/1 0/0 0/0 .text calcBlink__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
void dMenu_Fmap2DBack_c::calcBlink() {
|
|
f32 t;
|
|
int i;
|
|
if (mMapZoomRate <= 1.0f) {
|
|
t = mMapZoomRate;
|
|
i = 0;
|
|
} else {
|
|
t = mMapZoomRate - 1.0f;
|
|
i = 1;
|
|
}
|
|
|
|
mSelectedRegionBlack.r = g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mBlack.r
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.r);
|
|
mSelectedRegionBlack.g = g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mBlack.g
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.g);
|
|
mSelectedRegionBlack.b = g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mBlack.b
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.b);
|
|
mSelectedRegionBlack.a = g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mBlack.a
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlack.a);
|
|
mSelectedRegionWhite.r = g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mWhite.r
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.r);
|
|
mSelectedRegionWhite.g = g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mWhite.g
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.g);
|
|
mSelectedRegionWhite.b = g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mWhite.b
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.b);
|
|
mSelectedRegionWhite.a = g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mWhite.a
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mWhite.a);
|
|
mUnselectedRegionBlack.r = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mBlack.r
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.r);
|
|
mUnselectedRegionBlack.g = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mBlack.g
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.g);
|
|
mUnselectedRegionBlack.b = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mBlack.b
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.b);
|
|
mUnselectedRegionBlack.a = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mBlack.a
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlack.a);
|
|
mUnselectedRegionWhite.r = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mWhite.r
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.r);
|
|
mUnselectedRegionWhite.g = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mWhite.g
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.g);
|
|
mUnselectedRegionWhite.b = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mWhite.b
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.b);
|
|
mUnselectedRegionWhite.a = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mWhite.a
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mWhite.a);
|
|
mUnreachedRegionBlack.r = g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionBlack.r
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.r);
|
|
mUnreachedRegionBlack.g = g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionBlack.g
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.g);
|
|
mUnreachedRegionBlack.b = g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionBlack.b
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.b);
|
|
mUnreachedRegionBlack.a = g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionBlack.a
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionBlack.a);
|
|
mUnreachedRegionWhite.r = g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionWhite.r
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.r);
|
|
mUnreachedRegionWhite.g = g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionWhite.g
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.g);
|
|
mUnreachedRegionWhite.b = g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionWhite.b
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.b);
|
|
mUnreachedRegionWhite.a = g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnreachedRegionWhite.a
|
|
- g_fmapHIO.mMapBlink[i].mUnreachedRegionWhite.a);
|
|
field_0x1208.r = g_fmapHIO.mMapBlink[i].field_0x20.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x20.r
|
|
- g_fmapHIO.mMapBlink[i].field_0x20.r);
|
|
field_0x1208.g = g_fmapHIO.mMapBlink[i].field_0x20.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x20.g
|
|
- g_fmapHIO.mMapBlink[i].field_0x20.g);
|
|
field_0x1208.b = g_fmapHIO.mMapBlink[i].field_0x20.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x20.b
|
|
- g_fmapHIO.mMapBlink[i].field_0x20.b);
|
|
field_0x1208.a = g_fmapHIO.mMapBlink[i].field_0x20.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x20.a
|
|
- g_fmapHIO.mMapBlink[i].field_0x20.a);
|
|
field_0x120c.r = g_fmapHIO.mMapBlink[i].field_0x24.r
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x24.r
|
|
- g_fmapHIO.mMapBlink[i].field_0x24.r);
|
|
field_0x120c.g = g_fmapHIO.mMapBlink[i].field_0x24.g
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x24.g
|
|
- g_fmapHIO.mMapBlink[i].field_0x24.g);
|
|
field_0x120c.b = g_fmapHIO.mMapBlink[i].field_0x24.b
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x24.b
|
|
- g_fmapHIO.mMapBlink[i].field_0x24.b);
|
|
field_0x120c.a = g_fmapHIO.mMapBlink[i].field_0x24.a
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].field_0x24.a
|
|
- g_fmapHIO.mMapBlink[i].field_0x24.a);
|
|
|
|
f32 selected_max, selected_min, unselected_max, unselected_min;
|
|
f32 tmp_selected_min = g_fmapHIO.mMapBlink[i].mSelectedRegion.mMin / 255.0f;
|
|
f32 tmp_selected_max = g_fmapHIO.mMapBlink[i].mSelectedRegion.mMax / 255.0f;
|
|
f32 tmp_unselected_min = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mMin / 255.0f;
|
|
f32 tmp_unselected_max = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mMax / 255.0f;
|
|
|
|
selected_max = tmp_selected_max
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mMax / 255.0f - tmp_selected_max);
|
|
selected_min = tmp_selected_min
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mMin / 255.0f - tmp_selected_min);
|
|
s16 selected_blink_speed = g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlinkSpeed
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mSelectedRegion.mBlinkSpeed
|
|
- g_fmapHIO.mMapBlink[i].mSelectedRegion.mBlinkSpeed);
|
|
unselected_max = tmp_unselected_max
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mMax / 255.0f - tmp_unselected_max);
|
|
unselected_min = tmp_unselected_min
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mMin / 255.0f - tmp_unselected_min);
|
|
s16 unselected_blink_speed = g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlinkSpeed
|
|
+ t * (g_fmapHIO.mMapBlink[i + 1].mUnselectedRegion.mBlinkSpeed
|
|
- g_fmapHIO.mMapBlink[i].mUnselectedRegion.mBlinkSpeed);
|
|
|
|
field_0x1218++;
|
|
if (field_0x1218 >= selected_blink_speed) {
|
|
field_0x1218 = 0;
|
|
}
|
|
|
|
field_0x121a++;
|
|
if (field_0x121a >= unselected_blink_speed) {
|
|
field_0x121a = 0;
|
|
}
|
|
|
|
f32 t_selected = 0.0f;
|
|
f32 t_unselected = 0.0f;
|
|
|
|
if (selected_blink_speed > 0.0f) {
|
|
if (field_0x1218 < selected_blink_speed * 0.5f) {
|
|
t_selected = field_0x1218 / (selected_blink_speed * 0.5f);
|
|
} else {
|
|
t_selected = (selected_blink_speed - field_0x1218) / (selected_blink_speed * 0.5f);
|
|
}
|
|
}
|
|
|
|
if (unselected_blink_speed > 0.0f) {
|
|
if (field_0x121a < unselected_blink_speed * 0.5f) {
|
|
t_unselected = field_0x121a / (unselected_blink_speed * 0.5f);
|
|
} else {
|
|
t_unselected = (unselected_blink_speed - field_0x121a) / (unselected_blink_speed * 0.5f);
|
|
}
|
|
}
|
|
|
|
field_0x1210 = selected_min + t_selected * (selected_max - selected_min);
|
|
field_0x1214 = unselected_min + t_unselected * (unselected_max - unselected_min);
|
|
}
|
|
|
|
/* 801D4928-801D49E0 1CF268 00B8+00 0/0 1/1 0/0 .text calcBackAlpha__18dMenu_Fmap2DBack_cFb */
|
|
void dMenu_Fmap2DBack_c::calcBackAlpha(bool param_0) {
|
|
if (param_0) {
|
|
if (mBackAlpha != 1.0f) {
|
|
cLib_addCalc2(&mBackAlpha, 1.0f, 0.4f, 0.5f);
|
|
if (fabsf(mBackAlpha - 1.0f) < 0.1f) {
|
|
mBackAlpha = 1.0f;
|
|
}
|
|
}
|
|
} else {
|
|
if (mBackAlpha != 0.0f) {
|
|
cLib_addCalc2(&mBackAlpha, 0.0f, 0.4f, 0.5f);
|
|
if (fabsf(mBackAlpha) < 0.1f) {
|
|
mBackAlpha = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D49E0-801D4AFC 1CF320 011C+00 0/0 1/1 0/0 .text btkAnimeLoop__18dMenu_Fmap2DBack_cFf */
|
|
void dMenu_Fmap2DBack_c::btkAnimeLoop(f32 i_step) {
|
|
if (mpBaseAnm) {
|
|
mAnmFrame += i_step;
|
|
if (mAnmFrame >= mpBaseAnm->getFrameMax()) {
|
|
mAnmFrame -= mpBaseAnm->getFrameMax();
|
|
}
|
|
mpBaseAnm->setFrame(mAnmFrame);
|
|
} else {
|
|
mAnmFrame = 0.0f;
|
|
}
|
|
|
|
mpBaseScreen->search('gold00_0')->setAnimation(mpBaseAnm);
|
|
mpBaseScreen->search('gold00_1')->setAnimation(mpBaseAnm);
|
|
mpBaseScreen->animation();
|
|
}
|
|
|
|
/* 801D4AFC-801D4B2C 1CF43C 0030+00 0/0 1/1 0/0 .text setBaseBackAlpha__18dMenu_Fmap2DBack_cFUc */
|
|
void dMenu_Fmap2DBack_c::setBaseBackAlpha(u8 param_0) {
|
|
mpMapBlack->setAlpha(param_0);
|
|
}
|
|
|
|
/* 801D4B2C-801D4E80 1CF46C 0354+00 0/0 3/3 0/0 .text
|
|
* regionMapMove__18dMenu_Fmap2DBack_cFP9STControl */
|
|
void dMenu_Fmap2DBack_c::regionMapMove(STControl* i_stick) {
|
|
f32 min_x, min_y, max_x, max_y;
|
|
calcAllMapPosWorld(getMapScissorAreaLX(), getMapScissorAreaLY(), &min_x, &min_y);
|
|
calcAllMapPosWorld(getMapScissorAreaLX() + getMapScissorAreaSizeRealX(),
|
|
getMapScissorAreaLY() + getMapScissorAreaSizeRealY(), &max_x, &max_y);
|
|
|
|
f32 slow_bound = g_fmapHIO.mScrollSpeedSlowBound < g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound;
|
|
f32 fast_bound = g_fmapHIO.mScrollSpeedSlowBound > g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound;
|
|
|
|
f32 stick_value = i_stick->getValueStick();
|
|
if (stick_value >= slow_bound) {
|
|
s16 angle = i_stick->getAngleStick();
|
|
f32 local_68 = mTexMaxX - mTexMinX;
|
|
f32 spot_zoom = getSpotMapZoomRate();
|
|
f32 region_zoom = getRegionMapZoomRate(mRegionCursor);
|
|
f32 zoom = region_zoom + (mMapZoomRate - 1.0f) * (spot_zoom - region_zoom);
|
|
f32 local_78 = local_68 / zoom;
|
|
f32 base_speed = stick_value < fast_bound ?
|
|
g_fmapHIO.mScrollSpeedRegionSlow : g_fmapHIO.mScrollSpeedRegionFast;
|
|
f32 speed = base_speed / 100.0f * local_78;
|
|
f32 speed_y = speed * cM_ssin(angle);
|
|
f32 speed_x = speed * cM_scos(angle);
|
|
control_xpos += speed_y;
|
|
control_ypos += speed_x;
|
|
}
|
|
|
|
if (mArrowPos3DX + control_xpos < min_x) {
|
|
control_xpos = min_x - mArrowPos3DX;
|
|
}
|
|
if (mArrowPos3DX + control_xpos > max_x) {
|
|
control_xpos = max_x - mArrowPos3DX;
|
|
}
|
|
if (mArrowPos3DZ + control_ypos < min_y) {
|
|
control_ypos = min_y - mArrowPos3DZ;
|
|
}
|
|
if (mArrowPos3DZ + control_ypos > max_y) {
|
|
control_ypos = max_y - mArrowPos3DZ;
|
|
}
|
|
|
|
calcRenderingScale();
|
|
calcRenderingPos();
|
|
|
|
f32 pos_x, pos_y;
|
|
calcAllMapPos2D(mArrowPos3DX + control_xpos - mStageTransX,
|
|
mArrowPos3DZ + control_ypos - mStageTransZ, &pos_x, &pos_y);
|
|
|
|
mSelectRegion = 0xff;
|
|
int region = mRegionCursor;
|
|
if (region != 0xff && region != 7) {
|
|
if (dMeter2Info_getPixel(pos_x, pos_y,
|
|
mRegionMinMapX[region] + field_0xf0c[region] + mTransX,
|
|
mRegionMinMapY[region] + field_0xf2c[region] + mTransZ,
|
|
mRegionMapSizeX[region] * mZoom,
|
|
mRegionMapSizeY[region] * mZoom,
|
|
mpAreaTex[region]->getTexture(0)->getTexInfo())) {
|
|
mSelectRegion = region;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D4E80-801D5334 1CF7C0 04B4+00 0/0 1/1 0/0 .text
|
|
* stageMapMove__18dMenu_Fmap2DBack_cFP9STControlUcb */
|
|
void dMenu_Fmap2DBack_c::stageMapMove(STControl* i_stick, u8 param_1, bool param_2) {
|
|
f32 min_x, min_y, max_x, max_y, center_x, center_y;
|
|
|
|
f32 slow_bound = g_fmapHIO.mScrollSpeedSlowBound < g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound;
|
|
f32 fast_bound = g_fmapHIO.mScrollSpeedSlowBound > g_fmapHIO.mScrollSpeedFastBound ?
|
|
g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound;
|
|
|
|
f32 stick_value = i_stick->getValueStick();
|
|
bool bVar6 = false;
|
|
f32 trans_x = mStageTransX;
|
|
f32 trans_z = mStageTransZ;
|
|
|
|
if (stick_value >= slow_bound && param_2 && field_0x1238 != 2) {
|
|
bVar6 = true;
|
|
s16 angle = i_stick->getAngleStick();
|
|
f32 local_68 = mTexMaxX - mTexMinX;
|
|
f32 spot_zoom = getSpotMapZoomRate();
|
|
f32 region_zoom = getRegionMapZoomRate(mRegionCursor);
|
|
f32 zoom = region_zoom + (mMapZoomRate - 1.0f) * (spot_zoom - region_zoom);
|
|
f32 local_78 = local_68 / zoom;
|
|
f32 base_speed = stick_value < fast_bound ?
|
|
g_fmapHIO.mScrollSpeedRegionZoomSlow : g_fmapHIO.mScrollSpeedRegionZoomFast;
|
|
f32 speed = base_speed / 100.0f * local_78;
|
|
f32 speed_x = speed * cM_ssin(angle);
|
|
f32 speed_z = speed * cM_scos(angle);
|
|
mStageTransX += speed_x;
|
|
mStageTransZ += speed_z;
|
|
} else if (!param_2) {
|
|
return;
|
|
}
|
|
|
|
calcAllMapPosWorld(getMapAreaGlobalCenterPosX(), getMapAreaGlobalCenterPosY(),
|
|
¢er_x, ¢er_y);
|
|
calcAllMapPosWorld(getMapScissorAreaLX(), getMapScissorAreaLY(), &min_x, &min_y);
|
|
|
|
if (g_fmapHIO.mScrollRangeDebugON) {
|
|
min_x = g_fmapHIO.mRegionScrollRangeMinX[mRegionCursor];
|
|
min_y = g_fmapHIO.mRegionScrollRangeMinZ[mRegionCursor];
|
|
max_x = g_fmapHIO.mRegionScrollRangeMaxX[mRegionCursor];
|
|
max_y = g_fmapHIO.mRegionScrollRangeMaxZ[mRegionCursor];
|
|
} else {
|
|
min_x = mRegionScrollMinX[mRegionCursor];
|
|
min_y = mRegionScrollMinZ[mRegionCursor];
|
|
max_x = mRegionScrollMaxX[mRegionCursor];
|
|
max_y = mRegionScrollMaxZ[mRegionCursor];
|
|
}
|
|
|
|
if (center_x < min_x - mStageTransX) {
|
|
mStageTransX = -(center_x - min_x);
|
|
}
|
|
if (center_x > max_x - mStageTransX) {
|
|
mStageTransX = -(center_x - max_x);
|
|
}
|
|
if (center_y < min_y - mStageTransZ) {
|
|
mStageTransZ = -(center_y - min_y);
|
|
}
|
|
if (center_y > max_y - mStageTransZ) {
|
|
mStageTransZ = -(center_y - max_y);
|
|
}
|
|
|
|
if (bVar6 && (trans_x != mStageTransX || trans_z != mStageTransZ)) {
|
|
Z2GetAudioMgr()->seStartLevel(Z2SE_SY_MAP_SCROLL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
|
|
field_0xfd8 = mStageTransX - field_0xfd0;
|
|
field_0xfdc = mStageTransZ - field_0xfd4;
|
|
control_xpos = mStageTransX + (field_0x11b4 - mArrowPos3DX);
|
|
control_ypos = mStageTransZ + (field_0x11b8 - mArrowPos3DZ);
|
|
|
|
calcRenderingScale();
|
|
calcRenderingPos();
|
|
|
|
field_0x122d = 0;
|
|
if (mStageTransX > -(center_x - min_x)) {
|
|
field_0x122d |= 1;
|
|
}
|
|
if (mStageTransX < -(center_x - max_x)) {
|
|
field_0x122d |= 4;
|
|
}
|
|
if (mStageTransZ > -(center_y - min_y)) {
|
|
field_0x122d |= 8;
|
|
}
|
|
if (mStageTransZ < -(center_y - max_y)) {
|
|
field_0x122d |= 2;
|
|
}
|
|
|
|
mpMeterHaihai->_execute(0);
|
|
}
|
|
|
|
/* 801D5334-801D5388 1CFC74 0054+00 0/0 2/2 0/0 .text setAllAlphaRate__18dMenu_Fmap2DBack_cFfb */
|
|
void dMenu_Fmap2DBack_c::setAllAlphaRate(f32 i_rate, bool i_init) {
|
|
mAlphaRate = i_rate;
|
|
if (i_init) {
|
|
mpBaseRoot->setBackupAlpha();
|
|
}
|
|
mpBaseRoot->setAlphaMorfRate(i_rate);
|
|
}
|
|
|
|
/* 801D5388-801D564C 1CFCC8 02C4+00 1/1 0/0 0/0 .text drawDebugStageArea__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
void dMenu_Fmap2DBack_c::drawDebugStageArea() {
|
|
JUtility::TColor colors[6] = {
|
|
JUtility::TColor(255, 255, 0, 50),
|
|
JUtility::TColor(255, 0, 255, 50),
|
|
JUtility::TColor(0, 255, 255, 50),
|
|
JUtility::TColor(255, 0, 0, 50),
|
|
JUtility::TColor(0, 255, 0, 50),
|
|
JUtility::TColor(0, 0, 255, 50),
|
|
};
|
|
|
|
if (mpFmapMap && mpRegionData) {
|
|
for (int i = 0; i < mDoGph_gInf_c::getWidthF(); i += g_fmapHIO.mRangeCheckInterval + 1) {
|
|
for (int j = 0; j < mDoGph_gInf_c::getHeightF(); j += g_fmapHIO.mRangeCheckInterval + 1)
|
|
{
|
|
int stage_no;
|
|
mpFmapMap->getPointStagePathInnerNo(mpRegionData,
|
|
i - mDoGph_gInf_c::getWidthF() / 2.0f,
|
|
j - mDoGph_gInf_c::getHeightF() / 2.0f,
|
|
field_0x1244, &stage_no, NULL);
|
|
if (stage_no >= 0) {
|
|
J2DFillBox(i + mDoGph_gInf_c::getMinXF() - 3.0f, j - 3.0f, 6.0f, 6.0f,
|
|
colors[stage_no % 6]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D564C-801D58F8 1CFF8C 02AC+00 1/1 0/0 0/0 .text drawDebugRegionArea__18dMenu_Fmap2DBack_cFv
|
|
*/
|
|
void dMenu_Fmap2DBack_c::drawDebugRegionArea() {
|
|
getAllMapZoomRate();
|
|
|
|
JUtility::TColor colors[7] = {
|
|
JUtility::TColor(255, 255, 0, 50),
|
|
JUtility::TColor(255, 0, 255, 50),
|
|
JUtility::TColor(0, 255, 255, 50),
|
|
JUtility::TColor(255, 0, 0, 50),
|
|
JUtility::TColor(0, 255, 0, 50),
|
|
JUtility::TColor(0, 0, 255, 50),
|
|
JUtility::TColor(255, 255, 255, 50),
|
|
};
|
|
|
|
for (int i = 0; i < getMapScissorAreaSizeRealX(); i += g_fmapHIO.mRangeCheckInterval + 1) {
|
|
for (int j = 0; j < getMapScissorAreaSizeRealY(); j += g_fmapHIO.mRangeCheckInterval + 1) {
|
|
for (int k = 7; k >= 0; k--) {
|
|
int region = field_0x1230[k];
|
|
if (region == 0xff || region == 7) continue;
|
|
f32 pos_x = i + getMapScissorAreaLX();
|
|
f32 pos_y = j + getMapScissorAreaLY();
|
|
if (dMeter2Info_getPixel(pos_x, pos_y,
|
|
mRegionMinMapX[region] + field_0xf0c[region] + mTransX,
|
|
mRegionMinMapY[region] + field_0xf2c[region] + mTransZ,
|
|
mRegionMapSizeX[region] * mZoom,
|
|
mRegionMapSizeY[region] * mZoom,
|
|
mpAreaTex[region]->getTexture(0)->getTexInfo()))
|
|
{
|
|
J2DFillBox(pos_x - 3.0f, pos_y - 3.0f, 6.0f, 6.0f, colors[region]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D58F8-801D59C0 1D0238 00C8+00 0/0 2/2 0/0 .text setArrowPos3D__18dMenu_Fmap2DBack_cFUcPCcff
|
|
*/
|
|
void dMenu_Fmap2DBack_c::setArrowPos3D(u8 i_regionNo, char const* i_stageName, f32 i_posX,
|
|
f32 i_posZ) {
|
|
f32 offset_x = 0.0f;
|
|
f32 offset_z = 0.0f;
|
|
|
|
if (i_stageName) {
|
|
calcOffset(i_regionNo, i_stageName, &offset_x, &offset_z);
|
|
} else {
|
|
i_posX = 0.5f * (mRegionTexData[i_regionNo].mMinX + mRegionTexData[i_regionNo].mMaxX);
|
|
i_posZ = 0.5f * (mRegionTexData[i_regionNo].mMinZ + mRegionTexData[i_regionNo].mMaxZ);
|
|
}
|
|
|
|
mArrowPos3DX = i_posX + offset_x;
|
|
mArrowPos3DZ = i_posZ + offset_z;
|
|
control_xpos = 0.0f;
|
|
control_ypos = 0.0f;
|
|
}
|
|
|
|
/* 801D59C0-801D5AC4 1D0300 0104+00 0/0 1/1 0/0 .text
|
|
* setArrowPos3DOffset__18dMenu_Fmap2DBack_cFUcPCcfff */
|
|
void dMenu_Fmap2DBack_c::setArrowPos3DOffset(u8 i_regionNo, char const* i_stageName, f32 i_posX,
|
|
f32 i_posZ, f32 param_4) {
|
|
f32 offset_x, offset_z, pos2d_x, pos2d_y;
|
|
|
|
if (param_4 != 0.0f) {
|
|
calcOffset(i_regionNo, i_stageName, &offset_x, &offset_z);
|
|
calcAllMapPos2D(i_posX + offset_x - getRegionOriginX(i_regionNo),
|
|
i_posZ + offset_z - getRegionOriginZ(i_regionNo),
|
|
&pos2d_x, &pos2d_y);
|
|
pos2d_y -= param_4;
|
|
calcAllMapPosWorld(pos2d_x, pos2d_y, &i_posX, &i_posZ);
|
|
i_posX += getRegionOriginX(i_regionNo);
|
|
i_posZ += getRegionOriginZ(i_regionNo);
|
|
}
|
|
|
|
mArrowPos3DX = i_posX;
|
|
mArrowPos3DZ = i_posZ;
|
|
control_xpos = 0.0f;
|
|
control_ypos = 0.0f;
|
|
}
|
|
|
|
/* 801D5AC4-801D5BB8 1D0404 00F4+00 0/0 2/2 0/0 .text calcDrawPriority__18dMenu_Fmap2DBack_cFv */
|
|
void dMenu_Fmap2DBack_c::calcDrawPriority() {
|
|
u8 region;
|
|
u8 dVar2 = mRegionCursor;
|
|
u8 dVar3 = 6;
|
|
|
|
for (int i = 7; i >= 0; i--) {
|
|
region = field_0x1230[i];
|
|
if (field_0x1230[i] != 0xff) {
|
|
if (field_0x1230[i] == mRegionCursor) {
|
|
field_0x1230[i] = dVar2;
|
|
break;
|
|
}
|
|
field_0x1230[i] = dVar2;
|
|
dVar2 = region;
|
|
}
|
|
}
|
|
|
|
if (mRegionCursor != 6) {
|
|
for (int i = 7; i >= 0; i--) {
|
|
region = field_0x1230[i];
|
|
if (field_0x1230[i] != 0xff) {
|
|
if (field_0x1230[i] == 6) {
|
|
field_0x1230[i] = dVar3;
|
|
break;
|
|
}
|
|
field_0x1230[i] = dVar3;
|
|
dVar3 = region;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (field_0x1230[0] != 7) {
|
|
u8 dVar4 = field_0x1230[0];
|
|
field_0x1230[0] = 7;
|
|
for (int i = 1; i < 8; i++) {
|
|
region = field_0x1230[i];
|
|
if (field_0x1230[i] != 0xff) {
|
|
if (field_0x1230[i] == 7) {
|
|
field_0x1230[i] = dVar4;
|
|
break;
|
|
}
|
|
field_0x1230[i] = dVar4;
|
|
dVar4 = region;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D5BB8-801D5BD0 1D04F8 0018+00 0/0 3/3 0/0 .text setArrowPosAxis__18dMenu_Fmap2DBack_cFff */
|
|
void dMenu_Fmap2DBack_c::setArrowPosAxis(f32 i_posX, f32 i_posZ) {
|
|
mArrowPos3DX = i_posX;
|
|
mArrowPos3DZ = i_posZ;
|
|
control_xpos = 0.0f;
|
|
control_ypos = 0.0f;
|
|
}
|
|
|
|
/* 801D5BD0-801D6700 1D0510 0B30+00 0/0 1/1 0/0 .text
|
|
* __ct__17dMenu_Fmap2DTop_cFP10JKRExpHeapP9STControl */
|
|
dMenu_Fmap2DTop_c::dMenu_Fmap2DTop_c(JKRExpHeap* i_heap, STControl* i_stick) {
|
|
mpHeap = i_heap;
|
|
mTransX = 0.0f;
|
|
mTransY = 0.0f;
|
|
mpPortalBin = NULL;
|
|
mpScrnExplain = NULL;
|
|
|
|
mpTitleScreen = new J2DScreen();
|
|
mpTitleScreen->setPriority("zelda_map_screen_title.blo", 0x1020000,
|
|
dComIfGp_getFmapResArchive());
|
|
dPaneClass_showNullPane(mpTitleScreen);
|
|
mpTitleRoot = new CPaneMgrAlphaMorf(mpTitleScreen, 'ROOT', 2, NULL);
|
|
|
|
mpArrowLAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_04', 0, NULL);
|
|
mpArrowLAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_05', 0, NULL);
|
|
mpArrowRAlpha[0] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_06', 0, NULL);
|
|
mpArrowRAlpha[1] = new CPaneMgrAlpha(mpTitleScreen, 'yaji_07', 0, NULL);
|
|
|
|
mpDpadAlpha = new CPaneMgrAlpha(mpTitleScreen, 'juji_c_n', 2, NULL);
|
|
mpDpadAlpha->setAlphaRate(0.0f);
|
|
mpAnalogStickAlpha = new CPaneMgrAlpha(mpTitleScreen, 'as_n', 2, NULL);
|
|
mpAnalogStickAlpha->setAlphaRate(0.0f);
|
|
mpAnalogStick = new CPaneMgr(mpTitleScreen, 'as_n', 0, NULL);
|
|
mpDpad = new CPaneMgr(mpTitleScreen, 'juji_c_n', 0, NULL);
|
|
|
|
mpButtonA = new CPaneMgr(mpTitleScreen, 'abtn_n1', 2, NULL);
|
|
mpButtonB = new CPaneMgr(mpTitleScreen, 'bbtn_n1', 2, NULL);
|
|
mpButtonZ = new CPaneMgr(mpTitleScreen, 'zbtn_n1', 2, NULL);
|
|
mpButtonTextA = new CPaneMgr(mpTitleScreen, 'a_text_n', 2, NULL);
|
|
mpButtonTextB = new CPaneMgr(mpTitleScreen, 'b_text_n', 2, NULL);
|
|
mpButtonTextZ = new CPaneMgr(mpTitleScreen, 'z_text_n', 2, NULL);
|
|
mpButtonA->setAlphaRate(0.0f);
|
|
mpButtonB->setAlphaRate(0.0f);
|
|
mpButtonZ->setAlphaRate(0.0f);
|
|
mpButtonTextA->setAlphaRate(0.0f);
|
|
mpButtonTextB->setAlphaRate(0.0f);
|
|
mpButtonTextZ->setAlphaRate(0.0f);
|
|
|
|
mpNamePane = new CPaneMgr(mpTitleScreen, 'name_n', 0, NULL);
|
|
mpSubPane = new CPaneMgr(mpTitleScreen, 'sub_n_n', 0, NULL);
|
|
if (dMeter2Info_getMapStatus() == 9) {
|
|
mpNamePane->hide();
|
|
mpSubPane->hide();
|
|
}
|
|
mpContPane = new CPaneMgr(mpTitleScreen, 'cont_n', 0, NULL);
|
|
|
|
mTitlePosX = mTitlePosY = 0.0f;
|
|
mTitleScale = 1.0f;
|
|
mSubTitlePosX = mSubTitlePosY = 0.0f;
|
|
mSubTitleScale = 1.0f;
|
|
mAreaMovementPosX = mAreaMovementPosY = 0.0f;
|
|
mAreaMovementScale = 1.0f;
|
|
mClosingPosX = mClosingPosY = 0.0f;
|
|
mClosingScale = 1.0f;
|
|
mDoIconPosX = mDoIconPosY = 0.0f;
|
|
mDoIconScale = 1.0f;
|
|
|
|
OSInitFastCast();
|
|
|
|
mpAnm = static_cast<J2DAnmTextureSRTKey*>(J2DAnmLoaderDataBase::load(
|
|
JKRFileLoader::getGlbResource("zelda_map_screen_title.btk", dComIfGp_getFmapResArchive())));
|
|
mpAnm->searchUpdateMaterialID(mpTitleScreen);
|
|
|
|
mAnmFrame = 0.0f;
|
|
|
|
static const u64 area_name[3] = {'i_name_s', 'i_name' ,'i_name1'};
|
|
static const u64 farea_name[3] = {'f_name_1', 'f_name3', 'f_name2'};
|
|
for (int i = 0; i < 3; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(farea_name[i]))
|
|
->setFont(mDoExt_getRubyFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(farea_name[i]))->setString(0x40, "");
|
|
mpTitleScreen->search(area_name[i])->hide();
|
|
}
|
|
|
|
static const u64 sfont_name[7] = {
|
|
'sfont00', 'sfontl0', 'sfontl1', 'sfontl2', 'sfontb0', 'sfontb1', 'sfontb2'
|
|
};
|
|
static const u64 ffont_name[7] = {
|
|
'ffont00', 'ffontl0', 'ffontl1', 'ffontl2', 'ffontb0', 'ffontb3', 'ffontb4'
|
|
};
|
|
for (int i = 0; i < 7; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(ffont_name[i]))
|
|
->setFont(mDoExt_getRubyFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(ffont_name[i]))->setString(0x40, "");
|
|
mpTitleScreen->search(sfont_name[i])->hide();
|
|
}
|
|
setTitleNameString(0x3e0);
|
|
|
|
static const u64 cont_zt[5] = {'cont_zt', 'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4'};
|
|
static const u64 font_zt[5] = {'font_zt1', 'font_zt2', 'font_zt3', 'font_zt4', 'font_zt5'};
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_zt[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_zt[i]))->setString(0x20, "");
|
|
mpTitleScreen->search(cont_zt[i])->hide();
|
|
}
|
|
setZButtonString(0x529, 0xff);
|
|
|
|
static const u64 cont_bt[5] = {'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt'};
|
|
static const u64 font_bt[5] = {'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4', 'font_bt5'};
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_bt[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_bt[i]))->setString(0x20, "");
|
|
mpTitleScreen->search(cont_bt[i])->hide();
|
|
}
|
|
setBButtonString(0x522, 0xff);
|
|
|
|
static const u64 cont_at[5] = {'cont_at', 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4'};
|
|
static const u64 font_at[5] = {'font_at1', 'font_at2', 'font_at3', 'font_at4', 'font_at5'};
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_at[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(font_at[i]))->setString(0x20, "");
|
|
mpTitleScreen->search(cont_at[i])->hide();
|
|
}
|
|
setAButtonString(0x527, 0xff);
|
|
|
|
static const u64 juji_c[5] = {'juji_c00', 'juji_c01', 'juji_c02', 'juji_c03', 'juji_c04'};
|
|
static const u64 fuji_c[5] = {'fuji_c00', 'fuji_c01', 'fuji_c02', 'fuji_c03', 'fuji_c04'};
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(fuji_c[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(fuji_c[i]))->setString(0x20, "");
|
|
mpTitleScreen->search(juji_c[i])->hide();
|
|
}
|
|
setCrossLRString(0x3f9);
|
|
|
|
static const u64 ast_c[5] = {'ast_00', 'ast_01', 'ast_02', 'ast_03', 'ast_04'};
|
|
static const u64 fst_c[5] = {'fst_00', 'fst_01', 'fst_02', 'fst_03', 'fst_04'};
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(fst_c[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpTitleScreen->search(fst_c[i]))->setString(0x20, "");
|
|
mpTitleScreen->search(ast_c[i])->hide();
|
|
}
|
|
set3DStickString(0x524);
|
|
|
|
setHIO(true);
|
|
}
|
|
|
|
/* 801D6700-801D6A44 1D1040 0344+00 1/0 0/0 0/0 .text __dt__17dMenu_Fmap2DTop_cFv */
|
|
dMenu_Fmap2DTop_c::~dMenu_Fmap2DTop_c() {
|
|
deleteExplain();
|
|
delete mpTitleScreen;
|
|
mpTitleScreen = NULL;
|
|
delete mpTitleRoot;
|
|
delete mpButtonA;
|
|
mpButtonA = NULL;
|
|
delete mpButtonB;
|
|
mpButtonB = NULL;
|
|
delete mpButtonZ;
|
|
mpButtonZ = NULL;
|
|
delete mpButtonTextA;
|
|
mpButtonTextA = NULL;
|
|
delete mpButtonTextB;
|
|
mpButtonTextB = NULL;
|
|
delete mpButtonTextZ;
|
|
mpButtonTextZ = NULL;
|
|
if (mpDpadAlpha != NULL) {
|
|
delete mpDpadAlpha;
|
|
mpDpadAlpha = NULL;
|
|
}
|
|
if (mpAnalogStickAlpha != NULL) {
|
|
delete mpAnalogStickAlpha;
|
|
mpAnalogStickAlpha = NULL;
|
|
}
|
|
delete mpNamePane;
|
|
mpNamePane = NULL;
|
|
delete mpSubPane;
|
|
mpSubPane = NULL;
|
|
if (mpAnalogStick != NULL) {
|
|
delete mpAnalogStick;
|
|
mpAnalogStick = NULL;
|
|
}
|
|
if (mpDpad != NULL) {
|
|
delete mpDpad;
|
|
mpDpad = NULL;
|
|
}
|
|
delete mpContPane;
|
|
mpContPane = NULL;
|
|
for (int i = 0; i < 2; i++) {
|
|
if (mpArrowLAlpha[i] != NULL) {
|
|
delete mpArrowLAlpha[i];
|
|
}
|
|
if (mpArrowRAlpha[i] != NULL) {
|
|
delete mpArrowRAlpha[i];
|
|
}
|
|
}
|
|
delete mpAnm;
|
|
mpAnm = NULL;
|
|
}
|
|
|
|
/* 801D6A44-801D6C44 1D1384 0200+00 0/0 1/1 0/0 .text _execute__17dMenu_Fmap2DTop_cFv */
|
|
void dMenu_Fmap2DTop_c::_execute() {
|
|
switch (mAlphaButtonA) {
|
|
case ALPHA_MIN:
|
|
setAlphaAnimeMax(mpButtonA);
|
|
setAlphaAnimeMin(mpButtonTextA);
|
|
break;
|
|
case ALPHA_MID:
|
|
setAlphaAnimeMid(mpButtonA);
|
|
setAlphaAnimeMid(mpButtonTextA);
|
|
break;
|
|
default:
|
|
setAlphaAnimeMax(mpButtonA);
|
|
setAlphaAnimeMax(mpButtonTextA);
|
|
}
|
|
|
|
switch (mAlphaButtonB) {
|
|
case ALPHA_MIN:
|
|
setAlphaAnimeMax(mpButtonB);
|
|
setAlphaAnimeMin(mpButtonTextB);
|
|
break;
|
|
case ALPHA_MID:
|
|
setAlphaAnimeMid(mpButtonB);
|
|
setAlphaAnimeMid(mpButtonTextB);
|
|
break;
|
|
default:
|
|
setAlphaAnimeMax(mpButtonB);
|
|
setAlphaAnimeMax(mpButtonTextB);
|
|
}
|
|
|
|
switch (mAlphaButtonZ) {
|
|
case ALPHA_MIN:
|
|
setAlphaAnimeMax(mpButtonZ);
|
|
setAlphaAnimeMin(mpButtonTextZ);
|
|
break;
|
|
case ALPHA_MID:
|
|
setAlphaAnimeMid(mpButtonZ);
|
|
setAlphaAnimeMid(mpButtonTextZ);
|
|
break;
|
|
default:
|
|
setAlphaAnimeMax(mpButtonZ);
|
|
setAlphaAnimeMax(mpButtonTextZ);
|
|
}
|
|
|
|
if (mpDpadAlpha) {
|
|
switch (mAlphaDpad) {
|
|
case ALPHA_MIN:
|
|
setAlphaAnimeMin(mpDpadAlpha);
|
|
break;
|
|
case ALPHA_MID:
|
|
setAlphaAnimeMid(mpDpadAlpha);
|
|
break;
|
|
default:
|
|
setAlphaAnimeMax(mpDpadAlpha);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (mpAnalogStickAlpha) {
|
|
switch (mAlphaAnalogStick) {
|
|
case ALPHA_MIN:
|
|
setAlphaAnimeMin(mpAnalogStickAlpha);
|
|
break;
|
|
case ALPHA_MID:
|
|
setAlphaAnimeMid(mpAnalogStickAlpha);
|
|
break;
|
|
default:
|
|
setAlphaAnimeMax(mpAnalogStickAlpha);
|
|
break;
|
|
}
|
|
}
|
|
|
|
setHIO(false);
|
|
}
|
|
|
|
/* 801D6C44-801D6C98 1D1584 0054+00 0/0 2/2 0/0 .text setAllAlphaRate__17dMenu_Fmap2DTop_cFfb */
|
|
void dMenu_Fmap2DTop_c::setAllAlphaRate(f32 i_rate, bool i_init) {
|
|
mAlphaRate = i_rate;
|
|
if (i_init) {
|
|
mpTitleRoot->setBackupAlpha();
|
|
}
|
|
mpTitleRoot->setAlphaMorfRate(i_rate);
|
|
}
|
|
|
|
/* 801D6C98-801D6DF8 1D15D8 0160+00 1/0 0/0 0/0 .text draw__17dMenu_Fmap2DTop_cFv */
|
|
void dMenu_Fmap2DTop_c::draw() {
|
|
u32 scissor_left, scissor_top, scissor_width, scissor_height;
|
|
J2DOrthoGraph* ctx = static_cast<J2DOrthoGraph*>(dComIfGp_getCurrentGrafPort());
|
|
ctx->setup2D();
|
|
GXGetScissor(&scissor_left, &scissor_top, &scissor_width, &scissor_height);
|
|
ctx->scissor(mTransX, 0.0f, 608.0f, 448.0f);
|
|
ctx->setScissor();
|
|
mpTitleScreen->draw(mTransX, mTransY, ctx);
|
|
ctx->scissor(scissor_left, scissor_top, scissor_width, scissor_height);
|
|
ctx->setScissor();
|
|
if (mpScrnExplain) {
|
|
mpScrnExplain->draw(ctx);
|
|
}
|
|
}
|
|
|
|
/* 801D6DF8-801D6EDC 1D1738 00E4+00 0/0 1/1 0/0 .text
|
|
* btkAnimeLoop__17dMenu_Fmap2DTop_cFP19J2DAnmTextureSRTKeyf */
|
|
void dMenu_Fmap2DTop_c::btkAnimeLoop(J2DAnmTextureSRTKey* i_anm, f32 i_delta) {
|
|
if (i_anm) {
|
|
mAnmFrame += i_delta;
|
|
if (mAnmFrame >= i_anm->getFrameMax()) {
|
|
mAnmFrame -= i_anm->getFrameMax();
|
|
}
|
|
i_anm->setFrame(mAnmFrame);
|
|
} else {
|
|
mAnmFrame = 0.0f;
|
|
}
|
|
|
|
mpTitleScreen->search('spot_0')->setAnimation(i_anm);
|
|
mpTitleScreen->animation();
|
|
}
|
|
|
|
/* 801D6EDC-801D6F38 1D181C 005C+00 0/0 1/1 0/0 .text setMoyaAlpha__17dMenu_Fmap2DTop_cFUc */
|
|
void dMenu_Fmap2DTop_c::setMoyaAlpha(u8 i_alpha) {
|
|
mpTitleScreen->search('spot_0')->setAlpha(i_alpha);
|
|
}
|
|
|
|
/* 801D6F38-801D7010 1D1878 00D8+00 1/1 1/1 0/0 .text setTitleNameString__17dMenu_Fmap2DTop_cFUl
|
|
*/
|
|
void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0) {
|
|
static const u64 ffont_name[7] = {
|
|
'ffont00', 'ffontl0', 'ffontl1', 'ffontl2', 'ffontb0', 'ffontb3', 'ffontb4'
|
|
};
|
|
for (int i = 0; i < 7; i++) {
|
|
if (param_0 == 0) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(ffont_name[i]));
|
|
strcpy(text_box->getStringPtr(), "");
|
|
} else {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(ffont_name[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D7010-801D70E8 1D1950 00D8+00 0/0 2/2 0/0 .text setAreaNameString__17dMenu_Fmap2DTop_cFUl */
|
|
void dMenu_Fmap2DTop_c::setAreaNameString(u32 param_0) {
|
|
static const u64 farea_name[3] = {'f_name_1', 'f_name3', 'f_name2'};
|
|
for (int i = 0; i < 3; i++) {
|
|
if (param_0 == 0) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(farea_name[i]));
|
|
strcpy(text_box->getStringPtr(), "");
|
|
} else {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(farea_name[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D70E8-801D7210 1D1A28 0128+00 1/1 12/12 0/0 .text setZButtonString__17dMenu_Fmap2DTop_cFUlUc
|
|
*/
|
|
void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 i_alpha) {
|
|
if (param_0 == 0x529 && ((daMidna_c*)daPy_py_c::getMidnaActor())->checkPortalObjRide()) {
|
|
param_0 = 0x533;
|
|
}
|
|
|
|
static const u64 font_zt[5] = {'font_zt1', 'font_zt2', 'font_zt3', 'font_zt4', 'font_zt5'};
|
|
if (param_0 == 0 || !isWarpAccept()) {
|
|
mAlphaButtonZ = ALPHA_MID;
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(font_zt[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
|
|
if (i_alpha == ALPHA_DEFAULT) {
|
|
if (checkPlayerWarpAccept()) {
|
|
mAlphaButtonZ = ALPHA_MAX;
|
|
} else {
|
|
mAlphaButtonZ = ALPHA_MID;
|
|
}
|
|
} else {
|
|
mAlphaButtonZ = i_alpha;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D7210-801D72D4 1D1B50 00C4+00 1/1 9/9 0/0 .text setBButtonString__17dMenu_Fmap2DTop_cFUlUc
|
|
*/
|
|
void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 i_alpha) {
|
|
static const u64 font_bt[5] = {'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4', 'font_bt5'};
|
|
if (param_0 == 0) {
|
|
mAlphaButtonB = ALPHA_MIN;
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(font_bt[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
|
|
if (i_alpha == ALPHA_DEFAULT) {
|
|
mAlphaButtonB = ALPHA_MAX;
|
|
} else {
|
|
mAlphaButtonB = i_alpha;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D72D4-801D7398 1D1C14 00C4+00 1/1 14/14 0/0 .text setAButtonString__17dMenu_Fmap2DTop_cFUlUc
|
|
*/
|
|
void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 i_alpha) {
|
|
static const u64 font_at[5] = {'font_at1', 'font_at2', 'font_at3', 'font_at4', 'font_at5'};
|
|
if (param_0 == 0) {
|
|
mAlphaButtonA = ALPHA_MIN;
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(font_at[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
|
|
if (i_alpha == ALPHA_DEFAULT) {
|
|
mAlphaButtonA = ALPHA_MAX;
|
|
} else {
|
|
mAlphaButtonA = i_alpha;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D7398-801D74EC 1D1CD8 0154+00 1/1 8/8 0/0 .text setCrossLRString__17dMenu_Fmap2DTop_cFUl */
|
|
void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0) {
|
|
static const u64 juji_c[5] = {'fuji_c00', 'fuji_c01', 'fuji_c02', 'fuji_c03', 'fuji_c04'};
|
|
if (param_0 == 0) {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(juji_c[i]));
|
|
strcpy(text_box->getStringPtr(), "");
|
|
}
|
|
mpTitleScreen->search('juy_sha0')->show();
|
|
mAlphaDpad = 1;
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(juji_c[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
mpTitleScreen->search('juy_sha0')->show();
|
|
mAlphaDpad = 2;
|
|
}
|
|
}
|
|
|
|
/* 801D74EC-801D7640 1D1E2C 0154+00 1/1 10/10 0/0 .text set3DStickString__17dMenu_Fmap2DTop_cFUl
|
|
*/
|
|
void dMenu_Fmap2DTop_c::set3DStickString(u32 param_0) {
|
|
static const u64 ast_c[5] = {'fst_00', 'fst_01', 'fst_02', 'fst_03', 'fst_04'};
|
|
if (param_0 == 0) {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(ast_c[i]));
|
|
strcpy(text_box->getStringPtr(), "");
|
|
}
|
|
mpTitleScreen->search('as_sha0')->show();
|
|
mAlphaAnalogStick = 1;
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
J2DTextBox* text_box = static_cast<J2DTextBox*>(mpTitleScreen->search(ast_c[i]));
|
|
dMeter2Info_getStringKanji(param_0, text_box->getStringPtr(), NULL);
|
|
}
|
|
mpTitleScreen->search('as_sha0')->show();
|
|
mAlphaAnalogStick = 2;
|
|
}
|
|
}
|
|
|
|
/* 801D7640-801D76C0 1D1F80 0080+00 0/0 5/5 0/0 .text
|
|
* createExplain__17dMenu_Fmap2DTop_cFP10JKRExpHeapP9STControl */
|
|
void dMenu_Fmap2DTop_c::createExplain(JKRExpHeap* i_heap, STControl* i_stick) {
|
|
if (!mpScrnExplain) {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(i_heap);
|
|
mpScrnExplain = new dMsgScrnExplain_c(i_stick, 0, false, 1);
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
}
|
|
|
|
/* 801D76C0-801D7714 1D2000 0054+00 1/1 2/2 0/0 .text deleteExplain__17dMenu_Fmap2DTop_cFv */
|
|
void dMenu_Fmap2DTop_c::deleteExplain() {
|
|
if (mpScrnExplain) {
|
|
delete mpScrnExplain;
|
|
mpScrnExplain = NULL;
|
|
}
|
|
}
|
|
|
|
/* 801D7714-801D77C4 1D2054 00B0+00 0/0 12/12 0/0 .text
|
|
* setArrowAlphaRatio__17dMenu_Fmap2DTop_cFUcf */
|
|
void dMenu_Fmap2DTop_c::setArrowAlphaRatio(u8 i_mask, f32 i_rate) {
|
|
if (i_mask & ARROW_LEFT) {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (mpArrowLAlpha[i]) {
|
|
mpArrowLAlpha[i]->setAlphaRate(i_rate);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (i_mask & ARROW_RIGHT) {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (mpArrowRAlpha[i]) {
|
|
mpArrowRAlpha[i]->setAlphaRate(i_rate);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801D77C4-801D7858 1D2104 0094+00 1/1 0/0 0/0 .text
|
|
* setAlphaAnimeMin__17dMenu_Fmap2DTop_cFP13CPaneMgrAlpha */
|
|
void dMenu_Fmap2DTop_c::setAlphaAnimeMin(CPaneMgrAlpha* i_pane) {
|
|
s16 timer = i_pane->getAlphaTimer();
|
|
if (timer > 0 || i_pane->getAlphaRate() != 0.0f) {
|
|
timer--;
|
|
if (timer < 0) {
|
|
timer = 0;
|
|
}
|
|
i_pane->alphaAnimeStart(timer);
|
|
i_pane->setAlphaRate(timer / 5.0f);
|
|
}
|
|
}
|
|
|
|
/* 801D7858-801D78FC 1D2198 00A4+00 1/1 0/0 0/0 .text
|
|
* setAlphaAnimeMid__17dMenu_Fmap2DTop_cFP13CPaneMgrAlpha */
|
|
void dMenu_Fmap2DTop_c::setAlphaAnimeMid(CPaneMgrAlpha* i_pane) {
|
|
s16 timer = i_pane->getAlphaTimer();
|
|
if (timer != 3 || i_pane->getAlphaRate() != 0.25f) {
|
|
if (timer > 3) {
|
|
timer--;
|
|
} else if (timer < 3) {
|
|
timer++;
|
|
}
|
|
i_pane->alphaAnimeStart(timer);
|
|
i_pane->setAlphaRate(timer / 6.0f * 0.5f);
|
|
}
|
|
}
|
|
|
|
/* 801D78FC-801D7994 1D223C 0098+00 1/1 0/0 0/0 .text
|
|
* setAlphaAnimeMax__17dMenu_Fmap2DTop_cFP13CPaneMgrAlpha */
|
|
void dMenu_Fmap2DTop_c::setAlphaAnimeMax(CPaneMgrAlpha* i_pane) {
|
|
s16 timer = i_pane->getAlphaTimer();
|
|
if (timer < 5 || i_pane->getAlphaRate() != 1.0f) {
|
|
timer++;
|
|
if (timer > 5) {
|
|
timer = 5;
|
|
}
|
|
i_pane->alphaAnimeStart(timer);
|
|
i_pane->setAlphaRate(timer / 5.0f);
|
|
}
|
|
}
|
|
|
|
/* 801D7994-801D7A08 1D22D4 0074+00 1/1 3/3 0/0 .text checkPlayerWarpAccept__17dMenu_Fmap2DTop_cFv
|
|
*/
|
|
bool dMenu_Fmap2DTop_c::checkPlayerWarpAccept() {
|
|
bool ret;
|
|
if (!checkWarpAcceptCannon()) {
|
|
ret = false;
|
|
} else if (!checkWarpAcceptRegion4()) {
|
|
ret = false;
|
|
} else {
|
|
ret = daPy_getLinkPlayerActorClass()->checkAcceptDungeonWarpAlink(0);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 801D7A08-801D7AB4 1D2348 00AC+00 1/1 0/0 0/0 .text checkWarpAcceptRegion__17dMenu_Fmap2DTop_cFi
|
|
*/
|
|
bool dMenu_Fmap2DTop_c::checkWarpAcceptRegion(int i_region) {
|
|
if (g_fmapHIO.mAllRegionsUnlocked) {
|
|
return true;
|
|
}
|
|
|
|
if (mpPortalBin) {
|
|
dMenu_Fmap_portal_data_c* portal_data = (dMenu_Fmap_portal_data_c*)mpPortalBin;
|
|
dMenu_Fmap_portal_data_c::data* portals = portal_data->mData;
|
|
for (int i = 0; i < portal_data->mCount; i++) {
|
|
if (i_region + 1 == portals[i].mRegionNo
|
|
&& dComIfGs_isStageSwitch(portals[i].mStageNo, portals[i].mSwitchNo))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* 801D7AB4-801D7B58 1D23F4 00A4+00 1/1 3/3 0/0 .text
|
|
* checkWarpAcceptRegion4__17dMenu_Fmap2DTop_cFv */
|
|
bool dMenu_Fmap2DTop_c::checkWarpAcceptRegion4() {
|
|
if (dComIfGp_getNowLevel() == 4 && !checkWarpAcceptRegion(3)) {
|
|
return false;
|
|
}
|
|
|
|
/* dSv_event_flag_c::M_071 - Cutscene - [cutscene: 20] Zant appears (during Midna's desperate hour) */
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104])
|
|
/* dSv_event_flag_c::F_0250 - Cutscene - [cutscene: 21] reunion with Zelda / Midna revived (Hyrule Castle barrier appears) */
|
|
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250]))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/* 801D7B58-801D7BCC 1D2498 0074+00 1/1 3/3 0/0 .text checkWarpAcceptCannon__17dMenu_Fmap2DTop_cFv */
|
|
bool dMenu_Fmap2DTop_c::checkWarpAcceptCannon() {
|
|
/* dSv_event_flag_c::F_0786 - Kakariko Village - Forced conversation with Shad when he sees the sky cannon */
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[786])
|
|
/* dSv_event_flag_c::F_0785 - Kakariko Village - Shad leaves after attempting to warp sky cannon */
|
|
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[785]))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/* 801D7BCC-801D8088 1D250C 04BC+00 2/2 0/0 0/0 .text setHIO__17dMenu_Fmap2DTop_cFb */
|
|
void dMenu_Fmap2DTop_c::setHIO(bool param_0) {
|
|
if (mTitlePosX != g_fmapHIO.mTitlePosX || mTitlePosY != g_fmapHIO.mTitlePosY) {
|
|
mTitlePosX = g_fmapHIO.mTitlePosX;
|
|
mTitlePosY = g_fmapHIO.mTitlePosY;
|
|
mpNamePane->paneTrans(mTitlePosX, mTitlePosY);
|
|
}
|
|
|
|
if (mTitleScale != g_fmapHIO.mTitleScale) {
|
|
mTitleScale = g_fmapHIO.mTitleScale;
|
|
mpNamePane->scale(mTitleScale, mTitleScale);
|
|
}
|
|
|
|
if (mSubTitlePosX != g_fmapHIO.mSubTitlePosX || mSubTitlePosY != g_fmapHIO.mSubTitlePosY) {
|
|
mSubTitlePosX = g_fmapHIO.mSubTitlePosX;
|
|
mSubTitlePosY = g_fmapHIO.mSubTitlePosY;
|
|
mpSubPane->paneTrans(mSubTitlePosX, mSubTitlePosY);
|
|
}
|
|
|
|
if (mSubTitleScale != g_fmapHIO.mSubTitleScale) {
|
|
mSubTitleScale = g_fmapHIO.mSubTitleScale;
|
|
mpSubPane->scale(mSubTitleScale, mSubTitleScale);
|
|
}
|
|
|
|
if (mpAnalogStick) {
|
|
if (mAreaMovementPosX != g_fmapHIO.mAreaMovementPosX
|
|
|| mAreaMovementPosY != g_fmapHIO.mAreaMovementPosY)
|
|
{
|
|
mAreaMovementPosX = g_fmapHIO.mAreaMovementPosX;
|
|
mAreaMovementPosY = g_fmapHIO.mAreaMovementPosY;
|
|
mpAnalogStick->paneTrans(mAreaMovementPosX, mAreaMovementPosY);
|
|
}
|
|
|
|
if (mAreaMovementScale != g_fmapHIO.mAreaMovementScale) {
|
|
mAreaMovementScale = g_fmapHIO.mAreaMovementScale;
|
|
mpAnalogStick->scale(mAreaMovementScale, mAreaMovementScale);
|
|
}
|
|
}
|
|
|
|
if (mpDpad) {
|
|
if (mClosingPosX != g_fmapHIO.mClosingPosX || mClosingPosY != g_fmapHIO.mClosingPosY) {
|
|
mClosingPosX = g_fmapHIO.mClosingPosX;
|
|
mClosingPosY = g_fmapHIO.mClosingPosY;
|
|
mpDpad->paneTrans(mClosingPosX, mClosingPosY);
|
|
}
|
|
|
|
if (mClosingScale != g_fmapHIO.mClosingScale) {
|
|
mClosingScale = g_fmapHIO.mClosingScale;
|
|
mpDpad->scale(mClosingScale, mClosingScale);
|
|
}
|
|
}
|
|
|
|
if (mDoIconPosX != g_fmapHIO.mDoIconPosX || mDoIconPosY != g_fmapHIO.mDoIconPosY) {
|
|
mDoIconPosX = g_fmapHIO.mDoIconPosX;
|
|
mDoIconPosY = g_fmapHIO.mDoIconPosY;
|
|
mpContPane->paneTrans(mDoIconPosX, mDoIconPosY);
|
|
}
|
|
|
|
if (mDoIconScale != g_fmapHIO.mDoIconScale) {
|
|
mDoIconScale = g_fmapHIO.mDoIconScale;
|
|
mpContPane->scale(mDoIconScale, mDoIconScale);
|
|
}
|
|
|
|
if (g_fmapHIO.mButtonDebugON || param_0) {
|
|
mpButtonZ->paneTrans(g_fmapHIO.mButtonZPosX, g_fmapHIO.mButtonZPosY);
|
|
mpButtonZ->scale(g_fmapHIO.mButtonZScale, g_fmapHIO.mButtonZScale);
|
|
mpButtonA->paneTrans(g_fmapHIO.mButtonAPosX, g_fmapHIO.mButtonAPosY);
|
|
mpButtonA->scale(g_fmapHIO.mButtonAScale, g_fmapHIO.mButtonAScale);
|
|
mpButtonB->paneTrans(g_fmapHIO.mButtonBPosX, g_fmapHIO.mButtonBPosY);
|
|
mpButtonB->scale(g_fmapHIO.mButtonBScale, g_fmapHIO.mButtonBScale);
|
|
mpButtonTextZ->paneTrans(g_fmapHIO.mButtonZTextPosX, g_fmapHIO.mButtonZTextPosY);
|
|
mpButtonTextZ->scale(g_fmapHIO.mButtonZTextScale, g_fmapHIO.mButtonZTextScale);
|
|
mpButtonTextA->paneTrans(g_fmapHIO.mButtonATextPosX, g_fmapHIO.mButtonATextPosY);
|
|
mpButtonTextA->scale(g_fmapHIO.mButtonATextScale, g_fmapHIO.mButtonATextScale);
|
|
mpButtonTextB->paneTrans(g_fmapHIO.mButtonBTextPosX, g_fmapHIO.mButtonBTextPosY);
|
|
mpButtonTextB->scale(g_fmapHIO.mButtonBTextScale, g_fmapHIO.mButtonBTextScale);
|
|
}
|
|
}
|
|
|
|
/* 801D8088-801D810C 1D29C8 0084+00 1/1 3/3 0/0 .text isWarpAccept__17dMenu_Fmap2DTop_cFv */
|
|
bool dMenu_Fmap2DTop_c::isWarpAccept() {
|
|
/* dSv_event_flag_c::M_021 - Main Event - First portal warp */
|
|
if ((dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[54])
|
|
&& dMeter2Info_getMapStatus() != 9 && dMeter2Info_getMapStatus() != 7
|
|
&& dMeter2Info_getMapStatus() != 8) || g_fmapHIO.mPortalWarpON)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|