tp/src/d/d_menu_fmap2D.cpp

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,
&center_x, &center_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,
&center_x, &center_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(),
&center_x, &center_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;
}