mirror of https://github.com/zeldaret/tp
2695 lines
97 KiB
C++
2695 lines
97 KiB
C++
/**
|
|
* d_menu_collect.cpp
|
|
* Collection Menu
|
|
*/
|
|
|
|
#include "d/dolzel.h" // IWYU pragma: keep
|
|
|
|
#include "d/d_menu_collect.h"
|
|
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
|
|
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
|
|
#include "JSystem/J2DGraph/J2DTextBox.h"
|
|
#include "JSystem/JKernel/JKRExpHeap.h"
|
|
#include "JSystem/JKernel/JKRSolidHeap.h"
|
|
#include "d/actor/d_a_alink.h"
|
|
#include "d/d_select_cursor.h"
|
|
#include "d/d_menu_fishing.h"
|
|
#include "d/d_menu_insect.h"
|
|
#include "d/d_menu_letter.h"
|
|
#include "d/d_menu_option.h"
|
|
#include "d/d_menu_save.h"
|
|
#include "d/d_menu_skill.h"
|
|
#include "d/d_meter_HIO.h"
|
|
#include "d/d_msg_class.h"
|
|
#include "d/d_msg_object.h"
|
|
#include "d/d_msg_string.h"
|
|
#include "d/d_pane_class.h"
|
|
#include "d/d_item.h"
|
|
#include "d/d_lib.h"
|
|
#include "d/d_meter2_info.h"
|
|
#include "dolphin/os.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
#include "m_Do/m_Do_mtx.h"
|
|
#include "JSystem/J2DGraph/J2DAnmLoader.h"
|
|
#include "JSystem/J2DGraph/J2DGrafContext.h"
|
|
#include "d/d_menu_window.h"
|
|
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
|
|
|
typedef void (dMenu_Collect2D_c::*initFunc)();
|
|
static initFunc init[] = {
|
|
&dMenu_Collect2D_c::wait_init, &dMenu_Collect2D_c::save_open_init,
|
|
&dMenu_Collect2D_c::save_move_init, &dMenu_Collect2D_c::save_close_init,
|
|
&dMenu_Collect2D_c::option_open_init, &dMenu_Collect2D_c::option_move_init,
|
|
&dMenu_Collect2D_c::option_close_init, &dMenu_Collect2D_c::letter_open_init,
|
|
&dMenu_Collect2D_c::letter_move_init, &dMenu_Collect2D_c::letter_close_init,
|
|
&dMenu_Collect2D_c::fishing_open_init, &dMenu_Collect2D_c::fishing_move_init,
|
|
&dMenu_Collect2D_c::fishing_close_init, &dMenu_Collect2D_c::skill_open_init,
|
|
&dMenu_Collect2D_c::skill_move_init, &dMenu_Collect2D_c::skill_close_init,
|
|
&dMenu_Collect2D_c::insect_open_init, &dMenu_Collect2D_c::insect_move_init,
|
|
&dMenu_Collect2D_c::insect_close_init};
|
|
|
|
typedef void (dMenu_Collect2D_c::*processFunc)();
|
|
static processFunc process[] = {
|
|
&dMenu_Collect2D_c::wait_proc, &dMenu_Collect2D_c::save_open_proc,
|
|
&dMenu_Collect2D_c::save_move_proc, &dMenu_Collect2D_c::save_close_proc,
|
|
&dMenu_Collect2D_c::option_open_proc, &dMenu_Collect2D_c::option_move_proc,
|
|
&dMenu_Collect2D_c::option_close_proc, &dMenu_Collect2D_c::letter_open_proc,
|
|
&dMenu_Collect2D_c::letter_move_proc, &dMenu_Collect2D_c::letter_close_proc,
|
|
&dMenu_Collect2D_c::fishing_open_proc, &dMenu_Collect2D_c::fishing_move_proc,
|
|
&dMenu_Collect2D_c::fishing_close_proc, &dMenu_Collect2D_c::skill_open_proc,
|
|
&dMenu_Collect2D_c::skill_move_proc, &dMenu_Collect2D_c::skill_close_proc,
|
|
&dMenu_Collect2D_c::insect_open_proc, &dMenu_Collect2D_c::insect_move_proc,
|
|
&dMenu_Collect2D_c::insect_close_proc,
|
|
};
|
|
|
|
/* 801AFD48-801AFE34 1AA688 00EC+00 1/1 0/0 0/0 .text
|
|
* __ct__17dMenu_Collect2D_cFP10JKRExpHeapP9STControlP10CSTControl */
|
|
dMenu_Collect2D_c::dMenu_Collect2D_c(JKRExpHeap* param_0, STControl* param_1, CSTControl* param_2) {
|
|
mpHeap = param_0;
|
|
mpStick = param_1;
|
|
mpCStick = param_2;
|
|
field_0xc = NULL;
|
|
mIsWolf = daPy_py_c::checkNowWolf();
|
|
mLinkGlobalCenterPos.set(0.0f, 0.0f, 0.0f);
|
|
for (int i = 0; i < 2; i++) {
|
|
field_0x44[i] = 1.0f;
|
|
field_0x4c[i] = 1.0f;
|
|
}
|
|
mBlueSmokePosX = 0.0f;
|
|
mBlueSmokePosY = 0.0f;
|
|
mBlueSmokeScale = 1.0f;
|
|
mBlueSmokeAlpha = 1.0f;
|
|
mHeartVesselPosX = 0.0f;
|
|
mHeartVesselPosY = 0.0f;
|
|
mHeartVesselScale = 1.0f;
|
|
mHeartPiecePosX = 0.0f;
|
|
mHeartPiecePosY = 0.0f;
|
|
mHeartPieceScale = 1.0f;
|
|
mpSubHeap = JKRCreateExpHeap(0x00046000, mpHeap, 0);
|
|
}
|
|
|
|
|
|
/* 801AFE34-801AFEA4 1AA774 0070+00 1/0 0/0 0/0 .text __dt__17dMenu_Collect2D_cFv */
|
|
dMenu_Collect2D_c::~dMenu_Collect2D_c() {
|
|
if (mpSubHeap) {
|
|
mDoExt_destroyExpHeap(mpSubHeap);
|
|
mpSubHeap = NULL;
|
|
}
|
|
}
|
|
|
|
/* 801AFEA4-801B0100 1AA7E4 025C+00 1/1 0/0 0/0 .text _create__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::_create() {
|
|
mpHeap->getTotalFreeSize();
|
|
mpScreen = new J2DScreen();
|
|
mpScreen->setPriority("zelda_collect_soubi_screen.blo", 0x1020000,
|
|
dComIfGp_getCollectResArchive());
|
|
dPaneClass_showNullPane(mpScreen);
|
|
mpScreenIcon = new J2DScreen();
|
|
mpScreenIcon->setPriority("zelda_collect_soubi_do_icon_parts.blo", 0x20000,
|
|
dComIfGp_getCollectResArchive());
|
|
for (int i = 0; i < 2; i++) {
|
|
mpButtonAB[i] = NULL;
|
|
mpButtonText[i] = NULL;
|
|
}
|
|
dPaneClass_showNullPane(mpScreenIcon);
|
|
mpDraw2DTop = new dMenu_Collect2DTop_c(this);
|
|
ResTIMG* image = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
|
|
mpBlackTex = new J2DPicture(image);
|
|
mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
|
|
mpBlackTex->setAlpha(0);
|
|
mpDrawCursor = new dSelect_cursor_c(2, 1.0f, NULL);
|
|
mpString = new dMsgString_c();
|
|
mpSaveScrn = NULL;
|
|
mpOptionScrn = NULL;
|
|
mpLetterScrn = NULL;
|
|
mpFishingScrn = NULL;
|
|
mpSkillScrn = NULL;
|
|
mpInsectScrn = NULL;
|
|
mProcess = 0;
|
|
animationSet();
|
|
screenSet();
|
|
initialize();
|
|
setHIO(true);
|
|
}
|
|
|
|
/* 801B0100-801B0570 1AAA40 0470+00 1/1 0/0 0/0 .text _delete__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::_delete() {
|
|
mpHeap->getTotalFreeSize();
|
|
dMeter2Info_setCollectCursorPosXY(mCursorX, mCursorY);
|
|
delete mpScreen;
|
|
mpScreen = NULL;
|
|
delete mpScreenIcon;
|
|
mpScreenIcon = NULL;
|
|
for (int i = 0; i < 2; i++) {
|
|
if (mpButtonAB[i]) {
|
|
delete mpButtonAB[i];
|
|
mpButtonAB[i] = NULL;
|
|
}
|
|
if (mpButtonText[i]) {
|
|
delete mpButtonText[i];
|
|
mpButtonText[i] = NULL;
|
|
}
|
|
}
|
|
delete mpDraw2DTop;
|
|
mpDraw2DTop = NULL;
|
|
delete mpBlackTex;
|
|
mpBlackTex = NULL;
|
|
delete mpDrawCursor;
|
|
mpDrawCursor = NULL;
|
|
delete mpString;
|
|
mpString = NULL;
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSaveScrn) {
|
|
mpSaveScrn->_delete();
|
|
delete mpSaveScrn;
|
|
mpSaveScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
if (mpOptionScrn) {
|
|
mpOptionScrn->_delete();
|
|
delete mpOptionScrn;
|
|
mpOptionScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
if (mpLetterScrn) {
|
|
delete mpLetterScrn;
|
|
mpLetterScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
if (mpFishingScrn) {
|
|
delete mpFishingScrn;
|
|
mpFishingScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
if (mpSkillScrn) {
|
|
delete mpSkillScrn;
|
|
mpSkillScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
if (mpInsectScrn) {
|
|
delete mpInsectScrn;
|
|
mpInsectScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
delete mpAnmKey;
|
|
mpAnmKey = NULL;
|
|
for (int i = 0; i < 7; i++) {
|
|
for (int j = 0; j < 6; j++) {
|
|
if (mpSelPm[i][j]) {
|
|
delete mpSelPm[i][j];
|
|
mpSelPm[i][j] = NULL;
|
|
}
|
|
}
|
|
}
|
|
delete mpLinkPm;
|
|
mpLinkPm = NULL;
|
|
delete mpMaskPm;
|
|
mpMaskPm = NULL;
|
|
delete mpModelBg;
|
|
mpModelBg = NULL;
|
|
delete mpHeartParent;
|
|
mpHeartParent = NULL;
|
|
delete mpHeartPiece;
|
|
mpHeartPiece = NULL;
|
|
dComIfGp_getCollectResArchive()->removeResourceAll();
|
|
}
|
|
|
|
/* 801B0570-801B05A8 1AAEB0 0038+00 1/1 0/0 0/0 .text initialize__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::initialize() {
|
|
(this->*init[mProcess])();
|
|
}
|
|
|
|
/* 801B05A8-801B061C 1AAEE8 0074+00 2/2 0/0 0/0 .text isFishIconVisible__17dMenu_Collect2D_cFv */
|
|
bool dMenu_Collect2D_c::isFishIconVisible() {
|
|
if (dComIfGs_getFishNum(0) || dComIfGs_getFishNum(1) || dComIfGs_getFishNum(2) ||
|
|
dComIfGs_getFishNum(3) || dComIfGs_getFishNum(4) || dComIfGs_getFishNum(5) ||
|
|
g_drawHIO.mFishListScreen.mDebug)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 801B061C-801B071C 1AAF5C 0100+00 2/2 0/0 0/0 .text isSkillIconVisible__17dMenu_Collect2D_cFv */
|
|
bool dMenu_Collect2D_c::isSkillIconVisible() {
|
|
/* dSv_event_flag_c::F_0338 - Secret techniques - Obtained 1 secret techinques - Shield attack */
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[338]) ||
|
|
/* dSv_event_flag_c::F_0339 - Secret techniques - Obtained 2 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[339]) ||
|
|
/* dSv_event_flag_c::F_0340 - Secret techniques - Obtained 3 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[340]) ||
|
|
/* dSv_event_flag_c::F_0341 - Secret techniques - Obtained 4 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[341]) ||
|
|
/* dSv_event_flag_c::F_0342 - Secret techniques - Obtained 5 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[342]) ||
|
|
/* dSv_event_flag_c::F_0343 - Secret techniques - Obtained 6 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[343]) ||
|
|
/* dSv_event_flag_c::F_0344 - Secret techniques - Obtained 7 secret techinques */
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[344]))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 801B071C-801B074C 1AB05C 0030+00 2/2 0/0 0/0 .text isInsectIconVisible__17dMenu_Collect2D_cFv
|
|
*/
|
|
bool dMenu_Collect2D_c::isInsectIconVisible() {
|
|
return dMenu_Insect_c::getGetInsectNum();
|
|
}
|
|
|
|
static u8 const lit_3778[12] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 801B074C-801B1C3C 1AB08C 14F0+00 1/1 0/0 0/0 .text screenSet__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::screenSet() {
|
|
static const u64 text_sv[3] = {'sav_0', 'sav_1', 'sav_2'};
|
|
static const u64 text_op[3] = {'opt_0', 'opt_1', 'opt_2',};
|
|
static const u64 ftext_sv[3] = {'f_sav_0', 'f_sav_1', 'f_sav_2'};
|
|
static const u64 ftext_op[3] = {'f_opt_0', 'f_opt_1', 'f_opt_2'};
|
|
static const u64 text_a_tag[5] = {'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5'};
|
|
static const u64 text_b_tag[5] = {'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5'};
|
|
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_t00'))->setFont(mDoExt_getRubyFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_t00'))->setString(0x20, "");
|
|
dMeter2Info_getStringKanji(
|
|
0x3E1, static_cast<J2DTextBox*>(mpScreen->search('f_t00'))->getStringPtr(), NULL);
|
|
mpScreen->search('t_t00')->hide();
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
static_cast<J2DTextBox*>(mpScreen->search(ftext_sv[i]))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search(ftext_op[i]))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search(ftext_sv[i]))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search(ftext_op[i]))->setString(0x20, "");
|
|
dMeter2Info_getStringKanji(
|
|
0x60, static_cast<J2DTextBox*>(mpScreen->search(ftext_sv[i]))->getStringPtr(), NULL);
|
|
dMeter2Info_getStringKanji(
|
|
0x5F, static_cast<J2DTextBox*>(mpScreen->search(ftext_op[i]))->getStringPtr(), NULL);
|
|
mpScreen->search(text_sv[i])->hide();
|
|
mpScreen->search(text_op[i])->hide();
|
|
}
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_a_tag[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_b_tag[i]))
|
|
->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_a_tag[i]))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_b_tag[i]))->setString(0x20, "");
|
|
}
|
|
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n04'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n05'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n06'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n07'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n04'))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n05'))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n06'))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n07'))->setString(0x20, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_text1'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_text0'))->setFont(mDoExt_getMesgFont());
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_text1'))->setString(0x100, "");
|
|
static_cast<J2DTextBox*>(mpScreen->search('f_text0'))->setString(0x100, "");
|
|
|
|
mpScreen->search('item_n00')->hide();
|
|
mpScreen->search('item_n01')->hide();
|
|
mpScreen->search('item_n02')->hide();
|
|
mpScreen->search('item_n03')->hide();
|
|
mpScreen->search('i_text1')->hide();
|
|
mpScreen->search('i_text0')->hide();
|
|
|
|
field_0x22d[0][0] = 0;
|
|
field_0x22d[1][0] = 0;
|
|
field_0x22d[2][0] = 0;
|
|
field_0x22d[3][0] = dComIfGs_isItemFirstBit(0x28) ||
|
|
(dComIfGs_isItemFirstBit(0x3F)
|
|
/* dSv_event_flag_c::F_0026 - Ordon Village - gave wooden sword to talo on 3rd day */
|
|
&& !dComIfGs_isEventBit(0x302)) ?
|
|
true :
|
|
false;
|
|
|
|
if (field_0x22d[3][0] != 0) {
|
|
if (dComIfGs_isItemFirstBit(0x28)) {
|
|
mpScreen->search('ken_00')->hide();
|
|
mpScreen->search('ken_01')->show();
|
|
} else if (dComIfGs_isItemFirstBit(0x3F)
|
|
/* dSv_event_flag_c::F_0026 - Ordon Village - gave wooden sword to talo on 3rd day */
|
|
&& !dComIfGs_isEventBit(0x302)) {
|
|
mpScreen->search('ken_00')->show();
|
|
mpScreen->search('ken_01')->hide();
|
|
}
|
|
}
|
|
|
|
field_0x22d[4][0] =
|
|
dComIfGs_isItemFirstBit(0x29) || dComIfGs_isItemFirstBit(0x49) ? true : false;
|
|
if (dComIfGs_getMaxLife() > 15) {
|
|
field_0x22d[5][0] = 1;
|
|
} else {
|
|
field_0x22d[5][0] = 0;
|
|
}
|
|
field_0x22d[6][0] = dMenu_Collect3D_c::getMaskMdlVisible();
|
|
field_0x22d[0][1] = 0;
|
|
field_0x22d[1][1] = 0;
|
|
field_0x22d[2][1] = 0;
|
|
|
|
field_0x22d[3][1] =
|
|
dComIfGs_isItemFirstBit(0x2B) || dComIfGs_isItemFirstBit(0x2A) ? true : false;
|
|
if (field_0x22d[3][1] != 0) {
|
|
if (dComIfGs_isItemFirstBit(0x2B)) {
|
|
mpScreen->search('tate_00')->show();
|
|
mpScreen->search('tate_01')->hide();
|
|
} else if (dComIfGs_isItemFirstBit(0x2A)) {
|
|
mpScreen->search('tate_00')->hide();
|
|
mpScreen->search('tate_01')->show();
|
|
}
|
|
}
|
|
field_0x22d[4][1] = dComIfGs_isItemFirstBit(0x2C);
|
|
field_0x22d[5][1] = 0;
|
|
field_0x22d[6][1] = 0;
|
|
field_0x22d[0][2] = 0;
|
|
field_0x22d[1][2] = 0;
|
|
field_0x22d[2][2] = 0;
|
|
if (dComIfGs_getSelectEquipClothes() == fpcNm_ITEM_WEAR_CASUAL) {
|
|
field_0x22d[3][2] = 0;
|
|
field_0x22d[4][2] = 0;
|
|
field_0x22d[5][2] = 0;
|
|
} else {
|
|
field_0x22d[3][2] = dComIfGs_isItemFirstBit(0x2F);
|
|
field_0x22d[4][2] = dComIfGs_isItemFirstBit(0x31);
|
|
field_0x22d[5][2] = dComIfGs_isItemFirstBit(0x30);
|
|
}
|
|
field_0x22d[6][2] = 0;
|
|
field_0x22d[0][3] = 1;
|
|
if (checkItemGet(fpcNm_ITEM_BOW, 1)) {
|
|
field_0x22d[1][3] = 1;
|
|
} else {
|
|
field_0x22d[1][3] = 0;
|
|
}
|
|
if (isInsectIconVisible()) {
|
|
field_0x22d[2][3] = 1;
|
|
} else {
|
|
field_0x22d[2][3] = 0;
|
|
}
|
|
field_0x22d[3][3] = isSkillIconVisible();
|
|
field_0x22d[4][3] = 0;
|
|
field_0x22d[5][3] = 0;
|
|
field_0x22d[6][3] = 0;
|
|
if (dComIfGs_getCollectSmell() != fpcNm_ITEM_NONE) {
|
|
field_0x22d[0][4] = 1;
|
|
} else {
|
|
field_0x22d[0][4] = 0;
|
|
}
|
|
field_0x22d[1][4] = dComIfGs_getPohSpiritNum();
|
|
if (isFishIconVisible()) {
|
|
field_0x22d[2][4] = 1;
|
|
} else {
|
|
field_0x22d[2][4] = 0;
|
|
}
|
|
if (g_drawHIO.mLetterSelectScreen.mLetterNum > 0) {
|
|
field_0x22d[3][4] = 1;
|
|
} else {
|
|
if (dMeter2Info_getRecieveLetterNum()) {
|
|
field_0x22d[3][4] = 1;
|
|
} else {
|
|
field_0x22d[3][4] = 0;
|
|
}
|
|
}
|
|
field_0x22d[4][4] = 0;
|
|
field_0x22d[5][4] = 0;
|
|
field_0x22d[6][4] = 0;
|
|
field_0x22d[0][5] = 1;
|
|
field_0x22d[1][5] = 1;
|
|
field_0x22d[2][5] = 0;
|
|
field_0x22d[3][5] = 0;
|
|
field_0x22d[4][5] = 0;
|
|
field_0x22d[5][5] = 0;
|
|
field_0x22d[6][5] = 0;
|
|
field_0x184[0][0] = 0;
|
|
field_0x184[1][0] = 0;
|
|
field_0x184[2][0] = 0;
|
|
if (dComIfGs_isItemFirstBit(0x28)) {
|
|
field_0x184[3][0] = 0x18d;
|
|
} else {
|
|
field_0x184[3][0] = 0x1a4;
|
|
}
|
|
if (dComIfGs_isItemFirstBit(0x49)) {
|
|
field_0x184[4][0] = 0x1ae;
|
|
} else {
|
|
field_0x184[4][0] = 0x18e;
|
|
}
|
|
field_0x184[5][0] = 0x186;
|
|
if (field_0x22d[6][0] == 2) {
|
|
if (dMenu_Collect3D_c::getMirrorNum() >= 4) {
|
|
field_0x184[6][0] = 0x20c;
|
|
} else {
|
|
if (dMenu_Collect3D_c::getMirrorNum() >= 2) {
|
|
field_0x184[6][0] = 0x20b;
|
|
} else {
|
|
field_0x184[6][0] = 0x20a;
|
|
}
|
|
}
|
|
} else {
|
|
if (dMenu_Collect3D_c::getCrystalNum() <= 1) {
|
|
field_0x184[6][0] = 0x5aa;
|
|
} else {
|
|
field_0x184[6][0] = 0x5ab;
|
|
}
|
|
}
|
|
field_0x184[0][1] = 0;
|
|
field_0x184[1][1] = 0;
|
|
field_0x184[2][1] = 0;
|
|
if (dComIfGs_isItemFirstBit(0x2B)) {
|
|
field_0x184[3][1] = 0x190;
|
|
} else {
|
|
field_0x184[3][1] = 0x18f;
|
|
}
|
|
field_0x184[4][1] = 0x191;
|
|
field_0x184[5][1] = 0x192;
|
|
field_0x184[6][1] = 0;
|
|
field_0x184[0][2] = 0;
|
|
field_0x184[1][2] = 0;
|
|
field_0x184[2][2] = 0;
|
|
field_0x184[3][2] = 0x194;
|
|
field_0x184[4][2] = 0x196;
|
|
field_0x184[5][2] = 0x195;
|
|
field_0x184[6][2] = 0;
|
|
if (dComIfGs_getRupeeMax() == WALLET_MAX) {
|
|
field_0x184[0][3] = 0x199;
|
|
} else if (dComIfGs_getRupeeMax() == BIG_WALLET_MAX) {
|
|
field_0x184[0][3] = 0x19a;
|
|
} else {
|
|
field_0x184[0][3] = 0x19b;
|
|
}
|
|
if (dComIfGs_getArrowMax() == QUIVER_MAX) {
|
|
field_0x184[1][3] = 0x1b9;
|
|
} else if (dComIfGs_getArrowMax() == BIG_QUIVER_MAX) {
|
|
field_0x184[1][3] = 0x1ba;
|
|
} else {
|
|
field_0x184[1][3] = 0x1bb;
|
|
}
|
|
field_0x184[2][3] = 0x5b8;
|
|
field_0x184[3][3] = 0x5b0;
|
|
field_0x184[4][3] = 0;
|
|
field_0x184[5][3] = 0;
|
|
field_0x184[6][3] = 0;
|
|
field_0x184[0][4] = dMsgObject_getSmellTypeMessageID();
|
|
field_0x184[1][4] = 0x245;
|
|
field_0x184[2][4] = 0x5a1;
|
|
field_0x184[3][4] = 0x4c8;
|
|
field_0x184[4][4] = 0;
|
|
field_0x184[5][4] = 0;
|
|
field_0x184[6][4] = 0;
|
|
field_0x184[0][5] = 0x60;
|
|
field_0x184[1][5] = 0x5f;
|
|
field_0x184[2][5] = 0;
|
|
field_0x184[3][5] = 0;
|
|
field_0x184[4][5] = 0;
|
|
field_0x184[5][5] = 0;
|
|
field_0x184[6][5] = 0;
|
|
field_0x1d8[0][0] = 0;
|
|
field_0x1d8[1][0] = 0;
|
|
field_0x1d8[2][0] = 0;
|
|
field_0x1d8[3][0] = field_0x184[3][0] + 0x100;
|
|
field_0x1d8[4][0] = field_0x184[4][0] + 0x100;
|
|
field_0x1d8[5][0] = field_0x184[5][0] + 0x100;
|
|
if (field_0x22d[6][0] == 2) {
|
|
if (dMenu_Collect3D_c::getMirrorNum() >= 4) {
|
|
field_0x1d8[6][0] = 0x30c;
|
|
} else {
|
|
if (dMenu_Collect3D_c::getMirrorNum() >= 2) {
|
|
field_0x1d8[6][0] = 0x30b;
|
|
} else {
|
|
field_0x1d8[6][0] = 0x30a;
|
|
}
|
|
}
|
|
} else {
|
|
if (dMenu_Collect3D_c::getCrystalNum() <= 1) {
|
|
field_0x1d8[6][0] = 0x5ac;
|
|
} else {
|
|
field_0x1d8[6][0] = 0x5ad;
|
|
}
|
|
}
|
|
field_0x1d8[0][1] = 0;
|
|
field_0x1d8[1][1] = 0;
|
|
field_0x1d8[2][1] = 0;
|
|
field_0x1d8[3][1] = field_0x184[3][1] + 0x100;
|
|
field_0x1d8[4][1] = field_0x184[4][1] + 0x100;
|
|
field_0x1d8[5][1] = field_0x184[5][1] + 0x100;
|
|
field_0x1d8[6][1] = 0;
|
|
field_0x1d8[0][2] = 0;
|
|
field_0x1d8[1][2] = 0;
|
|
field_0x1d8[2][2] = 0;
|
|
field_0x1d8[3][2] = field_0x184[3][2] + 0x100;
|
|
field_0x1d8[4][2] = field_0x184[4][2] + 0x100;
|
|
field_0x1d8[5][2] = field_0x184[5][2] + 0x100;
|
|
field_0x1d8[6][2] = 0;
|
|
field_0x1d8[0][3] = field_0x184[0][3] + 0x100;
|
|
field_0x1d8[1][3] = field_0x184[1][3] + 0x100;
|
|
field_0x1d8[2][3] = 0x5b9;
|
|
field_0x1d8[3][3] = 0x5b1;
|
|
field_0x1d8[4][3] = 0;
|
|
field_0x1d8[5][3] = 0;
|
|
field_0x1d8[6][3] = 0;
|
|
field_0x1d8[0][4] = dMsgObject_getSmellTypeMessageID() + 0x100;
|
|
/* dSv_event_flag_c::F_0456 - Castle Town - First time meeting with Jovani */
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[456])) {
|
|
field_0x1d8[1][4] = 0x12d8;
|
|
} else {
|
|
field_0x1d8[1][4] = field_0x184[1][4] + 0x100;
|
|
}
|
|
field_0x1d8[2][4] = 0x5a2;
|
|
field_0x1d8[3][4] = 0x4c9;
|
|
field_0x1d8[4][4] = 0;
|
|
field_0x1d8[5][4] = 0;
|
|
field_0x1d8[6][4] = 0;
|
|
field_0x1d8[0][5] = 0x4c5;
|
|
field_0x1d8[1][5] = 0x4c6;
|
|
field_0x1d8[2][5] = 0;
|
|
field_0x1d8[3][5] = 0;
|
|
field_0x1d8[4][5] = 0;
|
|
field_0x1d8[5][5] = 0;
|
|
field_0x1d8[6][5] = 0;
|
|
mCursorX = dMeter2Info_getCollectCursorPosX();
|
|
mCursorY = dMeter2Info_getCollectCursorPosY();
|
|
if (dMenu_Collect3D_c::getMaskMdlVisible() == 0) {
|
|
if (mCursorX == 6 && mCursorY == 0) {
|
|
mCursorX = 3;
|
|
mCursorY = 0;
|
|
}
|
|
}
|
|
field_0x259 = mCursorX;
|
|
field_0x25a = mCursorY;
|
|
mCurrentAString = 0;
|
|
mCurrentBString = 0;
|
|
field_0x180 = 0;
|
|
mItemNameString = 0;
|
|
mEquippedSword = 0xff;
|
|
mEquippedShield = 0xff;
|
|
mEquippedClothes = 0xff;
|
|
mSubWindowOpenCheck = 0;
|
|
field_0x25f = 0;
|
|
field_0x260 = 0xff;
|
|
field_0x261 = 0xff;
|
|
setEquipItemFrameColorSword(-1);
|
|
setEquipItemFrameColorShield(-1);
|
|
setEquipItemFrameColorClothes(-1);
|
|
u8 i_copy;
|
|
u8 j_copy;
|
|
bool bVar18 = false;
|
|
bool bVar2 = false;
|
|
for (int i = 0; i < 7; i++) {
|
|
for (int j = 0; j < 6; j++) {
|
|
if (getItemTag(i, j, true)) {
|
|
mpSelPm[i][j] = new CPaneMgr(mpScreen, getItemTag(i, j, true), 0, NULL);
|
|
if (!bVar18) {
|
|
i_copy = i;
|
|
j_copy = j;
|
|
bVar18 = true;
|
|
}
|
|
if (!bVar2) {
|
|
if (mCursorX == i && mCursorY == j) {
|
|
bVar2 = true;
|
|
}
|
|
}
|
|
} else {
|
|
mpSelPm[i][j] = NULL;
|
|
}
|
|
if (getItemTag(i, j, false)) {
|
|
if (field_0x22d[i][j] != 0 || (i == 5 && j == 0)) {
|
|
mpScreen->search(getItemTag(i, j, false))->show();
|
|
} else {
|
|
mpScreen->search(getItemTag(i, j, false))->hide();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!bVar2) {
|
|
mCursorX = i_copy;
|
|
mCursorY = j_copy;
|
|
}
|
|
mpLinkPm = new CPaneMgr(mpScreen, 'linki_n', 0, NULL);
|
|
mLinkGlobalCenterPos.x = mpLinkPm->getInitGlobalCenterPosX();
|
|
mLinkGlobalCenterPos.y = mpLinkPm->getInitGlobalCenterPosY();
|
|
mLinkGlobalCenterPos.z = -1000.0f;
|
|
mpMaskPm = new CPaneMgr(mpScreen, 'kamen_n', 0, NULL);
|
|
mpModelBg = new CPaneMgr(mpScreen, 'modelbgn', 2, NULL);
|
|
mpHeartParent = new CPaneMgr(mpScreen, 'heart_n', 0, NULL);
|
|
mpHeartPiece = new CPaneMgr(mpScreen, 'heart_kn', 0, NULL);
|
|
setAButtonString(mCurrentAString);
|
|
setBButtonString(mCurrentBString);
|
|
setItemNameString(mCursorX, mCursorY);
|
|
cursorPosSet();
|
|
setArrowMaxNum(dComIfGs_getArrowMax());
|
|
setWalletMaxNum(dComIfGs_getRupeeMax());
|
|
setSmellType();
|
|
setHeartPiece();
|
|
setPohMaxNum(dComIfGs_getPohSpiritNum());
|
|
}
|
|
|
|
/* 801B1C3C-801B1CE0 1AC57C 00A4+00 1/1 0/0 0/0 .text animationSet__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::animationSet() {
|
|
OSInitFastCast();
|
|
void* resource =
|
|
JKRGetNameResource("zelda_collect_soubi_screen.btk", dComIfGp_getCollectResArchive());
|
|
mpAnmKey = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(resource);
|
|
mpAnmKey->searchUpdateMaterialID(mpScreen);
|
|
field_0x34 = 0.0f;
|
|
mFrame = 0.0f;
|
|
field_0x3c = 0.0f;
|
|
}
|
|
|
|
/* 801B1CE0-801B1EDC 1AC620 01FC+00 1/1 0/0 0/0 .text
|
|
* btkAnimeLoop0__17dMenu_Collect2D_cFP19J2DAnmTextureSRTKey */
|
|
void dMenu_Collect2D_c::btkAnimeLoop0(J2DAnmTextureSRTKey* i_SRTKey) {
|
|
if (i_SRTKey != NULL) {
|
|
mFrame++;
|
|
if (mFrame >= i_SRTKey->getFrameMax()) {
|
|
mFrame -= i_SRTKey->getFrameMax();
|
|
}
|
|
i_SRTKey->setFrame(mFrame);
|
|
} else {
|
|
mFrame = 0.0f;
|
|
}
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg0'))->setAnimation(i_SRTKey);
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg1'))->setAnimation(i_SRTKey);
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg2'))->setAnimation(i_SRTKey);
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg3'))->setAnimation(i_SRTKey);
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg4'))->setAnimation(i_SRTKey);
|
|
static_cast<J2DTextBox*>(mpScreen->search('modelbg5'))->setAnimation(i_SRTKey);
|
|
}
|
|
|
|
/* 801B1EDC-801B1FAC 1AC81C 00D0+00 1/1 0/0 0/0 .text setBackAlpha__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::setBackAlpha() {
|
|
f32 alpha = mpBlackTex->getAlpha() / 150.0f;
|
|
|
|
switch (mProcess) {
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 16:
|
|
case 17:
|
|
case 18:
|
|
if (alpha < 1.0f) {
|
|
alpha += 0.2f;
|
|
}
|
|
if (alpha > 1.0f) {
|
|
alpha = 1.0f;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
if (alpha > 0.0f) {
|
|
alpha -= 0.2f;
|
|
}
|
|
if (alpha < 0.0f) {
|
|
alpha = 0.0f;
|
|
}
|
|
break;
|
|
}
|
|
|
|
mpBlackTex->setAlpha(alpha * 150.0f);
|
|
}
|
|
|
|
/* 801B1FAC-801B27EC 1AC8EC 0840+00 1/1 0/0 0/0 .text cursorMove__17dMenu_Collect2D_cFv
|
|
*/
|
|
// Not sure if this works without gotos
|
|
void dMenu_Collect2D_c::cursorMove() {
|
|
u8 dVar1 = mCursorX;
|
|
u8 dVar2 = mCursorY;
|
|
mpStick->checkTrigger();
|
|
if (mpStick->checkRightTrigger()) {
|
|
if (mCursorX < 6) {
|
|
if (mCursorX == 0 && mCursorY == 0 &&
|
|
field_0x259 >= 3 && field_0x25a < 3)
|
|
{
|
|
mCursorX = field_0x259;
|
|
mCursorY = field_0x25a;
|
|
} else {
|
|
do {
|
|
mCursorX++;
|
|
if (mCursorX == 6 && mCursorY < 3) {
|
|
if (field_0x22d[6][0] != 0) {
|
|
if (getItemTag(6, 0, false) && field_0x22d[6][0] != 0) {
|
|
mCursorX = 6;
|
|
mCursorY = 0;
|
|
}
|
|
} else {
|
|
mCursorX = dVar1;
|
|
mCursorY = dVar2;
|
|
goto LAB_802ba744;
|
|
}
|
|
}
|
|
if (dVar1 == 4 && dVar2 == 1) {
|
|
mCursorX = 5;
|
|
mCursorY = 0;
|
|
goto LAB_802ba744;
|
|
}
|
|
if (getItemTag(mCursorX, mCursorY, true)) {
|
|
goto LAB_802ba744;
|
|
}
|
|
} while (mCursorX < 6);
|
|
mCursorX = dVar1;
|
|
}
|
|
}
|
|
} else {
|
|
if (mpStick->checkLeftTrigger() && mCursorX != 0) {
|
|
if (mCursorX == 6 &&
|
|
mCursorY == 0 && field_0x259 >= 3 &&
|
|
field_0x25a < 3)
|
|
{
|
|
mCursorX = field_0x259;
|
|
mCursorY = field_0x25a;
|
|
} else if (dVar1 == 5 && dVar2 == 0 &&
|
|
field_0x259 == 4 &&
|
|
field_0x25a == 1)
|
|
{
|
|
mCursorX = field_0x259;
|
|
mCursorY = field_0x25a;
|
|
} else {
|
|
do {
|
|
mCursorX--;
|
|
if (getItemTag(mCursorX, mCursorY, true)) {
|
|
goto LAB_802ba744;
|
|
}
|
|
} while (mCursorX != 0);
|
|
mCursorX = dVar1;
|
|
}
|
|
}
|
|
}
|
|
LAB_802ba744:
|
|
if (mpStick->checkUpTrigger()) {
|
|
if (mCursorY != 0) {
|
|
begin:
|
|
mCursorY--;
|
|
if (mCursorY == 2) {
|
|
u8 local_3c[9] = {3,3,4,3,4,5,4,5,5};
|
|
u8 local_48[9] = {2,1,2,0,1,2,0,1,0};
|
|
for (int i = 0; i < 9; i++) {
|
|
if (getItemTag(local_3c[i], local_48[i], true)) {
|
|
mCursorX = local_3c[i];
|
|
mCursorY = local_48[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (dVar2 == 5) {
|
|
if (dVar1 == 0) {
|
|
if (field_0x25a < 5) {
|
|
mCursorX = field_0x259;
|
|
mCursorY = field_0x25a;
|
|
goto LAB_802bab54;
|
|
} else {
|
|
bool bVar3 = false;
|
|
for (int i = 0; i < 4; i++) {
|
|
if (getItemTag(i, mCursorY, true)) {
|
|
mCursorX = i;
|
|
bVar3 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (mCursorY == 0) {
|
|
mCursorX = dVar1;
|
|
mCursorY = dVar2;
|
|
bVar3 = true;
|
|
}
|
|
if (bVar3) {
|
|
goto LAB_802bab54;
|
|
}
|
|
}
|
|
} else if (field_0x25a < 5) {
|
|
mCursorX = field_0x259;
|
|
mCursorY = field_0x25a;
|
|
goto LAB_802bab54;
|
|
} else {
|
|
bool bVar4 = false;
|
|
for (int i = 3; i < 7; i++) {
|
|
if (getItemTag(i, mCursorY, true)) {
|
|
mCursorX = i;
|
|
bVar4 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (mCursorY == 0) {
|
|
mCursorX = dVar1;
|
|
mCursorY = dVar2;
|
|
bVar4 = true;
|
|
}
|
|
if (bVar4) {
|
|
goto LAB_802bab54;
|
|
}
|
|
}
|
|
goto begin;
|
|
} else {
|
|
if (getItemTag(mCursorX, mCursorY, true)) {
|
|
goto LAB_802bab54;
|
|
}
|
|
if (mCursorY != 0) {
|
|
goto begin;
|
|
}
|
|
mCursorY = dVar2;
|
|
}
|
|
}
|
|
} else if (mpStick->checkDownTrigger()) {
|
|
if (mCursorY < 4) {
|
|
do {
|
|
mCursorY++;
|
|
if (mCursorY == 3) {
|
|
u8 local_50[8] = {3, 2, 3, 1, 2, 0, 1, 0};
|
|
u8 local_58[8] = {3, 3, 4, 3, 4, 3, 4, 4};
|
|
for (int i = 0; i < 8; i++) {
|
|
if (getItemTag(local_50[i], local_58[i], true)) {
|
|
mCursorX = local_50[i];
|
|
mCursorY = local_58[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (getItemTag(mCursorX, mCursorY, true)) {
|
|
goto LAB_802bab54;
|
|
}
|
|
} while (mCursorY < 4);
|
|
mCursorY = 5;
|
|
if (mCursorX <= 2) {
|
|
mCursorX = 0;
|
|
} else {
|
|
mCursorX = 1;
|
|
}
|
|
} else if (mCursorY == 4) {
|
|
mCursorY = 5;
|
|
if (mCursorX <= 3) {
|
|
mCursorX = 0;
|
|
} else {
|
|
mCursorX = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
LAB_802bab54:
|
|
if (mCursorX != dVar1 || mCursorY != dVar2) {
|
|
field_0x259 = dVar1;
|
|
field_0x25a = dVar2;
|
|
if ((mCursorX == 1 && mCursorY == 5) || (mCursorX == 0 && mCursorY == 5)) {
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_OPTION, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
|
|
0);
|
|
} else {
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_ITEM, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
cursorPosSet();
|
|
setItemNameString(mCursorX, mCursorY);
|
|
}
|
|
if (field_0x44[0] != g_drawHIO.mCollectScreen.mUnselectItemScale ||
|
|
field_0x44[1] != g_drawHIO.mCollectScreen.mSelectItemScale ||
|
|
field_0x4c[0] != g_drawHIO.mCollectScreen.mUnselectSaveOptionScale ||
|
|
field_0x4c[1] != g_drawHIO.mCollectScreen.mSelectSaveOptionScale)
|
|
{
|
|
field_0x44[0] = g_drawHIO.mCollectScreen.mUnselectItemScale;
|
|
field_0x44[1] = g_drawHIO.mCollectScreen.mSelectItemScale;
|
|
field_0x4c[0] = g_drawHIO.mCollectScreen.mUnselectSaveOptionScale;
|
|
field_0x4c[1] = g_drawHIO.mCollectScreen.mSelectSaveOptionScale;
|
|
for (int i = 0; i < 7; i++) {
|
|
for (int j = 0; j < 6; j++) {
|
|
if (getItemTag(i, j, true)) {
|
|
J2DPane* pane = mpScreen->search(getItemTag(i, j, true));
|
|
if ((i != 0 || j != 0) && (i != 6 || j != 0)) {
|
|
if (j == 5) {
|
|
if (i == mCursorX && j == mCursorY) {
|
|
pane->scale(g_drawHIO.mCollectScreen.mSelectSaveOptionScale,
|
|
g_drawHIO.mCollectScreen.mSelectSaveOptionScale);
|
|
} else {
|
|
pane->scale(g_drawHIO.mCollectScreen.mUnselectSaveOptionScale,
|
|
g_drawHIO.mCollectScreen.mUnselectSaveOptionScale);
|
|
}
|
|
} else if (i == mCursorX && j == mCursorY) {
|
|
pane->scale(g_drawHIO.mCollectScreen.mSelectItemScale,
|
|
g_drawHIO.mCollectScreen.mSelectItemScale);
|
|
} else {
|
|
pane->scale(g_drawHIO.mCollectScreen.mUnselectItemScale,
|
|
g_drawHIO.mCollectScreen.mUnselectItemScale);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B27EC-801B2A74 1AD12C 0288+00 2/2 0/0 0/0 .text cursorPosSet__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::cursorPosSet() {
|
|
for (int i = 0; i < 7; i++) {
|
|
for (int j = 0; j < 6; j++) {
|
|
if (getItemTag(i, j, true) != 0) {
|
|
J2DPane* itemTag = mpScreen->search(getItemTag(i, j, true));
|
|
if ((i != 0 || j != 0) && (i != 6 || j != 0)) {
|
|
if (j == 5) {
|
|
if (i == mCursorX && j == mCursorY) {
|
|
itemTag->scale(g_drawHIO.mCollectScreen.mSelectSaveOptionScale,
|
|
g_drawHIO.mCollectScreen.mSelectSaveOptionScale);
|
|
} else {
|
|
itemTag->scale(g_drawHIO.mCollectScreen.mUnselectSaveOptionScale,
|
|
g_drawHIO.mCollectScreen.mUnselectSaveOptionScale);
|
|
}
|
|
} else if (i == mCursorX && j == mCursorY) {
|
|
itemTag->scale(g_drawHIO.mCollectScreen.mSelectItemScale,
|
|
g_drawHIO.mCollectScreen.mSelectItemScale);
|
|
} else {
|
|
itemTag->scale(g_drawHIO.mCollectScreen.mUnselectItemScale,
|
|
g_drawHIO.mCollectScreen.mUnselectItemScale);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
mpDrawCursor->setAlphaRate(1.0f);
|
|
Vec pos = mpSelPm[mCursorX][mCursorY]->getGlobalVtxCenter(false, 0);
|
|
mpDrawCursor->setPos(pos.x, pos.y, mpSelPm[mCursorX][mCursorY]->getPanePtr(), false);
|
|
if (mCursorY == 5) {
|
|
mpDrawCursor->setParam(1.1f, 0.85f, 0.05f, 0.5f, 0.5f);
|
|
} else if (mCursorX == 6 && mCursorY == 0) {
|
|
mpDrawCursor->setParam(0.6f, 0.85f, 0.03f, 0.6f, 0.6f);
|
|
} else {
|
|
mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.7f, 0.7f);
|
|
}
|
|
}
|
|
|
|
/* 801B2A74-801B2D00 1AD3B4 028C+00 1/1 0/0 0/0 .text changeSword__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::changeSword() {
|
|
switch (mCursorX) {
|
|
case 3:
|
|
if (dComIfGs_isItemFirstBit(fpcNm_ITEM_SWORD)) {
|
|
if (dComIfGs_getSelectEquipSword() != fpcNm_ITEM_SWORD) {
|
|
dMeter2Info_setSword(fpcNm_ITEM_SWORD, false);
|
|
setEquipItemFrameColorSword(0);
|
|
mDoAud_seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (dComIfGs_getSelectEquipSword() != fpcNm_ITEM_WOOD_STICK) {
|
|
dMeter2Info_setSword(fpcNm_ITEM_WOOD_STICK, false);
|
|
setEquipItemFrameColorSword(0);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
case 4:
|
|
if (dComIfGs_isItemFirstBit(fpcNm_ITEM_LIGHT_SWORD)) {
|
|
if (dComIfGs_getSelectEquipSword() != fpcNm_ITEM_LIGHT_SWORD) {
|
|
dMeter2Info_setSword(fpcNm_ITEM_LIGHT_SWORD, false);
|
|
setEquipItemFrameColorSword(1);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
|
|
0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (dComIfGs_getSelectEquipSword() != fpcNm_ITEM_MASTER_SWORD) {
|
|
dMeter2Info_setSword(fpcNm_ITEM_MASTER_SWORD, false);
|
|
setEquipItemFrameColorSword(1);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
case 5:
|
|
if (dComIfGs_getSelectEquipSword() != fpcNm_ITEM_LIGHT_SWORD) {
|
|
dMeter2Info_setSword(fpcNm_ITEM_LIGHT_SWORD, false);
|
|
setEquipItemFrameColorSword(2);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801B2D00-801B2EE4 1AD640 01E4+00 1/1 0/0 0/0 .text changeShield__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::changeShield() {
|
|
switch (mCursorX) {
|
|
case 3:
|
|
if (dComIfGs_isItemFirstBit(fpcNm_ITEM_SHIELD)) {
|
|
if (dComIfGs_getSelectEquipShield() != fpcNm_ITEM_SHIELD) {
|
|
dMeter2Info_setShield(fpcNm_ITEM_SHIELD, false);
|
|
setEquipItemFrameColorShield(0);
|
|
daAlink_getAlinkActorClass()->setShieldChange();
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
|
|
0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (dComIfGs_isItemFirstBit(fpcNm_ITEM_WOOD_SHIELD)) {
|
|
if (dComIfGs_getSelectEquipShield() != fpcNm_ITEM_WOOD_SHIELD) {
|
|
dMeter2Info_setShield(fpcNm_ITEM_WOOD_SHIELD, false);
|
|
setEquipItemFrameColorShield(0);
|
|
daAlink_getAlinkActorClass()->setShieldChange();
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
|
|
0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
}
|
|
break;
|
|
case 4:
|
|
if (dComIfGs_getSelectEquipShield() != fpcNm_ITEM_HYLIA_SHIELD) {
|
|
dMeter2Info_setShield(fpcNm_ITEM_HYLIA_SHIELD, false);
|
|
setEquipItemFrameColorShield(1);
|
|
daAlink_getAlinkActorClass()->setShieldChange();
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801B2EE4-801B30C8 1AD824 01E4+00 1/1 0/0 0/0 .text changeClothe__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::changeClothe() {
|
|
switch (mCursorX) {
|
|
case 3:
|
|
if (dComIfGs_getSelectEquipClothes() != fpcNm_ITEM_WEAR_KOKIRI) {
|
|
dMeter2Info_setCloth(fpcNm_ITEM_WEAR_KOKIRI, false);
|
|
setEquipItemFrameColorClothes(0);
|
|
daPy_getPlayerActorClass()->setClothesChange(0);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
case 4:
|
|
if (dComIfGs_getSelectEquipClothes() != fpcNm_ITEM_WEAR_ZORA) {
|
|
dMeter2Info_setCloth(fpcNm_ITEM_WEAR_ZORA, false);
|
|
setEquipItemFrameColorClothes(1);
|
|
daPy_getPlayerActorClass()->setClothesChange(0);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
case 5:
|
|
if (dComIfGs_getSelectEquipClothes() != fpcNm_ITEM_ARMOR) {
|
|
dMeter2Info_setCloth(fpcNm_ITEM_ARMOR, false);
|
|
setEquipItemFrameColorClothes(2);
|
|
daPy_getPlayerActorClass()->setClothesChange(0);
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801B30C8-801B3340 1ADA08 0278+00 1/1 0/0 0/0 .text setArrowMaxNum__17dMenu_Collect2D_cFUc */
|
|
void dMenu_Collect2D_c::setArrowMaxNum(u8 param_0) {
|
|
switch (param_0) {
|
|
case 0:
|
|
mpScreen->search('item_0_0')->hide();
|
|
mpScreen->search('item_0_1')->hide();
|
|
mpScreen->search('item_0_2')->hide();
|
|
break;
|
|
case 30:
|
|
mpScreen->search('item_0_0')->show();
|
|
mpScreen->search('item_0_1')->hide();
|
|
mpScreen->search('item_0_2')->hide();
|
|
break;
|
|
case 60:
|
|
mpScreen->search('item_0_0')->hide();
|
|
mpScreen->search('item_0_1')->show();
|
|
mpScreen->search('item_0_2')->hide();
|
|
break;
|
|
case 100:
|
|
mpScreen->search('item_0_0')->hide();
|
|
mpScreen->search('item_0_1')->hide();
|
|
mpScreen->search('item_0_2')->show();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801B3340-801B3524 1ADC80 01E4+00 1/1 0/0 0/0 .text setWalletMaxNum__17dMenu_Collect2D_cFUs */
|
|
void dMenu_Collect2D_c::setWalletMaxNum(u16 i_walletSize) {
|
|
switch (i_walletSize) {
|
|
case 300:
|
|
mpScreen->search('item_1_0')->show();
|
|
mpScreen->search('item_1_1')->hide();
|
|
mpScreen->search('item_1_2')->hide();
|
|
break;
|
|
case 600:
|
|
mpScreen->search('item_1_0')->hide();
|
|
mpScreen->search('item_1_1')->show();
|
|
mpScreen->search('item_1_2')->hide();
|
|
break;
|
|
case 1000:
|
|
mpScreen->search('item_1_0')->hide();
|
|
mpScreen->search('item_1_1')->hide();
|
|
mpScreen->search('item_1_2')->show();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 801B3524-801B3640 1ADE64 011C+00 1/1 0/0 0/0 .text setSmellType__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::setSmellType() {
|
|
static const u64 smell_tag[5] = {
|
|
'wolf_med', 'wolf_chi', 'wolf_fis', 'wolf_iri', 'wolf_pou',
|
|
};
|
|
s32 smellType = -1;
|
|
switch (dComIfGs_getCollectSmell()) {
|
|
case fpcNm_ITEM_SMELL_YELIA_POUCH:
|
|
smellType = 3;
|
|
break;
|
|
case fpcNm_ITEM_SMELL_POH:
|
|
smellType = 4;
|
|
break;
|
|
case fpcNm_ITEM_SMELL_FISH:
|
|
smellType = 2;
|
|
break;
|
|
case fpcNm_ITEM_SMELL_CHILDREN:
|
|
smellType = 1;
|
|
break;
|
|
case fpcNm_ITEM_SMELL_MEDICINE:
|
|
smellType = 0;
|
|
break;
|
|
}
|
|
for (int i = 0; i < 5; i++) {
|
|
if (i == smellType) {
|
|
mpScreen->search(smell_tag[i])->show();
|
|
} else {
|
|
mpScreen->search(smell_tag[i])->hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B3640-801B370C 1ADF80 00CC+00 1/1 0/0 0/0 .text setHeartPiece__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::setHeartPiece() {
|
|
static const u64 heart_tag[4] = {
|
|
'heart_1n',
|
|
'heart_2n',
|
|
'heart_3n',
|
|
'heart_4n',
|
|
};
|
|
s32 life = dComIfGs_getMaxLife() % 5;
|
|
for (int i = 0; i < MAX_VISIBLE_HEARTPIECES; i++) {
|
|
if (i < life) {
|
|
mpScreen->search(heart_tag[i])->show();
|
|
} else {
|
|
mpScreen->search(heart_tag[i])->hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B370C-801B39D0 1AE04C 02C4+00 1/1 0/0 0/0 .text setPohMaxNum__17dMenu_Collect2D_cFUc */
|
|
void dMenu_Collect2D_c::setPohMaxNum(u8 i_pohNum) {
|
|
if (i_pohNum > MAX_POH_NUM) {
|
|
i_pohNum = MAX_POH_NUM;
|
|
}
|
|
if (field_0x22d[0][3] != 0) {
|
|
int div = i_pohNum / 100;
|
|
s32 index = i_pohNum % 100;
|
|
u8 check = 0;
|
|
if (div > 0) {
|
|
JKRArchive* archive = dComIfGp_getMain2DArchive();
|
|
const char* textureName = dMeter2Info_getNumberTextureName(div);
|
|
ResTIMG* timg = (ResTIMG*)archive->getResource('TIMG', textureName);
|
|
static_cast<J2DPicture*>(mpScreen->search('item2_3'))->changeTexture(timg, 0);
|
|
check = 1;
|
|
} else {
|
|
mpScreen->search('item2_3')->hide();
|
|
}
|
|
div = index / 10;
|
|
index = index % 10;
|
|
if (div != 0 || check != 0) {
|
|
JKRArchive* archive = dComIfGp_getMain2DArchive();
|
|
const char* textureName2 = dMeter2Info_getNumberTextureName(div);
|
|
ResTIMG* timg2 = (ResTIMG*)archive->getResource('TIMG', textureName2);
|
|
static_cast<J2DPicture*>(mpScreen->search('item2_2'))->changeTexture(timg2, 0);
|
|
} else {
|
|
mpScreen->search('item2_2')->hide();
|
|
}
|
|
JKRArchive* archive = dComIfGp_getMain2DArchive();
|
|
const char* textureName3 = dMeter2Info_getNumberTextureName(index);
|
|
ResTIMG* timg3 = (ResTIMG*)archive->getResource('TIMG', textureName3);
|
|
static_cast<J2DPicture*>(mpScreen->search('item2_1'))->changeTexture(timg3, 0);
|
|
} else {
|
|
mpScreen->search('item2_3')->hide();
|
|
mpScreen->search('item2_2')->hide();
|
|
mpScreen->search('item2_1')->hide();
|
|
}
|
|
}
|
|
|
|
/* 801B39D0-801B3CF4 1AE310 0324+00 2/2 0/0 0/0 .text
|
|
* setEquipItemFrameColorSword__17dMenu_Collect2D_cFi */
|
|
void dMenu_Collect2D_c::setEquipItemFrameColorSword(int i_frame) {
|
|
static const u64 tag[2] = {
|
|
'ken_g_0',
|
|
'ken_g_1',
|
|
};
|
|
|
|
if (i_frame == -1) {
|
|
if (mEquippedSword != dComIfGs_getSelectEquipSword()) {
|
|
mEquippedSword = dComIfGs_getSelectEquipSword();
|
|
|
|
switch (mEquippedSword) {
|
|
case fpcNm_ITEM_SWORD:
|
|
i_frame = 0;
|
|
break;
|
|
|
|
case fpcNm_ITEM_WOOD_STICK:
|
|
i_frame = 0;
|
|
break;
|
|
|
|
case fpcNm_ITEM_MASTER_SWORD:
|
|
i_frame = 1;
|
|
break;
|
|
|
|
case fpcNm_ITEM_LIGHT_SWORD:
|
|
if (dComIfGs_isItemFirstBit(fpcNm_ITEM_LIGHT_SWORD)) {
|
|
i_frame = 1;
|
|
}
|
|
break;
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][0] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][0] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B3CF4-801B3FDC 1AE634 02E8+00 2/2 0/0 0/0 .text
|
|
* setEquipItemFrameColorShield__17dMenu_Collect2D_cFi */
|
|
void dMenu_Collect2D_c::setEquipItemFrameColorShield(int i_frame) {
|
|
static const u64 tag[2] = {
|
|
'tate_g_0',
|
|
'tate_g_1',
|
|
};
|
|
|
|
if (i_frame == -1) {
|
|
if (mEquippedShield != dComIfGs_getSelectEquipShield()) {
|
|
mEquippedShield = dComIfGs_getSelectEquipShield();
|
|
|
|
switch (mEquippedShield) {
|
|
case fpcNm_ITEM_SHIELD:
|
|
case fpcNm_ITEM_WOOD_SHIELD:
|
|
i_frame = 0;
|
|
break;
|
|
|
|
case fpcNm_ITEM_HYLIA_SHIELD:
|
|
i_frame = 1;
|
|
break;
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][1] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][1] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B3FDC-801B42D8 1AE91C 02FC+00 2/2 0/0 0/0 .text
|
|
* setEquipItemFrameColorClothes__17dMenu_Collect2D_cFi */
|
|
void dMenu_Collect2D_c::setEquipItemFrameColorClothes(int i_frame) {
|
|
static const u64 tag[3] = {
|
|
'fuku_g_0',
|
|
'fuku_g_1',
|
|
'fuku_g_2',
|
|
};
|
|
|
|
if (i_frame == -1) {
|
|
if (mEquippedClothes != dComIfGs_getSelectEquipClothes()) {
|
|
mEquippedClothes = dComIfGs_getSelectEquipClothes();
|
|
|
|
switch (mEquippedClothes) {
|
|
case fpcNm_ITEM_WEAR_KOKIRI:
|
|
i_frame = 0;
|
|
break;
|
|
|
|
case fpcNm_ITEM_WEAR_ZORA:
|
|
i_frame = 1;
|
|
break;
|
|
|
|
case fpcNm_ITEM_ARMOR:
|
|
i_frame = 2;
|
|
break;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][2] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for (int i = 0; i < 3; i++) {
|
|
if (i == i_frame && field_0x22d[i + 3][2] != 0) {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(255, 255, 0, 255));
|
|
} else {
|
|
static_cast<J2DPicture*>(mpScreen->search(tag[i]))
|
|
->setBlackWhite(JUtility::TColor(0, 0, 0, 0),
|
|
JUtility::TColor(107, 107, 107, 255));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B42D8-801B46FC 1AEC18 0424+00 2/2 0/0 0/0 .text setHIO__17dMenu_Collect2D_cFb */
|
|
void dMenu_Collect2D_c::setHIO(bool i_useHIO) {
|
|
static const u64 kaz_n[9] = {
|
|
'uzu_00', 'uzu_01', 'uzu_02', 'uzu_03', 'uzu_04', 'uzu_05', 'uzu_06', 'uzu_07', 'hishi',
|
|
};
|
|
|
|
if (mBlueSmokePosX != g_drawHIO.mCollectScreen.mBlueSmokePosX ||
|
|
mBlueSmokePosY != g_drawHIO.mCollectScreen.mBlueSmokePosY)
|
|
{
|
|
mBlueSmokePosX = g_drawHIO.mCollectScreen.mBlueSmokePosX;
|
|
mBlueSmokePosY = g_drawHIO.mCollectScreen.mBlueSmokePosY;
|
|
mpModelBg->paneTrans(mBlueSmokePosX, mBlueSmokePosY);
|
|
}
|
|
|
|
if (mBlueSmokeScale != g_drawHIO.mCollectScreen.mBlueSmokeScale) {
|
|
mBlueSmokeScale = g_drawHIO.mCollectScreen.mBlueSmokeScale;
|
|
mpModelBg->scale(mBlueSmokeScale, mBlueSmokeScale);
|
|
}
|
|
|
|
if (mBlueSmokeAlpha != g_drawHIO.mCollectScreen.mBlueSmokeAlpha) {
|
|
mBlueSmokeAlpha = g_drawHIO.mCollectScreen.mBlueSmokeAlpha;
|
|
mpModelBg->setAlphaRate(mBlueSmokeAlpha);
|
|
}
|
|
|
|
if (mHeartVesselPosX != g_drawHIO.mCollectScreen.mHeartVesselPosX ||
|
|
mHeartVesselPosY != g_drawHIO.mCollectScreen.mHeartVesselPosY)
|
|
{
|
|
mHeartVesselPosX = g_drawHIO.mCollectScreen.mHeartVesselPosX;
|
|
mHeartVesselPosY = g_drawHIO.mCollectScreen.mHeartVesselPosY;
|
|
mpHeartParent->paneTrans(mHeartVesselPosX, mHeartVesselPosY);
|
|
}
|
|
|
|
if (mHeartVesselScale != g_drawHIO.mCollectScreen.mHeartVesselScale) {
|
|
mHeartVesselScale = g_drawHIO.mCollectScreen.mHeartVesselScale;
|
|
mpHeartParent->scale(mHeartVesselScale, mHeartVesselScale);
|
|
}
|
|
|
|
if (mHeartPiecePosX != g_drawHIO.mCollectScreen.mHeartPiecePosX ||
|
|
mHeartPiecePosY != g_drawHIO.mCollectScreen.mHeartPiecePosY)
|
|
{
|
|
mHeartPiecePosX = g_drawHIO.mCollectScreen.mHeartPiecePosX;
|
|
mHeartPiecePosY = g_drawHIO.mCollectScreen.mHeartPiecePosY;
|
|
mpHeartPiece->paneTrans(mHeartPiecePosX, mHeartPiecePosY);
|
|
}
|
|
|
|
if (mHeartPieceScale != g_drawHIO.mCollectScreen.mHeartPieceScale) {
|
|
mHeartPieceScale = g_drawHIO.mCollectScreen.mHeartPieceScale;
|
|
mpHeartPiece->scale(mHeartPieceScale, mHeartPieceScale);
|
|
}
|
|
|
|
if (g_drawHIO.mCollectScreen.mColorDebugON) {
|
|
J2DPicture* basePicture = (J2DPicture*)mpScreen->search('nht_base');
|
|
basePicture->setBlackWhite(g_drawHIO.mCollectScreen.mVesselBack[0],
|
|
g_drawHIO.mCollectScreen.mVesselFront[0]);
|
|
|
|
for (int i = 0; i < 9; i++) {
|
|
J2DPicture* kazPicture = (J2DPicture*)mpScreen->search(kaz_n[i]);
|
|
kazPicture->setBlackWhite(g_drawHIO.mCollectScreen.mVesselBack[1],
|
|
g_drawHIO.mCollectScreen.mVesselFront[1]);
|
|
}
|
|
}
|
|
|
|
if (g_drawHIO.mCollectScreen.mButtonDebugON || i_useHIO) {
|
|
if (mpButtonAB[0] != NULL) {
|
|
mpButtonAB[0]->paneTrans(g_drawHIO.mCollectScreen.mButtonAPosX,
|
|
g_drawHIO.mCollectScreen.mButtonAPosY);
|
|
mpButtonAB[0]->scale(g_drawHIO.mCollectScreen.mButtonAScale,
|
|
g_drawHIO.mCollectScreen.mButtonAScale);
|
|
}
|
|
if (mpButtonAB[1] != NULL) {
|
|
mpButtonAB[1]->paneTrans(g_drawHIO.mCollectScreen.mButtonBPosX,
|
|
g_drawHIO.mCollectScreen.mButtonBPosY);
|
|
mpButtonAB[1]->scale(g_drawHIO.mCollectScreen.mButtonBScale,
|
|
g_drawHIO.mCollectScreen.mButtonBScale);
|
|
}
|
|
if (mpButtonText[0] != NULL) {
|
|
mpButtonText[0]->paneTrans(g_drawHIO.mCollectScreen.mButtonATextPosX,
|
|
g_drawHIO.mCollectScreen.mButtonATextPosY);
|
|
mpButtonText[0]->scale(g_drawHIO.mCollectScreen.mButtonATextScale,
|
|
g_drawHIO.mCollectScreen.mButtonATextScale);
|
|
}
|
|
if (mpButtonText[1] != NULL) {
|
|
mpButtonText[1]->paneTrans(g_drawHIO.mCollectScreen.mButtonBTextPosX,
|
|
g_drawHIO.mCollectScreen.mButtonBTextPosY);
|
|
mpButtonText[1]->scale(g_drawHIO.mCollectScreen.mButtonBTextScale,
|
|
g_drawHIO.mCollectScreen.mButtonBTextScale);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B46FC-801B473C 1AF03C 0040+00 3/3 0/0 0/0 .text getItemTag__17dMenu_Collect2D_cFiib
|
|
*/
|
|
u64 dMenu_Collect2D_c::getItemTag(int i_tag1, int i_tag2, bool param_3) {
|
|
static const u64 itemTag[6][7] = {
|
|
{0, 0, 0, 'ken_n0', 'ken_n1', 'heart_kn', 'kamen_n'},
|
|
{0, 0, 0, 'tate_n0', 'tate_n1'},
|
|
{
|
|
0,
|
|
0,
|
|
0,
|
|
'fuku_n0',
|
|
'fuku_n1',
|
|
'fuku_n2',
|
|
},
|
|
{
|
|
'item_1_n',
|
|
'item_0_n',
|
|
'kabu_6n',
|
|
'maki_5_n',
|
|
},
|
|
{
|
|
'wolf_n',
|
|
'item_2_n',
|
|
'fish_3_n',
|
|
'lett_4_n',
|
|
},
|
|
{'save_n', 'option_n'},
|
|
};
|
|
|
|
if (i_tag2 == 5 && !param_3) {
|
|
return 0;
|
|
}
|
|
return itemTag[i_tag2][i_tag1];
|
|
}
|
|
|
|
/* 801B473C-801B48D0 1AF07C 0194+00 1/0 0/0 0/0 .text wait_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::wait_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
|
|
if (mpSaveScrn != NULL) {
|
|
mpSaveScrn->_delete();
|
|
delete mpSaveScrn;
|
|
mpSaveScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
if (mpOptionScrn != NULL) {
|
|
mpOptionScrn->_delete();
|
|
delete mpOptionScrn;
|
|
mpOptionScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
if (mpLetterScrn != NULL) {
|
|
delete mpLetterScrn;
|
|
mpLetterScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
if (mpFishingScrn != NULL) {
|
|
delete mpFishingScrn;
|
|
mpFishingScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
if (mpSkillScrn != NULL) {
|
|
delete mpSkillScrn;
|
|
mpSkillScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
if (mpInsectScrn != NULL) {
|
|
delete mpInsectScrn;
|
|
mpInsectScrn = NULL;
|
|
mpSubHeap->freeAll();
|
|
}
|
|
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B48D0-801B4E14 1AF210 0544+00 1/0 0/0 0/0 .text wait_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::wait_proc() {
|
|
if (dMw_A_TRIGGER()) {
|
|
if (mCursorX == 0 && mCursorY == 5) {
|
|
if (mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 1;
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_MENU_CHANGE_WINDOW, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
} else if (mCursorX == 1 && mCursorY == 5) {
|
|
if (mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 2;
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_MENU_CHANGE_WINDOW, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
} else if (mCursorX == 3 && mCursorY == 4) {
|
|
if (field_0x22d[3][4] != 0 && mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 3;
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (mCursorX == 2 && mCursorY == 4) {
|
|
if (isFishIconVisible() && mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 4;
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (mCursorX == 3 && mCursorY == 3) {
|
|
if (isSkillIconVisible() && mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 5;
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (mCursorX == 2 && mCursorY == 3) {
|
|
if (isInsectIconVisible() && mDoGph_gInf_c::getFader()->mStatus == 1) {
|
|
mSubWindowOpenCheck = 6;
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else {
|
|
if (field_0x22d[mCursorX][mCursorY] != 0 && !mIsWolf) {
|
|
if ((mCursorX >= 3 && mCursorX <= 4) || (mCursorX == 5 && mCursorY == 2)) {
|
|
u8 cursorY = mCursorY;
|
|
if (cursorY == 0) {
|
|
if (daPy_getPlayerActorClass()->getSwordChangeWaitTimer() == 0) {
|
|
changeSword();
|
|
}
|
|
} else if (cursorY == 1) {
|
|
if (daPy_getPlayerActorClass()->getShieldChangeWaitTimer() == 0) {
|
|
changeShield();
|
|
}
|
|
} else if (cursorY == 2 &&
|
|
daPy_getPlayerActorClass()->getClothesChangeWaitTimer() == 0)
|
|
{
|
|
changeClothe();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (daPy_getPlayerActorClass()->getSwordChangeWaitTimer() == 0 &&
|
|
daPy_getPlayerActorClass()->getShieldChangeWaitTimer() == 0 &&
|
|
daPy_getPlayerActorClass()->getClothesChangeWaitTimer() == 0)
|
|
{
|
|
cursorMove();
|
|
}
|
|
if (mCursorX >= 3 && mCursorX <= 4 && mCursorY <= 2 || (mCursorX == 5 && mCursorY == 2)) {
|
|
if (field_0x22d[mCursorX][mCursorY] != 0 && !mIsWolf) {
|
|
setAButtonString(0x436);
|
|
} else {
|
|
setAButtonString(0);
|
|
}
|
|
} else if ((mCursorX == 0 && mCursorY == 5) || (mCursorX == 1 && mCursorY == 5)) {
|
|
setAButtonString(0x40C);
|
|
} else {
|
|
if (field_0x22d[mCursorX][mCursorY] != 0) {
|
|
if (mCursorX == 3 && mCursorY == 4) {
|
|
if (field_0x22d[3][4] != 0) {
|
|
setAButtonString(0x3EE);
|
|
}
|
|
} else if (mCursorX == 2 && mCursorY == 4) {
|
|
if (isFishIconVisible()) {
|
|
setAButtonString(0x3EE);
|
|
}
|
|
} else if (mCursorX == 3 && mCursorY == 3) {
|
|
if (isSkillIconVisible()) {
|
|
setAButtonString(0x3EE);
|
|
}
|
|
} else if (mCursorX == 2 && mCursorY == 3) {
|
|
if (isInsectIconVisible()) {
|
|
setAButtonString(0x3EE);
|
|
}
|
|
} else if (mCursorX < 3 && mCursorY < 3) {
|
|
setAButtonString(0x40C);
|
|
} else {
|
|
setAButtonString(0);
|
|
}
|
|
} else {
|
|
setAButtonString(0);
|
|
}
|
|
}
|
|
setBButtonString(0x3F9);
|
|
}
|
|
}
|
|
|
|
|
|
/* 801B4E14-801B4EC0 1AF754 00AC+00 1/0 0/0 0/0 .text save_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpSaveScrn) {
|
|
mpSaveScrn = new dMenu_save_c();
|
|
}
|
|
mpSaveScrn->setUseType(1);
|
|
mpSaveScrn->_create();
|
|
mpSaveScrn->initialize();
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B4EC0-801B4F30 1AF800 0070+00 1/0 0/0 0/0 .text save_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSaveScrn->getSaveStatus() == 1) {
|
|
mpSaveScrn->_open();
|
|
}
|
|
if (mpSaveScrn->getSaveStatus() == 2) {
|
|
mProcess = 2;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B4F30-801B4F6C 1AF870 003C+00 1/0 0/0 0/0 .text save_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B4F6C-801B4FDC 1AF8AC 0070+00 1/0 0/0 0/0 .text save_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSaveScrn->getSaveStatus() == 2) {
|
|
mpSaveScrn->_move();
|
|
}
|
|
if (mpSaveScrn->getSaveStatus() == 3) {
|
|
mProcess = 3;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B4FDC-801B5018 1AF91C 003C+00 1/0 0/0 0/0 .text save_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B5018-801B5094 1AF958 007C+00 1/0 0/0 0/0 .text save_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::save_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSaveScrn->getSaveStatus() == 3) {
|
|
mpSaveScrn->_close();
|
|
}
|
|
if (mpSaveScrn->getSaveStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5094-801B513C 1AF9D4 00A8+00 1/0 0/0 0/0 .text option_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpOptionScrn) {
|
|
mpOptionScrn = new dMenu_Option_c(dComIfGp_getCollectResArchive(), mpStick);
|
|
}
|
|
mpOptionScrn->initialize();
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B513C-801B51AC 1AFA7C 0070+00 1/0 0/0 0/0 .text option_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpOptionScrn->getQuitStatus() == 1) {
|
|
mpOptionScrn->_open();
|
|
}
|
|
if (mpOptionScrn->getQuitStatus() == 2) {
|
|
mProcess = 5;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B51AC-801B51E8 1AFAEC 003C+00 1/0 0/0 0/0 .text option_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0x03f9);
|
|
}
|
|
|
|
/* 801B51E8-801B5258 1AFB28 0070+00 1/0 0/0 0/0 .text option_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpOptionScrn->getQuitStatus() == 2) {
|
|
mpOptionScrn->_move();
|
|
}
|
|
if (mpOptionScrn->getQuitStatus() == 3) {
|
|
mProcess = 6;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5258-801B5294 1AFB98 003C+00 1/0 0/0 0/0 .text option_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B5294-801B5310 1AFBD4 007C+00 1/0 0/0 0/0 .text option_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::option_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpOptionScrn->getQuitStatus() == 3) {
|
|
mpOptionScrn->_close();
|
|
}
|
|
if (mpOptionScrn->getQuitStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5310-801B53AC 1AFC50 009C+00 1/0 0/0 0/0 .text letter_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpLetterScrn) {
|
|
mpLetterScrn = new dMenu_Letter_c(mpSubHeap, mpStick, mpCStick);
|
|
}
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B53AC-801B541C 1AFCEC 0070+00 1/0 0/0 0/0 .text letter_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpLetterScrn->getStatus() == 1) {
|
|
mpLetterScrn->_open();
|
|
}
|
|
if (mpLetterScrn->getStatus() == 2) {
|
|
mProcess = 8;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B541C-801B5458 1AFD5C 003C+00 1/0 0/0 0/0 .text letter_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0x03f9);
|
|
}
|
|
|
|
/* 801B5458-801B54C8 1AFD98 0070+00 1/0 0/0 0/0 .text letter_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpLetterScrn->getStatus() == 2) {
|
|
mpLetterScrn->_move();
|
|
}
|
|
if (mpLetterScrn->getStatus() == 3) {
|
|
mProcess = 9;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B54C8-801B5504 1AFE08 003C+00 1/0 0/0 0/0 .text letter_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B5504-801B5580 1AFE44 007C+00 1/0 0/0 0/0 .text letter_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::letter_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpLetterScrn->getStatus() == 3) {
|
|
mpLetterScrn->_close();
|
|
}
|
|
if (mpLetterScrn->getStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5580-801B561C 1AFEC0 009C+00 1/0 0/0 0/0 .text fishing_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpFishingScrn) {
|
|
mpFishingScrn = new dMenu_Fishing_c(mpSubHeap, mpStick, mpCStick);
|
|
}
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B561C-801B568C 1AFF5C 0070+00 1/0 0/0 0/0 .text fishing_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpFishingScrn->getStatus() == 1) {
|
|
mpFishingScrn->_open();
|
|
}
|
|
if (mpFishingScrn->getStatus() == 2) {
|
|
mProcess = 11;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B568C-801B56C8 1AFFCC 003C+00 1/0 0/0 0/0 .text fishing_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0x03f9);
|
|
}
|
|
|
|
/* 801B56C8-801B5738 1B0008 0070+00 1/0 0/0 0/0 .text fishing_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpFishingScrn->getStatus() == 2) {
|
|
mpFishingScrn->_move();
|
|
}
|
|
if (mpFishingScrn->getStatus() == 3) {
|
|
mProcess = 12;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5738-801B5774 1B0078 003C+00 1/0 0/0 0/0 .text fishing_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B5774-801B57F0 1B00B4 007C+00 1/0 0/0 0/0 .text fishing_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::fishing_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpFishingScrn->getStatus() == 3) {
|
|
mpFishingScrn->_close();
|
|
}
|
|
if (mpFishingScrn->getStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B57F0-801B588C 1B0130 009C+00 1/0 0/0 0/0 .text skill_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpSkillScrn) {
|
|
mpSkillScrn = new dMenu_Skill_c(mpSubHeap, mpStick, mpCStick);
|
|
}
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B588C-801B58FC 1B01CC 0070+00 1/0 0/0 0/0 .text skill_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSkillScrn->getStatus() == 1) {
|
|
mpSkillScrn->_open();
|
|
}
|
|
if (mpSkillScrn->getStatus() == 2) {
|
|
mProcess = 14;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B58FC-801B5938 1B023C 003C+00 1/0 0/0 0/0 .text skill_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0x03f9);
|
|
}
|
|
|
|
/* 801B5938-801B59A8 1B0278 0070+00 1/0 0/0 0/0 .text skill_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSkillScrn->getStatus() == 2) {
|
|
mpSkillScrn->_move();
|
|
}
|
|
if (mpSkillScrn->getStatus() == 3) {
|
|
mProcess = 15;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B59A8-801B59E4 1B02E8 003C+00 1/0 0/0 0/0 .text skill_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B59E4-801B5A60 1B0324 007C+00 1/0 0/0 0/0 .text skill_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::skill_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpSkillScrn->getStatus() == 3) {
|
|
mpSkillScrn->_close();
|
|
}
|
|
if (mpSkillScrn->getStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5A60-801B5B00 1B03A0 00A0+00 1/0 0/0 0/0 .text insect_open_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_open_init() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (!mpInsectScrn) {
|
|
mpInsectScrn = new dMenu_Insect_c(mpSubHeap, mpStick, mpCStick, 0);
|
|
}
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
mpDrawCursor->offPlayAllAnime();
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5B00-801B5B70 1B0440 0070+00 1/0 0/0 0/0 .text insect_open_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_open_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpInsectScrn->getStatus() == 1) {
|
|
mpInsectScrn->_open();
|
|
}
|
|
if (mpInsectScrn->getStatus() == 2) {
|
|
mProcess = 17;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5B70-801B5BAC 1B04B0 003C+00 1/0 0/0 0/0 .text insect_move_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_move_init() {
|
|
setAButtonString(0x040c);
|
|
setBButtonString(0x03f9);
|
|
}
|
|
|
|
/* 801B5BAC-801B5C1C 1B04EC 0070+00 1/0 0/0 0/0 .text insect_move_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_move_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpInsectScrn->getStatus() == 2) {
|
|
mpInsectScrn->_move();
|
|
}
|
|
if (mpInsectScrn->getStatus() == 3) {
|
|
mProcess = 18;
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5C1C-801B5C58 1B055C 003C+00 1/0 0/0 0/0 .text insect_close_init__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_close_init() {
|
|
setAButtonString(0);
|
|
setBButtonString(0);
|
|
}
|
|
|
|
/* 801B5C58-801B5CD4 1B0598 007C+00 1/0 0/0 0/0 .text insect_close_proc__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::insect_close_proc() {
|
|
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
|
|
if (mpInsectScrn->getStatus() == 3) {
|
|
mpInsectScrn->_close();
|
|
}
|
|
if (mpInsectScrn->getStatus() == 0) {
|
|
mProcess = 0;
|
|
mpDrawCursor->onPlayAllAnime();
|
|
}
|
|
mDoExt_setCurrentHeap(heap);
|
|
}
|
|
|
|
/* 801B5CD4-801B5D70 1B0614 009C+00 1/1 0/0 0/0 .text _move__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::_move() {
|
|
u8 last_process = mProcess;
|
|
(this->*process[last_process])();
|
|
if (mProcess != last_process) {
|
|
(this->*init[mProcess])();
|
|
}
|
|
btkAnimeLoop0(mpAnmKey);
|
|
mpScreen->animation();
|
|
setBackAlpha();
|
|
setHIO(false);
|
|
}
|
|
|
|
|
|
/* 801B5D70-801B5F48 1B06B0 01D8+00 1/1 0/0 0/0 .text _draw__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::_draw() {
|
|
J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort();
|
|
grafPort->setup2D();
|
|
mpScreen->draw(0.0f, 0.0f, grafPort);
|
|
|
|
if (mItemNameString == 0) {
|
|
char* stringPtr1 = static_cast<J2DTextBox*>(mpScreen->search('f_text1'))->getStringPtr();
|
|
strcpy(stringPtr1, "");
|
|
|
|
char* stringPtr0 = static_cast<J2DTextBox*>(mpScreen->search('f_text0'))->getStringPtr();
|
|
strcpy(stringPtr0, "");
|
|
} else {
|
|
J2DTextBox* textBox1 = static_cast<J2DTextBox*>(mpScreen->search('f_text1'));
|
|
mpString->getString(mItemNameString, textBox1, NULL, NULL, NULL, 0);
|
|
|
|
J2DTextBox* textBox0 = static_cast<J2DTextBox*>(mpScreen->search('f_text0'));
|
|
mpString->getString(mItemNameString, textBox0, NULL, NULL, NULL, 0);
|
|
|
|
textBox0 = static_cast<J2DTextBox*>(mpScreen->search('f_text0'));
|
|
mpString->drawOutFontLocal(textBox0, -1.0f);
|
|
}
|
|
mpDrawCursor->draw();
|
|
}
|
|
|
|
/* 801B5F48-801B5F84 1B0888 003C+00 1/1 0/0 0/0 .text drawTop__17dMenu_Collect2D_cFv */
|
|
void dMenu_Collect2D_c::drawTop() {
|
|
dComIfGd_set2DOpaTop(mpDraw2DTop);
|
|
}
|
|
|
|
/* 801B5F84-801B5FAC 1B08C4 0028+00 0/0 1/1 0/0 .text isKeyCheck__17dMenu_Collect2D_cFv
|
|
*/
|
|
bool dMenu_Collect2D_c::isKeyCheck() {
|
|
if (mProcess || field_0x25f) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 801B5FAC-801B5FB4 1B08EC 0008+00 0/0 1/1 0/0 .text isOutCheck__17dMenu_Collect2D_cFv
|
|
*/
|
|
bool dMenu_Collect2D_c::isOutCheck() {
|
|
return false;
|
|
}
|
|
|
|
/* 801B5FB4-801B60B8 1B08F4 0104+00 20/20 0/0 0/0 .text setAButtonString__17dMenu_Collect2D_cFUs
|
|
*/
|
|
void dMenu_Collect2D_c::setAButtonString(u16 i_stringID) {
|
|
static const u64 text_a_tag[5] = {
|
|
'atext1_1', 'atext1_2', 'atext1_3', 'atext1_4', 'atext1_5',
|
|
};
|
|
|
|
if (i_stringID != mCurrentAString) {
|
|
mCurrentAString = i_stringID;
|
|
|
|
if (i_stringID == 0) {
|
|
for (int i = 0; i < 5; i++) {
|
|
char* stringPtr =
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_a_tag[i]))->getStringPtr();
|
|
strcpy(stringPtr, "");
|
|
}
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
char* stringPtr =
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_a_tag[i]))->getStringPtr();
|
|
dMeter2Info_getStringKanji(i_stringID, stringPtr, NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B60B8-801B61BC 1B09F8 0104+00 20/20 0/0 0/0 .text setBButtonString__17dMenu_Collect2D_cFUs
|
|
*/
|
|
void dMenu_Collect2D_c::setBButtonString(u16 i_stringID) {
|
|
static const u64 text_b_tag[5] = {
|
|
'btext1_1', 'btext1_2', 'btext1_3', 'btext1_4', 'btext1_5',
|
|
};
|
|
|
|
if (i_stringID != mCurrentBString) {
|
|
mCurrentBString = i_stringID;
|
|
|
|
if (i_stringID == 0) {
|
|
for (int i = 0; i < 5; i++) {
|
|
char* stringPtr =
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_b_tag[i]))->getStringPtr();
|
|
strcpy(stringPtr, "");
|
|
}
|
|
} else {
|
|
for (int i = 0; i < 5; i++) {
|
|
char* stringPtr =
|
|
static_cast<J2DTextBox*>(mpScreenIcon->search(text_b_tag[i]))->getStringPtr();
|
|
dMeter2Info_getStringKanji(i_stringID, stringPtr, NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B61BC-801B6344 1B0AFC 0188+00 2/2 0/0 0/0 .text setItemNameString__17dMenu_Collect2D_cFUcUc
|
|
*/
|
|
void dMenu_Collect2D_c::setItemNameString(u8 param_0, u8 param_1) {
|
|
if (field_0x22d[param_0][param_1] == 0) {
|
|
setItemNameStringNull();
|
|
} else {
|
|
u32 uVar6 = field_0x184[param_0][param_1];
|
|
mItemNameString = field_0x1d8[param_0][param_1];
|
|
field_0x180 = uVar6;
|
|
if (uVar6 == 0) {
|
|
setItemNameStringNull();
|
|
} else {
|
|
char* stringPtr =
|
|
static_cast<J2DTextBox*>(mpScreen->search('item_n04'))->getStringPtr();
|
|
dMeter2Info_getStringKanji(uVar6, stringPtr, NULL);
|
|
stringPtr = static_cast<J2DTextBox*>(mpScreen->search('item_n05'))->getStringPtr();
|
|
dMeter2Info_getStringKanji(uVar6, stringPtr, NULL);
|
|
stringPtr = static_cast<J2DTextBox*>(mpScreen->search('item_n06'))->getStringPtr();
|
|
dMeter2Info_getStringKanji(uVar6, stringPtr, NULL);
|
|
stringPtr = static_cast<J2DTextBox*>(mpScreen->search('item_n07'))->getStringPtr();
|
|
dMeter2Info_getStringKanji(uVar6, stringPtr, NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B6344-801B6454 1B0C84 0110+00 1/1 0/0 0/0 .text setItemNameStringNull__17dMenu_Collect2D_cFv
|
|
*/
|
|
void dMenu_Collect2D_c::setItemNameStringNull() {
|
|
mItemNameString = 0;
|
|
J2DTextBox* textBox = (J2DTextBox*)mpScreen->search('item_n04');
|
|
strcpy(textBox->getStringPtr(), "");
|
|
textBox = (J2DTextBox*)mpScreen->search('item_n05');
|
|
strcpy(textBox->getStringPtr(), "");
|
|
textBox = (J2DTextBox*)mpScreen->search('item_n06');
|
|
strcpy(textBox->getStringPtr(), "");
|
|
textBox = (J2DTextBox*)mpScreen->search('item_n07');
|
|
strcpy(textBox->getStringPtr(), "");
|
|
}
|
|
|
|
/* 801B6454-801B6538 1B0D94 00E4+00 1/1 0/0 0/0 .text
|
|
* __ct__17dMenu_Collect3D_cFP10JKRExpHeapP17dMenu_Collect2D_cP10CSTControl */
|
|
dMenu_Collect3D_c::dMenu_Collect3D_c(JKRExpHeap* param_0, dMenu_Collect2D_c* param_1,
|
|
CSTControl* param_2) {
|
|
mIsWolf = daPy_py_c::checkNowWolf();
|
|
mpHeap = param_0;
|
|
mpSolidHeap = NULL;
|
|
mpCStick = param_2;
|
|
mpCollect2D = param_1;
|
|
if (mIsWolf) {
|
|
mLinkAngle = -20748;
|
|
} else {
|
|
mLinkAngle = -23324;
|
|
}
|
|
mMaskMirrorAnmFrameBrk = 0.0f;
|
|
mMaskMirrorAnmFrameBck = 0.0f;
|
|
mMaskMirrorOffsetY = 0.0f;
|
|
mMaskMirrorOffsetX = 0.0f;
|
|
mMaskMirrorScale = 1.0f;
|
|
}
|
|
|
|
|
|
/* 801B6538-801B65A8 1B0E78 0070+00 1/0 0/0 0/0 .text __dt__17dMenu_Collect3D_cFv */
|
|
dMenu_Collect3D_c::~dMenu_Collect3D_c() {
|
|
if (mpSolidHeap) {
|
|
mDoExt_destroySolidHeap(mpSolidHeap);
|
|
mpSolidHeap = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
/* 801B65A8-801B6694 1B0EE8 00EC+00 1/1 0/0 0/0 .text _create__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::_create() {
|
|
mpHeap->getTotalFreeSize();
|
|
mpSolidHeap = mDoExt_createSolidHeapToCurrent(0x25800, mpHeap, 0x20);
|
|
mDoExt_setCurrentHeap((JKRHeap*)mpSolidHeap);
|
|
daAlink_c* linkActor = daAlink_getAlinkActorClass();
|
|
if (linkActor != NULL) {
|
|
linkActor->initStatusWindow();
|
|
}
|
|
u8 maskMdl = getMaskMdlVisible();
|
|
if (maskMdl == 2) {
|
|
createMirrorModel();
|
|
} else if (maskMdl == 1) {
|
|
createMaskModel();
|
|
} else {
|
|
mpModel = NULL;
|
|
mpBckAnm = NULL;
|
|
mpBrkAnm = NULL;
|
|
}
|
|
mpSolidHeap->adjustSize();
|
|
mDoExt_restoreCurrentHeap();
|
|
if (mpModel != NULL) {
|
|
dKy_tevstr_init(&mTevStr, -1, 0xff);
|
|
set_mtx();
|
|
}
|
|
_move(mpCollect2D->getCursorX(), mpCollect2D->getCursorY());
|
|
}
|
|
|
|
/* 801B6694-801B66C8 1B0FD4 0034+00 1/1 0/0 0/0 .text _delete__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::_delete() {
|
|
if (daAlink_getAlinkActorClass()) {
|
|
daAlink_getAlinkActorClass()->resetStatusWindow();
|
|
}
|
|
}
|
|
|
|
/* 801B66C8-801B696C 1B1008 02A4+00 2/2 0/0 0/0 .text _move__17dMenu_Collect3D_cFUcUc */
|
|
void dMenu_Collect3D_c::_move(u8 param_0, u8 param_1) {
|
|
cXyz itemPos;
|
|
Vec linkPos = mpCollect2D->getpLink()->getGlobalVtxCenter(false, 0);
|
|
f32 posY;
|
|
f32 posZ;
|
|
if (mIsWolf != 0) {
|
|
posY = linkPos.y + 60.0f;
|
|
posZ = 580.0f;
|
|
} else {
|
|
posY = linkPos.y + 90.0f;
|
|
posZ = 550.0f;
|
|
}
|
|
toItem3Dpos(linkPos.x, posY, posZ, &itemPos);
|
|
if (param_0 == 0 && param_1 == 0) {
|
|
f32 temp = 450.0f;
|
|
mLinkAngle += (s16)temp;
|
|
} else {
|
|
s16 target = mIsWolf != 0 ? (s16)-0x510C : (s16)-0x5B1C;
|
|
cLib_addCalcAngleS(&mLinkAngle, target, 4, 0x800, 0x80);
|
|
}
|
|
if (daAlink_getAlinkActorClass() != NULL) {
|
|
daAlink_getAlinkActorClass()->statusWindowExecute(&itemPos, mLinkAngle);
|
|
}
|
|
if (mpModel != NULL) {
|
|
cXyz modelPos;
|
|
Vec maskPos = mpCollect2D->getpMask()->getGlobalVtxCenter(false, 0);
|
|
f32 offsetX = 0.0f;
|
|
f32 offsetY = 0.0f;
|
|
|
|
if (getMaskMdlVisible() == 2) {
|
|
u8 mirrorNum = getMirrorNum();
|
|
if (mirrorNum == 1 || mirrorNum == 2 || mirrorNum == 3 || mirrorNum == 4) {
|
|
offsetX = -3.0f;
|
|
offsetY = -5.0f;
|
|
}
|
|
} else {
|
|
u8 crystalNum = getCrystalNum();
|
|
if (crystalNum == 1) {
|
|
offsetX = 16.0f;
|
|
offsetY = 0.0f;
|
|
} else if (crystalNum == 2) {
|
|
offsetX = 8.0f;
|
|
offsetY = -3.0f;
|
|
} else if (crystalNum == 3) {
|
|
offsetX = 2.0f;
|
|
offsetY = -4.0f;
|
|
} else if (crystalNum == 4) {
|
|
offsetX = -5.0f;
|
|
offsetY = -10.0f;
|
|
}
|
|
}
|
|
f32 offsetPosX =
|
|
maskPos.x + g_drawHIO.mCollectScreen.mMaskMirrorPos.x + mMaskMirrorOffsetX + offsetX;
|
|
f32 offsetPosY =
|
|
maskPos.y + g_drawHIO.mCollectScreen.mMaskMirrorPos.y + mMaskMirrorOffsetY + offsetY;
|
|
toItem3Dpos(offsetPosX, offsetPosY, 600.0f, &modelPos);
|
|
mMaskMirrorPos.set(modelPos);
|
|
mMaskMirrorAngle.set(g_drawHIO.mCollectScreen.mMaskMirrorAngle.x,
|
|
g_drawHIO.mCollectScreen.mMaskMirrorAngle.y,
|
|
g_drawHIO.mCollectScreen.mMaskMirrorAngle.z);
|
|
animePlay();
|
|
set_mtx();
|
|
}
|
|
}
|
|
|
|
/* 801B696C-801B6A30 1B12AC 00C4+00 1/1 0/0 0/0 .text draw__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::draw() {
|
|
dComIfGd_setListItem3D();
|
|
if (daAlink_getAlinkActorClass()) {
|
|
daAlink_getAlinkActorClass()->statusWindowDraw();
|
|
}
|
|
if (mpModel) {
|
|
g_env_light.settingTevStruct(13, &mMaskMirrorPos, &mTevStr);
|
|
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
|
|
animeEntry();
|
|
mDoExt_modelUpdateDL(mpModel);
|
|
}
|
|
dComIfGd_setList();
|
|
}
|
|
|
|
/* 801B6A30-801B6D30 1B1370 0300+00 2/2 0/0 0/0 .text setJ3D__17dMenu_Collect3D_cFPCcPCcPCc */
|
|
void dMenu_Collect3D_c::setJ3D(const char* param_0, const char* param_1, const char* param_2) {
|
|
JKRArchive* resArchive = dComIfGp_getCollectResArchive();
|
|
J3DModelData* modelData = J3DModelLoaderDataBase::load(
|
|
resArchive->getResource('BMD ', param_0), 0x51020010);
|
|
|
|
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
|
|
J3DMaterialAnm* matAnm = new J3DMaterialAnm();
|
|
modelData->getMaterialNodePointer(i)->change();
|
|
modelData->getMaterialNodePointer(i)->setMaterialAnm(matAnm);
|
|
}
|
|
mpModel = new J3DModel(modelData, 0, 1);
|
|
if (param_1 != NULL) {
|
|
J3DAnmTransform* pbck = (J3DAnmTransform*)J3DAnmLoaderDataBase::load(
|
|
resArchive->getResource('BCK ', param_1), J3DLOADER_UNK_FLAG0);
|
|
mpBckAnm = new mDoExt_bckAnm();
|
|
if (mpBckAnm == NULL || !mpBckAnm->init(pbck, 1, 2, 1.0f, 0, -1, false)) {
|
|
return;
|
|
}
|
|
}
|
|
if (param_2 != NULL) {
|
|
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)J3DAnmLoaderDataBase::load(
|
|
resArchive->getResource('BRK ', param_2), J3DLOADER_UNK_FLAG0);
|
|
pbrk->searchUpdateMaterialID(modelData);
|
|
mpBrkAnm = new mDoExt_brkAnm();
|
|
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, -1, 2, 1.0f, 0, -1)) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B6D30-801B6E70 1B1670 0140+00 2/2 0/0 0/0 .text set_mtx__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::set_mtx() {
|
|
f32 scale = 0.0f;
|
|
if (getMaskMdlVisible() == 2) {
|
|
u8 mirrorNum = getMirrorNum();
|
|
if (mirrorNum == 2 || mirrorNum == 3 || mirrorNum == 4) {
|
|
scale = -0.1f;
|
|
}
|
|
} else {
|
|
u8 crystalNum = getCrystalNum();
|
|
if (crystalNum == 1 || crystalNum == 2) {
|
|
scale = -0.6f;
|
|
} else if (crystalNum == 3) {
|
|
scale = -0.4f;
|
|
} else if (crystalNum == 4) {
|
|
scale = -0.3f;
|
|
}
|
|
}
|
|
f32 finalScale = g_drawHIO.mCollectScreen.mMaskMirrorScale + scale + mMaskMirrorScale;
|
|
cXyz baseScale;
|
|
baseScale.z = finalScale;
|
|
baseScale.y = finalScale;
|
|
baseScale.x = finalScale;
|
|
mpModel->setBaseScale(baseScale);
|
|
mDoMtx_stack_c::transS(mMaskMirrorPos.x, mMaskMirrorPos.y, mMaskMirrorPos.z);
|
|
mDoMtx_stack_c::YrotM(mMaskMirrorAngle.y);
|
|
mDoMtx_stack_c::XrotM(mMaskMirrorAngle.x);
|
|
mDoMtx_stack_c::ZrotM(mMaskMirrorAngle.z);
|
|
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
|
|
|
|
/* 801B6E70-801B6FB0 1B17B0 0140+00 1/1 0/0 0/0 .text animePlay__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::animePlay() {
|
|
if (mpBrkAnm != NULL) {
|
|
mMaskMirrorAnmFrameBrk += g_drawHIO.mCollectScreen.mMaskMirrorAnimSpeed;
|
|
if (mMaskMirrorAnmFrameBrk >= mpBrkAnm->getEndFrame()) {
|
|
mMaskMirrorAnmFrameBrk -= mpBrkAnm->getEndFrame();
|
|
}
|
|
mpBrkAnm->setFrame(mMaskMirrorAnmFrameBrk);
|
|
mpBrkAnm->play();
|
|
}
|
|
if (mpBckAnm != NULL) {
|
|
mMaskMirrorAnmFrameBck += g_drawHIO.mCollectScreen.mMaskMirrorAnimSpeed;
|
|
if (mMaskMirrorAnmFrameBck >= mpBckAnm->getEndFrame()) {
|
|
mMaskMirrorAnmFrameBck -= mpBckAnm->getEndFrame();
|
|
}
|
|
mpBckAnm->setFrame(mMaskMirrorAnmFrameBck);
|
|
mpBckAnm->play();
|
|
}
|
|
}
|
|
|
|
|
|
/* 801B6FB0-801B7014 1B18F0 0064+00 1/1 0/0 0/0 .text animeEntry__17dMenu_Collect3D_cFv
|
|
*/
|
|
void dMenu_Collect3D_c::animeEntry() {
|
|
if (mpBrkAnm != NULL) {
|
|
mpBrkAnm->entry(mpModel->getModelData());
|
|
}
|
|
if (mpBckAnm != NULL) {
|
|
mpBckAnm->entry(mpModel->getModelData());
|
|
}
|
|
}
|
|
|
|
/* 801B7014-801B71C4 1B1954 01B0+00 1/1 0/0 0/0 .text createMaskModel__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::createMaskModel() {
|
|
static const f32 m_kamen_offset_x[5] = {-14.0f, -14.0f, -14.0f, 1.3f, 6.5f};
|
|
static const f32 m_kamen_offset_y[5] = {0.0f, 0.0f, 0.0f, 22.0f, 30.0f};
|
|
static const f32 m_kamen_scale[5] = {2.6f, 2.6f, 2.2f, 1.8f, 1.8f};
|
|
static char* bck_name[4] = {
|
|
"md_mask_parts_spin_1.bck",
|
|
"md_mask_parts_spin_2.bck",
|
|
"md_mask_parts_spin_3.bck",
|
|
"md_mask_parts_spin_4.bck",
|
|
};
|
|
static char* brk_name[4] = {
|
|
"md_mask_parts_spin_1.brk",
|
|
"md_mask_parts_spin_2_3.brk",
|
|
"md_mask_parts_spin_2_3.brk",
|
|
"md_mask_parts_spin_4.brk",
|
|
};
|
|
|
|
u8 crystalNum = getCrystalNum();
|
|
mMaskMirrorOffsetX = m_kamen_offset_x[crystalNum];
|
|
mMaskMirrorOffsetY = m_kamen_offset_y[crystalNum];
|
|
mMaskMirrorScale = m_kamen_scale[crystalNum];
|
|
mMaskMirrorPos.set(0.0f, 0.0f, 0.0f);
|
|
mMaskMirrorAngle.set(0, 0, 0);
|
|
mpModel = NULL;
|
|
mpBckAnm = NULL;
|
|
mpBrkAnm = NULL;
|
|
if (crystalNum != 0) {
|
|
setJ3D("md_mask_UI.bmd", bck_name[crystalNum - 1], brk_name[crystalNum - 1]);
|
|
switch (crystalNum) {
|
|
case 1:
|
|
mpModel->getModelData()->getMaterialNodePointer(0)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(1)->getShape()->hide();
|
|
case 2:
|
|
mpModel->getModelData()->getMaterialNodePointer(2)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(3)->getShape()->hide();
|
|
case 3:
|
|
mpModel->getModelData()->getMaterialNodePointer(6)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(7)->getShape()->hide();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B71C4-801B7434 1B1B04 0270+00 1/1 0/0 0/0 .text createMirrorModel__17dMenu_Collect3D_cFv */
|
|
void dMenu_Collect3D_c::createMirrorModel() {
|
|
static const f32 m_mirror_offset_x[5] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
|
|
static const f32 m_mirror_offset_y[5] = {4.0f, 4.0f, 4.0f, 4.0f, 4.0f};
|
|
static const f32 m_mirror_scale[5] = {0.6f, 0.6f, 0.6f, 0.6f, 0.6f};
|
|
static char* bck_name[4] = {
|
|
"kageri_mirrer_spin_1.bck",
|
|
"kageri_mirrer_spin_2.bck",
|
|
"kageri_mirrer_spin_3.bck",
|
|
"kageri_mirrer_spin_4.bck",
|
|
};
|
|
static char* brk_name[4] = {
|
|
"kageri_mirrer_spin_1.brk",
|
|
"kageri_mirrer_spin_2_3_4.brk",
|
|
"kageri_mirrer_spin_2_3_4.brk",
|
|
"kageri_mirrer_spin_2_3_4.brk",
|
|
};
|
|
|
|
u8 mirrorNum = getMirrorNum();
|
|
mMaskMirrorOffsetX = m_mirror_offset_x[mirrorNum];
|
|
mMaskMirrorOffsetY = m_mirror_offset_y[mirrorNum];
|
|
mMaskMirrorScale = m_mirror_scale[mirrorNum];
|
|
mMaskMirrorPos.set(0.0f, 0.0f, 0.0f);
|
|
mMaskMirrorAngle.set(0, 0, 0);
|
|
mpModel = NULL;
|
|
mpBckAnm = NULL;
|
|
mpBrkAnm = NULL;
|
|
if (mirrorNum != 0) {
|
|
setJ3D("kageri_mirrer_UI.bmd", bck_name[mirrorNum - 1], brk_name[mirrorNum - 1]);
|
|
switch (mirrorNum) {
|
|
case 1:
|
|
mpModel->getModelData()->getMaterialNodePointer(4)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(5)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(6)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(7)->getShape()->hide();
|
|
case 2:
|
|
mpModel->getModelData()->getMaterialNodePointer(8)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(9)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(10)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(11)->getShape()->hide();
|
|
case 3:
|
|
mpModel->getModelData()->getMaterialNodePointer(12)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(13)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(14)->getShape()->hide();
|
|
mpModel->getModelData()->getMaterialNodePointer(15)->getShape()->hide();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801B7434-801B749C 1B1D74 0068+00 5/5 0/0 0/0 .text getCrystalNum__17dMenu_Collect3D_cFv */
|
|
u8 dMenu_Collect3D_c::getCrystalNum() {
|
|
u8 count = 0;
|
|
for (int i = 0; i < 4; i++) {
|
|
if (!dComIfGs_isCollectCrystal(i)) {
|
|
break;
|
|
}
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
/* 801B749C-801B7504 1B1DDC 0068+00 5/5 0/0 0/0 .text getMirrorNum__17dMenu_Collect3D_cFv
|
|
*/
|
|
u8 dMenu_Collect3D_c::getMirrorNum() {
|
|
u8 count = 0;
|
|
for (int i = 0; i < 4; i++) {
|
|
if (!dComIfGs_isCollectMirror(i)) {
|
|
break;
|
|
}
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
/* 801B7504-801B75E8 1B1E44 00E4+00 4/4 0/0 0/0 .text getMaskMdlVisible__17dMenu_Collect3D_cFv */
|
|
u8 dMenu_Collect3D_c::getMaskMdlVisible() {
|
|
if ((getCrystalNum() == 0 && getMirrorNum() == 0) ||
|
|
/* dSv_event_flag_c::M_071 - Cutscene - [cutscene: 20] Zant appears (during Midna's desperate hour) */
|
|
(dComIfGs_isEventBit(0xC01) && !dComIfGs_isCollectMirror(0)) ||
|
|
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
|
|
(dComIfGs_isEventBit(0x2B08) && !dComIfGs_isCollectCrystal(3)))
|
|
{
|
|
return 0;
|
|
}
|
|
if (dComIfGs_isCollectCrystal(3) || getMirrorNum() == 0) {
|
|
return 1;
|
|
}
|
|
return 2;
|
|
}
|
|
|
|
/* 80450720-80450728 0001A0 0004+04 1/1 0/0 1/1 .sdata mViewOffsetY__17dMenu_Collect3D_c
|
|
*/
|
|
f32 dMenu_Collect3D_c::mViewOffsetY = -100.0f;
|
|
|
|
/* 801B75E8-801B7660 1B1F28 0078+00 0/0 1/1 0/0 .text setupItem3D__17dMenu_Collect3D_cFPA4_f */
|
|
void dMenu_Collect3D_c::setupItem3D(Mtx param_0) {
|
|
GXSetViewport(0.0f, mViewOffsetY, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
|
|
mViewOffsetY = -100.0f;
|
|
Mtx44 projection;
|
|
C_MTXPerspective(projection, 45.0f, mDoGph_gInf_c::getAspect(), 1.0f, 100000.0f);
|
|
GXSetProjection(projection, GX_PERSPECTIVE);
|
|
calcViewMtx(param_0);
|
|
}
|
|
|
|
/* 801B7660-801B774C 1B1FA0 00EC+00 1/1 0/0 0/0 .text toItem3Dpos__17dMenu_Collect3D_cFfffP4cXyz
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 2
|
|
void dMenu_Collect3D_c::toItem3Dpos(f32 param_0, f32 param_1, f32 param_2, cXyz* param_3) {
|
|
Mtx adStack_98;
|
|
Mtx auStack_c8;
|
|
param_0 =
|
|
(2.0f * ((param_0 - mDoGph_gInf_c::getMinXF()) / mDoGph_gInf_c::getWidthF()) - 1.0f);
|
|
param_1 = (2.0f * ((param_1 - -100.0f) / 448.0f) - 1.0f);
|
|
calcViewMtx(adStack_98);
|
|
MTXInverse(adStack_98, auStack_c8);
|
|
f32 tangent = tan(0.39269909262657166);
|
|
f32 dVar12 = -param_2;
|
|
cXyz cStack_d4((param_0 * param_2) * (mDoGph_gInf_c::getAspect() * tangent),
|
|
(tangent * (param_1 * dVar12)), dVar12);
|
|
MTXMultVec(auStack_c8, &cStack_d4, param_3);
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801B774C-801B77A4 1B208C 0058+00 2/2 0/0 0/0 .text calcViewMtx__17dMenu_Collect3D_cFPA4_f */
|
|
void dMenu_Collect3D_c::calcViewMtx(Mtx param_0) {
|
|
mDoMtx_lookAt(param_0, &cXyz(0.0f, 0.0f, -1000.0f), &cXyz::Zero, &cXyz(0.0f, 1.0f, 0.0f), 0);
|
|
}
|
|
|
|
|
|
/* 801B77A4-801B78C0 1B20E4 011C+00 1/0 0/0 0/0 .text draw__20dMenu_Collect2DTop_cFv */
|
|
void dMenu_Collect2DTop_c::draw() {
|
|
J2DGrafContext* graf_port = dComIfGp_getCurrentGrafPort();
|
|
graf_port->setup2D();
|
|
mpCollect2D->getBlackTex()->draw(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
|
|
mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(),
|
|
false, false, false);
|
|
if (mpCollect2D->getSaveScreen() != NULL) {
|
|
mpCollect2D->getSaveScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getOptionScreen() != NULL) {
|
|
mpCollect2D->getOptionScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getLetterScreen() != NULL) {
|
|
mpCollect2D->getLetterScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getFishingScreen() != NULL) {
|
|
mpCollect2D->getFishingScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getSkillScreen() != NULL) {
|
|
mpCollect2D->getSkillScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getInsectScreen() != NULL) {
|
|
mpCollect2D->getInsectScreen()->_draw();
|
|
}
|
|
if (mpCollect2D->getIconScreen() != NULL) {
|
|
mpCollect2D->getIconScreen()->draw(0.0f, 0.0f, graf_port);
|
|
}
|
|
}
|
|
|
|
/* 801B78C0-801B795C 1B2200 009C+00 0/0 1/1 0/0 .text
|
|
* __ct__15dMenu_Collect_cFP10JKRExpHeapP9STControlP10CSTControl */
|
|
dMenu_Collect_c::dMenu_Collect_c(JKRExpHeap* param_0, STControl* param_1, CSTControl* param_2) {
|
|
mpCollect2D = new dMenu_Collect2D_c(param_0, param_1, param_2);
|
|
mpCollect3D = new dMenu_Collect3D_c(param_0, mpCollect2D, param_2);
|
|
}
|
|
|
|
/* 801B795C-801B7A0C 1B229C 00B0+00 1/0 0/0 0/0 .text __dt__15dMenu_Collect_cFv */
|
|
dMenu_Collect_c::~dMenu_Collect_c() {
|
|
if (mpCollect2D) {
|
|
delete mpCollect2D;
|
|
mpCollect2D = NULL;
|
|
}
|
|
if (mpCollect3D) {
|
|
delete mpCollect3D;
|
|
mpCollect3D = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
/* 801B7A0C-801B7A44 1B234C 0038+00 0/0 1/1 0/0 .text _create__15dMenu_Collect_cFv */
|
|
void dMenu_Collect_c::_create() {
|
|
mpCollect2D->_create();
|
|
mpCollect3D->_create();
|
|
}
|
|
|
|
/* 801B7A44-801B7A7C 1B2384 0038+00 0/0 1/1 0/0 .text _delete__15dMenu_Collect_cFv */
|
|
void dMenu_Collect_c::_delete() {
|
|
mpCollect2D->_delete();
|
|
mpCollect3D->_delete();
|
|
}
|
|
|
|
/* 801B7A7C-801B7AC0 1B23BC 0044+00 0/0 1/1 0/0 .text _move__15dMenu_Collect_cFv */
|
|
void dMenu_Collect_c::_move() {
|
|
mpCollect2D->_move();
|
|
mpCollect3D->_move(mpCollect2D->getCursorX(), mpCollect2D->getCursorY());
|
|
}
|
|
|
|
/* 801B7AC0-801B7B14 1B2400 0054+00 0/0 1/1 0/0 .text draw__15dMenu_Collect_cFv */
|
|
void dMenu_Collect_c::draw() {
|
|
dComIfGd_set2DOpa(mpCollect2D);
|
|
mpCollect3D->draw();
|
|
mpCollect2D->drawTop();
|
|
}
|