Files
tww/src/d/d_meter.cpp
T
LagoLunatic 96347ab502 Clean up angle constants and conversions (#1135)
* Add angle conversion constants and macros

* Replace angle literals with hex instead of decimal
2026-07-22 20:13:31 -04:00

7641 lines
323 KiB
C++

/**
* d_meter.cpp
* HUD (hearts, magic meter, button icons, etc.)
*/
#include "d/dolzel.h" // IWYU pragma: keep
#include "d/d_meter.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/JKernel/JKRExpHeap.h" // IWYU pragma: keep
#include "d/d_camera.h"
#include "d/d_file_error.h"
#include "d/d_kankyo_wether.h"
#include "d/actor/d_a_arrow.h"
#include "d/actor/d_a_npc_cb1.h"
#include "d/actor/d_a_npc_ji1.h"
#include "d/actor/d_a_npc_kamome.h"
#include "d/actor/d_a_npc_md.h"
#include "d/actor/d_a_npc_so.h"
#include "d/actor/d_a_player.h"
#include "d/actor/d_a_player_main.h"
#include "d/d_s_play.h"
#include "f_op/f_op_overlap_mng.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_hostIO.h"
#include "d/d_com_inf_game.h"
#include "d/d_drawlist.h"
#include "d/d_metronome.h"
#include "d/d_timer.h"
#include "m_Do/m_Do_lib.h"
#include "stdio.h"
dMeter_info_c dMeter_Info;
fopMsgM_pane_class item_parts;
dMeter_map_HIO_c g_meter_mapHIO;
dMeter_HIO_c g_meterHIO;
dMeter_menuHIO_c g_menuHIO;
dMeter_msg_HIO_c g_msgHIO;
dMeter_message_HIO_c g_messageHIO;
dMetronome_c* dMn_c;
J2DScreen* sMainParts1;
J2DScreen* sMainParts2;
J2DScreen* sMainParts3;
J2DScreen* sScrTimer1;
J2DScreen* sScrTimer2;
J2DScreen* sChoiceRoad;
J2DPicture* moveItemPane;
u8 mapAlpha;
u8 menu_status;
u8 menu_status_old;
u8 dMenu_pause;
int dMenu_frame_timer;
u8 dMenu_menuButton;
bool subWinFlag;
bool dMeter_auctionFlag;
u8 dMeter_itemMoveFlag;
u8 dMeter_btn_chk;
u8 dMeter_itemNum;
s16 dMeter_itemTimer;
f32 texRateX;
f32 texRateY;
f32 texScaleX;
f32 texScaleY;
u8 dMenu_menuFlag;
u8 dMenu_baitNum[8];
u8 dMeter_place_name;
u8 dMeter_itemMode;
u8 dMeter_collectMode;
fpc_ProcID dMeter_windID = fpcM_ERROR_PROCESS_ID_e;
u8 dMeter_windStatus;
u8 rupy_soundSetFlag;
u8 rupy_soundOnFlag;
mapCtrlDisp_c dMeter_mMapCtrlDisp;
dDlst_2DMETER1_c meter1;
dDlst_2DMETER2_c meter2;
dDlst_2Dm_c tekari;
dDlst_2Dm_c clock[3];
static void dummy(f32* m, u32 p2, s32 p3) {
OSReport("cmap_tri.bti");
OSReport("cmap_treasure.bti");
OSReport("cmap_tingle.bti");
OSReport("cmap_phantomship.bti");
OSReport("cmap_hint.bti");
OSReport("f_item_tri.bti");
#if VERSION == VERSION_DEMO
OSReport("get_rupy.bti");
OSReport("heart_up_02.bti");
#else
OSReport("f_get_rupy.bti");
OSReport("f_heart_up_02.bti");
#endif
OSReport("f_korog_kare.bti");
OSReport("f_korog_saki.bti");
m[0] = 0.8f;
m[1] = 0.0f;
m[2] = 1.2f;
m[3] = 0.1f;
m[4] = 1.0f;
m[5] = 1.1f;
m[6] = 255.0f;
m[7] = -1.0f;
m[8] = 452.0f;
m[9] = p2;
m[10] = p3;
}
static const char* arrowTexImage[] = {
"arrow_00.bti",
"arrow_01.bti",
"arrow_02.bti",
"arrow_03.bti",
};
/* 801EEFDC-801EF360 .text __ct__12dMeter_HIO_cFv */
dMeter_HIO_c::dMeter_HIO_c() {
field_0x6 = 10;
field_0x62 = 0;
field_0x63 = 0;
field_0xc = 1.0f;
field_0x10 = 1.4f;
field_0x14 = 0.0f;
field_0x18 = -29.0f;
field_0x1c = 1.0f;
field_0x36 = 0x16;
field_0x3c = 0.65f;
field_0x38 = 0;
field_0x2e = 0;
field_0x30 = 0;
field_0x32 = 0;
field_0x34 = 0;
field_0x2c = 0xff;
field_0x20 = 1.5f;
field_0x24 = 150.0f;
field_0x2d = 0x8c;
field_0x40 = 0x5a;
field_0x42 = 100;
field_0x44 = 100;
field_0x46 = 0x5a;
field_0x50 = 7;
field_0x52 = 0xfff4;
field_0x48 = 1.8f;
field_0x4c = 12.0f;
field_0x54 = 0;
field_0x56 = 0xffa8;
field_0x58 = 2.3f;
field_0x5c = 12.0f;
field_0x60 = 0x96;
field_0x61 = 100;
field_0x64 = 0;
field_0x66 = 0;
field_0x68 = 0;
field_0x6a = 0;
field_0x88 = 0xf;
field_0x8a = 5;
field_0x8c = 5;
field_0x8e = 5;
field_0x90 = 0x14;
field_0x92 = 0xc;
field_0x94 = 3;
field_0x96 = 3;
field_0x98 = 3;
field_0x9a = 0;
field_0x120 = 0x8c;
field_0x121 = 200;
field_0x122 = 0x96;
field_0x126 = 10;
field_0x128 = 6;
field_0x12a = 3;
field_0x12c = 3;
field_0x12e = 2;
field_0x130 = 0x14;
field_0x132 = 0x27;
field_0x7e = 0x14;
field_0x136 = 4;
field_0x138 = 10;
field_0x13a = 0;
field_0x13c = 10;
field_0x142 = 0xb4;
field_0x143 = 0;
field_0x144 = 0;
field_0x145 = 0xff;
field_0x146 = 0;
field_0x147 = 0;
field_0x148 = 0;
field_0x149 = 0;
field_0x123 = 1;
field_0x134 = 3;
field_0x13e = 0;
field_0x14a = 0xff;
field_0x14b = 0x32;
field_0x14c = 0x32;
field_0x14e = 10;
field_0x150 = 0x14;
field_0x152 = 4;
field_0x154 = 0x32;
field_0x28 = 2.1f;
field_0x124 = 5;
field_0x140 = 0;
field_0xa0 = 0;
field_0xa8 = 0;
field_0xa2 = 0x3c;
field_0xaa = 0xffc4;
field_0xa4 = 0;
field_0xac = 0;
field_0xa6 = 0;
field_0xae = 0;
field_0xb0 = 0x19;
field_0xb8 = 0xffe2;
field_0xb2 = 0x23;
field_0xba = 0xffea;
field_0xb4 = 0xffdf;
field_0xbc = 0xfffb;
field_0xb6 = 0xfffa;
field_0xbe = 0;
field_0xc0 = 0;
field_0xc8 = 0xffec;
field_0xc2 = 0;
field_0xca = 0xffec;
field_0xc4 = 0;
field_0xcc = 0xffec;
field_0xc6 = 0;
field_0xce = 0;
field_0xd0 = 0x28;
field_0xd8 = 0xffc4;
field_0xd2 = 0x28;
field_0xda = 0xffc4;
field_0xd4 = 0;
field_0xdc = 0;
field_0xd6 = 0;
field_0xde = 0;
field_0xe0 = 0x19;
field_0xe8 = 0xffe2;
field_0xe2 = 0x23;
field_0xea = 0xffea;
field_0xe4 = 0;
field_0xec = 0xffc4;
field_0xe6 = 0xfffa;
field_0xee = 0;
field_0xf0 = 0;
field_0xf8 = 0;
field_0xf2 = 0;
field_0xfa = 0;
field_0xf4 = 0;
field_0xfc = 0;
field_0xf6 = 0;
field_0xfe = 0;
field_0x100 = 0;
field_0x108 = 0xffc4;
field_0x102 = 0;
field_0x10a = 0xffc4;
field_0x104 = 0x32;
field_0x10c = 0xffb8;
field_0x106 = 0x32;
field_0x10e = 0xffaf;
field_0x110 = 0;
field_0x118 = 0xffeb;
field_0x112 = 0x11;
field_0x11a = 0xfff4;
field_0x114 = 0xffe2;
field_0x11c = 0xfff5;
field_0x116 = 0xff9e;
field_0x11e = 7;
field_0x9c = 0;
field_0x9e = 0;
field_0x6c[0] = 0xffea;
field_0x72[0] = 0xffd5;
field_0x78[0] = 0x8c;
field_0x6c[1] = 0xffdd;
field_0x72[1] = 0xfffd;
field_0x78[1] = 0x82;
field_0x6c[2] = 0xfffa;
field_0x72[2] = 0xfff3;
field_0x78[2] = 0x8c;
}
/* 801EF360-801EF57C .text __ct__16dMeter_menuHIO_cFv */
dMeter_menuHIO_c::dMeter_menuHIO_c() {
field_0x8 = 1.4f;
field_0xbe = 0;
field_0xc = 18.0f;
field_0x10 = 28.0f;
field_0x7e = 3;
field_0x80 = 3;
field_0xc0 = 1;
field_0x7c = 0;
field_0xc1 = 0;
field_0xc2 = 10;
field_0xc3 = 4;
field_0xc4 = 0;
field_0x3c = 0.0f;
field_0x40 = -50.0f;
field_0x44 = 1100.0f;
field_0x70 = 0xff;
field_0x71 = 0xff;
field_0x72 = 0xff;
field_0x73 = 0xff;
field_0x6c = 0x32;
field_0x6d = 0x32;
field_0x6e = 0x32;
field_0x6f = 0xff;
field_0x48 = 0.0f;
field_0x4c = 0.0f;
field_0x50 = -1200.0f;
field_0x74 = 0xff;
field_0x75 = 0xff;
field_0x76 = 0xff;
field_0x77 = 0xff;
field_0x54 = -1500.0f;
field_0x58 = 1000.0f;
field_0x5c = 500.0f;
field_0x60 = 1.0f;
field_0x64 = -1.0f;
field_0x68 = -1.0f;
field_0x78 = 200;
field_0x79 = 200;
field_0x7a = 200;
field_0x7b = 0xff;
field_0x18 = 0.25f;
field_0xbf = 0;
field_0x1c = 2.5f;
field_0xc5 = 2;
field_0x82 = 8;
field_0x84 = 5;
field_0xc6 = 0;
field_0xc7 = 1;
field_0x20 = 0.5f;
field_0xc8 = 9;
field_0xc9 = 0;
field_0xca = 0;
field_0x28 = 0xffec;
field_0x36 = 7;
field_0x32 = 8;
field_0x34 = 5;
field_0x38 = 0x1a;
field_0x3a = 0xfffd;
field_0x88 = 3;
field_0x8a = 0;
field_0x14 = 1.3f;
field_0x8c = 0xff38;
field_0xb4 = 6;
field_0x90 = 3;
field_0x92 = 7;
field_0x94 = 1.0f;
field_0x98 = 0xff;
field_0x99 = 0xff;
field_0x9a = 0;
field_0x9a = 0;
field_0xa0 = 1.0f;
field_0xb6 = 0x46;
field_0xba = 5;
field_0xbc = 3;
field_0x24 = 1.4f;
field_0xa4 = 6;
field_0xa6 = 2;
field_0xa8 = 2;
field_0xaa = 2;
field_0xac = 2;
field_0xae = 0x1e;
field_0xb0 = 0x3c;
field_0xb2 = 0;
field_0x8e = 0x15e;
field_0xb8 = 0x96;
field_0x2a = 0x10;
field_0x2c = 0x18;
field_0x2e = 0x17;
field_0x30 = 0;
}
/* 801EF57C-801EF75C .text __ct__16dMeter_msg_HIO_cFv */
dMeter_msg_HIO_c::dMeter_msg_HIO_c() {
field_0x5.r = 0x1e;
field_0x5.g = 0x1e;
field_0x5.b = 0x1e;
field_0x5.a = 0xd7;
field_0x9.r = 0x1e;
field_0x9.g = 0x1e;
field_0x9.b = 0x4b;
field_0x9.a = 0;
field_0x5a = 0;
field_0x5c = 0;
field_0x5e = 0x1e;
field_0x66 = 0;
field_0x68 = 0xf;
field_0xd = 0x1e;
field_0xe = 0x1e;
field_0xf = 0x1e;
field_0x10 = 0xdc;
field_0x11 = 0x1e;
field_0x12 = 0x1e;
field_0x13 = 0xb4;
field_0x14 = 0;
field_0x15 = 0;
field_0x16 = 0xff;
field_0x17 = 0;
field_0x18 = 0xff;
field_0x19 = 0x78;
field_0x1a = 0x78;
field_0x1b = 0xff;
field_0x1c = 0xff;
field_0x1d = 0xff;
field_0x1e = 0xff;
field_0x1f = 0x3c;
field_0x20 = 0xff;
field_0x21 = 0;
field_0x22 = 0xff;
field_0x23 = 0xff;
field_0x24 = 0xff;
field_0x25 = 0xff;
field_0x26 = 0;
field_0x27 = 0xff;
field_0x28 = 0xff;
field_0x6a = 0;
field_0x72 = 0;
field_0x6c = 0;
field_0x83 = 0;
field_0x84 = 1;
field_0x85 = 0;
field_0x86 = 0;
field_0x87 = 10;
field_0x88 = 0;
field_0x89 = 0;
field_0x8a = 0;
field_0x64 = 0;
field_0x82 = 2;
field_0x58 = 0x1d;
field_0x70 = DEMO_SELECT(0x19, 0x17);
field_0x62 = 0;
field_0x60 = 0xd;
field_0x6e = 0xf0;
field_0x50 = 0.6f;
field_0x54 = 1.1f;
field_0x4a = 2;
field_0x4c = 4;
field_0x7e = 10;
field_0x80 = 0xb4;
field_0x74 = 0x80;
field_0x7f = 0xaa;
field_0x81 = 0x46;
field_0x76 = 10;
field_0x78 = 0;
field_0x7a = 0;
field_0x7c = 0x46;
field_0x44 = 5;
field_0x46 = 3;
field_0x48 = 4;
field_0x38 = -40.0f;
field_0x3c = 0.96f;
field_0x40 = 0.5f;
field_0x29 = 0xff;
field_0x2a = 0x50;
field_0x2b = 0x50;
field_0x2c = 0x96;
field_0x2d = 0xff;
field_0x2e = 0x96;
field_0x2f = 0x96;
field_0x30 = 0xff;
}
/* 801EF75C-801EF924 .text __ct__20dMeter_message_HIO_cFv */
dMeter_message_HIO_c::dMeter_message_HIO_c() {
field_0x5.r = 0;
field_0x5.g = 0;
field_0x5.b = 0;
field_0x5.a = 0xff;
field_0x9.r = 0xff;
field_0x9.g = 0xff;
field_0x9.b = 0xff;
field_0x9.a = 0xff;
field_0xd.r = 0xff;
field_0xd.g = 0xff;
field_0xd.b = 0xff;
field_0xd.a = 0;
field_0x11.r = 0xff;
field_0x11.g = 0xff;
field_0x11.b = 0xff;
field_0x11.a = 0xff;
field_0x15.r = 0xff;
field_0x15.g = 0xff;
field_0x15.b = 0xff;
field_0x15.a = 0xff;
field_0x19.r = 0xff;
field_0x19.g = 0xff;
field_0x19.b = 0xff;
field_0x19.a = 0;
field_0x1d.r = 0;
field_0x1d.g = 0;
field_0x1d.b = 0;
field_0x1d.a = 0xff;
field_0x21.r = 0xff;
field_0x21.g = 0xff;
field_0x21.b = 0xff;
field_0x21.a = 0xff;
field_0x25.r = 0xff;
field_0x25.g = 0xff;
field_0x25.b = 0xff;
field_0x25.a = 0;
field_0x29 = 0x80;
field_0x2a = 0xff;
field_0x2b = 0xff;
field_0x2c = 0xff;
field_0x2d = 0xff;
field_0x2e = 0xb4;
field_0x2f = 0xa0;
field_0x30 = 0x4b;
field_0x31 = 0;
field_0x32 = 0x1b;
field_0x34 = 0xfffe;
field_0x36 = 0x2a;
field_0x38 = 0xf;
field_0x3a = 1;
field_0x3b = 10;
field_0x3c = 0x16;
field_0x40 = 0.7f;
field_0x44 = 0;
field_0x46 = 1;
field_0x48 = 0;
field_0x4a = 0;
field_0x4b = 1;
field_0x4c = 0xff;
field_0x4d = 0xff;
field_0x4e = 0xff;
field_0x4f = 0xff;
field_0x50 = 0;
field_0x51 = 0;
field_0x52 = 0;
field_0x53 = 0;
field_0x54 = 0;
field_0x56 = 0;
field_0x58 = 0;
field_0x5a = 0;
field_0x5b = 0xff;
field_0x5c = 0;
field_0x60 = 0;
field_0x66 = 0;
field_0x6c = 1;
field_0x72 = 1;
field_0x5d = 0;
field_0x62 = 0;
field_0x68 = 0;
field_0x6e = 1;
field_0x74 = 1;
field_0x5e = 0;
field_0x64 = 0;
field_0x6a = 0;
field_0x70 = 1;
field_0x76 = 1;
field_0x78 = 0;
field_0x7a = 4;
field_0x7c = 4;
field_0x7e = 2;
field_0x80 = 600;
field_0x82 = 0x18c;
}
/* 801EF924-801EF938 .text dMeter_mtrShow__Fv */
void dMeter_mtrShow() {
dComIfGp_2dShowOn();
}
/* 801EF938-801EF94C .text dMeter_mtrHide__Fv */
void dMeter_mtrHide() {
dComIfGp_2dShowOff();
}
/* 801EF94C-801EF954 .text dMenu_setMenuStatus__FUc */
void dMenu_setMenuStatus(u8 param_1) {
menu_status = param_1;
}
/* 801EF954-801EF95C .text dMenu_setMenuStatusOld__FUc */
void dMenu_setMenuStatusOld(u8 param_1) {
menu_status_old = param_1;
}
/* 801EF95C-801EF964 .text dMenu_getMenuStatus__Fv */
u8 dMenu_getMenuStatus() {
return menu_status;
}
/* 801EF964-801EF96C .text dMenu_getCollectMode__Fv */
u8 dMenu_getCollectMode() {
return dMeter_collectMode;
}
/* 801EF96C-801EF974 .text dMenu_setCollectMode__FUc */
void dMenu_setCollectMode(u8 param_1) {
dMeter_collectMode = param_1;
}
/* 801EF974-801EF97C .text dMenu_getItemMode__Fv */
u8 dMenu_getItemMode() {
return dMeter_itemMode;
}
/* 801EF97C-801EF984 .text dMenu_setItemMode__FUc */
void dMenu_setItemMode(u8 param_1) {
dMeter_itemMode = param_1;
}
/* 801EF984-801EF98C .text dMeter_subWinFlag__Fv */
bool dMeter_subWinFlag() {
return subWinFlag;
}
/* 801EF98C-801EF998 .text dMeter_subWinFlagOn__Fv */
void dMeter_subWinFlagOn() {
subWinFlag = true;
}
/* 801EF998-801EF9A4 .text dMeter_subWinFlagOff__Fv */
void dMeter_subWinFlagOff() {
subWinFlag = false;
}
/* 801EF9A4-801EF9AC .text dMeter_isAuctionFlag__Fv */
bool dMeter_isAuctionFlag() {
return dMeter_auctionFlag;
}
/* 801EF9AC-801EF9B8 .text dMeter_onAuctionFlag__Fv */
void dMeter_onAuctionFlag() {
dMeter_auctionFlag = true;
}
/* 801EF9B8-801EF9C4 .text dMeter_offAuctionFlag__Fv */
void dMeter_offAuctionFlag() {
dMeter_auctionFlag = false;
}
/* 801EF9C4-801EFA38 .text dMeter_itemMoveSet__FP18fopMsgM_pane_classUcUc */
void dMeter_itemMoveSet(fopMsgM_pane_class* pane, u8 btn, u8 item) {
dMeter_itemMoveFlag = 1;
dMeter_btn_chk = btn;
dMeter_itemNum = item;
item_parts.mPosTopLeftOrig = pane->mPosTopLeft;
item_parts.mPosTopLeft = item_parts.mPosTopLeftOrig;
item_parts.mPosCenterOrig = pane->mPosCenter;
item_parts.mPosCenter = item_parts.mPosCenterOrig;
item_parts.mSizeOrig = pane->mSizeOrig;
item_parts.mSize = pane->mSize;
dMeter_itemTimer = 0;
}
/* 801EFA38-801EFA40 .text dMeter_itemMoveFlagCheck__Fv */
u8 dMeter_itemMoveFlagCheck() {
return dMeter_itemMoveFlag;
}
/* 801EFA40-801EFA48 .text dMenu_flag__Fv */
u8 dMenu_flag() {
return dMenu_pause;
}
/* 801EFA48-801EFA50 .text dMenu_flagSet__FUc */
void dMenu_flagSet(u8 param_1) {
dMenu_pause = param_1;
}
/* 801EFA50-801EFA58 .text dMenu_timer__Fv */
int dMenu_timer() {
return dMenu_frame_timer;
}
/* 801EFA58-801EFA60 .text dMenu_getPushMenuButton__Fv */
u8 dMenu_getPushMenuButton() {
return dMenu_menuButton;
}
/* 801EFA60-801EFA68 .text dMenu_setPushMenuButton__FUc */
void dMenu_setPushMenuButton(u8 param_1) {
dMenu_menuButton = param_1;
}
/* 801EFA68-801EFA78 .text dMeter_PaneHide__FP18fopMsgM_pane_class */
void dMeter_PaneHide(fopMsgM_pane_class* pane) {
pane->pane->hide();
}
/* 801EFA78-801EFA90 .text dMeter_isBit8__FPUcUc */
BOOL dMeter_isBit8(u8* flag, u8 bit) {
return (*flag & bit) ? TRUE : FALSE;
}
/* 801EFA90-801EFAA4 .text dMeter_onBit8__FPUcUc */
void dMeter_onBit8(u8* flag, u8 bit) {
*flag |= bit & 0xFF;
}
/* 801EFAA4-801EFAB8 .text dMeter_offBit8__FPUcUc */
void dMeter_offBit8(u8* flag, u8 bit) {
*flag &= ~(bit & 0xFF);
}
/* 801EFAB8-801EFAC8 .text dMeter_PaneShow__FP18fopMsgM_pane_class */
void dMeter_PaneShow(fopMsgM_pane_class* pane) {
pane->pane->show();
}
/* 801EFAC8-801EFC40 .text dMeter_alphaControl__FP15sub_meter_class */
void dMeter_alphaControl(sub_meter_class* i_Meter) {
if (!dComIfGp_2dShowCheck()) {
if (i_Meter->field_0x2f6c > 0.0f) {
i_Meter->field_0x2f6c = fopMsgM_valueIncrease(g_meterHIO.field_0x6, (int)i_Meter->field_0x2fd8, 0);
i_Meter->field_0x2fd8--;
} else {
i_Meter->field_0x2f6c = 0.0f;
i_Meter->field_0x2fd8 = 0;
}
} else if (dMenu_flag()) {
if (dMenu_timer() <= 5) {
f32 dVar3 = fopMsgM_valueIncrease(5, dMenu_timer(), 0);
if (dMenu_getMenuStatus() != 3) {
dVar3 = ((1.0f - dVar3) * 0.5f + 0.5f);
}
if (i_Meter->field_0x2f6c > dVar3) {
i_Meter->field_0x2f6c = dVar3;
}
} else if (dMenu_getMenuStatus() == 3) {
i_Meter->field_0x2f6c = 0.0f;
} else {
i_Meter->field_0x2f6c = 0.5f;
}
} else if (i_Meter->field_0x2f6c < 1.0f) {
i_Meter->field_0x2f6c = fopMsgM_valueIncrease(g_meterHIO.field_0x6, (int)i_Meter->field_0x2fd8, 0);
i_Meter->field_0x2fd8++;
} else {
i_Meter->field_0x2f6c = 1.0f;
i_Meter->field_0x2fd8 = g_meterHIO.field_0x6;
}
}
/* 801EFC40-801F01C0 .text dMeter_statusCheck__FP15sub_meter_class */
void dMeter_statusCheck(sub_meter_class* i_Meter) {
i_Meter->mStatusFlags = 0;
if (!dComIfGp_2dShowCheck() || (dCam_getBody()->chkFlag(0x2000000))) {
i_Meter->mStatusFlags |= dMtrStts_UNK4000_e;
} else if ((dMeter_isAuctionFlag() && dComIfGp_getMesgStatus() == 0) ||
(dComIfGs_isTmpBit(dSv_event_tmp_flag_c::UNK_0408) && dComIfGp_getMesgStatus() == 0) ||
dComIfGp_evmng_startCheck("PUZZLE_GAME") ||
dComIfGp_evmng_startCheck("PUZZLE_RUPEE"))
{
i_Meter->mStatusFlags |= dMtrStts_UNK80000_e;
dComIfGp_setAStatus(dActStts_BLANK_e);
dComIfGp_setDoStatus(dActStts_BLANK_e);
} else if (dComIfGp_getOperateWind() == 2) {
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
i_Meter->mStatusFlags |= dMtrStts_UNK400000_e;
} else if (dComIfGp_getMiniGameType() == 8 && !dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK10_e)) {
dComIfGp_setDoStatusForce(dActStts_bow_01);
dComIfGp_setAStatusForce(dActStts_HIDDEN_e);
i_Meter->mStatusFlags |= dMtrStts_UNK80000_e;
} else if (dComIfGp_checkPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e) && dComIfGp_getAStatus() == dActStts_RETURN_e) {
i_Meter->mStatusFlags |= dMtrStts_UNK200000_e;
} else if (dComIfGp_event_runCheck() && dMenu_getMenuStatus() != 4) {
if (dComIfGp_demo_mode() != 1 && dComIfGp_getMesgStatus() != 0 && !dComIfGp_getMetronome()) {
i_Meter->mStatusFlags |= dMtrStts_UNK100_e;
} else if (dComIfGp_demo_mode() != 1 && dComIfGp_getMetronome()) {
i_Meter->mStatusFlags |= dMtrStts_UNK200000_e;
dComIfGp_setAStatusForce(dActStts_HIDDEN_e);
} else {
i_Meter->mStatusFlags |= dMtrStts_UNK40_e;
}
}
if (dMenu_flag() != 0) {
if (dComIfGp_checkPlayerStatus1(0, daPyStts1_PICTO_BOX_AIM_e) || dComIfGp_getPictureStatus() == 2 ||
dComIfGp_getPictureStatus() == 3 || dComIfGp_isHeapLockFlag() == 6)
{
i_Meter->mStatusFlags |= dMtrStts_UNK20000_e;
dComIfGp_setAStatus(dActStts_BLANK_e);
dComIfGp_setDoStatus(dActStts_BLANK_e);
dComIfGp_setRStatus(dActStts_BLANK_e);
} else if (dMenu_getMenuStatus() == 1) {
i_Meter->mStatusFlags |= dMtrStts_UNK8_e;
} else if (dMenu_getMenuStatus() == 2) {
i_Meter->mStatusFlags |= dMtrStts_UNK10_e;
} else if (dMenu_getMenuStatus() == 4) {
i_Meter->mStatusFlags |= dMtrStts_UNK800000_e;
} else {
i_Meter->mStatusFlags |= dMtrStts_UNK20_e;
}
} else {
if (dComIfGp_getCb1Player() == daPy_getPlayerActorClass() || daNpc_kam_c::m_hyoi_kamome != 0) {
i_Meter->mStatusFlags |= dMtrStts_UNK40000_e;
if (dComIfGp_getAStatus() == dActStts_sword_01) {
dComIfGp_setAStatus(dActStts_BLANK_e);
}
} else if (
dComIfGp_checkPlayerStatus0(0, daPyStts0_SUBJECT_e) ||
// @bug Out of bounds array read.
// It seems like the developers probably intended to have a check like this:
// dComIfGp_checkCameraAttentionStatus(0, dCamAttnStts_00000100_e)
// Which would have checked if bit 0x100 of camera 0's attention statuses is set.
// But made a mistake and instead typed:
// dComIfGp_getCameraAttentionStatus(dCamAttnStts_00000100_e)
// Which checks if any of camera 0x100's attention statuses are set.
// As there is only a single camera, this mistake causes an OoB read 256 elements past the end of the array.
// This winds up reading one of the matrix floats of a shadow as an integer, equivalent to the following check:
// *(u32*)&g_dComIfG_gameInfo.drawlist.mShadowControl.mSimple[117].mVolumeMtx[1][2] != 0
(dComIfGp_getCameraAttentionStatus(dCamAttnStts_00000100_e) && dComIfGp_checkPlayerStatus0(0, daPyStts0_CRAWL_e))
) {
i_Meter->mStatusFlags |= dMtrStts_UNK100000_e;
}
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK10_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK100_e;
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_TELESCOPE_LOOK_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK80_e;
} else if (dComIfGp_checkPlayerStatus1(0, daPyStts1_PICTO_BOX_AIM_e) || dComIfGp_getPictureStatus() == 2 || dComIfGp_getPictureStatus() == 3 ||
dComIfGp_isHeapLockFlag() == 6)
{
i_Meter->mStatusFlags |= dMtrStts_UNK20000_e;
dComIfGp_setAStatus(dActStts_BLANK_e);
dComIfGp_setRStatus(dActStts_BLANK_e);
dComIfGp_setDoStatus(dActStts_BLANK_e);
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK400_e;
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_CRAWL_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK200_e;
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK800000_e)) {
if (daPy_getPlayerActorClass()->checkRopeTag()) {
i_Meter->mStatusFlags |= dMtrStts_UNK800_e;
} else {
i_Meter->mStatusFlags |= dMtrStts_UNK1000_e;
}
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK2000_e;
} else if (dComIfGp_checkPlayerStatus0(0, (daPyStts0_HANG_e | daPyStts0_UNK2000000_e))) {
i_Meter->mStatusFlags |= dMtrStts_UNK8000_e;
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK4000000_e)) {
i_Meter->mStatusFlags |= dMtrStts_UNK10000_e;
}
}
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_DUNGEON_e) {
i_Meter->mStatusFlags |= dMtrStts_UNK4_e;
} else {
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_MISC_e) {
i_Meter->mStatusFlags |= dMtrStts_UNK2_e;
} else {
i_Meter->mStatusFlags |= dMtrStts_UNK1_e;
}
}
}
/* 801F01C0-801F0258 .text dMeter_alphaClose__FPsPs */
f32 dMeter_alphaClose(s16* timer, s16* value) {
f32 ret;
if (*timer == 8) {
*timer = 9;
ret = 1.0f;
*value = 1;
} else if (*timer == 9) {
if (*value < 6) {
ret = 1.0f - fopMsgM_valueIncrease(6, *value, 1);
(*value)++;
} else {
ret = 0.0f;
*timer = 0;
}
} else {
ret = 0.0f;
}
return ret;
}
/* 801F0258-801F02E8 .text dMeter_alphaOpen__FPsPs */
f32 dMeter_alphaOpen(s16* timer, s16* value) {
f32 ret;
if (*timer == 0) {
*timer = 7;
ret = 0.0f;
*value = 0;
} else if (*timer == 7) {
if (*value < 6) {
ret = fopMsgM_valueIncrease(6, *value, 1);
(*value)++;
} else {
ret = 1.0f;
*timer = 8;
}
} else {
ret = 1.0f;
}
return ret;
}
/* 801F02E8-801F0320 .text dMeter_rupy_num__FPcs */
void dMeter_rupy_num(char* buf, s16 num) {
sprintf(buf, "rupy_num_%02d.bti", num);
}
/* 801F0320-801F0378 .text dMeter_actionTex__Fs */
const char* dMeter_actionTex(s16 id) {
static const struct {
u8 id;
const char* filename;
} act[] = {
{dActStts_BLANK_e, "ba_shiraberu.bti"},
{dActStts_LOOK_e, "ba_miru.bti"},
{dActStts_SPEAK_e, "ba_syaberu.bti"},
{dActStts_CHARTS_e, "ba_shiraberu.bti"},
{dActStts_LIFT_e, "ba_motu.bti"},
{dActStts_CLIMB_e, "ba_noru.bti"},
{dActStts_LET_GO_e, "ba_oriru.bti"},
{dActStts_RETURN_e, "ba_modoru.bti"},
{dActStts_PUT_AWAY_e, "ba_shimau.bti"},
{dActStts_DROP_e, "ba_oku.bti"},
{dActStts_CHECK_e, "ba_chekku.bti"},
{dActStts_OPEN_e, "ba_hiraku.bti"},
{dActStts_ATTACK_e, "ba_attack.bti"},
{dActStts_ba_osu, "ba_osu.bti"},
{dActStts_THROW_e, "ba_nageru.bti"},
{dActStts_CROUCH_e, "ba_shagamu.bti"},
{dActStts_SIDLE_e, "ba_harituku.bti"},
{dActStts_GRAB_e, "ba_tukamu.bti"},
{dActStts_JUMP_e, "ba_jump.bti"},
{dActStts_STOP_e, "ba_tomeru.bti"},
{dActStts_ba_haru, "ba_haru.bti"},
{dActStts_ba_tatamu, "ba_tatamu.bti"},
{dActStts_LET_GO_ROPE_e, "ba_hanasu.bti"},
{dActStts_CHOOSE_e, "ba_kettei.bti"},
{dActStts_ba_kogu, "ba_kogu.bti"},
{dActStts_NEXT_e, "ba_tugihe.bti"},
{dActStts_PARRY_e, "ba_sake.bti"},
{dActStts_PICK_UP_e, "ba_motu_buki.bti"},
{dActStts_GET_IN_SHIP_e, "ba_noru_hune.bti"},
{dActStts_GET_OUT_SHIP_e, "ba_oriru_hune.bti"},
{dActStts_ba_save, "ba_save.bti"},
{dActStts_ba_option, "ba_option.bti"},
{dActStts_TAKE_PHOTO_e, "ba_toru.bti"},
{dActStts_INFO_e, "ba_setumei.bti"},
{dActStts_SWAP_MODES_e, "ba_kirikae.bti"},
{dActStts_FLY_e, "ba_tobu.bti"},
{dActStts_CALL_e, "ba_yobu.bti"},
{dActStts_BID_e, "ba_hoshii.bti"},
{dActStts_READ_e, "ba_yomu.bti"},
{dActStts_CANCEL_e, "ba_yameru.bti"},
{dActStts_ba_kakudai, "ba_kakudai.bti"},
{dActStts_ba_hikaku, "ba_hikaku.bti"},
{dActStts_ba_zoom01, "ba_zoom01.bti"},
{dActStts_ba_zoom02, "ba_zoom02.bti"},
{dActStts_CRUISE_e, "ba_susumu.bti"},
{dActStts_ba_nageru__dupe_2D, "ba_nageru.bti"},
{dActStts_ba_motu__dupe_2E, "ba_motu.bti"},
{dActStts_SWING_e, "ba_huru.bti"},
{dActStts_SEA_CHART_e, "ba_kaizuhe.bti"},
{dActStts_ba_sake__dupe_31, "ba_sake.bti"},
{dActStts_ba_modoru__dupe_32, "ba_modoru.bti"},
{dActStts_ba_save__dupe_33, "ba_save.bti"},
{dActStts_ba_save__dupe_34, "ba_save.bti"},
{dActStts_sword_01, "sword_01.bti"},
{dActStts_DEFEND_e, "ba_husegu.bti"},
{dActStts_boko_stick, "boko_stick.bti"},
{dActStts_hatchet, "hatchet.bti"},
{dActStts_iron_club, "iron_club.bti"},
{dActStts_longsword, "longsword.bti"},
{dActStts_spear, "spear.bti"},
{dActStts_spear__dupe_3C, "spear.bti"},
{dActStts_bow_01, "bow_01.bti"},
{dActStts_HIDDEN_e, "ba_modoru.bti"},
};
int found = 0;
for (int i = 0; i < ARRAY_SIZE(act); i++) {
if (id == act[i].id) {
found = i;
break;
}
}
return act[found].filename;
}
/* 801F0378-801F041C .text dMeter_weponTex__Fv */
const char* dMeter_weponTex() {
static const char* wepon[] = {
"sword_00.bti",
"sword_01.bti",
"sword_02.bti",
"sword_03.bti",
};
int var1;
if (dComIfGs_isCollect(0, 3)) {
var1 = 3;
} else if (dComIfGs_isCollect(0, 2)) {
var1 = 2;
} else if (dComIfGs_isCollect(0, 1)) {
var1 = 1;
} else {
var1 = 0;
}
return wepon[var1];
}
/* 801F041C-801F0434 .text dMeter_heartTex__Fs */
const char* dMeter_heartTex(s16 param_1) {
static const char* ht[] = {
"heart.bti",
"heart_03.bti",
"heart_02.bti",
"heart_01.bti",
"heart_04.bti",
};
return ht[param_1];
}
/* 801F0434-801F0608 .text dMeter_recollect_boss_data__Fv */
void dMeter_recollect_boss_data() {
if ((dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_BOSS_e) && dComIfGs_isStageBossEnemy()) {
if ((dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dSv_save_c::STAGE_DRC) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3D80)) {
dComIfGs_copyPlayerRecollectionData();
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3D80);
} else if ((dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dSv_save_c::STAGE_FW) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3D40)) {
dComIfGs_copyPlayerRecollectionData();
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3D40);
} else if ((dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dSv_save_c::STAGE_ET) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3D20)) {
dComIfGs_copyPlayerRecollectionData();
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3D20);
} else if ((dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dSv_save_c::STAGE_WT) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_3D10)) {
dComIfGs_copyPlayerRecollectionData();
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3D10);
}
}
}
/* 801F0608-801F06CC .text draw__16dDlst_2DMETER1_cFv */
void dDlst_2DMETER1_c::draw() {
J2DOrthoGraph* graf = dComIfGp_getCurrentGrafPort();
graf->setPort();
sMainParts3->draw(0.0f, 0.0f, graf);
sMainParts1->draw(0.0f, 0.0f, graf);
if (sScrTimer1 != NULL) {
sScrTimer1->setScissor(true);
sScrTimer1->draw(0.0f, 0.0f, graf);
}
if (sScrTimer2 != NULL) {
sScrTimer2->draw(0.0f, 0.0f, graf);
}
sChoiceRoad->draw(0.0f, 0.0f, graf);
}
/* 801F06CC-801F0724 .text draw__16dDlst_2DMETER2_cFv */
void dDlst_2DMETER2_c::draw() {
J2DOrthoGraph* graf = dComIfGp_getCurrentGrafPort();
graf->setPort();
sMainParts2->draw(0.0f, 0.0f, graf);
}
void dMeter_setNowHeartScaleXY(fopMsgM_pane_class*);
/* 801F0724-801F07D4 .text dMeter_heart_data_set__FP18fopMsgM_pane_classP18fopMsgM_pane_classP18fopMsgM_pane_class */
void dMeter_heart_data_set(fopMsgM_pane_class* pane1, fopMsgM_pane_class* pane2, fopMsgM_pane_class* pane3) {
dMeter_setNowHeartScaleXY(pane2);
dMeter_setNowHeartScaleXY(pane3);
pane1->mPosTopLeft = pane2->mPosTopLeft;
pane1->mSize = pane2->mSize;
pane1->mPosCenter = pane2->mPosCenter;
pane1->pane->move(pane1->mPosTopLeft.x, pane1->mPosTopLeft.y);
pane1->pane->resize(pane1->mSize.x, pane1->mSize.y);
}
/* 801F07D4-801F0820 .text dMeter_paneBottomScaleY__FP18fopMsgM_pane_classf */
void dMeter_paneBottomScaleY(fopMsgM_pane_class* pane, f32 scale) {
f32 oldBottom = (pane->mPosTopLeft.y + pane->mSize.y);
pane->mSize.y = pane->mSizeOrig.y * scale;
pane->mPosCenter.y = oldBottom - (pane->mSize.y / 2.0f);
fopMsgM_cposMove(pane);
}
/* 801F0820-801F08DC .text dMeter_parentPaneTrans__FP18fopMsgM_pane_classf */
void dMeter_parentPaneTrans(fopMsgM_pane_class* pane, f32 scale) {
pane->mPosCenter.x += g_meterHIO.field_0x50;
pane->mPosCenter.y += g_meterHIO.field_0x52;
fopMsgM_paneScaleXY(pane, scale);
J2DPane* j2dPane = pane->pane;
j2dPane->rotate(pane->mSize.x / 2.0f, pane->mSize.y / 2.0f, ROTATE_Z, j2dPane->getRotate());
}
/* 801F08DC-801F09D8 .text dMeter_childPaneTrans__FP18fopMsgM_pane_classP18fopMsgM_pane_classf */
void dMeter_childPaneTrans(fopMsgM_pane_class* pane, fopMsgM_pane_class* parent, f32 scale) {
f32 x = pane->mPosCenterOrig.x - parent->mPosCenterOrig.x;
f32 y = pane->mPosCenterOrig.y - parent->mPosCenterOrig.y;
pane->mPosCenter.x += x * (scale - 1.0f);
pane->mPosCenter.y += y * (scale - 1.0f);
pane->mPosCenter.x += g_meterHIO.field_0x50;
pane->mPosCenter.y += g_meterHIO.field_0x52;
fopMsgM_paneScaleXY(pane, scale);
J2DPane* j2dPane = pane->pane;
j2dPane->rotate(pane->mSize.x / 2.0f, pane->mSize.y / 2.0f, ROTATE_Z, j2dPane->getRotate());
}
/* 801F09D8-801F0AD8 .text dMeter_childPaneTransOnly__FP18fopMsgM_pane_classP18fopMsgM_pane_classff */
void dMeter_childPaneTransOnly(fopMsgM_pane_class* pane, fopMsgM_pane_class* parent, f32 transScale, f32 scale) {
f32 x = pane->mPosCenterOrig.x - parent->mPosCenterOrig.x;
f32 y = pane->mPosCenterOrig.y - parent->mPosCenterOrig.y;
pane->mPosCenter.x += x * (transScale - 1.0f);
pane->mPosCenter.y += y * (transScale - 1.0f);
pane->mPosCenter.x += g_meterHIO.field_0x50;
pane->mPosCenter.y += g_meterHIO.field_0x52;
fopMsgM_paneScaleXY(pane, scale);
J2DPane* j2dPane = pane->pane;
j2dPane->rotate(pane->mSize.x / 2.0f, pane->mSize.y / 2.0f, ROTATE_Z, j2dPane->getRotate());
}
/* 801F0AD8-801F0C10 .text dMeter_childPaneTransChildTrans__FP18fopMsgM_pane_classP18fopMsgM_pane_classP18fopMsgM_pane_classff */
void dMeter_childPaneTransChildTrans(fopMsgM_pane_class* param_1, fopMsgM_pane_class* param_2, fopMsgM_pane_class* param_3, f32 param_4, f32 param_5) {
f32 x = param_1->mPosCenterOrig.x - param_2->mPosCenterOrig.x;
f32 y = param_1->mPosCenterOrig.y - param_2->mPosCenterOrig.y;
param_1->mPosCenter.x += x * (param_4 - 1.0f);
param_1->mPosCenter.y += y * (param_4 - 1.0f);
x = param_1->mPosCenter.x - param_3->mPosCenter.x;
y = param_1->mPosCenter.y - param_3->mPosCenter.y;
param_1->mPosCenter.x += x * (param_5 - 1.0f);
param_1->mPosCenter.y += y * (param_5 - 1.0f);
param_1->mPosCenter.x += g_meterHIO.field_0x50;
param_1->mPosCenter.y += g_meterHIO.field_0x52;
fopMsgM_paneScaleXY(param_1, param_5);
J2DPane* j2dPane = param_1->pane;
j2dPane->rotate(param_1->mSize.x / 2.0f, param_1->mSize.y / 2.0f, ROTATE_Z, j2dPane->getRotate());
}
/* 801F0C10-801F0D0C .text dMeter_childPaneTransChildTransOnly__FP18fopMsgM_pane_classP18fopMsgM_pane_classP18fopMsgM_pane_classff */
void dMeter_childPaneTransChildTransOnly(fopMsgM_pane_class* param_1, fopMsgM_pane_class* param_2, fopMsgM_pane_class* param_3, f32 param_4, f32 param_5) {
f32 x = param_1->mPosCenterOrig.x - param_2->mPosCenterOrig.x;
f32 y = param_1->mPosCenterOrig.y - param_2->mPosCenterOrig.y;
param_1->mPosCenter.x += x * (param_4 - 1.0f);
param_1->mPosCenter.y += y * (param_4 - 1.0f);
param_1->mPosCenter.x += g_meterHIO.field_0x50;
param_1->mPosCenter.y += g_meterHIO.field_0x52;
fopMsgM_cposMove(param_1);
J2DPane* j2dPane = param_1->pane;
j2dPane->rotate(param_1->mSize.x / 2.0f, param_1->mSize.y / 2.0f, ROTATE_Z, j2dPane->getRotate());
}
/* 801F0D0C-801F0D64 .text dMeter_setHeartScaleXY__FP18fopMsgM_pane_classs */
void dMeter_setHeartScaleXY(fopMsgM_pane_class* pane, s16 scale) {
f32 scaleX, scaleY;
if (scale != 4) {
scaleX = 1.0f;
scaleY = 1.0f;
} else {
scaleX = texRateX;
scaleY = texRateY;
}
pane->mSize.x = pane->mSizeOrig.x * scaleX;
pane->mSize.y = pane->mSizeOrig.y * scaleY;
fopMsgM_cposMove(pane);
}
/* 801F0D64-801F0DD4 .text dMeter_setHeartScaleXY2__FP18fopMsgM_pane_classs */
void dMeter_setHeartScaleXY2(fopMsgM_pane_class* pane, s16 scale) {
f32 scaleX, scaleY;
if (scale != 4) {
scaleX = 1.0f;
scaleY = 1.0f;
} else {
scaleX = texRateX;
scaleY = texRateY;
}
pane->mSize.x = pane->mSizeOrig.x * scaleX * g_meterHIO.field_0x48;
pane->mSize.y = pane->mSizeOrig.y * scaleY * g_meterHIO.field_0x48;
fopMsgM_cposMove(pane);
}
/* 801F0DD4-801F0E1C .text dMeter_setNowHeartScaleXY__FP18fopMsgM_pane_class */
void dMeter_setNowHeartScaleXY(fopMsgM_pane_class* pane) {
pane->mSize.x = pane->mSizeOrig.x * g_meterHIO.field_0x10;
pane->mSize.y = pane->mSizeOrig.y * g_meterHIO.field_0x10;
fopMsgM_cposMove(pane);
}
/* 801F0E1C-801F0E74 .text dMeter_setNowHeartScaleXY2__FP18fopMsgM_pane_class */
void dMeter_setNowHeartScaleXY2(fopMsgM_pane_class* pane) {
pane->mSize.x = pane->mSizeOrig.x * g_meterHIO.field_0x10 * g_meterHIO.field_0x48;
pane->mSize.y = pane->mSizeOrig.y * g_meterHIO.field_0x10 * g_meterHIO.field_0x48;
fopMsgM_cposMove(pane);
}
/* 801F0E74-801F0EE4 .text dMeter_heartChangeTexture__FP15sub_meter_classPCci */
void dMeter_heartChangeTexture(sub_meter_class* i_Meter, const char* textureName, int no) {
((J2DPicture*)i_Meter->mHeart[no].pane)->changeTexture(textureName, 0);
((J2DPicture*)i_Meter->mHeartShadow[no].pane)->changeTexture(textureName, 0);
dMeter_PaneShow(&i_Meter->mHeart[no]);
dMeter_PaneShow(&i_Meter->mHeartShadow[no]);
}
/* 801F0EE4-801F10B0 .text dMeter_heartScaleInit__FP15sub_meter_class */
void dMeter_heartScaleInit(sub_meter_class* i_Meter) {
int uVar1;
int uVar2;
int iVar9;
uVar1 = i_Meter->mMaxHP / 4;
uVar2 = i_Meter->mCurrHP - 1;
iVar9 = uVar2 / 4;
for (s32 i = 0; i < 20; i++) {
if (uVar1 == 0) {
i_Meter->mHeart[i].mUserArea = 5;
} else if (i_Meter->mCurrHP == 0) {
if (i < uVar1) {
i_Meter->mHeart[i].mUserArea = 4;
} else {
i_Meter->mHeart[i].mUserArea = 5;
}
} else if (i == iVar9) {
i_Meter->mHeart[i].mUserArea = i_Meter->mCurrHP % 4;
} else if (i < iVar9) {
i_Meter->mHeart[i].mUserArea = 0;
} else if (i < uVar1) {
i_Meter->mHeart[i].mUserArea = 4;
} else {
i_Meter->mHeart[i].mUserArea = 5;
}
dMeter_setHeartScaleXY(&i_Meter->mHeart[i], i_Meter->mHeart[i].mUserArea);
dMeter_setHeartScaleXY(&i_Meter->mHeartShadow[i], i_Meter->mHeart[i].mUserArea);
if (i_Meter->mHeart[i].mUserArea != 5) {
dMeter_heartChangeTexture(i_Meter, dMeter_heartTex(i_Meter->mHeart[i].mUserArea), i);
} else {
dMeter_PaneHide(&i_Meter->mHeart[i]);
dMeter_PaneHide(&i_Meter->mHeartShadow[i]);
}
fopMsgM_paneTrans(&i_Meter->mHeart[i], 0.0f, 0.0f);
fopMsgM_paneTrans(&i_Meter->mHeartShadow[i], 0.0f, 0.0f);
uVar2 = i_Meter->mCurrHP - 1;
if ((i == uVar2 / 4) && i_Meter->mCurrHP != 0) {
((J2DPicture*)i_Meter->field_0x0f00.pane)->changeTexture(dMeter_heartTex(i_Meter->mHeart[i].mUserArea), 0);
dMeter_heart_data_set(&i_Meter->field_0x0f00, &i_Meter->mHeart[i], &i_Meter->mHeartShadow[i]);
}
}
}
/* 801F10B0-801F10FC .text dMeter_maxLifeChange__FP15sub_meter_class */
void dMeter_maxLifeChange(sub_meter_class* i_Meter) {
if (i_Meter->field_0x300c > 0) {
i_Meter->mMaxHP++;
i_Meter->field_0x300c--;
return;
}
if (i_Meter->field_0x300c >= 0) {
return;
}
i_Meter->mMaxHP--;
i_Meter->field_0x300c++;
}
/* 801F10FC-801F11F8 .text dMeter_lifeChange__FP15sub_meter_classPb */
void dMeter_lifeChange(sub_meter_class* i_Meter, bool* param_2) {
if (i_Meter->mAdjustHp > 0) {
i_Meter->mCurrHP++;
i_Meter->mAdjustHp--;
if (*param_2 != false) {
if ((i_Meter->mCurrHP % 4) == 0) {
mDoAud_seStart(JA_SE_HP_GAUGE_INC);
}
if (i_Meter->mAdjustHp == 0) {
*param_2 = false;
}
}
} else if (i_Meter->mAdjustHp < 0) {
i_Meter->mCurrHP--;
i_Meter->mAdjustHp++;
}
i_Meter->field_0x0f00.mUserArea = 0;
g_dComIfG_gameInfo.play.mItemNowLife = i_Meter->mCurrHP;
}
/* 801F11F8-801F13A4 .text dMeter_heartLightMove__FP15sub_meter_class */
void dMeter_heartLightMove(sub_meter_class* i_Meter) {
uint hp;
int iVar1;
u32 uVar2;
f32 dVar3;
f32 dVar4;
f32 dVar5;
hp = dComIfGs_getLife() - 1;
if ((int)hp / 4) {
iVar1 = 22;
} else {
iVar1 = 12;
}
i_Meter->field_0x0f00.mUserArea++;
if (iVar1 < i_Meter->field_0x0f00.mUserArea) {
i_Meter->field_0x0f00.mUserArea = 0;
}
dVar3 = fopMsgM_valueIncrease(iVar1, (int)i_Meter->field_0x0f00.mUserArea, 0);
uVar2 = (int)(dVar3 * 255.0f);
dVar4 = (g_meterHIO.field_0x3c * dVar3) + 1.0f;
fopMsgM_setNowAlpha(&i_Meter->field_0x0f00, 1.0f - dVar3);
((J2DPicture*)i_Meter->field_0x0f00.pane)->setBlack((GXColor){uVar2, uVar2, uVar2, 0});
dVar3 = i_Meter->field_0x0f00.mSize.x * dVar4;
dVar5 = i_Meter->field_0x0f00.mSize.y * dVar4;
i_Meter->field_0x0f00.mPosTopLeft.x = i_Meter->field_0x0f00.mPosCenter.x - (dVar3 / 2.0f);
i_Meter->field_0x0f00.mPosTopLeft.y = i_Meter->field_0x0f00.mPosCenter.y - (dVar5 / 2.0f);
i_Meter->field_0x0f00.pane->move(i_Meter->field_0x0f00.mPosTopLeft.x, i_Meter->field_0x0f00.mPosTopLeft.y);
i_Meter->field_0x0f00.pane->resize(dVar3, dVar5);
}
/* 801F13A4-801F153C .text dMeter_heartAlpha__FP15sub_meter_class */
void dMeter_heartAlpha(sub_meter_class* i_Meter) {
f32 dVar5;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x10) && !dComIfGp_checkPlayerStatus1(0, daPyStts1_UNK2000_e)) ||
dMenu_getCollectMode() == 4 || (i_Meter->mStatusFlags & dMtrStts_UNK200000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80000_e) || dMeter_isAuctionFlag() ||
((i_Meter->mStatusFlags & dMtrStts_UNK400000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK800000_e)))
{
if (i_Meter->field_0x3014 > 0) {
i_Meter->field_0x3014--;
} else {
i_Meter->field_0x3014 = 0;
}
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK8_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10_e)) {
if (i_Meter->field_0x3014 < 3) {
i_Meter->field_0x3014++;
} else if (i_Meter->field_0x3014 > 3) {
i_Meter->field_0x3014--;
} else {
i_Meter->field_0x3014 = 3;
}
} else {
if (i_Meter->field_0x3014 < 5) {
i_Meter->field_0x3014++;
} else {
i_Meter->field_0x3014 = 5;
}
if (dComIfGp_getMiniGameType() != 6) {
mDoAud_heartGaugeOn();
}
}
dVar5 = fopMsgM_valueIncrease(5, i_Meter->field_0x3014, 0);
i_Meter->field_0x2fbc = dVar5;
}
/* 801F153C-801F15EC .text dMeter_heartInit__FP15sub_meter_class */
void dMeter_heartInit(sub_meter_class* i_Meter) {
texScaleX = i_Meter->mHeart[0].mSizeOrig.x / 40.0f;
texScaleY = i_Meter->mHeart[0].mSizeOrig.y / 32.0f;
texRateX = 0.4f;
texRateY = 0.5f;
i_Meter->field_0x2f70 = 1.0f;
i_Meter->field_0x2fbc = 0.0f;
i_Meter->mMaxHP = dComIfGs_getMaxLife();
i_Meter->mCurrHP = dComIfGs_getLife();
i_Meter->field_0x3014 = 5;
i_Meter->field_0x0f00.mUserArea = 0;
i_Meter->field_0x0f00.mUserArea = 0;
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0f00);
dMeter_heartScaleInit(i_Meter);
dComIfGp_setItemNowLife(i_Meter->mCurrHP);
}
/* 801F15EC-801F17F0 .text dMeter_LifeMove__FP15sub_meter_classb */
void dMeter_LifeMove(sub_meter_class* i_Meter, bool bForce) {
/* Nonmatching */
int iVar1;
bool bVar2;
s16 maxHP;
s16 newHP;
int uVar3;
static bool soundOnFlag = false;
bVar2 = false;
if (dComIfGp_getItemMaxLifeCount() != 0 || ((s16)dComIfGp_getItemLifeCount() != 0) || bForce) {
maxHP = dComIfGs_getMaxLife() + dComIfGp_getItemMaxLifeCount();
uVar3 = (s16)maxHP;
if (dComIfGp_getItemMaxLifeCount() > 0) {
newHP = ((int)uVar3 / 4) * 4;
} else {
newHP = dComIfGs_getLife() + (int)dComIfGp_getItemLifeCount();
}
if (dComIfGp_getItemMaxLifeCount() != 0) {
if ((int)uVar3 > 0x50) {
maxHP = 0x50;
} else if (maxHP < 0) {
maxHP = 0;
}
i_Meter->field_0x300c = maxHP - i_Meter->mMaxHP;
dComIfGs_setMaxLife(maxHP);
g_dComIfG_gameInfo.play.mItemMaxLifeCount = 0;
i_Meter->field_0x0f38[5].mUserArea = 1;
}
uVar3 = (s16)maxHP;
iVar1 = ((int)uVar3 / 4) * 4;
if (newHP > iVar1) {
newHP = iVar1;
} else if (newHP < 0) {
newHP = 0;
}
i_Meter->mAdjustHp = newHP - i_Meter->mCurrHP;
dComIfGs_setLife(newHP);
g_dComIfG_gameInfo.play.mItemLifeCount = 0.0f;
if (i_Meter->mAdjustHp >= 4) {
soundOnFlag = true;
}
}
if (i_Meter->field_0x300c != 0 || bForce) {
dMeter_maxLifeChange(i_Meter);
bVar2 = true;
}
if (i_Meter->mAdjustHp != 0 || bForce) {
dMeter_lifeChange(i_Meter, &soundOnFlag);
bVar2 = true;
}
if (bVar2) {
dMeter_heartScaleInit(i_Meter);
}
if (dComIfGs_getLife() != 0) {
dMeter_heartLightMove(i_Meter);
} else {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0f00);
}
}
/* 801F17F0-801F1A48 .text dMeter_BattleLifeMove__FP15sub_meter_classb */
void dMeter_BattleLifeMove(sub_meter_class* i_Meter, bool param_2) {
/* Nonmatching */
const char* pFilename;
f32 dVar4;
static u8 point = 0;
dVar4 = (i_Meter->mHeart[1].mPosCenterOrig.x - i_Meter->mHeart[0].mPosCenterOrig.x);
if (point != daNpc_Ji1_c::game_life_point || !param_2) {
for (s32 i = 0; i < 20; i++) {
point = daNpc_Ji1_c::game_life_point;
if (i == 1 || i == 2) {
i_Meter->mHeart[i].mPosCenter.x = (s32)(g_meterHIO.field_0x4c + i_Meter->mHeart[i].mPosCenterOrig.x) * (g_meterHIO.field_0x58 * dVar4);
i_Meter->mHeartShadow[i].mPosCenter.x =
(s32)(g_meterHIO.field_0x4c + i_Meter->mHeartShadow[i].mPosCenterOrig.x) * (g_meterHIO.field_0x58 * dVar4);
i_Meter->mHeart[i].mPosCenter.y = i_Meter->mHeart[i].mPosCenterOrig.y + g_meterHIO.field_0x5c;
i_Meter->mHeartShadow[i].mPosCenter.y = i_Meter->mHeartShadow[i].mPosCenterOrig.y + g_meterHIO.field_0x5c;
} else if (i == 0) {
i_Meter->mHeart[i].mPosCenter.x = i_Meter->mHeart[i].mPosCenterOrig.x + g_meterHIO.field_0x4c;
i_Meter->mHeartShadow[i].mPosCenter.x = i_Meter->mHeartShadow[i].mPosCenterOrig.x + g_meterHIO.field_0x4c;
i_Meter->mHeart[i].mPosCenter.y = i_Meter->mHeart[i].mPosCenterOrig.y + g_meterHIO.field_0x5c;
i_Meter->mHeartShadow[i].mPosCenter.y = i_Meter->mHeartShadow[i].mPosCenterOrig.y + g_meterHIO.field_0x5c;
}
if (i < point) {
pFilename = dMeter_heartTex(0);
dMeter_heartChangeTexture(i_Meter, pFilename, i);
if (i == point - 1) {
dMeter_setNowHeartScaleXY2(&i_Meter->mHeart[i]);
dMeter_setNowHeartScaleXY2(&i_Meter->mHeartShadow[i]);
} else {
dMeter_setHeartScaleXY2(&i_Meter->mHeart[i], 0);
dMeter_setHeartScaleXY2(&i_Meter->mHeartShadow[i], 0);
}
} else if (i < 3) {
pFilename = dMeter_heartTex(4);
dMeter_heartChangeTexture(i_Meter, pFilename, i);
dMeter_setHeartScaleXY2(&i_Meter->mHeart[i], 4);
dMeter_setHeartScaleXY2(&i_Meter->mHeartShadow[i], 4);
} else {
dMeter_PaneHide(&i_Meter->mHeart[i]);
dMeter_PaneHide(&i_Meter->mHeartShadow[i]);
}
}
}
}
/* 801F1A48-801F1DB8 .text dMeter_heartColor__FP15sub_meter_class */
void dMeter_heartColor(sub_meter_class* i_Meter) {
f32 dVar8;
JUtility::TColor white(0xFF, 0xFF, 0xFF, 0xFF);
JUtility::TColor black(0x00, 0x00, 0x00, 0x00);
if (daPy_getPlayerActorClass()->checkSoupPowerUp() && dComIfGp_getMiniGameType() != 6) {
JUtility::TColor white2 = -1;
JUtility::TColor black2 = -1;
if (i_Meter->mHeartShadow[0].mUserArea == 0) {
i_Meter->mHeartShadow[0].mUserArea = 1;
}
if (i_Meter->mHeartShadow[1].mUserArea < 0x1d) {
i_Meter->mHeartShadow[1].mUserArea++;
} else {
i_Meter->mHeartShadow[1].mUserArea = 0;
}
if (i_Meter->mHeartShadow[1].mUserArea < 0xf) {
dVar8 = fopMsgM_valueIncrease(0xf, i_Meter->mHeartShadow[1].mUserArea, 0);
} else {
dVar8 = fopMsgM_valueIncrease(0xf, 0x1e - i_Meter->mHeartShadow[1].mUserArea, 0);
}
white2.r = ((f32)white.r - (((f32)white.r - 255.0f) * dVar8));
white2.g = ((f32)white.g - (((f32)white.g - 255.0f) * dVar8));
white2.b = ((f32)white.b - (((f32)white.b - 255.0f) * dVar8));
white2.a = 0xFF;
black2.r = ((f32)black.r - (((f32)black.r - 255.0f) * dVar8));
black2.g = ((f32)black.g - (((f32)black.g - 255.0f) * dVar8));
black2.b = ((f32)black.b - (((f32)black.b - 255.0f) * dVar8));
black2.a = 0x00;
for (s32 i = 0; i < 20; i++) {
((J2DPicture*)i_Meter->mHeart[i].pane)->setWhite(white2);
((J2DPicture*)i_Meter->mHeart[i].pane)->setBlack(black2);
}
} else {
if (i_Meter->mHeartShadow[0].mUserArea == 1) {
for (s32 i = 0; i < 20; i++) {
((J2DPicture*)i_Meter->mHeart[i].pane)->setWhite(white);
((J2DPicture*)i_Meter->mHeart[i].pane)->setBlack(black);
}
i_Meter->mHeartShadow[0].mUserArea = 0;
}
}
}
/* 801F1DB8-801F1E60 .text dMeter_heartMove__FP15sub_meter_class */
void dMeter_heartMove(sub_meter_class* i_Meter) {
static bool flag = 0;
if (dComIfGp_getMiniGameType() == 6) {
dMeter_BattleLifeMove(i_Meter, flag);
flag = true;
} else if (flag) {
dMeter_heartInit(i_Meter);
flag = false;
} else {
dMeter_LifeMove(i_Meter, flag);
}
dMeter_heartColor(i_Meter);
dMeter_heartAlpha(i_Meter);
}
/* 801F1E60-801F1EBC .text dMeter_heartDraw__FP15sub_meter_class */
void dMeter_heartDraw(sub_meter_class* i_Meter) {
for (int i = 0; i < 20; i++) {
fopMsgM_setAlpha(&i_Meter->mHeart[i]);
fopMsgM_setAlpha(&i_Meter->mHeartShadow[i]);
}
}
/* 801F1EBC-801F1F8C .text dMeter_weponInit__FP15sub_meter_class */
void dMeter_weponInit(sub_meter_class* i_Meter) {
JKRArchive* pArc;
const char* pFilename;
i_Meter->field_0x28d0.mUserArea = 0;
i_Meter->field_0x301a = 0;
dComIfGp_setAStatus(dActStts_BLANK_e);
if (dComIfGp_getAStatus() == dActStts_RETURN_e || dComIfGp_getAStatus() == dActStts_RETURN_e) {
pArc = dComIfGp_getMenuArchive();
} else {
pArc = dComIfGp_getActionIconArchive();
}
pFilename = dMeter_actionTex(dActStts_BLANK_e);
JKRArchive::readTypeResource(i_Meter->actionTex[0], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[0], 0xc00);
((J2DPicture*)i_Meter->field_0x2828.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x2860.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x1d00.pane)->changeTexture(i_Meter->actionTex[0], 0);
i_Meter->field_0x2828.mUserArea = 0;
}
/* 801F1F8C-801F23B8 .text dMeter_weponMove__FP15sub_meter_class */
void dMeter_weponMove(sub_meter_class* i_Meter) {
s16 sVar1;
u8 uVar2;
int iVar3;
f32 dVar5;
if (dComIfGp_getAStatusForce() != dActStts_BLANK_e) {
dComIfGp_setAStatus(dComIfGp_getAStatusForce());
}
dMeter_weponChange(i_Meter);
if (dComIfGp_getDoStatus() == dActStts_BID_e) {
JUtility::TColor white = -1;
JUtility::TColor black = -1;
black.a = 0xFF;
black.b = 0xFF;
black.g = 0xFF;
black.r = 0xFF;
white.b = 0xFF;
white.a = 0x00;
i_Meter->field_0x1d38.mUserArea++;
if (i_Meter->field_0x1d38.mUserArea >= 0x14) {
i_Meter->field_0x1d38.mUserArea = 0;
}
iVar3 = (int)i_Meter->field_0x1d38.mUserArea;
if (iVar3 < 10) {
dVar5 = fopMsgM_valueIncrease(10, iVar3, 0);
} else {
dVar5 = fopMsgM_valueIncrease(10, 0x14 - iVar3, 0);
}
uVar2 = -f32(dVar5 * -255.0f);
white.g = uVar2;
white.r = uVar2;
((J2DPicture*)i_Meter->field_0x1d38.pane)->setWhite(black);
((J2DPicture*)i_Meter->field_0x1d38.pane)->setBlack(white);
i_Meter->field_0x1d38.mNowAlpha = i_Meter->field_0x1d00.mInitAlpha - (i_Meter->field_0x1d00.mInitAlpha - 0x78) * dVar5;
} else if (i_Meter->field_0x1d38.mUserArea != 0) {
((J2DPicture*)i_Meter->field_0x1d38.pane)->setWhite(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF));
((J2DPicture*)i_Meter->field_0x1d38.pane)->setBlack(JUtility::TColor(0x00, 0x00, 0xFF, 0x00));
i_Meter->field_0x1d38.mNowAlpha = i_Meter->field_0x1d00.mInitAlpha;
i_Meter->field_0x1d38.mUserArea = 0;
}
if (dComIfGp_getDoStatus() == dActStts_ba_sake__dupe_31 || dComIfGp_getDoStatus() == dActStts_ba_nageru__dupe_2D ||
dComIfGp_getDoStatus() == dActStts_ba_motu__dupe_2E)
{
JUtility::TColor white = -1;
white.a = 0x00;
i_Meter->field_0x1e18[1].mUserArea++;
if (i_Meter->field_0x1e18[1].mUserArea >= 0x14) {
i_Meter->field_0x1e18[1].mUserArea = 0;
if (dComIfGp_getDoStatus() == dActStts_ba_nageru__dupe_2D) {
mDoAud_seStart(JA_SE_SEED_OK_BLINK);
#if VERSION > VERSION_DEMO
} else if (dComIfGp_getDoStatus() == dActStts_ba_motu__dupe_2E) {
mDoAud_seStart(JA_SE_MD_HARP_INDICATOR);
#endif
} else {
mDoAud_seStart(JA_SE_ITM_OMAMORI_BLINK);
}
}
iVar3 = (int)i_Meter->field_0x1e18[1].mUserArea;
if (iVar3 < 10) {
dVar5 = fopMsgM_valueIncrease(10, iVar3, 0);
} else {
dVar5 = fopMsgM_valueIncrease(10, 0x14 - iVar3, 0);
}
uVar2 = (dVar5 * 255.0f);
white.b = uVar2;
white.g = uVar2;
white.r = uVar2;
((J2DPicture*)i_Meter->field_0x1e18[1].pane)->setBlack(white);
} else if (dComIfGp_getDoStatus() == dActStts_PARRY_e) {
((J2DPicture*)i_Meter->field_0x1e18[1].pane)->setBlack(0x00000000);
}
sVar1 = i_Meter->field_0x28d0.mUserArea;
if (sVar1 != 0 && sVar1 <= 0xc) {
dMeter_weponAnime(i_Meter);
i_Meter->field_0x28d0.mUserArea++;
if (i_Meter->field_0x28d0.mUserArea > 0xc) {
i_Meter->field_0x28d0.mUserArea = 0;
}
}
dMeter_weponTrans(i_Meter);
dMeter_weponAlpha(i_Meter);
dComIfGp_setAStatusForce(dActStts_BLANK_e);
}
/* 801F23B8-801F2408 .text dMeter_weponDraw__FP15sub_meter_class */
void dMeter_weponDraw(sub_meter_class* i_Meter) {
fopMsgM_setAlpha(&i_Meter->field_0x1d00);
fopMsgM_setAlpha(&i_Meter->field_0x2828);
fopMsgM_setAlpha(&i_Meter->field_0x2860);
fopMsgM_setAlpha(&i_Meter->field_0x2898);
fopMsgM_setAlpha(&i_Meter->field_0x28d0);
}
/* 801F2408-801F2688 .text dMeter_weponChange__FP15sub_meter_class */
void dMeter_weponChange(sub_meter_class* i_Meter) {
const char* pFilename;
JKRArchive* pArc;
if (i_Meter->field_0x2828.mUserArea != 0) {
if (i_Meter->field_0x301a == 0x25) {
i_Meter->field_0x1d00.mUserArea = 0;
((J2DPicture*)i_Meter->field_0x1d00.pane)->setWhite(0xFFFFFFFF);
((J2DPicture*)i_Meter->field_0x1d00.pane)->setBlack(0x0000FF00);
}
if (dComIfGp_getAStatus() != dActStts_BLANK_e) {
if (dComIfGp_getAStatus() == dActStts_sword_01) {
pArc = dComIfGp_getItemIconArchive();
pFilename = dMeter_weponTex();
JKRArchive::readTypeResource(i_Meter->actionTex[0], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[0], 0xc00);
((J2DPicture*)i_Meter->field_0x2828.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x2860.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x1d00.pane)->changeTexture(i_Meter->actionTex[0], 0);
} else if (dComIfGp_getAStatus() == dActStts_boko_stick ||
dComIfGp_getAStatus() == dActStts_hatchet ||
dComIfGp_getAStatus() == dActStts_iron_club ||
dComIfGp_getAStatus() == dActStts_longsword ||
dComIfGp_getAStatus() == dActStts_spear ||
dComIfGp_getAStatus() == dActStts_spear__dupe_3C)
{
pArc = dComIfGp_getItemIconArchive();
pFilename = dMeter_actionTex(dComIfGp_getAStatus());
JKRArchive::readTypeResource(i_Meter->actionTex[0], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[0], 0xc00);
((J2DPicture*)i_Meter->field_0x2828.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x2860.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x1d00.pane)->changeTexture(i_Meter->actionTex[0], 0);
} else {
if (dComIfGp_getAStatus() == dActStts_RETURN_e || dComIfGp_getAStatus() == dActStts_RETURN_e) {
pArc = dComIfGp_getMenuArchive();
} else {
pArc = dComIfGp_getActionIconArchive();
}
pFilename = dMeter_actionTex(dComIfGp_getAStatus());
JKRArchive::readTypeResource(i_Meter->actionTex[0], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[0], 0xc00);
((J2DPicture*)i_Meter->field_0x2828.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x2860.pane)->changeTexture(i_Meter->actionTex[0], 0);
((J2DPicture*)i_Meter->field_0x1d00.pane)->changeTexture(i_Meter->actionTex[0], 0);
}
}
i_Meter->field_0x2828.mUserArea = 0;
}
if (i_Meter->field_0x301a != dComIfGp_getAStatus()) {
i_Meter->field_0x2828.mUserArea = 1;
i_Meter->field_0x28d0.mUserArea = 1;
i_Meter->field_0x301a = dComIfGp_getAStatus();
}
}
/* 801F2688-801F2818 .text dMeter_weponAnime__FP15sub_meter_class */
void dMeter_weponAnime(sub_meter_class* i_Meter) {
s32 uVar1;
f32 dVar2;
uVar1 = i_Meter->field_0x28d0.mUserArea;
if (uVar1 <= 7) {
dVar2 = ((uVar1 * 5.0f) / 7.0f);
} else if (uVar1 <= 10) {
dVar2 = (5.0f - ((uVar1 - 7) * 13.0f) / 3.0f);
} else {
dVar2 = -8.0f + (8.0f * (uVar1 - 10) / 2.0f);
}
i_Meter->field_0x1d00.pane->move(i_Meter->field_0x1d00.mPosTopLeft.x, i_Meter->field_0x1d00.mPosTopLeft.y + dVar2);
i_Meter->field_0x2828.pane->move(i_Meter->field_0x2828.mPosTopLeft.x, i_Meter->field_0x2828.mPosTopLeft.y + dVar2);
i_Meter->field_0x2860.pane->move(i_Meter->field_0x2860.mPosTopLeft.x, i_Meter->field_0x2860.mPosTopLeft.y + dVar2);
i_Meter->field_0x2898.pane->move(i_Meter->field_0x2898.mPosTopLeft.x, i_Meter->field_0x2898.mPosTopLeft.y + dVar2);
i_Meter->field_0x28d0.pane->move(i_Meter->field_0x28d0.mPosTopLeft.x, i_Meter->field_0x28d0.mPosTopLeft.y + dVar2);
}
/* 801F2818-801F337C .text dMeter_weponTrans__FP15sub_meter_class */
void dMeter_weponTrans(sub_meter_class* i_Meter) {
static s16 moveNowFrame = 0;
static s16 moveFlag = 0;
static s16 moveStatus = 0;
static f32 nowX = 0.0f;
static f32 nowY = 0.0f;
static f32 expX = 0.0f;
static f32 expY = 0.0f;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(4) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e)) ||
((i_Meter->mStatusFlags & dMtrStts_UNK80_e) && dComIfGp_getScopeMesgStatus() != fopMsgStts_UNKB_e) ||
(((i_Meter->mStatusFlags & dMtrStts_UNK100_e) && dComIfGp_getAStatus() != dActStts_CANCEL_e) || dComIfGp_getAStatus() == dActStts_HIDDEN_e))
{
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 1;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK80000_e) {
if (moveStatus != 0xb) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 0xb;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK20_e) {
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1) {
if (moveStatus != 9) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 9;
} else if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) {
if (dMeter_Info.mButtonIconMode == 0 || dMeter_Info.mButtonIconMode == 1 || dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
if (moveStatus != 8) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 8;
} else if (dMeter_Info.mButtonIconMode == 7 || dMeter_Info.mButtonIconMode == 8 || dMeter_Info.mButtonIconMode == 9 || dMeter_Info.mButtonIconMode == 10) {
if (moveStatus != 10) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 10;
} else if (dMeter_Info.mButtonIconMode == 6) {
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 1;
} else {
if (moveStatus != 9) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 9;
}
}
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK80_e) || (i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK200000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK10_e)))
{
if (moveStatus != 2) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 2;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) {
if (moveStatus != 3) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 3;
} else if (dMenu_flag() && (dMenu_getPushMenuButton() == 1 || (dMenu_getMenuStatus() == 1 && dMenu_getPushMenuButton() == 0))) {
if (dMenu_getItemMode() == 0) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 4;
} else {
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 5;
}
} else if (dMenu_flag() && (dMenu_getPushMenuButton() == 2 || (dMenu_getMenuStatus() == 2 && dMenu_getPushMenuButton() == 0))) {
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 5;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK800000_e) {
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 5;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK40000_e) {
if (moveStatus != 6) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 6;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK400000_e) {
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 5;
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK100_e) && dComIfGp_getAStatus() == dActStts_CANCEL_e) {
if (moveStatus != 7) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 7;
} else {
if (moveStatus != 0) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 2);
}
moveStatus = 0;
}
if (i_Meter->field_0x3026 != 0xf) {
if (dMeter_isBit8(&i_Meter->field_0x3026, 2) == 0) {
if (moveNowFrame >= 5) {
moveNowFrame = 5;
moveFlag = 0;
dMeter_onBit8(&i_Meter->field_0x3026, 2);
switch (moveStatus) {
case 1:
nowX = 0.0f;
nowY = -200.0f;
break;
case 2:
nowX = g_meterHIO.field_0xa2;
nowY = g_meterHIO.field_0xaa;
break;
case 3:
nowX = g_meterHIO.field_0xb2;
nowY = g_meterHIO.field_0xba;
break;
case 4:
nowX = g_meterHIO.field_0xc2;
nowY = g_meterHIO.field_0xca;
break;
case 5:
nowX = g_meterHIO.field_0xd2;
nowY = g_meterHIO.field_0xda;
break;
case 6:
nowX = g_meterHIO.field_0xe2;
nowY = g_meterHIO.field_0xea;
break;
case 7:
nowX = g_meterHIO.field_0x102;
nowY = g_meterHIO.field_0x10a;
break;
case 8:
nowX = g_meterHIO.field_0x112;
nowY = g_meterHIO.field_0x11a;
break;
case 9:
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1) {
nowX = g_meterHIO.field_0x106;
nowY = g_meterHIO.field_0x10e;
} else if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) {
nowX = g_meterHIO.field_0x106 - 0x21;
nowY = g_meterHIO.field_0x10e - 4;
}
break;
case 10:
nowX = g_meterHIO.field_0x112 + 0x12;
nowY = g_meterHIO.field_0x11a + 3;
break;
case 0xb:
nowX = g_meterHIO.field_0xf2;
nowY = g_meterHIO.field_0xfa - 0x3c;
break;
default:
nowX = g_meterHIO.field_0xf2;
nowY = g_meterHIO.field_0xfa;
break;
}
} else {
moveNowFrame++;
}
}
} else {
if ((s32)moveNowFrame <= 0) {
moveNowFrame = 0;
} else {
moveNowFrame--;
}
}
f32 dVar6 = fopMsgM_valueIncrease(5, moveNowFrame, 0);
f32 x = nowX;
f32 dVar7 = (nowY + (dVar6 * (-200.0f - nowY)));
if (moveStatus == 10) {
fopMsgM_paneTrans(&i_Meter->field_0x1d00, (x + expX) + 57.0f, (dVar7 + expY) + 9.0f);
} else {
fopMsgM_paneTrans(&i_Meter->field_0x1d00, x + expX, dVar7 + expY);
}
fopMsgM_paneTrans(&i_Meter->field_0x2828, x, dVar7);
fopMsgM_paneTrans(&i_Meter->field_0x2860, x, dVar7);
fopMsgM_paneTrans(&i_Meter->field_0x2898, x, dVar7);
fopMsgM_paneTrans(&i_Meter->field_0x28d0, x, dVar7);
}
/* 801F337C-801F36C0 .text dMeter_weponAlpha__FP15sub_meter_class */
void dMeter_weponAlpha(sub_meter_class* i_Meter) {
f32 dVar4;
static s16 alphaNowFrame = 0;
if (((i_Meter->mStatusFlags & dMtrStts_UNK400_e) && dComIfGp_getAStatus() == dActStts_sword_01) ||
((i_Meter->mStatusFlags & dMtrStts_UNK2000_e) && dComIfGp_getAStatus() != dActStts_SPEAK_e) ||
(((i_Meter->mStatusFlags & dMtrStts_UNK2_e) && dComIfGp_getAStatus() == dActStts_sword_01) &&
(strcmp(dComIfGp_getStartStageName(), "Ojhous") && strcmp(dComIfGp_getStartStageName(), "Orichh"))) ||
((i_Meter->mStatusFlags & dMtrStts_UNK8000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10000_e)))
{
if (alphaNowFrame > 3) {
alphaNowFrame--;
} else {
if (alphaNowFrame < 3) {
alphaNowFrame++;
} else {
alphaNowFrame = 3;
}
}
} else {
if (!(i_Meter->mStatusFlags & dMtrStts_UNK2_e) ||
(dComIfGp_getAStatus() != dActStts_sword_01 && dComIfGp_getAStatus() != dActStts_BLANK_e && !dMenu_flag()) ||
(!strcmp(dComIfGp_getStartStageName(), "Ojhous") || (!strcmp(dComIfGp_getStartStageName(), "Orichh"))))
{
i_Meter->field_0x3024 |= 2;
}
if (alphaNowFrame < 5) {
alphaNowFrame++;
} else {
alphaNowFrame = 5;
}
}
dVar4 = fopMsgM_valueIncrease(5, alphaNowFrame, 0);
if (dComIfGp_getAStatus() == dActStts_BLANK_e) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1d00);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2828);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2860);
fopMsgM_setNowAlpha(&i_Meter->field_0x2898, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x28d0, dVar4);
} else if (dComIfGp_getAStatus() == dActStts_sword_01 || dComIfGp_getAStatus() == dActStts_boko_stick || dComIfGp_getAStatus() == dActStts_hatchet ||
dComIfGp_getAStatus() == dActStts_iron_club || dComIfGp_getAStatus() == dActStts_longsword || dComIfGp_getAStatus() == dActStts_spear ||
dComIfGp_getAStatus() == dActStts_spear__dupe_3C)
{
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1d00);
fopMsgM_setNowAlpha(&i_Meter->field_0x2828, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x2860, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x2898, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x28d0, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x2908, dVar4);
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x1d00, dVar4);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2828);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2860);
fopMsgM_setNowAlpha(&i_Meter->field_0x2898, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x28d0, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x2908, dVar4);
}
if (dMeter_isBit8(&i_Meter->field_0x3026, 2) != 0 && i_Meter->field_0x2828.mUserArea == 0) {
i_Meter->field_0x1d00.pane->show();
i_Meter->field_0x2828.pane->show();
i_Meter->field_0x2860.pane->show();
} else {
i_Meter->field_0x1d00.pane->hide();
i_Meter->field_0x2828.pane->hide();
i_Meter->field_0x2860.pane->hide();
}
}
/* 801F36C0-801F3770 .text dMeter_actionInit__FP15sub_meter_class */
void dMeter_actionInit(sub_meter_class* i_Meter) {
i_Meter->field_0x1e18[0].mUserArea = 0;
i_Meter->field_0x27b8.mUserArea = 0;
i_Meter->field_0x301b = 0;
dComIfGp_setDoStatus(dActStts_BLANK_e);
JKRArchive* pArc = dComIfGp_getActionIconArchive();
const char* pFilename = dMeter_actionTex(dActStts_BLANK_e);
JKRArchive::readTypeResource(i_Meter->actionTex[1], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[1], 0xc00);
((J2DPicture*)i_Meter->field_0x27b8.pane)->changeTexture(i_Meter->actionTex[1], 0);
((J2DPicture*)i_Meter->field_0x27f0.pane)->changeTexture(i_Meter->actionTex[1], 0);
((J2DPicture*)i_Meter->field_0x1d38.pane)->changeTexture(i_Meter->actionTex[1], 0);
}
/* 801F3770-801F37E0 .text dMeter_actionMove__FP15sub_meter_class */
void dMeter_actionMove(sub_meter_class* i_Meter) {
if (dComIfGp_getDoStatusForce() != dActStts_BLANK_e) {
dComIfGp_setDoStatus(dComIfGp_getDoStatusForce());
} else {
dMeter_actionForce(i_Meter);
}
dMeter_actionChange(i_Meter);
dMeter_actionTrans(i_Meter);
dMeter_actionAlpha(i_Meter);
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
/* 801F37E0-801F386C .text dMeter_actionDraw__FP15sub_meter_class */
void dMeter_actionDraw(sub_meter_class* i_Meter) {
fopMsgM_setAlpha(&i_Meter->field_0x1d38);
for (s32 i = 0; i < 2; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x1e18[i]);
fopMsgM_setAlpha(&i_Meter->field_0x1da8[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x2748);
fopMsgM_setAlpha(&i_Meter->field_0x2780);
fopMsgM_setAlpha(&i_Meter->field_0x27b8);
fopMsgM_setAlpha(&i_Meter->field_0x27f0);
fopMsgM_setAlpha(&i_Meter->field_0x2908);
}
/* 801F386C-801F3B60 .text dMeter_actionForce__FP15sub_meter_class */
void dMeter_actionForce(sub_meter_class* i_Meter) {
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(4) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e)))
{
dComIfGp_setDoStatus(dActStts_BLANK_e);
return;
}
if ((((i_Meter->mStatusFlags & dMtrStts_UNK8_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10_e)) || (i_Meter->mStatusFlags & dMtrStts_UNK800000_e)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20_e))
{
if (dMenu_getCollectMode() != 5) {
dComIfGp_setAStatus(dActStts_RETURN_e);
}
if ((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) {
if (dMeter_Info.mButtonIconMode == 0 || dMeter_Info.mButtonIconMode == 1 || dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
if (dMeter_Info.mButtonIconMode == 0) {
dComIfGp_setDoStatus(dActStts_ba_zoom01);
} else if (dMeter_Info.mButtonIconMode == 1) {
dComIfGp_setDoStatus(dActStts_ba_zoom02);
} else if (dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
dComIfGp_setDoStatus(dActStts_BLANK_e);
}
dComIfGp_setRStatus(dActStts_CHARTS_e);
return;
}
if (dMeter_Info.mButtonIconMode == 7 || dMeter_Info.mButtonIconMode == 8 || dMeter_Info.mButtonIconMode == 9 || dMeter_Info.mButtonIconMode == 10) {
if (dMeter_Info.mButtonIconMode == 10) {
dComIfGp_setDoStatus(dActStts_OPEN_e);
} else {
dComIfGp_setDoStatus(dActStts_BLANK_e);
}
dComIfGp_setRStatus(dActStts_SEA_CHART_e);
return;
}
if (dMeter_Info.mButtonIconMode == 4) {
dComIfGp_setDoStatus(dActStts_CHOOSE_e);
dComIfGp_setRStatus(dActStts_BLANK_e);
return;
}
dComIfGp_setDoStatus(dActStts_BLANK_e);
dComIfGp_setRStatus(dActStts_BLANK_e);
return;
}
if (i_Meter->mStatusFlags & dMtrStts_UNK800000_e) {
dComIfGp_setDoStatus(dActStts_CHOOSE_e);
}
return;
}
if (!(i_Meter->mStatusFlags & dMtrStts_UNK100_e)) {
return;
}
if (dMeter_Info.field_0x0 == 1) {
dComIfGp_setDoStatus(dActStts_NEXT_e);
} else if (dMeter_Info.field_0x0 == 3) {
dComIfGp_setDoStatus(dActStts_CHOOSE_e);
} else if (dMeter_Info.field_0x0 == 4) {
dComIfGp_setDoStatus(dActStts_RETURN_e);
} else {
dComIfGp_setDoStatus(dActStts_BLANK_e);
}
if (dComIfGp_getDoStatusForce() != dActStts_BLANK_e) {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
if (dComIfGp_getAStatusForce() != dActStts_BLANK_e) {
dComIfGp_setAStatus(dComIfGp_getDoStatusForce());
dComIfGp_setAStatusForce(dActStts_BLANK_e);
}
}
/* 801F3B60-801F3CFC .text dMeter_actionChange__FP15sub_meter_class */
void dMeter_actionChange(sub_meter_class* i_Meter) {
const char* pFilename;
JKRArchive* pArc;
if (i_Meter->field_0x27b8.mUserArea != 0) {
if (dComIfGp_getDoStatus() == dActStts_BLANK_e) {
i_Meter->field_0x1e18[0].mUserArea = 1;
} else if (dComIfGp_getDoStatus() == dActStts_PARRY_e) {
mDoAud_seStart(JA_SE_SP_ATTACK_ON);
} else if (dComIfGp_getDoStatus() != dActStts_ba_sake__dupe_31 && dComIfGp_getDoStatus() != dActStts_ba_nageru__dupe_2D &&
dComIfGp_getDoStatus() != dActStts_ba_motu__dupe_2E)
{
if (dComIfGp_getDoStatus() == dActStts_bow_01) {
pArc = dComIfGp_getItemIconArchive();
pFilename = dMeter_actionTex(dComIfGp_getDoStatus());
JKRArchive::readTypeResource(i_Meter->actionTex[1], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[1], 0xc00);
((J2DPicture*)i_Meter->field_0x27b8.pane)->changeTexture(i_Meter->actionTex[1], 0);
((J2DPicture*)i_Meter->field_0x27f0.pane)->changeTexture(i_Meter->actionTex[1], 0);
} else {
if (dComIfGp_getDoStatus() == dActStts_RETURN_e || dComIfGp_getDoStatus() == dActStts_RETURN_e) {
pArc = dComIfGp_getMenuArchive();
} else {
pArc = dComIfGp_getActionIconArchive();
}
pFilename = dMeter_actionTex(dComIfGp_getDoStatus());
JKRArchive::readTypeResource(i_Meter->actionTex[1], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[1], 0xc00);
((J2DPicture*)i_Meter->field_0x1d38.pane)->changeTexture(i_Meter->actionTex[1], 0);
i_Meter->field_0x1e18[0].mUserArea = 1;
}
}
i_Meter->field_0x301b = dComIfGp_getDoStatus();
i_Meter->field_0x27b8.mUserArea = 0;
}
if (i_Meter->field_0x301b != dComIfGp_getDoStatus()) {
i_Meter->field_0x27b8.mUserArea = 1;
}
}
/* 801F3CFC-801F489C .text dMeter_actionTrans__FP15sub_meter_class */
void dMeter_actionTrans(sub_meter_class* i_Meter) {
f32 dVar7;
f32 x;
static s16 moveNowFrame = 0;
static s16 moveFlag = 0;
static s16 moveStatus = 0;
static f32 nowX = 0.0f;
static f32 nowY = 0.0f;
static f32 expX = 0.0f;
static f32 expY = 0.0f;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(2) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80_e) || (i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK200000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK10_e)) ||
dComIfGp_getDoStatus() == dActStts_HIDDEN_e)
{
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 1;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK20_e) {
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1) {
if (moveStatus != 9) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 9;
} else {
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) {
if (dMeter_Info.mButtonIconMode == 0 || dMeter_Info.mButtonIconMode == 1 || dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
if (moveStatus != 8) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 8;
} else if (dMeter_Info.mButtonIconMode == 7 || dMeter_Info.mButtonIconMode == 8 || dMeter_Info.mButtonIconMode == 9 || dMeter_Info.mButtonIconMode == 10) {
if (moveStatus != 0xb) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 0xb;
} else if (dMeter_Info.mButtonIconMode == 0xb || dMeter_Info.mButtonIconMode == 6) {
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 1;
} else {
if (moveStatus != 9) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 9;
}
}
}
} else if (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) {
if (moveStatus != 2) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 2;
} else if (dMenu_flag() && (dMenu_getPushMenuButton() == 1 || (dMenu_getMenuStatus() == 1 && dMenu_getPushMenuButton() == 0))) {
if (dMenu_getItemMode() == 0) {
if (moveStatus != 3) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 3;
} else {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 4;
}
} else if (dMenu_flag() && (dMenu_getPushMenuButton() == 2 || (dMenu_getMenuStatus() == 2 && dMenu_getPushMenuButton() == 0))) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 4;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK800000_e) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 4;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK40000_e) {
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 5;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK100_e) {
if (moveStatus != 7) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 7;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK80000_e) {
if (moveStatus != 6) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 6;
} else if (i_Meter->mStatusFlags & dMtrStts_UNK400000_e) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 4;
} else {
if (moveStatus != 0) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 1);
}
moveStatus = 0;
}
if (i_Meter->field_0x3026 != 0xf) {
if (dMeter_isBit8(&i_Meter->field_0x3026, 1) == 0) {
if (moveNowFrame >= 5) {
moveNowFrame = 5;
moveFlag = 0;
dMeter_onBit8(&i_Meter->field_0x3026, 1);
switch (moveStatus) {
case 1:
nowX = 0.0f;
nowY = -200.0f;
break;
case 2:
nowX = g_meterHIO.field_0xb0;
nowY = g_meterHIO.field_0xb8;
break;
case 3:
nowX = g_meterHIO.field_0xc0;
nowY = g_meterHIO.field_0xc8;
break;
case 4:
nowX = g_meterHIO.field_0xd0;
nowY = g_meterHIO.field_0xd8;
break;
case 5:
nowX = g_meterHIO.field_0xe0;
nowY = g_meterHIO.field_0xe8;
break;
case 6:
nowX = g_meterHIO.field_0xe4;
nowY = g_meterHIO.field_0xec;
break;
case 7:
nowX = g_meterHIO.field_0x100;
nowY = g_meterHIO.field_0x108;
break;
case 8:
nowX = g_meterHIO.field_0x110;
nowY = g_meterHIO.field_0x118;
break;
case 9:
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1) {
nowX = g_meterHIO.field_0x104;
nowY = g_meterHIO.field_0x10c;
} else {
if (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) {
nowX = g_meterHIO.field_0x104 - 10;
nowY = g_meterHIO.field_0x10c - 3;
}
}
break;
case 10:
nowX = g_meterHIO.field_0x110 + 0x2e;
nowY = g_meterHIO.field_0x118 - 0x17;
break;
case 0xb:
nowX = g_meterHIO.field_0x110 + 0x2a;
nowY = g_meterHIO.field_0x118 - 3;
break;
default:
nowX = g_meterHIO.field_0xf0;
nowY = g_meterHIO.field_0xf8;
break;
}
if (moveStatus == 2) {
expX = g_meterHIO.field_0xb4;
expY = g_meterHIO.field_0xbc;
} else {
expX = 0.0f;
expY = 0.0f;
}
} else {
moveNowFrame++;
}
}
} else {
if ((s32)moveNowFrame <= 0) {
moveNowFrame = 0;
} else {
moveNowFrame--;
}
}
dVar7 = fopMsgM_valueIncrease(5, moveNowFrame, 0);
x = nowX;
f32 dVar8 = (nowY + (dVar7 * (-200.0f - nowY)));
if (moveStatus == 10) {
fopMsgM_paneTrans(&i_Meter->field_0x1d38, (x + 27.0f), (dVar8 + 14.0f));
} else {
fopMsgM_paneTrans(&i_Meter->field_0x1d38, x, dVar8);
}
for (s32 i = 0; i < 2; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x1e18[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x1da8[i], x, dVar8);
}
fopMsgM_paneTrans(&i_Meter->field_0x2748, x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2780, x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x27b8, x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x27f0, x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2908, x, dVar8);
}
/* 801F489C-801F4C80 .text dMeter_actionAlpha__FP15sub_meter_class */
void dMeter_actionAlpha(sub_meter_class* i_Meter) {
int iVar1;
daNpc_So_c* pfVar2;
f32 dVar2;
static s16 alphaNowFrame = 0;
if (((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) &&
(
dMeter_Info.mButtonIconMode == 2 ||
dMeter_Info.mButtonIconMode == 3 ||
dMeter_Info.mButtonIconMode == 7 ||
dMeter_Info.mButtonIconMode == 8 ||
dMeter_Info.mButtonIconMode == 9
))
{
if (alphaNowFrame > 3) {
alphaNowFrame--;
} else if (alphaNowFrame < 3) {
alphaNowFrame++;
} else {
alphaNowFrame = 3;
}
} else {
i_Meter->field_0x3024 |= 1;
if (alphaNowFrame < 5) {
alphaNowFrame++;
} else {
alphaNowFrame = 5;
}
}
dVar2 = fopMsgM_valueIncrease(5, (int)alphaNowFrame, 0);
if (dComIfGp_getMiniGameType() == 8) {
pfVar2 = (daNpc_So_c*)fopAcM_SearchByName(fpcNm_NPC_SO_e);
if (pfVar2 != NULL) {
iVar1 = pfVar2->getMiniGameRestArrow();
if (iVar1 < 10) {
dMeter_PaneHide(&i_Meter->field_0x2748);
} else {
dMeter_PaneShow(&i_Meter->field_0x2748);
dMeter_numberSet(i_Meter->field_0x2748.pane, iVar1 / 10 & 0xff);
}
dMeter_PaneShow(&i_Meter->field_0x2780);
dMeter_numberSet(i_Meter->field_0x2780.pane, iVar1 % 10 & 0xff);
}
} else {
i_Meter->field_0x2748.pane->hide();
i_Meter->field_0x2780.pane->hide();
}
if (dComIfGp_getDoStatus() == dActStts_BLANK_e) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1d38);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1e18[1]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1da8[1]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2748);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2780);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27b8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27f0);
fopMsgM_setNowAlpha(&i_Meter->field_0x1e18[0], dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x1da8[0], dVar2);
} else if (dComIfGp_getDoStatus() == dActStts_PARRY_e || dComIfGp_getDoStatus() == dActStts_ba_sake__dupe_31 ||
dComIfGp_getDoStatus() == dActStts_ba_nageru__dupe_2D || dComIfGp_getDoStatus() == dActStts_ba_motu__dupe_2E)
{
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1d38);
fopMsgM_setNowAlpha(&i_Meter->field_0x1e18[1], dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x1da8[1], dVar2);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1e18[0]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1da8[0]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2748);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2780);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27b8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27f0);
} else if (dComIfGp_getDoStatus() == dActStts_bow_01) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1d38);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1e18[1]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1da8[1]);
fopMsgM_setNowAlpha(&i_Meter->field_0x1e18[0], dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x1da8[0], dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x2748, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x2780, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x27b8, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x27f0, dVar2);
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x1d38, dVar2);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1e18[1]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1da8[1]);
fopMsgM_setNowAlpha(&i_Meter->field_0x1e18[0], dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x1da8[0], dVar2);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2748);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2780);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27b8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x27f0);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x2908, dVar2);
if (dMeter_isBit8(&i_Meter->field_0x3026, 1) != 0 && i_Meter->field_0x27b8.mUserArea == 0) {
i_Meter->field_0x1d38.pane->show();
i_Meter->field_0x27b8.pane->show();
i_Meter->field_0x27f0.pane->show();
} else {
i_Meter->field_0x1d38.pane->hide();
i_Meter->field_0x2748.pane->hide();
i_Meter->field_0x2780.pane->hide();
i_Meter->field_0x27b8.pane->hide();
i_Meter->field_0x27f0.pane->hide();
}
}
/* 801F4C80-801F4CC4 .text dMeter_numberSet__FP7J2DPaneUc */
void dMeter_numberSet(J2DPane* param_1, u8 param_2) {
static const char* number[] = {
"count_num_0.bti",
"count_num_1.bti",
"count_num_2.bti",
"count_num_3.bti",
"count_num_4.bti",
"count_num_5.bti",
"count_num_6.bti",
"count_num_7.bti",
"count_num_8.bti",
"count_num_9.bti",
};
if (param_2 >= 10) {
param_2 = 0;
}
((J2DPicture*)param_1)->changeTexture(number[param_2], 0);
}
/* 801F4CC4-801F4E04 .text dMeter_numberColor__FP7J2DPaneUcUc */
void dMeter_numberColor(J2DPane* param_1, u8 param_2, u8 param_3) {
if (param_2 == 0) {
((J2DPicture*)param_1)->setWhite(0xb4b4b4ff);
((J2DPicture*)param_1)->setBlack(0x1e1e1e00);
} else if (param_2 == param_3) {
((J2DPicture*)param_1)->setWhite(0xffc832ff);
((J2DPicture*)param_1)->setBlack(0x1e1e1e00);
} else {
((J2DPicture*)param_1)->setWhite(0xffffffff);
((J2DPicture*)param_1)->setBlack(0x00000000);
}
}
/* 801F4E04-801F4FEC .text dMeter_xyInit__FP15sub_meter_class */
void dMeter_xyInit(sub_meter_class* i_Meter) {
i_Meter->field_0x2550[0].mUserArea = 0;
i_Meter->field_0x2f2c[0] = NULL;
i_Meter->field_0x2f2c[1] = NULL;
for (s32 i = 0; i < 8; i++) {
dMenu_baitNum[i] = dComIfGs_getBaitNum(i);
}
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
dComIfGp_setSelectItem(itemBtn);
i_Meter->field_0x3021[itemBtn] = dComIfGp_getSelectItem(itemBtn);
dMeter_xyItemChange(i_Meter, itemBtn);
}
}
/* 801F4FEC-801F5248 .text dMeter_xyMove__FP15sub_meter_class */
void dMeter_xyMove(sub_meter_class* i_Meter) {
bool bVar2;
bool bVar3;
cXyz local_38;
bVar2 = true;
bVar3 = false;
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
if (i_Meter->field_0x3021[itemBtn] != dComIfGp_getSelectItem(itemBtn)) {
dMeter_xyItemChange(i_Meter, itemBtn);
bVar2 = false;
#if VERSION == VERSION_DEMO
if (i_Meter->field_0x3021[itemBtn] == dItemNo_MAGIC_ARROW_e || i_Meter->field_0x3021[itemBtn] == dItemNo_LIGHT_ARROW_e)
#else
if (dComIfGp_getSelectItem(itemBtn) != dItemNo_MAGIC_ARROW_e && dComIfGp_getSelectItem(itemBtn) != dItemNo_LIGHT_ARROW_e)
#endif
{
i_Meter->field_0x2320[itemBtn].pane->hide();
i_Meter->field_0x23c8[itemBtn].pane->hide();
i_Meter->field_0x2470[itemBtn].pane->hide();
i_Meter->field_0x2320[itemBtn].mUserArea = 0;
}
i_Meter->field_0x3021[itemBtn] = dComIfGp_getSelectItem(itemBtn);
}
}
if (bVar2) {
dMeter_xyItemCountUp(i_Meter);
}
dMeter_xyTrans(i_Meter);
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
if (dComIfGp_getSelectItem(itemBtn) == dItemNo_MAGIC_ARROW_e || dComIfGp_getSelectItem(itemBtn) == dItemNo_LIGHT_ARROW_e) {
dMeter_xyBowLightAnime(i_Meter, itemBtn);
} else if (dComIfGp_getSelectItem(itemBtn) == dItemNo_FOREST_WATER_e) {
bVar3 = true;
local_38.set(i_Meter->field_0x2080[itemBtn].mPosCenter.x - 320.0f, i_Meter->field_0x2080[itemBtn].mPosCenter.y - 240.0f, 0.0f);
for (s32 j = 0; j < 2; j++) {
if (i_Meter->field_0x2f2c[j] != NULL) {
i_Meter->field_0x2f2c[j]->setGlobalTranslation(local_38.x, local_38.y, local_38.z);
i_Meter->field_0x2f2c[j]->playDrawParticle();
i_Meter->field_0x2f2c[j]->setGlobalAlpha(i_Meter->field_0x2080[itemBtn].mNowAlpha);
} else {
i_Meter->field_0x2f2c[j] = dComIfGp_particle_set2DmenuFore(dPa_name::ID_HM_J2_RUPYLIGHT, &local_38);
}
}
}
}
if (!bVar3) {
for (s32 i = 0; i < 2; i++) {
if (i_Meter->field_0x2f2c[i] != NULL) {
i_Meter->field_0x2f2c[i]->becomeInvalidEmitter();
i_Meter->field_0x2f2c[i]->quitImmortalEmitter();
i_Meter->field_0x2f2c[i] = NULL;
}
}
}
dMeter_xyAlpha(i_Meter);
}
/* 801F5248-801F5308 .text dMeter_xyDraw__FP15sub_meter_class */
void dMeter_xyDraw(sub_meter_class* i_Meter) {
for (s32 i = 0; i < 3; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x1fd8[i]);
fopMsgM_setAlpha(&i_Meter->field_0x1f30[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2080[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2128[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2320[i]);
fopMsgM_setAlpha(&i_Meter->field_0x23c8[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2470[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x2518);
for (s32 i = 0; i < 2; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x2550[i]);
fopMsgM_setAlpha(&i_Meter->field_0x25c0[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2630[i]);
}
}
/* 801F5308-801F543C .text dMeter_xyEquipItem__Fi */
int dMeter_xyEquipItem(int i_itemBtn) {
int invIdx = dComIfGs_getSelectItem(i_itemBtn);
u8 itemNo = dComIfGs_getItem(invIdx);
u8 beastIdx = 0;
switch (itemNo) {
case dItemNo_SKULL_NECKLACE_e:
beastIdx = dBeastIdx_SKULL_NECKLACE_e;
break;
case dItemNo_BOKOBABA_SEED_e:
beastIdx = dBeastIdx_BOKOBABA_SEED_e;
break;
case dItemNo_GOLDEN_FEATHER_e:
beastIdx = dBeastIdx_GOLDEN_FEATHER_e;
break;
case dItemNo_KNIGHTS_CREST_e:
beastIdx = dBeastIdx_KNIGHTS_CREST_e;
break;
case dItemNo_RED_JELLY_e:
beastIdx = dBeastIdx_RED_JELLY_e;
break;
case dItemNo_GREEN_JELLY_e:
beastIdx = dBeastIdx_GREEN_JELLY_e;
break;
case dItemNo_BLUE_JELLY_e:
beastIdx = dBeastIdx_BLUE_JELLY_e;
break;
case dItemNo_JOY_PENDANT_e:
beastIdx = dBeastIdx_JOY_PENDANT_e;
break;
}
return beastIdx;
}
/* 801F543C-801F57B0 .text dMeter_xyItemNumberSet__FP15sub_meter_classi */
void dMeter_xyItemNumberSet(sub_meter_class* i_Meter, int i_itemBtn) {
if (dComIfGp_getSelectItem(i_itemBtn) == dItemNo_PICTO_BOX_e || dComIfGp_getSelectItem(i_itemBtn) == dItemNo_DELUXE_PICTO_BOX_e) {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x1fd8[i_itemBtn]);
dMeter_numberSet(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getPictureNum());
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getPictureNum(), 3);
} else if (dComIfGp_getSelectItem(i_itemBtn) == dItemNo_BOW_e ||
(dComIfGp_getSelectItem(i_itemBtn) == dItemNo_MAGIC_ARROW_e || dComIfGp_getSelectItem(i_itemBtn) == dItemNo_LIGHT_ARROW_e))
{
dMeter_PaneShow(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x1fd8[i_itemBtn]);
if (dComIfGs_getArrowNum() < 10) {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
} else {
dMeter_numberSet(i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getArrowNum() / 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getArrowNum(), dComIfGs_getArrowMax());
}
dMeter_numberSet(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getArrowNum() % 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getArrowNum(), dComIfGs_getArrowMax());
} else if (dComIfGp_getSelectItem(i_itemBtn) == dItemNo_BOMB_BAG_e) {
dMeter_PaneShow(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x1fd8[i_itemBtn]);
if (dComIfGs_getBombNum() < 10) {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
} else {
dMeter_numberSet(i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getBombNum() / 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getBombNum(), dComIfGs_getBombMax());
}
dMeter_numberSet(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBombNum() % 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBombNum(), dComIfGs_getBombMax());
} else if (dComIfGs_getSelectItem(i_itemBtn) >= dInvSlot_BeastFirst_e && (dComIfGs_getSelectItem(i_itemBtn) <= dInvSlot_BeastLast_e - 1)) {
dMeter_PaneShow(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x1fd8[i_itemBtn]);
int beastIdx = dMeter_xyEquipItem(i_itemBtn);
if (dComIfGs_getBeastNum(beastIdx) < 10) {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
} else {
dMeter_numberSet(i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getBeastNum(beastIdx) / 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1f30[i_itemBtn].pane, dComIfGs_getBeastNum(beastIdx), 99);
}
dMeter_numberSet(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBeastNum(beastIdx) % 10);
dMeter_numberColor((J2DPicture*)i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBeastNum(beastIdx), 99);
} else {
if (dComIfGs_getSelectItem(i_itemBtn) >= dInvSlot_BaitFirst_e && (dComIfGs_getSelectItem(i_itemBtn) <= dInvSlot_BaitLast_e - 1)) {
if (dComIfGp_getSelectItem(i_itemBtn) == dItemNo_HYOI_PEAR_e) {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x1fd8[i_itemBtn]);
} else {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x1fd8[i_itemBtn]);
dMeter_numberSet(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBaitNum(dComIfGs_getSelectItem(i_itemBtn) - dInvSlot_BaitFirst_e));
dMeter_numberColor(i_Meter->field_0x1fd8[i_itemBtn].pane, dComIfGs_getBaitNum(dComIfGs_getSelectItem(i_itemBtn) - dInvSlot_BaitFirst_e), 3);
}
} else {
dMeter_PaneHide(&i_Meter->field_0x1f30[i_itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x1fd8[i_itemBtn]);
}
}
}
/* 801F57B0-801F58E4 .text dMeter_xyBowLightAnime__FP15sub_meter_classi */
void dMeter_xyBowLightAnime(sub_meter_class* i_Meter, int param_2) {
/* Nonmatching */
int iVar2;
f32 dVar4;
f32 dVar5;
f32 lVar6;
i_Meter->field_0x2320[0].mUserArea++;
if (i_Meter->field_0x2320[param_2].mUserArea >= 0x78) {
i_Meter->field_0x2320[param_2].mUserArea = 0;
}
iVar2 = (int)i_Meter->field_0x2320[param_2].mUserArea;
if (iVar2 < 0x3c) {
dVar4 = fopMsgM_valueIncrease(0x3c, iVar2, 0);
} else {
dVar4 = fopMsgM_valueIncrease(0x3c, 0x78 - iVar2, 0);
}
dVar5 = (1.0f - (dVar4 * 0.39999998f));
lVar6 = (i_Meter->field_0x2320[0].mInitAlpha - ((i_Meter->field_0x2320[0].mInitAlpha - 50.0f) * dVar4));
for (s32 i = 0; i < 3; i++) {
// TODO: this indexing seems wrong. field_0x2320 may be a 2D array of 3x3
fopMsgM_paneScaleXY(&(&i_Meter->field_0x2320[param_2])[i*3], dVar5);
(&i_Meter->field_0x2320[param_2].mNowAlpha)[i] = lVar6;
}
}
/* 801F58E4-801F5C98 .text dMeter_xyItemCountUp__FP15sub_meter_class */
void dMeter_xyItemCountUp(sub_meter_class* i_Meter) {
/* Nonmatching */
u8 uVar2;
bool bVar3;
s16 sVar4;
s16 uVar5;
bVar3 = false;
static u8 arrowMax = dComIfGs_getArrowMax();
static u8 bombMax = dComIfGs_getBombMax();
if (dComIfGp_getItemPictureNumCount() != 0) {
sVar4 = dComIfGs_getPictureNum() + dComIfGp_getItemPictureNumCount();
dComIfGp_clearItemPictureNumCount();
if (sVar4 < 0) {
sVar4 = 0;
}
if (sVar4 > 3) {
sVar4 = 3;
}
dComIfGs_setPictureNum(sVar4);
bVar3 = true;
}
if (((dComIfGs_checkGetItem(dItemNo_BOW_e) || dComIfGs_checkGetItem(dItemNo_MAGIC_ARROW_e) || dComIfGs_checkGetItem(dItemNo_LIGHT_ARROW_e)) &&
dComIfGp_getItemArrowNumCount() != 0) ||
arrowMax != dComIfGs_getArrowMax())
{
if (g_meterHIO.field_0x62 != 0) {
dComIfGp_clearItemArrowNumCount();
}
uVar5 = dComIfGs_getArrowNum() + dComIfGp_getItemArrowNumCount();
dComIfGp_clearItemArrowNumCount();
if (uVar5 < 0) {
uVar5 = 0;
}
if (uVar5 > dComIfGs_getArrowMax()) {
uVar5 = dComIfGs_getArrowMax();
}
dComIfGs_setArrowNum(uVar5);
arrowMax = dComIfGs_getArrowMax();
bVar3 = 1;
}
if ((dComIfGs_checkGetItem(dItemNo_BOMB_BAG_e) && dComIfGp_getItemBombNumCount() != 0) || bombMax != dComIfGs_getBombMax()) {
if (g_meterHIO.field_0x63 != 0) {
g_dComIfG_gameInfo.play.mItemBombNumCount = 0;
}
s16 uVar5_2 = dComIfGs_getBombNum() + dComIfGp_getItemBombNumCount();
g_dComIfG_gameInfo.play.mItemBombNumCount = 0;
if (uVar5_2 < 0) {
uVar5_2 = 0;
}
if (uVar5_2 > dComIfGs_getBombMax()) {
uVar5_2 = dComIfGs_getBombMax();
}
dComIfGs_setBombNum(uVar5_2);
bombMax = dComIfGs_getBombMax();
bVar3 = 1;
}
for (int beastIdx = 0; beastIdx < dBeastIdx_COUNT_e; beastIdx++) {
if (dComIfGp_getItemBeastNumCount(beastIdx) != 0) {
sVar4 = dComIfGs_getBeastNum(beastIdx) + dComIfGp_getItemBeastNumCount(beastIdx);
dComIfGp_clearItemBeastNumCount(beastIdx);
if (sVar4 <= 0) {
dComIfGs_setBeastNum(beastIdx, 0);
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
if (dComIfGp_getSelectItem(itemBtn) == fopMsgM_itemNumIdx(beastIdx + dInvSlot_BeastFirst_e)) {
dMeter_PaneHide(&i_Meter->field_0x2080[itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x2128[itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x1f30[itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x1fd8[itemBtn]);
}
}
int itemNo = fopMsgM_itemNumIdx(beastIdx + dInvSlot_BeastFirst_e);
dComIfGs_setBeastItemEmpty(itemNo);
bVar3 = true;
} else {
if (sVar4 > 99) {
sVar4 = 99;
}
dComIfGs_setBeastNum(beastIdx, sVar4);
bVar3 = true;
}
}
if (dMenu_baitNum[beastIdx] != dComIfGs_getBaitNum(beastIdx)) {
dMenu_baitNum[beastIdx] = dComIfGs_getBaitNum(beastIdx);
bVar3 = true;
}
}
#if VERSION > VERSION_DEMO
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
if (dComIfGp_getSelectItem(itemBtn) == dItemNo_BIRD_BAIT_5_e) {
bVar3 = true;
}
}
#endif
if (bVar3) {
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
dMeter_xyItemNumberSet(i_Meter, itemBtn);
}
}
}
/* 801F5C98-801F5FDC .text dMeter_xyItemChange__FP15sub_meter_classi */
void dMeter_xyItemChange(sub_meter_class* i_Meter, int i_itemBtn) {
JKRArchive* pArc;
const char* pFilename;
if (dComIfGp_getSelectItem(i_itemBtn) != dItemNo_NONE_e) {
if (dComIfGs_getSelectItem(i_itemBtn) >= dInvSlot_ReserveFirst_e) {
dMeter_PaneShow(&i_Meter->field_0x2080[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x2128[i_itemBtn]);
pArc = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGp_getSelectItem(i_itemBtn));
JKRArchive::readTypeResource(i_Meter->xyIconTex[i_itemBtn], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->xyIconTex[i_itemBtn], 0xc00);
((J2DPicture*)i_Meter->field_0x2080[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
((J2DPicture*)i_Meter->field_0x2128[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
} else if (dComIfGs_getSelectItem(i_itemBtn) >= dInvSlot_BaitFirst_e) {
dMeter_PaneShow(&i_Meter->field_0x2080[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x2128[i_itemBtn]);
pArc = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGp_getSelectItem(i_itemBtn));
JKRArchive::readTypeResource(i_Meter->xyIconTex[i_itemBtn], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->xyIconTex[i_itemBtn], 0xc00);
((J2DPicture*)i_Meter->field_0x2080[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
((J2DPicture*)i_Meter->field_0x2128[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
} else if (dComIfGs_getSelectItem(i_itemBtn) >= dInvSlot_BeastFirst_e) {
dMeter_PaneShow(&i_Meter->field_0x2080[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x2128[i_itemBtn]);
pArc = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGp_getSelectItem(i_itemBtn));
JKRArchive::readTypeResource(i_Meter->xyIconTex[i_itemBtn], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->xyIconTex[i_itemBtn], 0xc00);
((J2DPicture*)i_Meter->field_0x2080[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
((J2DPicture*)i_Meter->field_0x2128[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
} else {
dMeter_PaneShow(&i_Meter->field_0x2080[i_itemBtn]);
dMeter_PaneShow(&i_Meter->field_0x2128[i_itemBtn]);
u8 uVar2 = dComIfGp_getSelectItem(i_itemBtn);
u8 var_r4 = uVar2;
if (uVar2 == dItemNo_MAGIC_ARROW_e) {
i_Meter->field_0x2320[i_itemBtn].pane->show();
i_Meter->field_0x23c8[i_itemBtn].pane->show();
i_Meter->field_0x2470[i_itemBtn].pane->hide();
var_r4 = dItemNo_BOW_e;
} else if (uVar2 == dItemNo_LIGHT_ARROW_e) {
i_Meter->field_0x2320[i_itemBtn].pane->show();
i_Meter->field_0x23c8[i_itemBtn].pane->show();
i_Meter->field_0x2470[i_itemBtn].pane->show();
var_r4 = dItemNo_BOW_e;
}
if (var_r4 == dItemNo_MAGIC_ARROW_e || var_r4 == dItemNo_LIGHT_ARROW_e) {
var_r4 = dItemNo_BOW_e;
}
pArc = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(var_r4);
JKRArchive::readTypeResource(i_Meter->xyIconTex[i_itemBtn], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->xyIconTex[i_itemBtn], 0xc00);
((J2DPicture*)i_Meter->field_0x2080[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
((J2DPicture*)i_Meter->field_0x2128[i_itemBtn].pane)->changeTexture(i_Meter->xyIconTex[i_itemBtn], 0);
}
} else {
dMeter_PaneHide(&i_Meter->field_0x2080[i_itemBtn]);
dMeter_PaneHide(&i_Meter->field_0x2128[i_itemBtn]);
}
dMeter_xyItemNumberSet(i_Meter, i_itemBtn);
}
/* 801F5FDC-801F6084 .text dMeter_xyRotateZ__FP18fopMsgM_pane_classff */
void dMeter_xyRotateZ(fopMsgM_pane_class* param_1, f32 param_2, f32 param_3) {
s32 x = param_1->mSize.x * 0.5f;
s32 y = param_1->mSize.y * 0.5f;
param_1->pane->rotate(x, y, ROTATE_Z, param_2 + param_3);
}
/* 801F6084-801F69A0 .text dMeter_xyAlpha__FP15sub_meter_class */
void dMeter_xyAlpha(sub_meter_class* i_Meter) {
f32 dVar10;
f32 dVar11;
f32 dVar12;
static s16 alphaNowFrame[] = {0x0000, 0x0000, 0x0000};
if (
!(i_Meter->mStatusFlags & dMtrStts_UNK4000_e) &&
(!(i_Meter->mStatusFlags & dMtrStts_UNK40_e) || !dComIfGp_event_checkHind(1)) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK10_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) &&
(!(i_Meter->mStatusFlags & dMtrStts_UNK20_e) || (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) != 1)) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK80_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK40000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK80000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)
)
{
if (i_Meter->mStatusFlags & dMtrStts_UNK8_e) {
for (s32 i = 0; i < 3; i++) {
if (alphaNowFrame[i] < 5) {
alphaNowFrame[i]++;
} else {
alphaNowFrame[i] = 5;
}
}
} else if (!(i_Meter->mStatusFlags & dMtrStts_UNK8_e) &&
(((i_Meter->mStatusFlags & dMtrStts_UNK800_e) || (i_Meter->mStatusFlags & dMtrStts_UNK2000_e)) ||
((i_Meter->mStatusFlags & dMtrStts_UNK8000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK200_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10000_e)))))
{
for (s32 i = 0; i < 3; i++) {
if (alphaNowFrame[i] > 3) {
alphaNowFrame[i]--;
} else {
if (alphaNowFrame[i] < 3) {
alphaNowFrame[i]++;
} else {
alphaNowFrame[i] = 3;
}
}
}
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) {
for (s32 i = 0; i < 3; i++) {
if (i == 1) {
if (alphaNowFrame[i] < 5) {
alphaNowFrame[i]++;
} else {
alphaNowFrame[i] = 5;
}
} else if ((s32)alphaNowFrame[i] > 0) {
alphaNowFrame[i] = alphaNowFrame[i] + -1;
} else {
alphaNowFrame[i] = 0;
}
}
} else {
for (int itemBtn = 0; itemBtn < dItemBtn_COUNT_e; itemBtn++) {
if (((i_Meter->mStatusFlags & dMtrStts_UNK1000_e) && dComIfGp_getSelectItem(itemBtn) != dItemNo_GRAPPLING_HOOK_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK80_e) && dComIfGp_getSelectItem(itemBtn) != dItemNo_TELESCOPE_e) ||
(
(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) && (
dComIfGp_getSelectItem(itemBtn) != dItemNo_PICTO_BOX_e || dComIfGp_getSelectItem(itemBtn) != dItemNo_DELUXE_PICTO_BOX_e)
) ||
(
(i_Meter->mStatusFlags & dMtrStts_UNK400_e) &&
dComIfGp_getMiniGameType() != 1 &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SAIL_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_TELESCOPE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_WIND_WAKER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_GRAPPLING_HOOK_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BOOMERANG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_TINGLE_TUNER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_PICTO_BOX_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_DELUXE_PICTO_BOX_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_MAGIC_ARMOR_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BAIT_BAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HYOI_PEAR_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BIRD_BAIT_5_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BOW_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_MAGIC_ARROW_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_LIGHT_ARROW_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BOMB_BAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HOOKSHOT_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_EMPTY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_RED_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_GREEN_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BLUE_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HALF_SOUP_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SOUP_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_WATER_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FAIRY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FIREFLY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FOREST_WATER_e
) ||
(
dComIfGp_getMiniGameType() == 1 &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SAIL_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_TELESCOPE_e
) ||
(
dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_BOSS_e &&
(
(strcmp(dComIfGp_getStartStageName(), "Xboss0") == 0) ||
(strcmp(dComIfGp_getStartStageName(), "Xboss1") == 0) ||
(strcmp(dComIfGp_getStartStageName(), "Xboss2") == 0) ||
(strcmp(dComIfGp_getStartStageName(), "Xboss3") == 0)
) &&
(
dComIfGp_getSelectItem(itemBtn) == dItemNo_WATER_BOTTLE_e ||
dComIfGp_getSelectItem(itemBtn) == dItemNo_FIREFLY_BOTTLE_e ||
dComIfGp_getSelectItem(itemBtn) == dItemNo_FOREST_WATER_e
)
) ||
(
(i_Meter->mStatusFlags & dMtrStts_UNK2_e) &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_TINGLE_TUNER_e &&
(
dComIfGp_getSelectItem(itemBtn) != dItemNo_WIND_WAKER_e ||
(strcmp(dComIfGp_getStartStageName(), "Otkura") != 0)) &&
(
dComIfGp_getSelectItem(itemBtn) != dItemNo_GRAPPLING_HOOK_e ||
(strcmp(dComIfGp_getStartStageName(), "Abesso") != 0)
) &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_PICTO_BOX_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_DELUXE_PICTO_BOX_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SPOILS_BAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SKULL_NECKLACE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BOKOBABA_SEED_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_GOLDEN_FEATHER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_KNIGHTS_CREST_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_RED_JELLY_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_GREEN_JELLY_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BLUE_JELLY_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_JOY_PENDANT_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BAIT_BAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BIRD_BAIT_5_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HYOI_PEAR_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_EMPTY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_RED_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_GREEN_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BLUE_POTION_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HALF_SOUP_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SOUP_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_WATER_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FAIRY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FIREFLY_BOTTLE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FOREST_WATER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_DELIVERY_BAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_TOWN_FLOWER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SEA_FLOWER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_EXOTIC_FLOWER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_HEROS_FLAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BIG_CATCH_FLAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_BIG_SALE_FLAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_PINWHEEL_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SICKLE_MOON_FLAG_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SKULL_TOWER_IDOL_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FOUNTAIN_IDOL_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_POSTMAN_STATUE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_SHOP_GURU_STATUE_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FATHER_LETTER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_NOTE_TO_MOM_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_MAGGIES_LETTER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_MOBLINS_LETTER_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_CABANA_DEED_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_COMPLIMENTARY_ID_e &&
dComIfGp_getSelectItem(itemBtn) != dItemNo_FILL_UP_COUPON_e
)
)
{
if (alphaNowFrame[itemBtn] > 3) {
alphaNowFrame[itemBtn]--;
} else if (alphaNowFrame[itemBtn] < 3) {
alphaNowFrame[itemBtn]++;
} else {
alphaNowFrame[itemBtn] = 3;
}
} else {
if (alphaNowFrame[itemBtn] < 5) {
alphaNowFrame[itemBtn]++;
} else {
alphaNowFrame[itemBtn] = 5;
}
switch (itemBtn) {
case 0:
i_Meter->field_0x3024 |= 4;
break;
case 1:
i_Meter->field_0x3024 |= 8;
break;
case 2:
i_Meter->field_0x3024 |= 0x20;
break;
}
}
}
}
}
dVar10 = fopMsgM_valueIncrease(5, alphaNowFrame[0], 0);
dVar11 = fopMsgM_valueIncrease(5, alphaNowFrame[1], 0);
dVar12 = fopMsgM_valueIncrease(5, alphaNowFrame[2], 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x1fd8[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x1f30[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2080[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2128[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2550[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x25c0[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2630[0], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2550[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x25c0[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x2630[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x1fd8[2], dVar12);
fopMsgM_setNowAlpha(&i_Meter->field_0x1f30[2], dVar12);
fopMsgM_setNowAlpha(&i_Meter->field_0x2080[2], dVar12);
fopMsgM_setNowAlpha(&i_Meter->field_0x2128[2], dVar12);
fopMsgM_setNowAlpha(&i_Meter->field_0x2518, dVar12);
if ((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) {
fopMsgM_setNowAlpha(&i_Meter->field_0x1fd8[1], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x1f30[1], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2080[1], dVar10);
fopMsgM_setNowAlpha(&i_Meter->field_0x2128[1], dVar10);
for (s32 i = 0; i < 3; i++) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2320[i]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x23c8[i]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2470[i]);
}
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x1fd8[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x1f30[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x2080[1], dVar11);
fopMsgM_setNowAlpha(&i_Meter->field_0x2128[1], dVar11);
}
}
/* 801F69A0-801F7034 .text dMeter_xyTrans__FP15sub_meter_class */
void dMeter_xyTrans(sub_meter_class* i_Meter) {
static s16 moveNowFrame = 0;
static s16 moveFlag = 0;
static s16 moveStatus = 0;
static f32 nowX = 0.0f;
static f32 nowY = 0.0f;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(1)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100_e) ||
(((dMenu_flag() && (dMenu_getPushMenuButton() == 2 || (dMenu_getMenuStatus() == 2 && dMenu_getPushMenuButton() == 0))) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800000_e)) ||
(((((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80_e)) ||
(((i_Meter->mStatusFlags & dMtrStts_UNK100000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK200000_e)) ||
((i_Meter->mStatusFlags & dMtrStts_UNK20000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80000_e))))
) ||
(i_Meter->mStatusFlags & dMtrStts_UNK400000_e))))
{
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 1;
} else if (dMenu_flag() && (dMenu_getPushMenuButton() == 1 || (dMenu_getMenuStatus() == 1 && dMenu_getPushMenuButton() == 0))) {
if (dMenu_getItemMode() == 0) {
if (moveStatus != 2) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 2;
} else {
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 1;
}
} else {
if (i_Meter->mStatusFlags & dMtrStts_UNK20_e) {
if (dMeter_Info.mButtonIconMode == 0 || dMeter_Info.mButtonIconMode == 1 || dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
if (moveStatus != 3) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 3;
} else if (dMeter_Info.mButtonIconMode == 7 || dMeter_Info.mButtonIconMode == 8 || dMeter_Info.mButtonIconMode == 9 || dMeter_Info.mButtonIconMode == 10) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 4;
} else {
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 1;
}
} else {
if (moveStatus != 0) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 4);
}
moveStatus = 0;
}
}
if (i_Meter->field_0x3026 != 0xf) {
if (dMeter_isBit8(&i_Meter->field_0x3026, 4) == 0) {
if (moveNowFrame >= 5) {
moveNowFrame = 5;
moveFlag = 0;
dMeter_onBit8(&i_Meter->field_0x3026, 4);
switch (moveStatus) {
case 1:
nowX = 0.0f;
nowY = -200.0f;
break;
case 2:
nowX = g_meterHIO.field_0xc4;
nowY = g_meterHIO.field_0xcc;
break;
case 3:
nowX = g_meterHIO.field_0x114;
nowY = g_meterHIO.field_0x11c;
break;
case 4:
nowX = (f32)(g_meterHIO.field_0x114 + 0x28);
nowY = g_meterHIO.field_0x11c;
break;
default:
nowX = g_meterHIO.field_0xf4;
nowY = g_meterHIO.field_0xfc;
break;
}
} else {
moveNowFrame++;
}
}
} else {
if ((s32)moveNowFrame <= 0) {
moveNowFrame = 0;
} else {
moveNowFrame--;
}
}
f32 dVar7 = fopMsgM_valueIncrease(5, moveNowFrame, 0);
f32 x = nowX;
f32 dVar8 = (nowY + (dVar7 * (-200.0f - nowY)));
for (s32 i = 0; i < 3; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x1fd8[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x1f30[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2080[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2128[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2320[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x23c8[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2470[i], x, dVar8);
}
fopMsgM_paneTrans(&i_Meter->field_0x2518, x, dVar8);
for (s32 i = 0; i < 2; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x2550[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x25c0[i], x, dVar8);
fopMsgM_paneTrans(&i_Meter->field_0x2630[i], x, dVar8);
}
}
/* 801F7034-801F70E0 .text dMeter_rInit__FP15sub_meter_class */
void dMeter_rInit(sub_meter_class* i_Meter) {
JKRArchive* pArc;
const char* pFilename;
i_Meter->field_0x26d8.mUserArea = 0;
i_Meter->field_0x1cc8.mUserArea = 0;
i_Meter->field_0x301c = 0;
dComIfGp_setRStatus(dActStts_BLANK_e);
if (dComIfGp_getRStatus() == dActStts_RETURN_e || dComIfGp_getRStatus() == dActStts_RETURN_e) {
pArc = dComIfGp_getMenuArchive();
} else {
pArc = dComIfGp_getActionIconArchive();
}
pFilename = dMeter_actionTex(dActStts_BLANK_e);
JKRArchive::readTypeResource(i_Meter->actionTex[2], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[2], 0xc00);
((J2DPicture*)i_Meter->field_0x1cc8.pane)->changeTexture(i_Meter->actionTex[2], 0);
}
/* 801F70E0-801F71F4 .text dMeter_rMove__FP15sub_meter_class */
void dMeter_rMove(sub_meter_class* i_Meter) {
const char* pFilename;
JKRArchive* pArc;
if (dComIfGp_getRStatusForce() != dActStts_BLANK_e) {
dComIfGp_setRStatus(dComIfGp_getRStatusForce());
}
if (i_Meter->field_0x1cc8.mUserArea != 0) {
if (dComIfGp_getRStatus() != dActStts_BLANK_e) {
if (dComIfGp_getRStatus() == dActStts_RETURN_e || dComIfGp_getRStatus() == dActStts_RETURN_e) {
pArc = dComIfGp_getMenuArchive();
} else {
pArc = dComIfGp_getActionIconArchive();
}
pFilename = dMeter_actionTex(dComIfGp_getRStatus());
JKRArchive::readTypeResource(i_Meter->actionTex[2], 0xc00, 'TIMG', pFilename, pArc);
DCStoreRangeNoSync(i_Meter->actionTex[2], 0xc00);
((J2DPicture*)i_Meter->field_0x1cc8.pane)->changeTexture(i_Meter->actionTex[2], 0);
}
i_Meter->field_0x301c = dComIfGp_getRStatus();
i_Meter->field_0x26d8.mUserArea = 1;
i_Meter->field_0x1cc8.mUserArea = 0;
}
if (i_Meter->field_0x301c != dComIfGp_getRStatus()) {
i_Meter->field_0x1cc8.mUserArea = 1;
}
dMeter_rTrans(i_Meter);
dMeter_rAlpha(i_Meter);
dComIfGp_setRStatusForce(dActStts_BLANK_e);
}
/* 801F71F4-801F7234 .text dMeter_rDraw__FP15sub_meter_class */
void dMeter_rDraw(sub_meter_class* i_Meter) {
fopMsgM_setAlpha(&i_Meter->field_0x1cc8);
fopMsgM_setAlpha(&i_Meter->field_0x26a0);
fopMsgM_setAlpha(&i_Meter->field_0x26d8);
}
/* 801F7234-801F749C .text dMeter_rAlpha__FP15sub_meter_class */
void dMeter_rAlpha(sub_meter_class* i_Meter) {
s16 sVar2;
f32 dVar5;
f32 dVar6;
static s16 alphaNowFrame = 0;
if (
(
(i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(8)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK8_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK10_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK40000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)
)
)
{
if (alphaNowFrame < 5) {
alphaNowFrame++;
} else {
alphaNowFrame = 5;
}
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK2000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK8000_e)) {
if (alphaNowFrame > 3) {
alphaNowFrame--;
} else if (alphaNowFrame < 3) {
alphaNowFrame++;
} else {
alphaNowFrame = 3;
}
} else {
if (alphaNowFrame < 5) {
sVar2 = alphaNowFrame + 1;
} else {
sVar2 = 5;
}
alphaNowFrame = sVar2;
i_Meter->field_0x3024 |= 0x10;
}
dVar5 = fopMsgM_valueIncrease(5, alphaNowFrame, 0);
if (dComIfGp_getRStatus() == dActStts_BLANK_e) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x1cc8);
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x1cc8, dVar5);
}
if ((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) {
dVar6 = 1.0f - dVar5;
fopMsgM_setNowAlpha(&i_Meter->field_0x26a0, 1.0f - dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x26d8, dVar6);
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x26a0, dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x26d8, dVar5);
}
if (dMeter_isBit8(&i_Meter->field_0x3026, 8) != 0 && i_Meter->field_0x1cc8.mUserArea == 0) {
i_Meter->field_0x1cc8.pane->show();
} else {
i_Meter->field_0x1cc8.pane->hide();
}
}
/* 801F749C-801F7B0C .text dMeter_rTrans__FP15sub_meter_class */
void dMeter_rTrans(sub_meter_class* i_Meter) {
static s16 moveNowFrame = 0;
static s16 moveFlag = 0;
static s16 moveStatus = 0;
static f32 nowX = 0.0f;
static f32 nowY = 0.0f;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(8)) ||
((i_Meter->mStatusFlags & dMtrStts_UNK100_e) || dComIfGp_getRStatus() == dActStts_HIDDEN_e))
{
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 1;
} else {
if (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) {
if (moveStatus != 2) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 2;
} else {
if (i_Meter->mStatusFlags & dMtrStts_UNK40000_e) {
if (moveStatus != 4) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 4;
} else {
if ((dMenu_flag() && dComIfGp_getPictureStatus() != 2 &&
(dMenu_getPushMenuButton() == 1 || (dMenu_getMenuStatus() == 1 && dMenu_getPushMenuButton() == 0))) ||
(dMenu_flag() && (dMenu_getPushMenuButton() == 2 || (dMenu_getMenuStatus() == 2 && dMenu_getPushMenuButton() == 0))) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK20_e) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK100000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK200000_e)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK400000_e))
{
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 1;
} else {
if (i_Meter->mStatusFlags & dMtrStts_UNK20_e) {
if (dMeter_Info.mButtonIconMode == 0 || dMeter_Info.mButtonIconMode == 1 || dMeter_Info.mButtonIconMode == 2 || dMeter_Info.mButtonIconMode == 3) {
if (moveStatus != 3) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 3;
} else if (dMeter_Info.mButtonIconMode == 7 || dMeter_Info.mButtonIconMode == 8 || dMeter_Info.mButtonIconMode == 9 ||
dMeter_Info.mButtonIconMode == 10)
{
if (moveStatus != 5) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 5;
} else {
if (moveStatus != 1) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 1;
}
} else {
if (moveStatus != 0) {
moveFlag = 1;
dMeter_offBit8(&i_Meter->field_0x3026, 8);
}
moveStatus = 0;
}
}
}
}
}
if (i_Meter->field_0x3026 != 0xf) {
if (dMeter_isBit8(&i_Meter->field_0x3026, 8) == 0) {
if (moveNowFrame >= 5) {
moveNowFrame = 5;
moveFlag = 0;
dMeter_onBit8(&i_Meter->field_0x3026, 8);
switch (moveStatus) {
case 1:
nowX = 0.0f;
nowY = -200.0f;
break;
case 2:
nowX = g_meterHIO.field_0xb6;
nowY = g_meterHIO.field_0xbe;
break;
case 3:
nowX = g_meterHIO.field_0x116;
nowY = g_meterHIO.field_0x11e;
break;
case 4:
nowX = g_meterHIO.field_0xe6;
nowY = g_meterHIO.field_0xee;
break;
case 5:
nowX = (f32)(g_meterHIO.field_0x116 + 0x21);
nowY = (f32)(g_meterHIO.field_0x11e - 5);
break;
default:
nowX = g_meterHIO.field_0xf6;
nowY = g_meterHIO.field_0xfe;
break;
}
} else {
moveNowFrame++;
}
}
} else {
if ((s32)moveNowFrame <= 0) {
moveNowFrame = 0;
} else {
moveNowFrame--;
}
}
f32 dVar6 = fopMsgM_valueIncrease(5, moveNowFrame, 0);
f32 x = nowX;
f32 dVar7 = (nowY + (dVar6 * (-200.0f - nowY)));
fopMsgM_paneTrans(&i_Meter->field_0x1cc8, x, dVar7);
fopMsgM_paneTrans(&i_Meter->field_0x26a0, x, dVar7);
fopMsgM_paneTrans(&i_Meter->field_0x26d8, x, dVar7);
}
/* 801F7B0C-801F7B90 .text dMeter_enemyInit__FP15sub_meter_class */
void dMeter_enemyInit(sub_meter_class* i_Meter) {
i_Meter->field_0x0448[1].mUserArea = 0;
i_Meter->field_0x0560.mUserArea = 0;
i_Meter->field_0x03d8.mUserArea = 0;
i_Meter->field_0x0410.mUserArea = (cM_rndF(200.0f) + 300.0f);
i_Meter->field_0x0368.mUserArea = 0;
i_Meter->field_0x03a0.mUserArea = ((int)(cM_rndF(18.0f) + 40.0f) << 1);
}
/* 801F7B90-801F80C4 .text dMeter_enemyMove__FP15sub_meter_class */
void dMeter_enemyMove(sub_meter_class* i_Meter) {
dAttention_c* attention = &dComIfGp_getAttention();
stage_stag_info_class* stage_info = dComIfGp_getStageStagInfo();
JUT_ASSERT(7176, stage_info != NULL);
if (attention != NULL) {
if (!dMenu_flag() && !dComIfGp_event_runCheck() && attention->LockonTarget(0) != NULL && attention->LockonTarget(0)->max_health > 0.0f &&
dComIfGs_isCollect(4, 1) != 0 && (attention->LockonTruth() & 0xFF) != 0 && attention->LockonTarget(0)->group == fopAc_ENEMY_e &&
fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BTD_e && fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BMD_e &&
fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BDK_e && fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BPW_e &&
fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BGN_e && fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BGN2_e &&
fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BGN3_e && fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_GND_e &&
(fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BST_e || (fopAcM_GetParam(attention->LockonTarget(0)) & 0xF) != 0) &&
fopAcM_GetName(attention->LockonTarget(0)) != fpcNm_BWD_e)
{
dMeter_zakoEnemyMove(i_Meter);
} else {
dMeter_zakoEnemyHide(i_Meter);
}
}
if (!dMenu_flag() && dComIfGs_isCollect(4, 1) != 0 && !dComIfGp_event_runCheck() &&
!(i_Meter->mStatusFlags & dMtrStts_UNK80_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) &&
(dStage_stagInfo_GetSTType(stage_info) == dStageType_BOSS_e || fopAcM_SearchByName(fpcNm_BDK_e) != NULL))
{
if ((dComIfGs_isStageBossDemo() != 0 && dComIfGs_isStageBossEnemy() == 0) ||
strcmp(dComIfGp_getStartStageName(), "Xboss0") == 0 ||
strcmp(dComIfGp_getStartStageName(), "Xboss1") == 0 ||
strcmp(dComIfGp_getStartStageName(), "Xboss2") == 0 ||
strcmp(dComIfGp_getStartStageName(), "Xboss3") == 0)
{
fopAc_ac_c* pfVar3;
if (fopAcM_SearchByName(fpcNm_BTD_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BTD_e);
} else if (fopAcM_SearchByName(fpcNm_BMD_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BMD_e);
} else if (fopAcM_SearchByName(fpcNm_BDK_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BDK_e);
} else if (fopAcM_SearchByName(fpcNm_BST_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BST_e);
} else if (fopAcM_SearchByName(fpcNm_BWD_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BWD_e);
} else if (fopAcM_SearchByName(fpcNm_BPW_e) != NULL) {
pfVar3 = fopAcM_SearchByName(fpcNm_BPW_e);
} else {
pfVar3 = NULL;
}
if (pfVar3 != NULL) {
dMeter_bossEnemyMove(i_Meter, pfVar3);
return;
}
dMeter_bossEnemyHide(i_Meter);
return;
}
}
dMeter_bossEnemyHide(i_Meter);
}
/* 801F80C4-801F842C .text dMeter_zakoEnemyMove__FP15sub_meter_class */
void dMeter_zakoEnemyMove(sub_meter_class* i_Meter) {
f32 fVar1;
f32 fVar2;
fopAc_ac_c* pfVar4;
f32 dVar5;
cXyz local_38;
pfVar4 = dComIfGp_getAttention().LockonTarget(0);
mDoLib_project(&pfVar4->attention_info.position, &local_38);
if (local_38.x > 320.0f) {
i_Meter->field_0x0560.mPosTopLeft.x = (local_38.x - i_Meter->field_0x0560.mSizeOrig.x) - 50.0f;
} else {
i_Meter->field_0x0560.mPosTopLeft.x = local_38.x + 50.0f;
}
i_Meter->field_0x0560.mPosTopLeft.y = local_38.y;
dVar5 = pfVar4->health / (f32)pfVar4->max_health;
fVar1 = i_Meter->field_0x0528.mPosTopLeftOrig.x - i_Meter->field_0x0560.mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x0528.mPosTopLeftOrig.y - i_Meter->field_0x0560.mPosTopLeftOrig.y;
i_Meter->field_0x0528.mPosTopLeft.x = i_Meter->field_0x0560.mPosTopLeft.x + fVar1;
i_Meter->field_0x0528.mPosTopLeft.y = i_Meter->field_0x0560.mPosTopLeft.y + fVar2;
i_Meter->field_0x0528.mSize.x = i_Meter->field_0x0528.mSizeOrig.x;
i_Meter->field_0x0528.mSize.y = i_Meter->field_0x0528.mSizeOrig.y;
i_Meter->field_0x0528.pane->move(i_Meter->field_0x0528.mPosTopLeft.x, i_Meter->field_0x0528.mPosTopLeft.y);
i_Meter->field_0x0528.pane->resize(i_Meter->field_0x0528.mSize.x, i_Meter->field_0x0528.mSize.y);
fVar1 = i_Meter->field_0x0598.mPosTopLeftOrig.x - i_Meter->field_0x0560.mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x0598.mPosTopLeftOrig.y - i_Meter->field_0x0560.mPosTopLeftOrig.y;
i_Meter->field_0x0598.mPosTopLeft.x = i_Meter->field_0x0560.mPosTopLeft.x + fVar1;
i_Meter->field_0x0598.mPosTopLeft.y = i_Meter->field_0x0560.mPosTopLeft.y + fVar2;
i_Meter->field_0x0598.mSize.x = i_Meter->field_0x0598.mSizeOrig.x;
i_Meter->field_0x0598.mSize.y = i_Meter->field_0x0598.mSizeOrig.y;
i_Meter->field_0x0598.pane->move(i_Meter->field_0x0598.mPosTopLeft.x, i_Meter->field_0x0598.mPosTopLeft.y);
i_Meter->field_0x0598.pane->resize(i_Meter->field_0x0598.mSize.x, i_Meter->field_0x0598.mSize.y);
fVar1 = i_Meter->field_0x0608.mPosTopLeftOrig.x - i_Meter->field_0x0560.mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x0608.mPosTopLeftOrig.y - i_Meter->field_0x0560.mPosTopLeftOrig.y;
i_Meter->field_0x0608.mPosTopLeft.x = i_Meter->field_0x0560.mPosTopLeft.x + fVar1;
i_Meter->field_0x0608.mPosTopLeft.y = i_Meter->field_0x0560.mPosTopLeft.y + fVar2;
i_Meter->field_0x0608.mSize.x = i_Meter->field_0x0608.mSizeOrig.x;
i_Meter->field_0x0608.mSize.y = i_Meter->field_0x0608.mSizeOrig.y;
i_Meter->field_0x0608.pane->move(i_Meter->field_0x0608.mPosTopLeft.x, i_Meter->field_0x0608.mPosTopLeft.y);
i_Meter->field_0x0608.pane->resize(i_Meter->field_0x0608.mSize.x, i_Meter->field_0x0608.mSize.y);
i_Meter->field_0x05d0.mPosTopLeft.x = i_Meter->field_0x05d0.mPosTopLeftOrig.x;
i_Meter->field_0x05d0.mPosTopLeft.y = i_Meter->field_0x05d0.mPosTopLeftOrig.y;
i_Meter->field_0x05d0.mSize.x = i_Meter->field_0x05d0.mSizeOrig.x;
i_Meter->field_0x05d0.mSize.y = i_Meter->field_0x05d0.mSizeOrig.y;
i_Meter->field_0x05d0.pane->move(i_Meter->field_0x05d0.mPosTopLeft.x, i_Meter->field_0x05d0.mPosTopLeft.y);
i_Meter->field_0x05d0.pane->resize(i_Meter->field_0x05d0.mSize.x, i_Meter->field_0x05d0.mSize.y);
i_Meter->field_0x0560.mSize.x = i_Meter->field_0x0560.mSizeOrig.x * dVar5;
i_Meter->field_0x0560.mSize.y = i_Meter->field_0x0560.mSizeOrig.y;
i_Meter->field_0x0560.pane->move(i_Meter->field_0x0560.mPosTopLeft.x, i_Meter->field_0x0560.mPosTopLeft.y);
i_Meter->field_0x0560.pane->resize(i_Meter->field_0x0560.mSize.x, i_Meter->field_0x0560.mSize.y);
if (i_Meter->field_0x0560.mUserArea < 10) {
i_Meter->field_0x0560.mUserArea++;
dVar5 = fopMsgM_valueIncrease(10, i_Meter->field_0x0560.mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x0528, dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x0560, dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x0598, dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x0608, dVar5);
} else {
fopMsgM_setInitAlpha(&i_Meter->field_0x0528);
fopMsgM_setInitAlpha(&i_Meter->field_0x0560);
fopMsgM_setInitAlpha(&i_Meter->field_0x0598);
fopMsgM_setInitAlpha(&i_Meter->field_0x0608);
}
}
/* 801F842C-801F86E4 .text dMeter_bossEnemyMove__FP15sub_meter_classP10fopAc_ac_c */
void dMeter_bossEnemyMove(sub_meter_class* i_Meter, fopAc_ac_c* param_2) {
f32 fVar2;
f32 dVar5;
if (param_2->max_health != 0) {
fVar2 = (f32)param_2->health / (f32)param_2->max_health;
} else {
fVar2 = g_meterHIO.field_0xc;
}
if (i_Meter->field_0x0448[0].mUserArea < 0x1e) {
i_Meter->field_0x0448[0].mUserArea++;
if (i_Meter->field_0x0448[0].mUserArea <= 0xa) {
fVar2 = fopMsgM_valueIncrease(10, 10 - i_Meter->field_0x0448[0].mUserArea, 0) * 80.0f;
fopMsgM_paneScaleX(&i_Meter->field_0x0448[2], 0.0f);
fopMsgM_paneScaleX(&i_Meter->field_0x0448[3], 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x0368, 0.0f, fVar2);
fopMsgM_paneTrans(&i_Meter->field_0x03a0, 0.0f, fVar2);
fopMsgM_paneTrans(&i_Meter->field_0x03d8, 0.0f, fVar2);
fopMsgM_paneTrans(&i_Meter->field_0x0410, 0.0f, fVar2);
for (s32 i = 0; i < 4; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x0448[i], 0.0f, fVar2);
}
} else {
dVar5 = fopMsgM_valueIncrease(0x14, i_Meter->field_0x0448[0].mUserArea + -10, 2);
fopMsgM_paneScaleX(&i_Meter->field_0x0448[2], fVar2 * dVar5);
fopMsgM_paneScaleX(&i_Meter->field_0x0448[3], fVar2 * dVar5);
}
} else {
fopMsgM_paneScaleX(&i_Meter->field_0x0448[2], fVar2);
fopMsgM_paneScaleX(&i_Meter->field_0x0448[3], fVar2);
}
i_Meter->field_0x0448[2].pane->move(
((i_Meter->field_0x0448[2].mPosTopLeftOrig.x + i_Meter->field_0x0448[2].mSizeOrig.x) - i_Meter->field_0x0448[2].mSize.x),
i_Meter->field_0x0448[2].mPosTopLeftOrig.y
);
i_Meter->field_0x0448[3].pane->move(
((i_Meter->field_0x0448[3].mPosTopLeftOrig.x + i_Meter->field_0x0448[3].mSizeOrig.x) - i_Meter->field_0x0448[3].mSize.x),
i_Meter->field_0x0448[3].mPosTopLeftOrig.y
);
if (i_Meter->field_0x0448[1].mUserArea < 10) {
i_Meter->field_0x0448[1].mUserArea++;
fVar2 = fopMsgM_valueIncrease(10, i_Meter->field_0x0448[1].mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x0368, fVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x03a0, fVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x03d8, fVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x0410, fVar2);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x0448[i], fVar2);
}
} else {
dMeter_bossAnime(i_Meter);
fopMsgM_setInitAlpha(&i_Meter->field_0x03d8);
fopMsgM_setInitAlpha(&i_Meter->field_0x0410);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setInitAlpha(&i_Meter->field_0x0448[i]);
}
}
}
/* 801F86E4-801F878C .text dMeter_zakoEnemyHide__FP15sub_meter_class */
void dMeter_zakoEnemyHide(sub_meter_class* i_Meter) {
if (i_Meter->field_0x0560.mUserArea > 0) {
i_Meter->field_0x0560.mUserArea--;
f32 dVar2 = fopMsgM_valueIncrease(10, i_Meter->field_0x0560.mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x0528, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x0560, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x0598, dVar2);
fopMsgM_setNowAlpha(&i_Meter->field_0x0608, dVar2);
} else {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0528);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0560);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0598);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0608);
}
}
/* 801F878C-801F8888 .text dMeter_bossEnemyHide__FP15sub_meter_class */
void dMeter_bossEnemyHide(sub_meter_class* i_Meter) {
if (i_Meter->field_0x0448[1].mUserArea > 0) {
i_Meter->field_0x0448[1].mUserArea--;
f32 dVar4 = fopMsgM_valueIncrease(10, i_Meter->field_0x0448[1].mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x0368, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x03a0, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x03d8, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x0410, dVar4);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x0448[i], dVar4);
}
} else {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0368);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x03a0);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x03d8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0410);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0448[i]);
}
}
}
/* 801F8888-801F8BA8 .text dMeter_bossAnime__FP15sub_meter_class */
void dMeter_bossAnime(sub_meter_class* i_Meter) {
f32 dVar9 = 0.0f;
const s16 unk_9010[] = {0x04, 0x0A, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02};
s16 unk_array[15];
unk_array[0] = unk_9010[0];
for (s32 i = 1; i < 15; i++) {
unk_array[i] = unk_array[i - 1] + unk_9010[i];
};
i_Meter->field_0x03d8.mUserArea++;
if (i_Meter->field_0x03d8.mUserArea >= i_Meter->field_0x0410.mUserArea) {
i_Meter->field_0x03d8.mUserArea = 0;
i_Meter->field_0x0410.mUserArea = cM_rndF(200.0f) + 300.0f;
} else {
if (i_Meter->field_0x03d8.mUserArea < unk_array[10]) {
if (i_Meter->field_0x03d8.mUserArea < unk_array[0]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[0], i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[1]) {
dVar9 = 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[2]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[2], unk_array[2] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[3]) {
dVar9 = 0.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[4]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[4], unk_array[4] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[5]) {
dVar9 = 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[6]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[6], unk_array[6] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[7]) {
dVar9 = 0.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[8]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[8], unk_array[8] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[9]) {
dVar9 = 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[10]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[10], unk_array[10] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[11]) {
dVar9 = 0.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[12]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[12], unk_array[12] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[13]) {
dVar9 = 2.0f;
} else if (i_Meter->field_0x03d8.mUserArea < unk_array[14]) {
dVar9 = fopMsgM_valueIncrease(unk_9010[14], unk_array[14] - i_Meter->field_0x03d8.mUserArea, 0) * 2.0f;
}
}
}
fopMsgM_paneTrans(&i_Meter->field_0x03d8, 0.0f, -dVar9);
fopMsgM_paneTrans(&i_Meter->field_0x0368, 0.0f, -dVar9);
fopMsgM_paneTrans(&i_Meter->field_0x03a0, 0.0f, -dVar9);
fopMsgM_paneTrans(&i_Meter->field_0x0410, 0.0f, dVar9);
dMeter_bossEyeAnime(i_Meter);
}
/* 801F8BA8-801F8CD0 .text dMeter_bossEyeAnime__FP15sub_meter_class */
void dMeter_bossEyeAnime(sub_meter_class* i_Meter) {
int iVar2;
f32 dVar4;
static bool bossEyeFlag = false;
iVar2 = (s16)(i_Meter->field_0x03a0.mUserArea / 2);
i_Meter->field_0x0368.mUserArea++;
if (bossEyeFlag != false) {
if (i_Meter->field_0x0368.mUserArea < iVar2) {
dVar4 = fopMsgM_valueIncrease(iVar2, i_Meter->field_0x0368.mUserArea, 2);
} else {
dVar4 = fopMsgM_valueIncrease(iVar2, i_Meter->field_0x03a0.mUserArea - i_Meter->field_0x0368.mUserArea, 2);
}
} else {
dVar4 = 0.0f;
}
if (i_Meter->field_0x0368.mUserArea == i_Meter->field_0x03a0.mUserArea) {
i_Meter->field_0x0368.mUserArea = 0;
i_Meter->field_0x03a0.mUserArea = ((int)(cM_rndF(18.0f) + 40.0f) * 2);
if (bossEyeFlag != false) {
bossEyeFlag = false;
} else {
bossEyeFlag = true;
}
}
fopMsgM_setNowAlpha(&i_Meter->field_0x0368, dVar4);
fopMsgM_setNowAlpha(&i_Meter->field_0x03a0, dVar4);
}
/* 801F8CD0-801F8F28 .text dMeter_magicInit__FP15sub_meter_class */
void dMeter_magicInit(sub_meter_class* i_Meter) {
if ((g_dComIfG_gameInfo.play.field_0x4965 >> 1 & 1) != 0) {
#if VERSION > VERSION_DEMO
i_Meter->field_0x3018 = dComIfGs_getMaxMagic();
#endif
i_Meter->field_0x3016 = (i_Meter->field_0x0f38[0].mSizeOrig.x * dComIfGs_getMagic() * 25.0f);
} else {
#if VERSION > VERSION_DEMO
i_Meter->field_0x3018 = 0;
#endif
i_Meter->field_0x3016 = 0;
g_dComIfG_gameInfo.play.field_0x4965 |= 2;
}
i_Meter->field_0x3019 = 0;
i_Meter->field_0x0f38[0].mUserArea = 0;
i_Meter->field_0x0f38[1].mUserArea = 0;
i_Meter->field_0x0f38[2].mUserArea = 0;
i_Meter->field_0x0f38[3].mUserArea = 0;
i_Meter->field_0x0f38[4].mUserArea = 0;
i_Meter->field_0x0f38[5].mUserArea = 1;
i_Meter->field_0x10f8.mUserArea = 0;
i_Meter->field_0x11a0.mUserArea = 0;
i_Meter->field_0x1130.mUserArea = 0;
i_Meter->field_0x11d8.mUserArea = 0;
i_Meter->field_0x2fc0 = 0.0f;
#if VERSION > VERSION_DEMO
dMeter_magicLength(i_Meter, i_Meter->field_0x3018 / 32.0f);
#endif
dMeter_magicChange(i_Meter, i_Meter->field_0x3016 / 100.0f);
i_Meter->field_0x2f08.set(((J2DPicture*)i_Meter->field_0x11a0.pane)->getWhite());
i_Meter->field_0x2f0c.set(((J2DPicture*)i_Meter->field_0x11a0.pane)->getBlack());
i_Meter->field_0x2f10.set(((J2DPicture*)i_Meter->field_0x0f38[0].pane)->getWhite());
i_Meter->field_0x2f14.set(((J2DPicture*)i_Meter->field_0x0f38[0].pane)->getBlack());
i_Meter->field_0x2f18.set(((J2DPicture*)i_Meter->field_0x0f38[1].pane)->getWhite());
i_Meter->field_0x2f1c.set(((J2DPicture*)i_Meter->field_0x0f38[1].pane)->getBlack());
#if VERSION == VERSION_DEMO
dMeter_magicTrans(i_Meter, 0.0f, 0.0f);
#else
dMeter_magicTransNowInit(i_Meter);
#endif
fopMsgM_setInitAlpha(&i_Meter->field_0x10f8);
fopMsgM_setInitAlpha(&i_Meter->field_0x11a0);
fopMsgM_setInitAlpha(&i_Meter->field_0x11d8);
}
/* 801F8F28-801F9048 .text dMeter_magicMove__FP15sub_meter_class */
void dMeter_magicMove(sub_meter_class* i_Meter) {
if (i_Meter->mStatusFlags & dMtrStts_UNK40000_e) {
if (dComIfGp_getCb1Player() == fopAcM_SearchByName(fpcNm_NPC_CB1_e)) {
int iVar4 = daNpc_Cb1_c::m_flyingTimer;
u8 uVar2 = daNpc_Cb1_c::m_flying;
s16 uVar3 = daNpc_Cb1_c::getMaxFlyingTimer();
dMeter_flyGaugeMove(i_Meter, uVar2, uVar3, iVar4);
} else if (dComIfGp_getCb1Player() == fopAcM_SearchByName(fpcNm_NPC_MD_e)) {
int iVar4 = daNpc_Md_c::m_flyingTimer;
u8 uVar2 = daNpc_Md_c::m_flying;
s16 uVar3 = daNpc_Md_c::getMaxFlyingTimer();
dMeter_flyGaugeMove(i_Meter, uVar2, uVar3, iVar4);
} else {
dMeter_flyGaugeMove(i_Meter, 0, 1, 1);
}
if (i_Meter->field_0x0f38[2].mUserArea == 1) {
i_Meter->field_0x0f38[2].mUserArea = 0;
}
i_Meter->field_0x0f38[5].mUserArea = 1;
} else {
dMeter_magicGaugeMove(i_Meter);
if (i_Meter->field_0x11d8.mUserArea != 0) {
i_Meter->field_0x11d8.mUserArea = 0;
}
}
}
/* 801F9048-801F961C .text dMeter_magicGaugeMove__FP15sub_meter_class */
void dMeter_magicGaugeMove(sub_meter_class* i_Meter) {
u32 uVar2;
s16 sVar4;
u16 uVar5;
u32 uVar7;
u16 uVar8;
static bool soundOnFlag = false;
if (i_Meter->field_0x0f38[0].mUserArea == 1) {
((J2DPicture*)i_Meter->field_0x11a0.pane)->setWhite(i_Meter->field_0x2f08);
((J2DPicture*)i_Meter->field_0x11a0.pane)->setBlack(i_Meter->field_0x2f0c);
((J2DPicture*)i_Meter->field_0x1130.pane)->setWhite(i_Meter->field_0x2f08);
((J2DPicture*)i_Meter->field_0x1130.pane)->setBlack(i_Meter->field_0x2f0c);
for (s32 i = 0; i < 4; i++) {
((J2DPicture*)i_Meter->field_0x0f38[0 + i * 2].pane)->setWhite(i_Meter->field_0x2f10);
((J2DPicture*)i_Meter->field_0x0f38[0 + i * 2].pane)->setBlack(i_Meter->field_0x2f14);
((J2DPicture*)i_Meter->field_0x0f38[1 + i * 2].pane)->setWhite(i_Meter->field_0x2f18);
((J2DPicture*)i_Meter->field_0x0f38[1 + i * 2].pane)->setBlack(i_Meter->field_0x2f1c);
}
i_Meter->field_0x0f38[0].mUserArea = 0;
dMeter_magicTransScale(i_Meter, 0.0f, 0.0f, 1.0f);
#if VERSION > VERSION_DEMO
dMeter_magicInitTrans(i_Meter);
dMeter_magicChange(i_Meter, i_Meter->field_0x3016 / 100.0f);
#endif
}
if (dComIfGp_getItemMaxMagicCount() != 0) {
sVar4 = dComIfGs_getMaxMagic() + dComIfGp_getItemMaxMagicCount();
if (sVar4 > 0x20) {
sVar4 = 0x20;
}
dComIfGs_setMaxMagic(sVar4);
g_dComIfG_gameInfo.play.mItemMaxMagicCount = 0;
}
#if VERSION > VERSION_DEMO
if (i_Meter->field_0x3018 != dComIfGs_getMaxMagic() || i_Meter->field_0x0f38[2].mUserArea == 0) {
if (i_Meter->field_0x3018 < dComIfGs_getMaxMagic()) {
i_Meter->field_0x3018++;
} else if (i_Meter->field_0x3018 > dComIfGs_getMaxMagic()) {
i_Meter->field_0x3018--;
}
dMeter_magicLength(i_Meter, i_Meter->field_0x3018 / 32.0f);
if (i_Meter->field_0x3018 == dComIfGs_getMaxMagic()) {
if (dComIfGs_getMaxMagic() <= 0x10) {
dMeter_magicLength(i_Meter, 0.5f);
} else {
dMeter_magicLength(i_Meter, 1.0f);
}
i_Meter->field_0x0f38[2].mUserArea = 1;
}
}
#endif
if (dComIfGs_getMaxMagic() != 0) {
if (dComIfGp_getItemMagicCount() != 0) {
sVar4 = dComIfGs_getMagic() + dComIfGp_getItemMagicCount();
if (sVar4 < 0) {
sVar4 = 0;
}
dComIfGs_setMagic(sVar4);
g_dComIfG_gameInfo.play.mItemMagicCount = 0;
}
}
if (dComIfGs_getMagic() > dComIfGs_getMaxMagic()) {
dComIfGs_setMagic(dComIfGs_getMaxMagic());
}
if (!fopOvlpM_IsDoingReq() &&
(!(i_Meter->mStatusFlags & dMtrStts_UNK40_e) ||
!dComIfGp_event_checkHind(0x20) || !dComIfGp_evmng_checkStartDemo() || dComIfGp_checkPlayerStatus1(0, daPyStts1_UNK2000_e)))
{
uVar8 = (i_Meter->field_0x0f38[0].mSizeOrig.x * (f32)(dComIfGs_getMagic()) * 25.0f);
uVar5 = i_Meter->field_0x3016;
uVar7 = uVar5;
uVar2 = uVar8;
if (uVar7 < uVar2) {
if ((int)(uVar2 - uVar7) < 0x271) {
i_Meter->field_0x3016 = uVar8;
} else {
i_Meter->field_0x3016 = uVar5 + 0x271;
}
if ((i_Meter->field_0x3016 % 1250) == 0) {
mDoAud_seStart(JA_SE_MP_GAUGE_INC, NULL, i_Meter->field_0x3016 / 1250);
}
dMeter_magicChange(i_Meter, i_Meter->field_0x3016 / 100.0f);
i_Meter->field_0x0f38[5].mUserArea = 1;
} else if (uVar7 > uVar2) {
if ((int)(uVar7 - uVar2) < 0x271) {
i_Meter->field_0x3016 = 0;
} else {
i_Meter->field_0x3016 = uVar5 - 0x271;
}
if ((i_Meter->field_0x3016 % 1250) == 0) {
mDoAud_seStart(JA_SE_MP_GAUGE_DEC);
}
if (i_Meter->field_0x3016 == 0) {
mDoAud_seStart(JA_SE_MP_GAUGE_DEC_FIN);
}
dMeter_magicChange(i_Meter, i_Meter->field_0x3016 / 100.0f);
i_Meter->field_0x0f38[5].mUserArea = 1;
} else if (i_Meter->field_0x0f38[5].mUserArea != 0) {
dMeter_magicChange(i_Meter, uVar7 / 100.0f);
i_Meter->field_0x0f38[5].mUserArea = 0;
}
} else {
i_Meter->field_0x0f38[5].mUserArea = 1;
}
dMeter_magicColor(i_Meter);
dMeter_magicAlpha(i_Meter);
}
/* 801F961C-801F9A24 .text dMeter_flyGaugeMove__FP15sub_meter_classUcss */
void dMeter_flyGaugeMove(sub_meter_class* i_Meter, u8 param_2, s16 param_3, s16 param_4) {
f32 dVar8;
f32 dVar9;
f32 dVar10;
cXyz local_50;
JUtility::TColor color1(0x64, 0x64, 0xFF, 0xFF);
JUtility::TColor color2(0x64, 0x64, 0xFF, 0x00);
JUtility::TColor color3(0x96, 0x96, 0xE6, 0xFF);
JUtility::TColor color4(0x96, 0x96, 0xE6, 0x00);
JUtility::TColor color5(0xB4, 0xB4, 0xFF, 0xFF);
JUtility::TColor color6(0xB4, 0xB4, 0xFF, 0x00);
if (param_2 != 0) {
f32 f30 = (f32)(param_4) / (f32)(param_3) * 25.0f * 8.0f;
#if VERSION == VERSION_DEMO
dMeter_magicInitTrans(i_Meter, 0.0f, 0.0f);
#else
dMeter_magicInitTrans(i_Meter);
#endif
dMeter_magicChange(i_Meter, f30);
if (i_Meter->field_0x0f38[0].mUserArea == 0) {
((J2DPicture*)i_Meter->field_0x11a0.pane)->setWhite(color1);
((J2DPicture*)i_Meter->field_0x11a0.pane)->setBlack(color2);
((J2DPicture*)i_Meter->field_0x1130.pane)->setWhite(color1);
((J2DPicture*)i_Meter->field_0x1130.pane)->setBlack(color2);
for (s32 i = 0; i < 4; i++) {
((J2DPicture*)i_Meter->field_0x0f38[0 + i * 2].pane)->setWhite(color3);
((J2DPicture*)i_Meter->field_0x0f38[0 + i * 2].pane)->setBlack(color4);
((J2DPicture*)i_Meter->field_0x0f38[1 + i * 2].pane)->setWhite(color5);
((J2DPicture*)i_Meter->field_0x0f38[1 + i * 2].pane)->setBlack(color6);
}
i_Meter->field_0x0f38[0].mUserArea = 1;
i_Meter->field_0x0f38[1].mUserArea = 0x14;
i_Meter->field_0x1130.mUserArea = 0;
}
if (i_Meter->field_0x11a0.mUserArea < 5) {
i_Meter->field_0x11a0.mUserArea++;
dVar8 = fopMsgM_valueIncrease(5, (int)i_Meter->field_0x11a0.mUserArea, 0);
} else {
dVar8 = 1.0f;
}
if (i_Meter->field_0x1130.mUserArea < 0x32) {
i_Meter->field_0x1130.mUserArea++;
mDoLib_project(&dComIfGp_getCb1Player()->eyePos, &local_50);
if (i_Meter->field_0x1130.mUserArea > 0x1e) {
dVar9 = fopMsgM_valueIncrease(0x14, 0x32 - i_Meter->field_0x1130.mUserArea, 0);
dVar10 = fopMsgM_valueIncrease(0x14, i_Meter->field_0x1130.mUserArea + -0x1e, 0);
dMeter_magicTransScale(
i_Meter,
dVar9 * (local_50.x - i_Meter->field_0x11a0.mPosCenter.x),
dVar9 * (local_50.y - i_Meter->field_0x11a0.mPosCenter.y),
(dVar10 * 0.5f) + 0.5f
);
} else {
dMeter_magicTransScale(i_Meter, local_50.x - i_Meter->field_0x11a0.mPosCenter.x, local_50.y - i_Meter->field_0x11a0.mPosCenter.y, 0.5f);
}
}
} else {
if (i_Meter->field_0x11a0.mUserArea > 0) {
i_Meter->field_0x11a0.mUserArea--;
dVar8 = fopMsgM_valueIncrease(5, i_Meter->field_0x11a0.mUserArea, 0);
} else {
dVar8 = 0.0f;
i_Meter->field_0x11a0.mUserArea = 0;
#if VERSION == VERSION_DEMO
dMeter_magicTrans(i_Meter, 0.0f, 0.0f);
#else
dMeter_magicTransNowInit(i_Meter);
#endif
}
if (i_Meter->field_0x1130.mUserArea != 0) {
i_Meter->field_0x1130.mUserArea = 0;
}
}
i_Meter->field_0x2fc0 = dVar8;
}
/* 801F9A24-801F9B3C .text dMeter_magicChange__FP15sub_meter_classf */
void dMeter_magicChange(sub_meter_class* i_Meter, f32 param_2) {
dComIfGp_setItemNowMagic((param_2 / i_Meter->field_0x0f38[0].mSizeOrig.x) * 4.0f);
#if VERSION == VERSION_DEMO
dMeter_magicTrans(i_Meter, 0.0f, 0.0f);
#else
dMeter_magicTransNowInit(i_Meter);
#endif
for (s32 i = 0; i < 8; i++) {
if (param_2 >= i_Meter->field_0x0f38[i].mSizeOrig.x) {
fopMsgM_paneScaleXY(&i_Meter->field_0x0f38[i], 1.0f);
i_Meter->field_0x0f38[i].pane->show();
param_2 = param_2 - i_Meter->field_0x0f38[i].mSizeOrig.x;
} else {
if (param_2 <= 0.0f) {
fopMsgM_paneScaleXY(&i_Meter->field_0x0f38[i], 1.0f);
i_Meter->field_0x0f38[i].pane->hide();
} else {
i_Meter->field_0x0f38[i].pane->resize(param_2, i_Meter->field_0x0f38[i].mSizeOrig.y);
i_Meter->field_0x0f38[i].pane->show();
param_2 = 0.0f;
}
}
}
}
#if VERSION == VERSION_DEMO
void dMeter_magicTrans(sub_meter_class* i_Meter, f32 param_1, f32 param_2) {
f32 y;
if (dComIfGs_getMaxLife() <= 0x2B) {
y = -22.0f + param_2;
} else {
y = param_2;
}
f32 fVar2 = param_1 + (i_Meter->field_0x10f8.mPosCenter.x - i_Meter->field_0x10f8.mPosCenterOrig.x);
fopMsgM_paneTrans(&i_Meter->field_0x10f8, fVar2, y);
fVar2 = param_1 + (i_Meter->field_0x11a0.mPosCenter.x - i_Meter->field_0x11a0.mPosCenterOrig.x);
fopMsgM_paneTrans(&i_Meter->field_0x11a0, fVar2, y);
fVar2 = param_1 + (i_Meter->field_0x11d8.mPosCenter.x - i_Meter->field_0x11d8.mPosCenterOrig.x);
fopMsgM_paneTrans(&i_Meter->field_0x11d8, fVar2, y);
for (s32 i = 0; i < 8; i++) {
fVar2 = param_1 + (i_Meter->field_0x0f38[i].mPosCenter.x - i_Meter->field_0x0f38[i].mPosCenterOrig.x);
fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], fVar2, y);
}
}
#else
/* 801F9B3C-801F9C14 .text dMeter_magicTransNowInit__FP15sub_meter_class */
void dMeter_magicTransNowInit(sub_meter_class* i_Meter) {
f32 y;
if (dComIfGs_getMaxLife() <= 0x2B) {
y = -22.0f;
} else {
y = 0.0f;
}
f32 fVar2 = i_Meter->field_0x10f8.mPosCenter.x - i_Meter->field_0x10f8.mPosCenterOrig.x;
fopMsgM_paneTrans(&i_Meter->field_0x10f8, fVar2, y);
fVar2 = i_Meter->field_0x11a0.mPosCenter.x - i_Meter->field_0x11a0.mPosCenterOrig.x;
fopMsgM_paneTrans(&i_Meter->field_0x11a0, fVar2, y);
fVar2 = i_Meter->field_0x11d8.mPosCenter.x - i_Meter->field_0x11d8.mPosCenterOrig.x;
fopMsgM_paneTrans(&i_Meter->field_0x11d8, fVar2, y);
for (s32 i = 0; i < 8; i++) {
fVar2 = i_Meter->field_0x0f38[i].mPosCenter.x - i_Meter->field_0x0f38[i].mPosCenterOrig.x;
fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], fVar2, y);
}
}
#endif
#if VERSION == VERSION_DEMO
void dMeter_magicInitTrans(sub_meter_class* i_Meter, f32 param_1, f32 param_2) {
/* Nonmatching - regalloc */
f32 y;
if (dComIfGs_getMaxLife() <= 0x2B) {
y = -22.0f + param_2;
} else {
y = param_2;
}
fopMsgM_paneTrans(&i_Meter->field_0x10f8, param_1, y);
fopMsgM_paneTrans(&i_Meter->field_0x11a0, param_1, y);
fopMsgM_paneTrans(&i_Meter->field_0x11d8, param_1, y);
for (s32 i = 0; i < 8; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], param_1, y);
}
}
#else
/* 801F9C14-801F9CCC .text dMeter_magicInitTrans__FP15sub_meter_class */
void dMeter_magicInitTrans(sub_meter_class* i_Meter) {
f32 y;
if (dComIfGs_getMaxLife() <= 0x2B) {
y = -22.0f;
} else {
y = 0.0f;
}
fopMsgM_paneTrans(&i_Meter->field_0x10f8, 0.0f, y);
fopMsgM_paneTrans(&i_Meter->field_0x11a0, 0.0f, y);
fopMsgM_paneTrans(&i_Meter->field_0x11d8, 0.0f, y);
for (s32 i = 0; i < 8; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], 0.0f, y);
}
}
#endif
/* 801F9CCC-801F9F18 .text dMeter_magicTransScale__FP15sub_meter_classfff */
void dMeter_magicTransScale(sub_meter_class* i_Meter, f32 param_2, f32 param_3, f32 param_4) {
/* Nonmatching */
f32 fVar1;
f32 dVar5;
if (dComIfGs_getMaxLife() <= 0x2b) {
param_3 += -22.0f;
}
fopMsgM_paneScaleXY(&i_Meter->field_0x11a0, param_4);
fopMsgM_paneTrans(&i_Meter->field_0x11a0, param_2, param_3);
i_Meter->field_0x1130.mPosCenter.x = (i_Meter->field_0x1130.mPosCenterOrig.x * param_4);
i_Meter->field_0x1130.mPosCenter.y = (i_Meter->field_0x1130.mPosCenterOrig.y * param_4);
fopMsgM_paneScaleXY(&i_Meter->field_0x1130, param_4);
fVar1 = i_Meter->field_0x11a0.mPosCenterOrig.x;
i_Meter->field_0x10f8.mPosCenter.x = (param_2 + (fVar1 + (param_4 * (i_Meter->field_0x10f8.mPosCenterOrig.x - fVar1))));
fVar1 = i_Meter->field_0x11a0.mPosCenterOrig.y;
i_Meter->field_0x10f8.mPosCenter.y = (param_3 + (fVar1 + (param_4 * (i_Meter->field_0x10f8.mPosCenterOrig.y - fVar1))));
fopMsgM_paneScaleXY(&i_Meter->field_0x10f8, param_4);
fVar1 = i_Meter->field_0x11a0.mPosCenterOrig.x;
i_Meter->field_0x11d8.mPosCenter.x = (param_2 + (fVar1 + (param_4 * (i_Meter->field_0x11d8.mPosCenterOrig.x - fVar1))));
fVar1 = i_Meter->field_0x11a0.mPosCenterOrig.y;
i_Meter->field_0x11d8.mPosCenter.y = (param_3 + (fVar1 + (param_4 * (i_Meter->field_0x11d8.mPosCenterOrig.y - fVar1))));
fopMsgM_paneScaleXY(&i_Meter->field_0x11d8, param_4);
i_Meter->field_0x1168.mPosCenter.x = (i_Meter->field_0x1168.mPosCenterOrig.x * param_4);
i_Meter->field_0x1168.mPosCenter.y = (i_Meter->field_0x1168.mPosCenterOrig.y * param_4);
fopMsgM_paneScaleXY(&i_Meter->field_0x1168, param_4);
for (s32 i = 0; i < 8; i++) {
i_Meter->field_0x0f38[i].mPosCenter.x =
(param_2 +
(i_Meter->field_0x11a0.mPosCenterOrig.x + (param_4 * (i_Meter->field_0x0f38[i].mPosCenterOrig.x - i_Meter->field_0x11a0.mPosCenterOrig.x))));
i_Meter->field_0x0f38[i].mPosCenter.y =
(param_3 +
(i_Meter->field_0x11a0.mPosCenterOrig.y + (param_4 * (i_Meter->field_0x0f38[i].mPosCenterOrig.y - i_Meter->field_0x11a0.mPosCenterOrig.y))));
i_Meter->field_0x0f38[i].mPosCenter.x -= ((i_Meter->field_0x0f38[i].mSizeOrig.x * param_4) / 2.0f);
i_Meter->field_0x0f38[i].mSize.x = (param_4 * (i_Meter->field_0x0f38[i].pane->mBounds.f.x - i_Meter->field_0x0f38[i].pane->mBounds.i.x));
i_Meter->field_0x0f38[i].mSize.y = (param_4 * (i_Meter->field_0x0f38[i].pane->mBounds.f.y - i_Meter->field_0x0f38[i].pane->mBounds.i.y));
i_Meter->field_0x0f38[i].mPosCenter.x += (i_Meter->field_0x0f38[i].mSize.x / 2.0f);
fopMsgM_cposMove(&i_Meter->field_0x0f38[i]);
i_Meter->field_0x0f38[i].mSize.x = i_Meter->field_0x0f38[i].mSizeOrig.x;
i_Meter->field_0x0f38[i].mSize.y = i_Meter->field_0x0f38[i].mSizeOrig.y;
}
}
/* 801F9F18-801FA378 .text dMeter_magicColor__FP15sub_meter_class */
void dMeter_magicColor(sub_meter_class* i_Meter) {
f32 dVar12;
if (!(i_Meter->mStatusFlags & dMtrStts_UNK8_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK10_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100_e) &&
(
daPy_getPlayerActorClass()->checkEquipDragonShield() ||
(g_dComIfG_gameInfo.play.field_0x4965 & 1) ||
(daPy_getPlayerLinkActorClass()->checkCutRollChange() ||
dComIfGp_checkPlayerStatus1(0, daPyStts1_DEKU_LEAF_FLY_e)) ||
(dComIfGp_checkPlayerStatus0(0, daPyStts0_BOW_AIM_e) && daArrow_c::getKeepType() != 0 && (daPy_getPlayerActorClass()->getItemID() != -1))
)
) {
JUtility::TColor color1;
JUtility::TColor color2;
if (i_Meter->field_0x0f38[4].mUserArea == 0) {
i_Meter->field_0x0f38[4].mUserArea = 1;
}
if (i_Meter->field_0x0f38[3].mUserArea < 0x1d) {
i_Meter->field_0x0f38[3].mUserArea++;
} else {
i_Meter->field_0x0f38[3].mUserArea = 0;
}
if (i_Meter->field_0x0f38[3].mUserArea < 0xf) {
dVar12 = fopMsgM_valueIncrease(0xf, i_Meter->field_0x0f38[3].mUserArea, 0);
} else {
dVar12 = fopMsgM_valueIncrease(0xf, 0x1e - i_Meter->field_0x0f38[3].mUserArea, 0);
}
color1.r = i_Meter->field_0x2f08.r - ((i_Meter->field_0x2f08.r - 255.0f) * dVar12);
color1.g = i_Meter->field_0x2f08.g - ((i_Meter->field_0x2f08.g - 255.0f) * dVar12);
color1.b = i_Meter->field_0x2f08.b - ((i_Meter->field_0x2f08.b - 255.0f) * dVar12);
color1.a = 0xFF;
color2.r = i_Meter->field_0x2f0c.r - ((i_Meter->field_0x2f0c.r - 255.0f) * dVar12);
color2.g = i_Meter->field_0x2f0c.g - ((i_Meter->field_0x2f0c.g - 255.0f) * dVar12);
color2.b = i_Meter->field_0x2f0c.b - ((i_Meter->field_0x2f0c.b - 255.0f) * dVar12);
color2.a = 0x00;
((J2DPicture*)i_Meter->field_0x11a0.pane)->setWhite(color1);
((J2DPicture*)i_Meter->field_0x11a0.pane)->setBlack(color2);
((J2DPicture*)i_Meter->field_0x1130.pane)->setWhite(color1);
((J2DPicture*)i_Meter->field_0x1130.pane)->setBlack(color2);
g_dComIfG_gameInfo.play.field_0x4965 = g_dComIfG_gameInfo.play.field_0x4965 & 0xfe;
return;
}
if (i_Meter->field_0x0f38[4].mUserArea == 1) {
((J2DPicture*)i_Meter->field_0x11a0.pane)->setWhite(i_Meter->field_0x2f08);
((J2DPicture*)i_Meter->field_0x11a0.pane)->setBlack(i_Meter->field_0x2f0c);
((J2DPicture*)i_Meter->field_0x1130.pane)->setWhite(i_Meter->field_0x2f08);
((J2DPicture*)i_Meter->field_0x1130.pane)->setBlack(i_Meter->field_0x2f0c);
i_Meter->field_0x0f38[4].mUserArea = 0;
}
}
/* 801FA378-801FA53C .text dMeter_magicAlpha__FP15sub_meter_class */
void dMeter_magicAlpha(sub_meter_class* i_Meter) {
if (dComIfGs_getMaxMagic() == 0 || (i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x20) && !dComIfGp_checkPlayerStatus1(0, daPyStts1_UNK2000_e)) ||
dMenu_getCollectMode() == 4 || (i_Meter->mStatusFlags & dMtrStts_UNK200000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80000_e) || dMeter_isAuctionFlag() || (i_Meter->mStatusFlags & dMtrStts_UNK400000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) || ((strcmp(dComIfGp_getStartStageName(), "Ojhous") == 0) && dComIfGp_getMiniGameType() == 6))
{
if (i_Meter->field_0x10f8.mUserArea > 0) {
i_Meter->field_0x10f8.mUserArea--;
} else {
i_Meter->field_0x10f8.mUserArea = 0;
}
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK8_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10_e)) {
if (i_Meter->field_0x10f8.mUserArea < 3) {
i_Meter->field_0x10f8.mUserArea++;
} else if (i_Meter->field_0x10f8.mUserArea > 3) {
i_Meter->field_0x10f8.mUserArea--;
} else {
i_Meter->field_0x10f8.mUserArea = 3;
}
} else {
if (i_Meter->field_0x10f8.mUserArea < 5) {
i_Meter->field_0x10f8.mUserArea++;
} else {
i_Meter->field_0x10f8.mUserArea = 5;
}
}
i_Meter->field_0x2fc0 = fopMsgM_valueIncrease(5, i_Meter->field_0x10f8.mUserArea, 0);
}
/* 801FA53C-801FA670 .text dMeter_gaugeAlpha__FP15sub_meter_class */
void dMeter_gaugeAlpha(sub_meter_class* i_Meter) {
f32 dVar4 = i_Meter->field_0x2fbc;
f32 dVar3 = i_Meter->field_0x2fc0;
for (s32 i = 0; i < 20; i++) {
fopMsgM_setNowAlpha(&i_Meter->mHeart[i], dVar4);
fopMsgM_setNowAlpha(&i_Meter->mHeartShadow[i], dVar4);
}
i_Meter->field_0x0f00.mNowAlpha = i_Meter->field_0x0f00.mNowAlpha * dVar4;
i_Meter->field_0x0f00.pane->setAlpha(i_Meter->field_0x0f00.mNowAlpha * dVar4);
for (s32 i = 0; i < 8; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x0f38[i], dVar3);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x10f8, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x11a0, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x11d8, dVar3);
}
/* 801FA670-801FA6C4 .text dMeter_menuInit__FP15sub_meter_class */
void dMeter_menuInit(sub_meter_class* i_Meter) {
i_Meter->field_0x0250.mUserArea = 10;
i_Meter->field_0x0288.mUserArea = 0;
i_Meter->field_0x02c0.mUserArea = 0;
i_Meter->field_0x0100[0].mUserArea = dComIfGs_isDungeonItemCompass();
}
/* 801FA6C4-801FA6F8 .text dMeter_menuMove__FP15sub_meter_class */
void dMeter_menuMove(sub_meter_class* i_Meter) {
dMeter_menuLRMove(i_Meter);
dMeter_menuPlusMove(i_Meter);
}
/* 801FA6F8-801FA918 .text dMeter_menuLRMove__FP15sub_meter_class */
void dMeter_menuLRMove(sub_meter_class* i_Meter) {
/* Nonmatching */
s16 iVar3;
s16 iVar4;
s16 sVar5;
f32 dVar6;
f32 dVar7;
static u8 frame = dMenu_getPushMenuButton();
if ((i_Meter->mStatusFlags & dMtrStts_UNK200000_e) || dMenu_getCollectMode() == 5) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0250);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0288);
} else {
sVar5 = 0x14;
if (frame != dMenu_getPushMenuButton()) {
if (frame != 0 && dMenu_getPushMenuButton() != 0) {
sVar5 = g_menuHIO.field_0x92 * 2;
i_Meter->field_0x0250.mUserArea = sVar5;
i_Meter->field_0x0288.mUserArea = 1;
} else {
i_Meter->field_0x0288.mUserArea = 0;
}
frame = dMenu_getPushMenuButton();
}
iVar4 = sVar5 / 2;
if (dMenu_getPushMenuButton() != 0) {
if (i_Meter->field_0x0250.mUserArea != 0) {
i_Meter->field_0x0250.mUserArea--;
}
} else {
if (i_Meter->field_0x0250.mUserArea < iVar4) {
i_Meter->field_0x0250.mUserArea++;
} else if (i_Meter->field_0x0250.mUserArea > iVar4) {
i_Meter->field_0x0250.mUserArea--;
}
}
iVar3 = (int)i_Meter->field_0x0250.mUserArea;
int iVar4_2 = iVar4;
if (iVar3 > iVar4_2) {
dVar6 = fopMsgM_valueIncrease(iVar4_2, sVar5 - iVar3, 0);
if (i_Meter->field_0x0288.mUserArea != 0) {
dVar7 = 1.0f;
} else {
dVar7 = fopMsgM_valueIncrease(iVar4_2, i_Meter->field_0x0250.mUserArea - iVar4_2, 0);
}
} else {
dVar6 = fopMsgM_valueIncrease(iVar4_2, iVar3, 0);
if (i_Meter->field_0x0288.mUserArea != 0) {
dVar7 = 1.0f;
} else {
dVar7 = fopMsgM_valueIncrease(iVar4_2, iVar4_2 - i_Meter->field_0x0250.mUserArea, 0);
}
}
fopMsgM_paneTrans(&i_Meter->field_0x0250, dVar6 * 20.0f, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x0288, dVar6 * -20.0f, 0.0f);
fopMsgM_setNowAlpha(&i_Meter->field_0x0250, dVar7);
fopMsgM_setNowAlpha(&i_Meter->field_0x0288, dVar7);
}
}
/* 801FA918-801FBB28 .text dMeter_menuPlusMove__FP15sub_meter_class */
void dMeter_menuPlusMove(sub_meter_class* i_Meter) {
f32 fVar1;
int iVar3;
f32 x;
f32 y;
f32 dVar13;
f32 dVar12;
static s16 moveFlag = 0;
static s16 moveStatus = 0;
f32 local_98_x[] = {0.0f, 0.0f, 0.0f};
f32 local_98_y[] = {0.0f, 0.0f, 0.0f};
if (i_Meter->field_0x0100[0].mUserArea != (s16)dComIfGs_isDungeonItemCompass()) {
if ((s32)dMeter_mMapCtrlDisp.field_0x0 == 0x0) {
if (dMap_isEnableDispMap()) {
dMeter_mMapCtrlDisp.field_0x0 = 0x1;
dMeter_mMapCtrlDisp.field_0x1 = 0;
}
i_Meter->field_0x3029 = 1;
}
i_Meter->field_0x3027 = 0;
i_Meter->field_0x0100[0].mUserArea = dComIfGs_isDungeonItemCompass();
}
if (
(i_Meter->mStatusFlags & dMtrStts_UNK4000_e) ||
fopOvlpM_IsDoingReq() ||
((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x100)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK8_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK10_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK80000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK800_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK1000_e) ||
(
(!(i_Meter->mStatusFlags & dMtrStts_UNK400_e) &&
(strcmp(dComIfGp_getNextStageName(), "MajyuE") == 0)) &&
!dComIfGs_isEventBit(dSv_event_flag_c::UNK_0801)
) ||
(
!(i_Meter->mStatusFlags & dMtrStts_UNK400_e) &&
(
strcmp(dComIfGp_getNextStageName(), "Hyrule") == 0 ||
strcmp(dComIfGp_getNextStageName(), "Hyroom") == 0 ||
strcmp(dComIfGp_getNextStageName(), "kenroom") == 0
)
) ||
dComIfGp_getMiniGameType() == 1 ||
dComIfGp_getMiniGameType() == 6
) {
if (moveStatus != 1) {
moveFlag = 1;
}
moveStatus = 1;
} else {
if (i_Meter->field_0x3020 == 1 || i_Meter->field_0x3020 == 2) {
if (((s32)dMeter_mMapCtrlDisp.field_0x0 != 0x0) && dMap_isEnableDispMap()) {
if (moveStatus != 2) {
moveFlag = 1;
}
moveStatus = 2;
} else if (dMap_isEnableDispMap()) {
if (moveStatus != 3) {
moveFlag = 1;
}
moveStatus = 3;
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK400_e) && (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) != dSv_save_c::STAGE_TOTG)) {
if (moveStatus != 7) {
moveFlag = 1;
}
moveStatus = 7;
} else {
if (moveStatus != 6) {
moveFlag = 1;
}
moveStatus = 6;
}
} else if (i_Meter->field_0x3020 == 5 || i_Meter->field_0x3020 == 9 || i_Meter->field_0x3020 == 3) {
if (moveStatus != 4) {
moveFlag = 1;
}
moveStatus = 4;
} else {
if (moveStatus != 5) {
moveFlag = 1;
}
moveStatus = 5;
}
}
if (moveFlag != 0) {
if (i_Meter->field_0x02c0.mUserArea >= 5) {
i_Meter->field_0x02c0.mUserArea = 5;
} else {
i_Meter->field_0x02c0.mUserArea++;
}
switch (moveStatus) {
case 2:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
i_Meter->field_0x02c0.pane->hide();
sMainParts1->search('cry1')->hide();
sMainParts1->search('cry3')->hide();
i_Meter->field_0x0100[0].pane->show();
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) ||
(dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1 && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
i_Meter->field_0x0100[1].pane->show();
} else {
i_Meter->field_0x0100[1].pane->hide();
}
i_Meter->field_0x0100[2].pane->show();
moveFlag = 0;
break;
case 3:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
i_Meter->field_0x02c0.pane->show();
sMainParts1->search('cry1')->show();
i_Meter->field_0x0100[0].pane->hide();
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) ||
(dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1 && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
i_Meter->field_0x0100[1].pane->show();
sMainParts1->search('cry3')->show();
} else {
i_Meter->field_0x0100[1].pane->hide();
sMainParts1->search('cry3')->hide();
}
i_Meter->field_0x0100[2].pane->hide();
moveFlag = 0;
break;
case 4:
x = g_meterHIO.field_0x9c + 0x52;
y = g_meterHIO.field_0x9e;
i_Meter->field_0x02c0.pane->show();
sMainParts1->search('cry1')->show();
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) ||
(dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1 && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
sMainParts1->search('cry3')->show();
} else {
sMainParts1->search('cry3')->hide();
}
i_Meter->field_0x0100[0].pane->hide();
i_Meter->field_0x0100[1].pane->hide();
i_Meter->field_0x0100[2].pane->hide();
moveFlag = 0;
break;
case 5:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
i_Meter->field_0x02c0.pane->hide();
sMainParts1->search('cry1')->hide();
sMainParts1->search('cry3')->hide();
i_Meter->field_0x0100[0].pane->hide();
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) ||
(dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1 && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
i_Meter->field_0x0100[1].pane->show();
} else {
i_Meter->field_0x0100[1].pane->hide();
}
i_Meter->field_0x0100[2].pane->show();
moveFlag = 0;
break;
case 6:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0) ||
(dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1 && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
i_Meter->field_0x02c0.pane->show();
sMainParts1->search('cry1')->hide();
sMainParts1->search('cry3')->show();
} else {
i_Meter->field_0x02c0.pane->hide();
sMainParts1->search('cry1')->hide();
sMainParts1->search('cry3')->hide();
}
i_Meter->field_0x0100[0].pane->hide();
i_Meter->field_0x0100[1].pane->hide();
i_Meter->field_0x0100[2].pane->hide();
moveFlag = 0;
break;
case 7:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
if ((dComIfGs_isEventBit(dSv_event_flag_c::UNK_0908) && (dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 0)) ||
((dStage_stagInfo_GetUpButton(dComIfGp_getStageStagInfo()) == 1) && !(i_Meter->mStatusFlags & dMtrStts_UNK400000_e)))
{
i_Meter->field_0x02c0.pane->show();
sMainParts1->search('cry1')->show();
sMainParts1->search('cry3')->show();
} else {
i_Meter->field_0x02c0.pane->hide();
sMainParts1->search('cry1')->show();
sMainParts1->search('cry3')->hide();
}
i_Meter->field_0x0100[0].pane->hide();
i_Meter->field_0x0100[1].pane->hide();
i_Meter->field_0x0100[2].pane->hide();
moveFlag = 0;
break;
default:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
break;
}
} else {
if (i_Meter->field_0x02c0.mUserArea <= 0) {
i_Meter->field_0x02c0.mUserArea = 0;
} else {
i_Meter->field_0x02c0.mUserArea--;
}
switch (moveStatus) {
case 2:
case 3:
case 6:
case 7:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
break;
case 4:
x = g_meterHIO.field_0x9c + 0x52;
y = g_meterHIO.field_0x9e;
break;
case 5:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
break;
default:
x = g_meterHIO.field_0x9c;
y = g_meterHIO.field_0x9e;
break;
}
}
if (moveStatus == 4 || moveStatus == 5) {
local_98_x[0] = ((i_Meter->field_0x12f0.mPosCenter.x + i_Meter->field_0x12f0.mSize.x / 2.0f) - i_Meter->field_0x0100[0].mPosCenterOrig.x) -
i_Meter->field_0x0100[0].mSizeOrig.x / 2.0f;
fVar1 = i_Meter->field_0x12f0.mPosCenter.y;
local_98_y[0] = fVar1 - i_Meter->field_0x0100[0].mPosCenterOrig.y;
local_98_x[1] = i_Meter->field_0x12f0.mPosCenter.x - i_Meter->field_0x0100[1].mPosCenterOrig.x;
local_98_y[1] =
((fVar1 - i_Meter->field_0x12f0.mSize.y / 2.0f) - i_Meter->field_0x0100[1].mPosCenterOrig.y) - i_Meter->field_0x0100[1].mSizeOrig.y / 2.0f;
local_98_x[2] = i_Meter->field_0x0100[2].mSizeOrig.x / 2.0f +
((i_Meter->field_0x1948.mPosCenter.x + i_Meter->field_0x16e0.mSize.x / 2.0f) - i_Meter->field_0x0100[2].mPosCenterOrig.x);
local_98_y[2] = i_Meter->field_0x1948.mPosCenter.y - i_Meter->field_0x0100[2].mPosCenterOrig.y;
} else {
s16 width = dMap_c::getMapDspSizeWidth();
s16 left = dMap_getMapDispPosLeftUpX();
local_98_x[2] = (left + width / 2.0f) - i_Meter->field_0x0100[1].mPosCenterOrig.x;
local_98_x[1] = (left + width / 2.0f) - i_Meter->field_0x0100[1].mPosCenterOrig.x;
local_98_x[0] = (left + width / 2.0f) - i_Meter->field_0x0100[1].mPosCenterOrig.x;
s16 height = dMap_c::getMapDspSizeHeight();
s16 top = dMap_getMapDispPosLeftUpY();
local_98_y[2] = (top + height / 2.0f) - i_Meter->field_0x0100[0].mPosCenterOrig.y;
local_98_y[1] = (top + height / 2.0f) - i_Meter->field_0x0100[0].mPosCenterOrig.y;
local_98_y[0] = (top + height / 2.0f) - i_Meter->field_0x0100[0].mPosCenterOrig.y;
}
dVar13 = dMap_getMapDispPosLeftUpX() - 0x19;
dVar12 = dMap_getMapDispPosLeftUpY() - 0x152;
cXyz* pcVar4 = dKyw_get_wind_vec();
iVar3 = cM_atan2s(pcVar4->x, pcVar4->z);
i_Meter->field_0x02f8.pane->rotate(
i_Meter->field_0x02f8.mSizeOrig.x, i_Meter->field_0x02f8.mSizeOrig.y / 2.0f, ROTATE_Z, (iVar3 * 180.0f) / 0x8000 - 180.0f
);
fopMsgM_paneTrans(&i_Meter->field_0x02c0, x, y);
fopMsgM_paneTrans(&i_Meter->field_0x02f8, (dVar13 - 7.0f) + g_meterHIO.field_0x64, (dVar12 + 9.0f) + g_meterHIO.field_0x66);
for (s32 i = 0; i < 3; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x0100[i], x + local_98_x[i], y + local_98_y[i]);
}
dVar13 = fopMsgM_valueIncrease(5, 5 - i_Meter->field_0x02c0.mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x02c0, dVar13);
dMap_c::setMapAlpha(dVar13 * 255.0f);
if (!dKyw_gbwind_use_check() || dMenu_flag()) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x02f8);
} else {
fopMsgM_setNowAlpha(&i_Meter->field_0x02f8, dVar13);
}
for (s32 i = 0; i < 3; i++) {
if (!dMenu_flag()) {
fopMsgM_setNowAlpha(&i_Meter->field_0x0100[i], dVar13);
} else {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x0100[i]);
}
}
}
/* 801FBB28-801FBC70 .text dMeter_magicLength__FP15sub_meter_classf */
void dMeter_magicLength(sub_meter_class* i_Meter, f32 param_2) {
f32 dVar1 = (i_Meter->field_0x0f38[0].mSizeOrig.x * 8.0f);
i_Meter->field_0x10f8.mSize.x = (dVar1 * param_2) + (i_Meter->field_0x10f8.mSizeOrig.x - dVar1);
i_Meter->field_0x10f8.mPosCenter.x = i_Meter->field_0x10f8.mPosTopLeftOrig.x + i_Meter->field_0x10f8.mSize.x / 2.0f;
fopMsgM_cposMove(&i_Meter->field_0x10f8);
((MyPicture*)i_Meter->field_0x11a0.pane)->m134 = 1;
((MyPicture*)i_Meter->field_0x11a0.pane)->m124 = 0.0f;
((MyPicture*)i_Meter->field_0x11a0.pane)->m128 = 0.0f;
((MyPicture*)i_Meter->field_0x11a0.pane)->m12C = 1.6875f;
((MyPicture*)i_Meter->field_0x11a0.pane)->m130 = 0.8125f;
i_Meter->field_0x11a0.mSize.x = i_Meter->field_0x10f8.mSize.x + (i_Meter->field_0x11a0.mSizeOrig.x - i_Meter->field_0x10f8.mSizeOrig.x);
i_Meter->field_0x11a0.mPosCenter.x = i_Meter->field_0x11a0.mPosTopLeftOrig.x + i_Meter->field_0x11a0.mSize.x / 2.0f;
fopMsgM_cposMove(&i_Meter->field_0x11a0);
((MyPicture*)i_Meter->field_0x1130.pane)->m134 = 1;
((MyPicture*)i_Meter->field_0x1130.pane)->m124 = 0.0f;
((MyPicture*)i_Meter->field_0x1130.pane)->m128 = 0.0f;
((MyPicture*)i_Meter->field_0x1130.pane)->m12C = 1.6875f;
((MyPicture*)i_Meter->field_0x1130.pane)->m130 = 0.8125f;
i_Meter->field_0x1130.mSize.x = i_Meter->field_0x10f8.mSize.x + (i_Meter->field_0x1130.mSizeOrig.x - i_Meter->field_0x10f8.mSizeOrig.x);
i_Meter->field_0x1130.mPosCenter.x = i_Meter->field_0x1130.mPosTopLeftOrig.x + i_Meter->field_0x1130.mSize.x / 2.0f;
fopMsgM_cposMove(&i_Meter->field_0x1130);
}
/* 801FBC70-801FBC90 .text dMeter_windInit__FP15sub_meter_class */
void dMeter_windInit(sub_meter_class* i_Meter) {
dMeter_windID = fpcM_ERROR_PROCESS_ID_e;
dMeter_windStatus = 0;
dComIfGp_setOperateWindCancelOff();
}
/* 801FBC90-801FBCEC .text dMeter_metronomeInit__FP15sub_meter_class */
void dMeter_metronomeInit(sub_meter_class* i_Meter) {
i_Meter->field_0x3028 = 0;
if (dMn_c != NULL) {
dMn_c->_delete();
delete dMn_c;
dMn_c = NULL;
}
}
/* 801FBCEC-801FBD7C .text dMeter_windMove__FP15sub_meter_class */
void dMeter_windMove(sub_meter_class* i_Meter) {
if (dMeter_windStatus != dComIfGp_getOperateWind()) {
if (dComIfGp_getOperateWind() == 2) {
dMeter_windID = fopMsgM_Create(fpcNm_OPERATE_WIND_e, NULL, NULL);
}
dMeter_windStatus = dComIfGp_getOperateWind();
} else {
if (dComIfGp_getOperateWind() != 2 && dMeter_windID != fpcM_ERROR_PROCESS_ID_e && fopMsgM_SearchByID(dMeter_windID) == NULL) {
dMeter_windID = fpcM_ERROR_PROCESS_ID_e;
}
}
}
/* 801FBD7C-801FBF24 .text dMeter_metronomeMove__FP15sub_meter_class */
void dMeter_metronomeMove(sub_meter_class* i_Meter) {
if (dComIfGp_getMetronome() && !(i_Meter->mStatusFlags & dMtrStts_UNK8_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK10_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e))
{
if (i_Meter->field_0x3028 == 0 && dMn_c == NULL) {
dMn_c = new dMetronome_c();
JUT_ASSERT(9008, dMn_c != NULL);
dMn_c->_create();
dMn_c->initialize();
}
if (dMn_c != NULL && ((u8)dMn_c->_open() != 0)) {
dMn_c->_move();
}
i_Meter->field_0x3028 = 1;
} else {
if (i_Meter->field_0x3028 == 1) {
if (dMn_c != NULL) {
if ((u8)dMn_c->_close() == 0) {
dMn_c->_move();
} else {
i_Meter->field_0x3028 = 2;
}
}
} else if (i_Meter->field_0x3028 == 2 && dMn_c != NULL) {
i_Meter->field_0x3028 = 0;
dMn_c->_delete();
delete dMn_c;
dMn_c = NULL;
}
}
}
/* 801FBF24-801FC190 .text dMeter_rupyAlpha__FP15sub_meter_class */
void dMeter_rupyAlpha(sub_meter_class* i_Meter) {
f32 dVar7;
f32 fVar8;
cXyz local_2c;
cXyz local_38;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x80)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80_e) || (i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK400000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK8_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK10_e) || (i_Meter->mStatusFlags & dMtrStts_UNK800000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20_e) ||
(dComIfGp_getMiniGameType() == 1 || dComIfGp_getMiniGameType() == 6))
{
dVar7 = dMeter_alphaClose(&i_Meter->field_0x2a20.mUserArea, &i_Meter->field_0x19f0[0].mUserArea);
if (i_Meter->mpRupyParticle != NULL) {
i_Meter->mpRupyParticle->stopDrawParticle();
} else {
local_2c.set(i_Meter->field_0x2a20.mPosCenter.x - 320.0f, i_Meter->field_0x2a20.mPosCenter.y - 240.0f, 0.0f);
i_Meter->mpRupyParticle = dComIfGp_particle_set2Dfore(dPa_name::ID_HM_J2_RUPYLIGHT, &local_2c);
}
} else {
fVar8 = dMeter_alphaOpen(&i_Meter->field_0x2a20.mUserArea, &i_Meter->field_0x19f0[0].mUserArea);
dVar7 = fVar8;
if (i_Meter->mpRupyParticle != NULL) {
i_Meter->mpRupyParticle->playDrawParticle();
} else {
local_38.set(i_Meter->field_0x2a20.mPosCenter.x - 320.0f, i_Meter->field_0x2a20.mPosCenter.y - 240.0f, 0.0f);
i_Meter->mpRupyParticle = dComIfGp_particle_set2Dfore(dPa_name::ID_HM_J2_RUPYLIGHT, &local_38);
}
}
for (s32 i = 0; i < 4; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x19f0[i], dVar7);
fopMsgM_setNowAlpha(&i_Meter->field_0x1b40[i], dVar7);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x2a20, dVar7);
fopMsgM_setNowAlpha(&i_Meter->field_0x2a58, dVar7);
}
/* 801FC190-801FC2FC .text dMeter_rupyInit__FP15sub_meter_class */
void dMeter_rupyInit(sub_meter_class* i_Meter) {
char acStack_3c[16];
int local_2c[5];
cXyz local_48;
i_Meter->field_0x2a20.mUserArea = 0;
i_Meter->field_0x19f0[0].mUserArea = 0;
i_Meter->field_0x19f0[0].mUserArea = 1;
i_Meter->mRupyCount = dComIfGs_getRupee();
local_2c[0] = i_Meter->mRupyCount / 1000;
local_2c[1] = (i_Meter->mRupyCount % 1000) / 100;
local_2c[2] = (i_Meter->mRupyCount % 100) / 10;
local_2c[3] = i_Meter->mRupyCount % 10;
for (s32 i = 0; i < 4; i++) {
dMeter_rupy_num(acStack_3c, local_2c[i]);
((J2DPicture*)i_Meter->field_0x19f0[i].pane)->changeTexture(acStack_3c, 0);
((J2DPicture*)i_Meter->field_0x1b40[i].pane)->changeTexture(acStack_3c, 0);
}
g_dComIfG_gameInfo.play.mItemNowRupee = i_Meter->mRupyCount;
local_48.set(i_Meter->field_0x2a20.mPosCenter.x - 320.0f, i_Meter->field_0x2a20.mPosCenter.y - 240.0f, 0.0f);
i_Meter->mpRupyParticle = dComIfGp_particle_set2Dfore(dPa_name::ID_HM_J2_RUPYLIGHT, &local_48);
}
/* 801FC2FC-801FC624 .text dMeter_rupyMove__FP15sub_meter_class */
void dMeter_rupyMove(sub_meter_class* i_Meter) {
int local_28[4];
char acStack_38[16];
if (i_Meter->field_0x19f0[1].mUserArea != dComIfGs_getWalletSize()) {
dMeter_walletChange(i_Meter);
i_Meter->field_0x19f0[1].mUserArea = dComIfGs_getWalletSize();
}
if (dComIfGp_getItemRupeeCount() != 0) {
int targetRupees = (dComIfGs_getRupee() + dComIfGp_getItemRupeeCount());
int maxRupees;
if (dComIfGs_getWalletSize() == 0) {
maxRupees = 200;
} else if (dComIfGs_getWalletSize() == 1) {
maxRupees = 1000;
} else {
maxRupees = 5000;
}
if (targetRupees > maxRupees) {
targetRupees = maxRupees;
} else if (targetRupees < 0) {
targetRupees = 0;
}
i_Meter->mAdjustRupy = targetRupees - i_Meter->mRupyCount;
dComIfGs_setRupee(targetRupees);
g_dComIfG_gameInfo.play.mItemRupeeCount = 0;
if (labs(i_Meter->mAdjustRupy) >= 5) {
rupy_soundOnFlag = 1;
}
}
if (i_Meter->mAdjustRupy != 0) {
if (i_Meter->mAdjustRupy > 0) {
i_Meter->mRupyCount++;
i_Meter->mAdjustRupy--;
if (rupy_soundOnFlag != 0) {
if (i_Meter->mAdjustRupy != 0) {
if (rupy_soundSetFlag == 0) {
mDoAud_seStart(JA_SE_LUPY_INC_CNT_1);
rupy_soundSetFlag = 1;
} else {
rupy_soundSetFlag = 0;
}
} else {
mDoAud_seStart(JA_SE_LUPY_INC_CNT_2);
rupy_soundSetFlag = 0;
rupy_soundOnFlag = 0;
}
}
} else {
if (i_Meter->mAdjustRupy < 0) {
i_Meter->mRupyCount--;
i_Meter->mAdjustRupy++;
if (rupy_soundOnFlag != 0) {
if (i_Meter->mAdjustRupy != 0) {
if (rupy_soundSetFlag == 0) {
mDoAud_seStart(JA_SE_LUPY_DEC_CNT_1);
rupy_soundSetFlag = 1;
} else {
rupy_soundSetFlag = 0;
}
} else {
mDoAud_seStart(JA_SE_LUPY_DEC_CNT_2);
rupy_soundSetFlag = 0;
rupy_soundOnFlag = 0;
}
}
}
}
int uVar3 = i_Meter->mRupyCount;
local_28[0] = uVar3 / 1000;
local_28[1] = (uVar3 % 1000) / 100;
local_28[2] = (uVar3 % 100) / 10;
local_28[3] = uVar3 % 10;
for (s32 i = 0; i < 4; i++) {
dMeter_rupy_num(acStack_38, local_28[i]);
((J2DPicture*)i_Meter->field_0x19f0[i].pane)->changeTexture(acStack_38, 0);
((J2DPicture*)i_Meter->field_0x1b40[i].pane)->changeTexture(acStack_38, 0);
}
g_dComIfG_gameInfo.play.mItemNowRupee = i_Meter->mRupyCount;
}
dMeter_rupyAlpha(i_Meter);
}
/* 801FC624-801FC85C .text dMeter_walletChange__FP15sub_meter_class */
void dMeter_walletChange(sub_meter_class* i_Meter) {
if (dComIfGs_getWalletSize() == 0) {
f32 x = (i_Meter->field_0x19f0[1].mPosTopLeftOrig.x - i_Meter->field_0x19f0[0].mPosTopLeftOrig.x);
i_Meter->field_0x19f0[0].pane->hide();
i_Meter->field_0x1b40[0].pane->hide();
((J2DPicture*)i_Meter->field_0x2a20.pane)->setBlack(0x0A280A00);
((J2DPicture*)i_Meter->field_0x2a20.pane)->setWhite(0x28FF28FF);
fopMsgM_paneTrans(&i_Meter->field_0x2a20, x, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2a58, x, 0.0f);
} else if (dComIfGs_getWalletSize() == 1) {
i_Meter->field_0x19f0[0].pane->show();
i_Meter->field_0x1b40[0].pane->show();
((J2DPicture*)i_Meter->field_0x2a20.pane)->setBlack(0x1414A000);
((J2DPicture*)i_Meter->field_0x2a20.pane)->setWhite(0x32C8FFFF);
fopMsgM_paneTrans(&i_Meter->field_0x2a20, 0.0f, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2a58, 0.0f, 0.0f);
} else {
i_Meter->field_0x19f0[0].pane->show();
i_Meter->field_0x1b40[0].pane->show();
((J2DPicture*)i_Meter->field_0x2a20.pane)->setBlack(0x50280000);
((J2DPicture*)i_Meter->field_0x2a20.pane)->setWhite(0xFF8C00FF);
fopMsgM_paneTrans(&i_Meter->field_0x2a20, 0.0f, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2a58, 0.0f, 0.0f);
}
}
/* 801FC85C-801FCA98 .text dMeter_keyLight__FP18fopMsgM_pane_classPsf */
void dMeter_keyLight(fopMsgM_pane_class* param_1, s16* param_2, f32 param_3) {
f32 dVar6;
f32 dVar7;
f32 dVar8;
f32 dVar10;
if (param_1->mUserArea < param_2[0]) {
dVar8 = 0.0f;
dVar7 = dVar8;
} else if (param_1->mUserArea < param_2[1]) {
dVar6 = fopMsgM_valueIncrease(param_2[1] - param_2[0], param_1->mUserArea - param_2[0], 0);
dVar8 = (dVar6 * 0.8f) + 0.2f;
dVar7 = dVar6 * 170.0f;
} else if (param_1->mUserArea < param_2[2]) {
dVar6 = fopMsgM_valueIncrease(param_2[2] - param_2[1], param_1->mUserArea - param_2[1], 0);
dVar8 = 1.0f - (dVar6 * 0.2f);
dVar7 = 170.0f - (dVar6 * 90.0f);
} else if (param_1->mUserArea < param_2[3]) {
dVar6 = fopMsgM_valueIncrease(param_2[3] - param_2[2], param_1->mUserArea - param_2[2], 0);
dVar8 = (dVar6 * 0.2f) + 0.8f;
dVar7 = (dVar6 * 90.0f) + 80.0f;
} else {
dVar6 = fopMsgM_valueIncrease(param_2[4] - param_2[3], param_1->mUserArea - param_2[3], 0);
dVar8 = 1.0f;
dVar7 = 170.0f - (dVar6 * 170.0f);
}
if (param_1->mUserArea < param_2[4]) {
param_1->mUserArea++;
} else {
param_1->mUserArea = 1;
}
dVar10 = param_1->mSizeOrig.x * dVar8;
f32 dVar9 = param_1->mSizeOrig.y * dVar8;
f32 x = param_1->mPosTopLeftOrig.x - (dVar10 - param_1->mSizeOrig.x) / 2.0f;
f32 y = param_1->mPosTopLeftOrig.y - (dVar9 - param_1->mSizeOrig.y) / 2.0f;
param_1->pane->move(x, y);
param_1->pane->resize(dVar10, dVar9);
J2DPane* j2dPane = param_1->pane;
j2dPane->mBasePosition.x = (dVar10 / 2.0f);
j2dPane->mBasePosition.y = (dVar9 / 2.0f);
j2dPane->mRotationAxis = ROTATE_Z;
j2dPane->calcMtx();
param_1->mNowAlpha = dVar7 * param_3;
}
/* 801FCA98-801FCCA8 .text dMeter_keyRndLightFrame__FPs */
void dMeter_keyRndLightFrame(s16* param_1) {
param_1[0] = g_meterHIO.field_0x90 + cM_rndFX(g_meterHIO.field_0x9a);
param_1[1] = (param_1[0] + g_meterHIO.field_0x88) + cM_rndFX(g_meterHIO.field_0x92);
param_1[2] = (param_1[1] + g_meterHIO.field_0x8a) + cM_rndFX(g_meterHIO.field_0x94);
param_1[3] = (param_1[2] + g_meterHIO.field_0x8c) + cM_rndFX(g_meterHIO.field_0x96);
param_1[4] = (param_1[3] + g_meterHIO.field_0x8e) + cM_rndFX(g_meterHIO.field_0x98);
}
/* 801FCCA8-801FCE68 .text dMeter_keyAlpha__FP15sub_meter_class */
void dMeter_keyAlpha(sub_meter_class* i_Meter) {
f32 dVar5;
s16 local_28[5];
local_28[0] = 0x1e;
local_28[1] = 0x28;
local_28[2] = 0x2d;
local_28[3] = 0x32;
local_28[4] = 0x3A;
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x40)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80_e) || (i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK400000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK400_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK8_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10_e) || (i_Meter->mStatusFlags & dMtrStts_UNK800000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20_e))
{
dVar5 = dMeter_alphaClose(&i_Meter->field_0x1c90.mUserArea, &i_Meter->field_0x1ad0[0].mUserArea);
} else if (dStage_stagInfo_ChkKeyDisp(dComIfGp_getStageStagInfo()) != 0) {
dVar5 = dMeter_alphaOpen(&i_Meter->field_0x1c90.mUserArea, &i_Meter->field_0x1ad0[0].mUserArea);
} else {
dVar5 = dMeter_alphaClose(&i_Meter->field_0x1c90.mUserArea, &i_Meter->field_0x1ad0[0].mUserArea);
}
for (s32 i = 0; i < 2; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x1ad0[i], dVar5);
fopMsgM_setNowAlpha(&i_Meter->field_0x1c20[i], dVar5);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x1c90, dVar5);
if (i_Meter->field_0x19b8.mUserArea == 1) {
dMeter_keyRndLightFrame(&i_Meter->field_0x2fda);
}
dMeter_keyLight(&i_Meter->field_0x1980, local_28, dVar5);
dMeter_keyLight(&i_Meter->field_0x19b8, &i_Meter->field_0x2fda, dVar5);
}
/* 801FCE68-801FCF28 .text dMeter_keyInit__FP15sub_meter_class */
void dMeter_keyInit(sub_meter_class* i_Meter) {
int local_38[2];
char acStack_30[24];
i_Meter->field_0x19b8.mUserArea = 1;
i_Meter->field_0x1980.mUserArea = 1;
i_Meter->field_0x1c90.mUserArea = 0;
i_Meter->field_0x1ad0[0].mUserArea = 0;
i_Meter->field_0x301d = dComIfGs_getKeyNum();
local_38[0] = i_Meter->field_0x301d / 10;
local_38[1] = i_Meter->field_0x301d % 10;
for (s32 i = 0; i < 2; i++) {
dMeter_rupy_num(acStack_30, local_38[i]);
fopMsgM_blendInit(&i_Meter->field_0x1ad0[i], acStack_30);
fopMsgM_blendInit(&i_Meter->field_0x1c20[i], acStack_30);
}
}
/* 801FCF28-801FD09C .text dMeter_keyMove__FP15sub_meter_class */
void dMeter_keyMove(sub_meter_class* i_Meter) {
s16 sVar1;
int local_38[2];
char acStack_30[24];
if (dStage_stagInfo_ChkKeyDisp(dComIfGp_getStageStagInfo())) {
if (dComIfGp_getItemKeyNumCount() != 0) {
sVar1 = dComIfGs_getKeyNum() + dComIfGp_getItemKeyNumCount();
if (sVar1 > 99) {
sVar1 = 99;
} else if (sVar1 < 0) {
sVar1 = 0;
}
i_Meter->field_0x300e = sVar1 - (u16)i_Meter->field_0x301d;
dComIfGs_setKeyNum((u8)sVar1);
g_dComIfG_gameInfo.play.mItemKeyNumCount = 0;
}
sVar1 = i_Meter->field_0x300e;
if (sVar1 != 0) {
if (sVar1 > 0) {
i_Meter->field_0x301d++;
i_Meter->field_0x300e--;
} else if (sVar1 < 0) {
i_Meter->field_0x301d--;
i_Meter->field_0x300e++;
}
local_38[0] = i_Meter->field_0x301d / 10;
local_38[1] = i_Meter->field_0x301d % 10;
for (s32 i = 0; i < 2; i++) {
dMeter_rupy_num(acStack_30, local_38[i]);
fopMsgM_blendDraw(&i_Meter->field_0x1ad0[i], acStack_30);
fopMsgM_blendDraw(&i_Meter->field_0x1c20[i], acStack_30);
}
}
}
dMeter_keyAlpha(i_Meter);
}
/* 801FD09C-801FD104 .text dMeter_compassRotate__FP18fopMsgM_pane_classP18fopMsgM_pane_classf */
void dMeter_compassRotate(fopMsgM_pane_class* param_1, fopMsgM_pane_class* param_2, f32 param_3) {
/* Nonmatching */
f32 offsetX = (param_1->pane->mBounds.f.x - param_1->pane->mBounds.i.x) / 2.0f;
f32 offsetY = (param_1->pane->mBounds.f.y - param_1->pane->mBounds.i.y) / 2.0f;
param_1->pane->rotate(offsetX, offsetY, ROTATE_Z, param_3);
}
/* 801FD104-801FD410 .text dMeter_compassGetOnProc__FP15sub_meter_class */
void dMeter_compassGetOnProc(sub_meter_class* i_Meter) {
switch (i_Meter->field_0x3020) {
case 1:
if (((s32)dMeter_mMapCtrlDisp.field_0x0 != 0) &&
(!(i_Meter->mStatusFlags & dMtrStts_UNK400_e) || dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dSv_save_c::STAGE_TOTG))
{
i_Meter->field_0x3020 = 2;
i_Meter->field_0x3029 = 1;
} else {
i_Meter->field_0x3020 = 5;
i_Meter->field_0x12f0.pane->show();
dMeter_clockShow(i_Meter);
dMeter_compassDirOpen(i_Meter);
i_Meter->field_0x3029 = 0;
}
break;
case 2:
if ((s32)dMeter_mMapCtrlDisp.field_0x0 == 0) {
i_Meter->field_0x12f0.pane->show();
dMeter_clockShow(i_Meter);
i_Meter->field_0x3020 = 5;
dMeter_compassDirOpen(i_Meter);
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_MAP_SHOW);
}
break;
case 5:
dMeter_compassDirOpen(i_Meter);
break;
case 3:
if ((CPad_CHECK_TRIG_RIGHT(0) && !CPad_CHECK_TRIG_UP(0) && !CPad_CHECK_TRIG_DOWN(0)) || i_Meter->field_0x1948.mUserArea != 0) {
i_Meter->field_0x3020 = 6;
i_Meter->field_0x1948.mUserArea = 1;
dMeter_compassWindOpen(i_Meter);
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_MAP_SHOW);
}
break;
case 6:
if (CPad_CHECK_TRIG_LEFT(0) && !CPad_CHECK_TRIG_UP(0) && !CPad_CHECK_TRIG_DOWN(0)) {
i_Meter->field_0x3020 = 8;
i_Meter->field_0x1948.mUserArea = 0;
dMeter_compassWindClose(i_Meter);
} else {
dMeter_compassWindOpen(i_Meter);
}
break;
case 8:
if (CPad_CHECK_TRIG_RIGHT(0) && !CPad_CHECK_TRIG_UP(0) && !CPad_CHECK_TRIG_DOWN(0)) {
i_Meter->field_0x3020 = 6;
i_Meter->field_0x1948.mUserArea = 1;
dMeter_compassWindOpen(i_Meter);
} else {
dMeter_compassWindClose(i_Meter);
}
break;
case 9:
dMeter_compassDirClose(i_Meter);
break;
case 7:
dMeter_compassAnimeMove(i_Meter);
break;
}
f32 dVar3 = (-(s16)(fopAcM_SearchByName(fpcNm_SHIP_e)->shape_angle.y + 0x8000) * 180.0f) / 0x8000;
dMeter_compassRotate(&i_Meter->field_0x1670, &i_Meter->field_0x16a8, (-dComIfGs_getTime() - 90.0f));
dMeter_compassRotate(&i_Meter->field_0x1248, &i_Meter->field_0x12f0, dVar3);
dMeter_compassRotate(&i_Meter->field_0x1280, &i_Meter->field_0x12f0, dVar3);
dMeter_clockMove(i_Meter);
}
/* 801FD410-801FD48C .text dMeter_compassGetOffProc__FP15sub_meter_class */
void dMeter_compassGetOffProc(sub_meter_class* i_Meter) {
switch (i_Meter->field_0x3020) {
case 3:
case 5:
i_Meter->field_0x3020 = 9;
case 9:
dMeter_compassDirClose(i_Meter);
break;
case 6:
case 7:
i_Meter->field_0x3020 = 8;
i_Meter->field_0x1948.mUserArea = 0;
case 8:
dMeter_compassWindClose(i_Meter);
break;
default:
dMeter_compassValueInit(i_Meter);
break;
}
}
/* 801FD48C-801FD6C8 .text dMeter_compassDirOpen__FP15sub_meter_class */
void dMeter_compassDirOpen(sub_meter_class* i_Meter) {
/* Nonmatching */
f32 dVar9;
f32 dVar8;
f32 dVar7;
f32 dVar6;
f32 dVar5;
f32 fVar1;
fVar1 = i_Meter->field_0x13d0.pane->mBounds.f.x - i_Meter->field_0x13d0.pane->mBounds.i.x;
dVar9 = ((i_Meter->field_0x1948.pane->mBounds.f.x - i_Meter->field_0x1948.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
dVar8 = ((i_Meter->field_0x1948.pane->mBounds.f.y - i_Meter->field_0x1948.pane->mBounds.i.y) / 2.0f);
dVar7 = ((i_Meter->field_0x16a8.pane->mBounds.f.x - i_Meter->field_0x16a8.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
dVar6 = ((i_Meter->field_0x16a8.pane->mBounds.f.y - i_Meter->field_0x16a8.pane->mBounds.i.y) / 2.0f);
i_Meter->field_0x12f0.mUserArea++;
if (i_Meter->field_0x12f0.mUserArea >= 5) {
i_Meter->field_0x12f0.mUserArea = 5;
i_Meter->field_0x3020 = 3;
dVar5 = 0.0f;
if (i_Meter->field_0x302a != 0) {
i_Meter->field_0x302a = 0;
mDoAud_seStart(JA_SE_MAP_SHOW_END);
}
} else {
dVar5 = fopMsgM_valueIncrease(5, 5 - i_Meter->field_0x12f0.mUserArea, 0);
dVar5 = (dVar5 * -(i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1948.mSizeOrig.x));
if (i_Meter->field_0x302a == 0) {
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_COMPASS_MOVE);
}
}
fopMsgM_paneTrans(&i_Meter->field_0x12f0, dVar5, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x16a8, dVar5, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x1948, dVar5, 0.0f);
i_Meter->field_0x16a8.pane->rotate(dVar7, dVar6, ROTATE_Z, 180.0f);
i_Meter->field_0x1948.pane->rotate(dVar9, dVar8, ROTATE_Z, 180.0f);
}
/* 801FD6C8-801FD8C0 .text dMeter_compassWindOpen__FP15sub_meter_class */
void dMeter_compassWindOpen(sub_meter_class* i_Meter) {
/* Nonmatching */
f32 fVar1 = i_Meter->field_0x13d0.pane->mBounds.f.x - i_Meter->field_0x13d0.pane->mBounds.i.x;
f32 dVar9 = ((i_Meter->field_0x1948.pane->mBounds.f.x - i_Meter->field_0x1948.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
f32 dVar8 = ((i_Meter->field_0x1948.pane->mBounds.f.y - i_Meter->field_0x1948.pane->mBounds.i.y) / 2.0f);
f32 dVar7 = ((i_Meter->field_0x16a8.pane->mBounds.f.x - i_Meter->field_0x16a8.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
f32 dVar6 = ((i_Meter->field_0x16a8.pane->mBounds.f.y - i_Meter->field_0x16a8.pane->mBounds.i.y) / 2.0f);
i_Meter->field_0x12f0.mUserArea++;
f32 dVar5;
if (i_Meter->field_0x12f0.mUserArea >= 10) {
i_Meter->field_0x12f0.mUserArea = 10;
i_Meter->field_0x3020 = 7;
dVar5 = 0.0f;
if (i_Meter->field_0x302a != 0) {
i_Meter->field_0x302a = 0;
mDoAud_seStart(JA_SE_MAP_SHOW_END);
}
} else {
dVar5 = (fopMsgM_valueIncrease(5, 10 - i_Meter->field_0x12f0.mUserArea, 0) * -180.0f);
if (i_Meter->field_0x302a == 0) {
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_COMPASS_MOVE);
}
}
i_Meter->field_0x16a8.pane->rotate(dVar7, dVar6, ROTATE_Z, dVar5);
i_Meter->field_0x1948.pane->rotate(dVar9, dVar8, ROTATE_Z, dVar5);
}
/* 801FD8C0-801FDB64 .text dMeter_compassWindClose__FP15sub_meter_class */
void dMeter_compassWindClose(sub_meter_class* i_Meter) {
/* Nonmatching */
s16 sVar6;
f32 dVar11;
f32 dVar10;
f32 dVar9;
f32 dVar8;
f32 dVar7;
f32 fVar1;
fVar1 = i_Meter->field_0x13d0.pane->mBounds.f.x - i_Meter->field_0x13d0.pane->mBounds.i.x;
dVar11 = ((i_Meter->field_0x1948.pane->mBounds.f.x - i_Meter->field_0x1948.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
dVar10 = ((i_Meter->field_0x1948.pane->mBounds.f.y - i_Meter->field_0x1948.pane->mBounds.i.y) / 2.0f);
dVar9 = ((i_Meter->field_0x16a8.pane->mBounds.f.x - i_Meter->field_0x16a8.pane->mBounds.i.x) / 2.0f - (fVar1 / 2.0f));
dVar8 = ((i_Meter->field_0x16a8.pane->mBounds.f.y - i_Meter->field_0x16a8.pane->mBounds.i.y) / 2.0f);
i_Meter->field_0x12f0.mUserArea--;
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
sVar6 = 0;
} else {
sVar6 = 1;
}
if (i_Meter->field_0x12f0.mUserArea <= 5) {
i_Meter->field_0x12f0.mUserArea = 5;
if ((dComIfGp_roomControl_getTimePass() && !i_Meter->field_0x2f68) ||
(!dComIfGp_roomControl_getTimePass() && i_Meter->field_0x2f68) ||
(!dComIfGp_roomControl_getTimePass() && i_Meter->field_0x3012 != sVar6))
{
dMeter_clockShow(i_Meter);
i_Meter->field_0x3020 = 6;
i_Meter->field_0x1948.mUserArea = 1;
} else {
i_Meter->field_0x3020 = 3;
}
dVar7 = -180.0f;
if (i_Meter->field_0x302a != 0) {
i_Meter->field_0x302a = 0;
mDoAud_seStart(JA_SE_MAP_SHOW_END);
}
} else {
dVar7 = (fopMsgM_valueIncrease(5, 10 - i_Meter->field_0x12f0.mUserArea, 0) * -180.0f);
if (i_Meter->field_0x302a == 0) {
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_COMPASS_MOVE);
}
}
i_Meter->field_0x16a8.pane->rotate(dVar9, dVar8, ROTATE_Z, dVar7);
i_Meter->field_0x1948.pane->rotate(dVar11, dVar10, ROTATE_Z, dVar7);
}
/* 801FDB64-801FDDA4 .text dMeter_compassDirClose__FP15sub_meter_class */
void dMeter_compassDirClose(sub_meter_class* i_Meter) {
/* Nonmatching */
f32 dVar9;
f32 dVar8;
f32 dVar7;
f32 dVar6;
f32 dVar5;
f32 fVar2;
fVar2 = i_Meter->field_0x13d0.pane->mBounds.f.x - i_Meter->field_0x13d0.pane->mBounds.i.x;
dVar9 = ((i_Meter->field_0x1948.pane->mBounds.f.x - i_Meter->field_0x1948.pane->mBounds.i.x) / 2.0f - (fVar2 / 2.0f));
dVar8 = ((i_Meter->field_0x1948.pane->mBounds.f.y - i_Meter->field_0x1948.pane->mBounds.i.y) / 2.0f);
dVar7 = ((i_Meter->field_0x16a8.pane->mBounds.f.x - i_Meter->field_0x16a8.pane->mBounds.i.x) / 2.0f - (fVar2 / 2.0f));
dVar6 = ((i_Meter->field_0x16a8.pane->mBounds.f.y - i_Meter->field_0x16a8.pane->mBounds.i.y) / 2.0f);
i_Meter->field_0x12f0.mUserArea = i_Meter->field_0x12f0.mUserArea + -1;
if (i_Meter->field_0x12f0.mUserArea <= 0) {
dMeter_compassValueInit(i_Meter);
i_Meter->field_0x12f0.mUserArea = 0;
dVar5 = -(i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1948.mSizeOrig.x);
if (i_Meter->field_0x302a != 0) {
i_Meter->field_0x302a = 0;
mDoAud_seStart(JA_SE_MAP_SHOW_END);
}
} else {
dVar5 = fopMsgM_valueIncrease(5, 5 - i_Meter->field_0x12f0.mUserArea, 0);
dVar5 = (dVar5 * -(i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1948.mSizeOrig.x));
if (i_Meter->field_0x302a == 0) {
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_COMPASS_MOVE);
}
}
fopMsgM_paneTrans(&i_Meter->field_0x12f0, dVar5, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x16a8, dVar5, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x1948, dVar5, 0.0f);
i_Meter->field_0x16a8.pane->rotate(dVar7, dVar6, ROTATE_Z, 180.0f);
i_Meter->field_0x1948.pane->rotate(dVar9, dVar8, ROTATE_Z, 180.0f);
}
/* 801FDDA4-801FDEC4 .text dMeter_compassAnimeMove__FP15sub_meter_class */
void dMeter_compassAnimeMove(sub_meter_class* i_Meter) {
s16 sVar2;
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
sVar2 = 0;
} else {
sVar2 = 1;
}
if ((!CPad_CHECK_TRIG_LEFT(0) || CPad_CHECK_TRIG_UP(0) || CPad_CHECK_TRIG_DOWN(0)) &&
(!dComIfGp_roomControl_getTimePass() || i_Meter->field_0x2f68) && (dComIfGp_roomControl_getTimePass() || !i_Meter->field_0x2f68))
{
if (dComIfGp_roomControl_getTimePass()) {
return;
}
if (i_Meter->field_0x3012 == sVar2) {
return;
}
}
i_Meter->field_0x3020 = 8;
i_Meter->field_0x1948.mUserArea = 0;
i_Meter->field_0x302a = 1;
mDoAud_seStart(JA_SE_MAP_CANCEL);
}
/* 801FDEC4-801FE0D0 .text dMeter_compassValueInit__FP15sub_meter_class */
void dMeter_compassValueInit(sub_meter_class* i_Meter) {
/* Nonmatching */
f32 x;
f32 dVar4;
f32 dVar5;
f32 dVar6;
f32 dVar7;
f32 dVar8;
if (dComIfGp_roomControl_getTimePass()) {
i_Meter->field_0x2f68 = 1.0f;
} else {
i_Meter->field_0x2f68 = 0.0f;
}
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
i_Meter->field_0x3012 = 0;
} else {
i_Meter->field_0x3012 = 1;
}
i_Meter->field_0x12f0.mUserArea = 0;
i_Meter->field_0x302a = 0;
dVar8 = i_Meter->field_0x13d0.pane->mBounds.f.x - i_Meter->field_0x13d0.pane->mBounds.i.x;
dVar7 = i_Meter->field_0x1948.pane->mBounds.f.x - i_Meter->field_0x1948.pane->mBounds.i.x;
dVar6 = i_Meter->field_0x1948.pane->mBounds.f.y - i_Meter->field_0x1948.pane->mBounds.i.y;
dVar5 = i_Meter->field_0x16a8.pane->mBounds.f.x - i_Meter->field_0x16a8.pane->mBounds.i.x;
dVar4 = i_Meter->field_0x16a8.pane->mBounds.f.y - i_Meter->field_0x16a8.pane->mBounds.i.y;
x = -(i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1948.mSizeOrig.x);
fopMsgM_paneTrans(&i_Meter->field_0x12f0, x, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x1948, x, 0.0f);
i_Meter->field_0x16a8.pane->rotate((dVar5 / 2.0f) - (dVar8 / 2.0f), dVar4 / 2.0f, ROTATE_Z, 180.0f);
i_Meter->field_0x1948.pane->rotate((dVar7 / 2.0f) - (dVar8 / 2.0f), dVar6 / 2.0f, ROTATE_Z, 180.0f);
i_Meter->field_0x1210.pane->hide();
i_Meter->field_0x12f0.pane->hide();
dMeter_clockHide(i_Meter);
i_Meter->field_0x3020 = 1;
}
/* 801FE0D0-801FE230 .text dMeter_compassAlpha__FP15sub_meter_class */
void dMeter_compassAlpha(sub_meter_class* i_Meter) {
f32 dVar3 = i_Meter->field_0x2f6c;
fopMsgM_setNowAlpha(&i_Meter->field_0x1210, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x12f0, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1398, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x13d0, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1408, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1440, dVar3);
for (s32 i = 0; i < 3; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x1478[i], dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1868[0], dVar3);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x1520, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1558, dVar3);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setNowAlpha(&i_Meter->field_0x1590[i], dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1718[0], dVar3);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x1670, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x16a8, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x16e0, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x17f8, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1830, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1910, dVar3);
fopMsgM_setNowAlpha(&i_Meter->field_0x1948, dVar3);
}
/* 801FE230-801FE2EC .text dMeter_compassInit__FP15sub_meter_class */
void dMeter_compassInit(sub_meter_class* i_Meter) {
((MyPicture*)i_Meter->field_0x1248.pane)->m134 = 1;
((MyPicture*)i_Meter->field_0x1248.pane)->m124 = -1.0f;
((MyPicture*)i_Meter->field_0x1248.pane)->m128 = 0.0f;
((MyPicture*)i_Meter->field_0x1248.pane)->m12C = 1.0f;
((MyPicture*)i_Meter->field_0x1248.pane)->m130 = 1.0f;
((MyPicture*)i_Meter->field_0x1280.pane)->m134 = 1;
((MyPicture*)i_Meter->field_0x1280.pane)->m124 = -1.0f;
((MyPicture*)i_Meter->field_0x1280.pane)->m128 = 0.0f;
((MyPicture*)i_Meter->field_0x1280.pane)->m12C = 1.0f;
((MyPicture*)i_Meter->field_0x1280.pane)->m130 = 1.0f;
if ((s32)dMeter_mMapCtrlDisp.field_0x0 != 0) {
i_Meter->field_0x3029 = 1;
} else {
i_Meter->field_0x3029 = 0;
}
i_Meter->field_0x1948.mUserArea = 0;
dMeter_compassValueInit(i_Meter);
dMeter_clockMultiInit(i_Meter);
}
/* 801FE2EC-801FE444 .text dMeter_compassMove__FP15sub_meter_class */
void dMeter_compassMove(sub_meter_class* i_Meter) {
if ((i_Meter->mStatusFlags & dMtrStts_UNK4000_e) || ((i_Meter->mStatusFlags & dMtrStts_UNK40_e) && dComIfGp_event_checkHind(0x100)) ||
(i_Meter->mStatusFlags & dMtrStts_UNK200000_e))
{
dMeter_compassValueInit(i_Meter);
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK100_e) || (i_Meter->mStatusFlags & dMtrStts_UNK80_e) || (i_Meter->mStatusFlags & dMtrStts_UNK100000_e) ||
(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK8_e) || (i_Meter->mStatusFlags & dMtrStts_UNK10_e) ||
((i_Meter->mStatusFlags & dMtrStts_UNK800000_e) || (i_Meter->mStatusFlags & dMtrStts_UNK20_e)) || dComIfGp_getMiniGameType() == 1 ||
dComIfGp_getMiniGameType() == 8)
{
dMeter_compassValueInit(i_Meter);
} else if ((i_Meter->mStatusFlags & dMtrStts_UNK400_e) && (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) != dSv_save_c::STAGE_TOTG)) {
dMeter_compassGetOnProc(i_Meter);
dMeter_compassAlpha(i_Meter);
if (i_Meter->field_0x3027 == 0) {
dMap_c::setMapDispMode(1);
} else {
dMap_c::setMapDispMode(0);
}
} else {
dMeter_compassGetOffProc(i_Meter);
dMeter_compassAlpha(i_Meter);
}
dMeter_clockMultiMove(i_Meter);
}
/* 801FE444-801FE8DC .text dMeter_clockShow__FP15sub_meter_class */
void dMeter_clockShow(sub_meter_class* i_Meter) {
if (dComIfGp_roomControl_getTimePass()) {
i_Meter->field_0x2f68 = 1.0f;
} else {
i_Meter->field_0x2f68 = 0.0f;
}
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
i_Meter->field_0x3012 = 0;
} else {
i_Meter->field_0x3012 = 1;
}
dMeter_clockInit(i_Meter);
if (dComIfGp_roomControl_getTimePass()) {
i_Meter->field_0x1398.pane->show();
i_Meter->field_0x13d0.pane->show();
i_Meter->field_0x1408.pane->show();
i_Meter->field_0x1440.pane->show();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1478[i].pane->show();
}
i_Meter->field_0x1520.pane->show();
i_Meter->field_0x1558.pane->show();
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1590[i].pane->show();
}
i_Meter->field_0x1670.pane->show();
i_Meter->field_0x16a8.pane->show();
i_Meter->field_0x16e0.pane->hide();
i_Meter->field_0x17f8.pane->hide();
i_Meter->field_0x1830.pane->hide();
i_Meter->field_0x1910.pane->hide();
i_Meter->field_0x1948.pane->hide();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1868[i].pane->hide();
}
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1718[i].pane->hide();
}
} else {
i_Meter->field_0x1398.pane->hide();
i_Meter->field_0x13d0.pane->hide();
i_Meter->field_0x1408.pane->hide();
i_Meter->field_0x1440.pane->hide();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1478[i].pane->hide();
}
i_Meter->field_0x1520.pane->hide();
i_Meter->field_0x1558.pane->hide();
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1590[i].pane->hide();
}
i_Meter->field_0x1670.pane->hide();
i_Meter->field_0x16a8.pane->hide();
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
i_Meter->field_0x16e0.pane->show();
i_Meter->field_0x17f8.pane->hide();
i_Meter->field_0x1830.pane->show();
i_Meter->field_0x1910.pane->show();
i_Meter->field_0x1948.pane->show();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1868[i].pane->hide();
}
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1718[i].pane->hide();
}
((J2DPicture*)i_Meter->field_0x1948.pane)->setCornerColor(0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF, 0x0000FFFF);
} else {
i_Meter->field_0x16e0.pane->show();
i_Meter->field_0x17f8.pane->show();
i_Meter->field_0x1830.pane->hide();
i_Meter->field_0x1910.pane->hide();
i_Meter->field_0x1948.pane->show();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1868[i].pane->hide();
}
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1718[i].pane->show();
}
((J2DPicture*)i_Meter->field_0x1948.pane)->setCornerColor(0x0000FFFF, 0x000000FF, 0x000000FF, 0x000000FF);
}
}
}
/* 801FE8DC-801FE9A4 .text dMeter_clockHide__FP15sub_meter_class */
void dMeter_clockHide(sub_meter_class* i_Meter) {
i_Meter->field_0x1398.pane->hide();
i_Meter->field_0x13d0.pane->hide();
i_Meter->field_0x1408.pane->hide();
i_Meter->field_0x1440.pane->hide();
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1478[i].pane->hide();
i_Meter->field_0x1868[i].pane->hide();
}
i_Meter->field_0x1520.pane->hide();
i_Meter->field_0x1558.pane->hide();
for (s32 i = 0; i < 4; i++) {
i_Meter->field_0x1590[i].pane->hide();
i_Meter->field_0x1718[i].pane->hide();
}
i_Meter->field_0x1670.pane->hide();
i_Meter->field_0x16a8.pane->hide();
i_Meter->field_0x16e0.pane->hide();
i_Meter->field_0x17f8.pane->hide();
i_Meter->field_0x1830.pane->hide();
i_Meter->field_0x1910.pane->hide();
i_Meter->field_0x1948.pane->hide();
}
/* 801FE9A4-801FEA50 .text dMeter_clockInit__FP15sub_meter_class */
void dMeter_clockInit(sub_meter_class* i_Meter) {
static s16 initPosX[] = {0x0071, 0x0062, 0x009A};
static s16 initPosY[] = {0x01B3, 0x018C, 0x0194};
f32 fVar1;
f32 fVar2;
fVar1 = i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1830.mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x1948.mPosTopLeftOrig.y + i_Meter->field_0x1830.mPosTopLeftOrig.y;
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1718[i].mUserArea = 1;
i_Meter->field_0x1478[i].mUserArea = 1;
i_Meter->field_0x1868[i].mPosCenter.x = fVar1 - initPosX[i];
i_Meter->field_0x1868[i].mPosCenter.y = fVar2 - initPosY[i];
}
i_Meter->field_0x1718[3].mUserArea = 1;
i_Meter->field_0x1910.mUserArea = 0;
}
/* 801FEA50-801FEC2C .text dMeter_clockMove__FP15sub_meter_class */
void dMeter_clockMove(sub_meter_class* i_Meter) {
JUtility::TColor color1;
JUtility::TColor color2;
if (i_Meter->field_0x1910.mUserArea <= 0x3c) {
fopMsgM_valueIncrease(0x3c, i_Meter->field_0x1910.mUserArea, 0);
} else {
fopMsgM_valueIncrease(0x3c, 0x78 - i_Meter->field_0x1910.mUserArea, 0);
}
if (i_Meter->field_0x1910.mUserArea < 0x78) {
i_Meter->field_0x1910.mUserArea++;
} else {
i_Meter->field_0x1910.mUserArea = 0;
}
for (s32 i = 0; i < 3; i++) {
i_Meter->field_0x1868[i].mPosCenter.x = g_meterHIO.field_0x6c[i];
i_Meter->field_0x1868[i].mPosCenter.y = g_meterHIO.field_0x72[i];
}
if (dComIfGp_roomControl_getTimePass()) {
if (i_Meter->field_0x1478[0].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fe4);
}
if (i_Meter->field_0x1478[1].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fe8);
}
if (i_Meter->field_0x1478[2].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fec);
}
dMeter_clockStarLight(&i_Meter->field_0x1478[0], &i_Meter->field_0x2fe4);
dMeter_clockStarLight(&i_Meter->field_0x1478[1], &i_Meter->field_0x2fe8);
dMeter_clockStarLight(&i_Meter->field_0x1478[2], &i_Meter->field_0x2fec);
} else {
if (i_Meter->field_0x1718[0].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fe4);
}
if (i_Meter->field_0x1718[1].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fe8);
}
if (i_Meter->field_0x1718[2].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2fec);
}
if (i_Meter->field_0x1718[3].mUserArea == 1) {
dMeter_starLightFrame(&i_Meter->field_0x2ff0);
}
dMeter_clockStarLight(&i_Meter->field_0x1718[0], &i_Meter->field_0x2fe4);
dMeter_clockStarLight(&i_Meter->field_0x1718[1], &i_Meter->field_0x2fe8);
dMeter_clockStarLight(&i_Meter->field_0x1718[2], &i_Meter->field_0x2fec);
dMeter_clockStarLight(&i_Meter->field_0x1718[3], &i_Meter->field_0x2ff0);
}
}
/* 801FEC2C-801FED10 .text dMeter_clockStarLight__FP18fopMsgM_pane_classPs */
void dMeter_clockStarLight(fopMsgM_pane_class* param_1, s16* param_2) {
u8 uVar1;
f32 dVar4;
JUtility::TColor black;
if (param_1->mUserArea < param_2[0]) {
dVar4 = fopMsgM_valueIncrease(param_2[0], param_1->mUserArea, 0);
} else {
dVar4 = fopMsgM_valueIncrease(param_2[1] - param_2[0], param_2[1] - param_1->mUserArea, 0);
}
uVar1 = dVar4 * 255.0f;
black.b = uVar1;
black.g = uVar1;
black.r = uVar1;
black.a = 0x00;
((J2DPicture*)param_1->pane)->setBlack(black);
if (param_1->mUserArea < param_2[1]) {
param_1->mUserArea++;
} else {
param_1->mUserArea = 1;
}
}
/* 801FED10-801FEE00 .text dMeter_starLightFrame__FPs */
void dMeter_starLightFrame(s16* param_1) {
param_1[0] = g_meterHIO.field_0x90 + cM_rndFX(g_meterHIO.field_0x9a);
param_1[1] = (param_1[0] + g_meterHIO.field_0x88) + cM_rndFX(g_meterHIO.field_0x92);
}
/* 801FEE00-801FEF40 .text dMeter_clockMultiInit__FP15sub_meter_class */
void dMeter_clockMultiInit(sub_meter_class* i_Meter) {
static f32 scaleX[] = {0.813f, 0.75f, 0.5f};
static f32 scaleY[] = {0.667f, 0.583f, 0.604f};
JKRArchive* pArchive = dComIfGp_getSwimResArchive();
ResTIMG* texture1 = (ResTIMG*)JKRArchive::getGlbResource('TIMG', "swimtime_meter_mask.bti", pArchive);
JKRArchive* pArchive2 = dComIfGp_getMenuArchive();
ResTIMG* texture2 = (ResTIMG*)JKRArchive::getGlbResource('TIMG', "screw_01.bti", pArchive2);
JUT_ASSERT(10626, texture1 != NULL && texture2 != NULL);
for (s32 i = 0; i < 3; i++) {
clock[i].init(texture1, texture2, 1.0f / scaleX[i], 1.0f / scaleY[i]);
}
}
/* 801FEF40-801FF184 .text dMeter_clockMultiMove__FP15sub_meter_class */
void dMeter_clockMultiMove(sub_meter_class* i_Meter) {
/* Nonmatching */
static f32 scaleX[] = {0.813f, 0.75f, 0.5f};
static f32 scaleY[] = {0.667f, 0.583f, 0.604f};
s16 sVar5;
s16 sVar4;
s16 fVar2;
s16 fVar1;
for (s32 i = 0; i < 3; i++) {
sVar4 = i_Meter->field_0x1948.mPosTopLeftOrig.x + i_Meter->field_0x1830.mPosTopLeftOrig.x;
sVar5 = i_Meter->field_0x1948.mPosTopLeftOrig.y + i_Meter->field_0x1830.mPosTopLeftOrig.y;
fVar1 = i_Meter->field_0x1868[i].mPosCenter.x;
fVar2 = i_Meter->field_0x1868[i].mPosCenter.y;
clock[i].setPos(sVar4, sVar5, sVar4 + i_Meter->field_0x1830.mSizeOrig.x, sVar5 + i_Meter->field_0x1830.mSizeOrig.y);
GXColor color1 = {0xFF, 0XFF, 0XFF, 0XFF};
clock[i].mBlack.r = color1.r;
clock[i].mBlack.g = color1.g;
clock[i].mBlack.b = color1.b;
clock[i].mBlack.a = color1.a;
GXColor color2 = {0x00, 0x00, 0XFF, 0x00};
clock[i].mWhite.r = color2.r;
clock[i].mWhite.g = color2.g;
clock[i].mWhite.b = color2.b;
clock[i].mWhite.a = color2.a;
clock[i].setScroll(0, 0, 0);
clock[i].setScroll(1, fVar1, fVar2);
clock[i].setScale((100.0f * (1.0f / scaleX[i]) / g_meterHIO.field_0x78[i]), (100.0f * (1.0f / scaleY[i])) / g_meterHIO.field_0x78[i]);
}
}
/* 801FF184-801FF1F8 .text dMeter_mapInit__FP15sub_meter_class */
void dMeter_mapInit(sub_meter_class* i_Meter) {
i_Meter->field_0x3027 = 0xFF;
i_Meter->field_0x0100[0].mUserArea = dComIfGs_isDungeonItemCompass();
dMeter_mMapCtrlDisp.field_0x0 = 0;
dMeter_mMapCtrlDisp.field_0x4 = g_meter_mapHIO.field_0xc - g_meter_mapHIO.field_0x8;
dMeter_mMapCtrlDisp.initMapCtrlDisp();
}
/* 801FF1F8-801FF684 .text dMeter_mapMove__FP15sub_meter_class */
void dMeter_mapMove(sub_meter_class* i_Meter) {
static s16 mapTimer = 0;
static u8 stageFlag = false;
static s32 stayNo = dComIfGp_roomControl_getStayNo();
if (fopOvlpM_IsDoingReq() == 0) {
if (i_Meter->field_0x3027 == 0xFF) {
stageFlag = 1;
} else {
if (stayNo != dComIfGp_roomControl_getStayNo()) {
stageFlag = 2;
stayNo = dComIfGp_roomControl_getStayNo();
}
}
}
if (!(i_Meter->mStatusFlags & dMtrStts_UNK4000_e) && (!(i_Meter->mStatusFlags & dMtrStts_UNK40_e) || !dComIfGp_event_checkHind(0x100)) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK100_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK80_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK8_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK10_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e) && dMap_isEnableDispMap() &&
((strcmp(dComIfGp_getNextStageName(), "MajyuE") != 0) || dComIfGs_isEventBit(dSv_event_flag_c::UNK_0801)))
{
if ((i_Meter->mStatusFlags & dMtrStts_UNK400_e) && (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) != dSv_save_c::STAGE_TOTG)) {
if (((s32)dMeter_mMapCtrlDisp.field_0x0 != 0) && dMap_isEnableDispMap()) {
dMeter_mMapCtrlDisp.field_0x0 = 0;
dMeter_mMapCtrlDisp.field_0x1 = 7;
}
} else {
if (!CPad_CHECK_TRIG_UP(0) && !CPad_CHECK_TRIG_DOWN(0) && dComIfGp_getMiniGameType() != 1 &&
(CPad_CHECK_TRIG_LEFT(0) != 0 || CPad_CHECK_TRIG_RIGHT(0)))
{
if (CPad_CHECK_TRIG_LEFT(0) != 0) {
if (dMap_c::getMapAlpha() != 0 && ((s32)dMeter_mMapCtrlDisp.field_0x0 != 0)) {
if (dMap_isEnableDispMap()) {
dMeter_mMapCtrlDisp.field_0x0 = 0;
dMeter_mMapCtrlDisp.field_0x1 = 0;
}
i_Meter->field_0x3029 = 0;
mDoAud_seStart(JA_SE_MAP_CANCEL);
}
} else if (CPad_CHECK_TRIG_RIGHT(0) != 0 && dMap_c::getMapAlpha() != 0) {
if ((s32)dMeter_mMapCtrlDisp.field_0x0 == 0) {
if (dMap_isEnableDispMap()) {
dMeter_mMapCtrlDisp.field_0x0 = 1;
dMeter_mMapCtrlDisp.field_0x1 = 0;
}
i_Meter->field_0x3029 = 1;
mDoAud_seStart(JA_SE_MAP_SHOW);
} else if (i_Meter->field_0x3027 != 0) {
i_Meter->field_0x3027 = 0;
mDoAud_seStart(JA_SE_MAP_ZOOM);
} else {
i_Meter->field_0x3027 = 1;
mDoAud_seStart(JA_SE_MAP_ZOOM);
}
}
} else if (i_Meter->field_0x3029 != 0 && i_Meter->field_0x3020 == 1 && (s32)dMeter_mMapCtrlDisp.field_0x0 == 0 && dMap_isEnableDispMap())
{
dMeter_mMapCtrlDisp.field_0x0 = 1;
dMeter_mMapCtrlDisp.field_0x1 = 7;
}
if (stageFlag == 1) {
stageFlag = 0;
if ((s32)dMeter_mMapCtrlDisp.field_0x0 == 0) {
if (dMap_isEnableDispMap()) {
dMeter_mMapCtrlDisp.field_0x0 = 1;
dMeter_mMapCtrlDisp.field_0x1 = 0;
}
i_Meter->field_0x3029 = 1;
i_Meter->field_0x3027 = 0;
}
} else if (stageFlag == 2) {
stageFlag = 0;
i_Meter->field_0x3027 = 0;
}
if (i_Meter->field_0x3027 == 0) {
dMap_c::setMapDispMode(1);
} else {
dMap_c::setMapDispMode(0);
}
if ((s32)dMeter_mMapCtrlDisp.field_0x0 != 0 && mapTimer != 6) {
mapTimer = 6;
}
}
}
dMeter_mMapCtrlDisp.moveMapCtrlDisp();
dMeter_recollect_boss_data();
}
/* 801FF684-801FF76C .text dMeter_arwInit__FP15sub_meter_class */
void dMeter_arwInit(sub_meter_class* i_Meter) {
u8 bVar2;
u8 uVar1;
bVar2 = daArrow_c::getKeepType();
uVar1 = bVar2;
if (bVar2 > 3) {
uVar1 = 0;
}
for (s32 i = 0; i < 2; i++) {
JKRArchive* archive = dComIfGp_getItemIconArchive();
JKRArchive::readTypeResource(i_Meter->arrowTex[i], 0xc00, 'TIMG', arrowTexImage[uVar1], archive);
DCStoreRangeNoSync(i_Meter->arrowTex[i], 0xc00);
((J2DPicture*)i_Meter->field_0x2940[i].pane)->changeTexture(i_Meter->arrowTex[i], 0);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2940[i]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x29b0[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2940[i]);
fopMsgM_setAlpha(&i_Meter->field_0x29b0[i]);
i_Meter->field_0x2f24[i] = 0;
}
}
/* 801FF76C-801FFEB0 .text dMeter_arwMove__FP15sub_meter_class */
void dMeter_arwMove(sub_meter_class* i_Meter) {
static const u16 particleName[] = {
dPa_name::ID_HM_J2_ARWG_FLAME00,
dPa_name::ID_HM_J2_ARWI_COLD00,
dPa_name::ID_HM_J2_ARWF_LIGHT00,
};
f32 dVar15;
f32 dVar16;
cXyz local_6c;
cXyz local_78;
JKRArchive* archive;
static u8 arrowType = daArrow_c::getKeepType();
static u8 oldType = arrowType;
dVar16 = (i_Meter->field_0x29b0[0].mPosCenterOrig.x - i_Meter->field_0x29b0[1].mPosCenterOrig.x);
if (
dComIfGp_checkPlayerStatus0(0, daPyStts0_BOW_AIM_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK4000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK40_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK200000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK80_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK20000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK8_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK10_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK20_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK100_e) &&
dComIfGp_getMiniGameType() != 8
) {
if (arrowType != daArrow_c::getKeepType()) {
archive = dComIfGp_getItemIconArchive();
JKRArchive::readTypeResource(i_Meter->arrowTex[0], 0xc00, 'TIMG', arrowTexImage[arrowType], archive);
DCStoreRangeNoSync(i_Meter->arrowTex[0], 0xc00);
((J2DPicture*)i_Meter->field_0x2940[0].pane)->changeTexture(i_Meter->arrowTex[0], 0);
oldType = arrowType;
arrowType = daArrow_c::getKeepType();
archive = dComIfGp_getItemIconArchive();
JKRArchive::readTypeResource(i_Meter->arrowTex[1], 0xc00, 'TIMG', arrowTexImage[arrowType], archive);
DCStoreRangeNoSync(i_Meter->arrowTex[1], 0xc00);
((J2DPicture*)i_Meter->field_0x2940[1].pane)->changeTexture(i_Meter->arrowTex[1], 0);
i_Meter->field_0x29b0[0].mUserArea = 0;
if (i_Meter->field_0x29b0[1].mUserArea < 2) {
i_Meter->field_0x29b0[1].mUserArea++;
}
for (s32 i = 0; i < 2; i++) {
if (i_Meter->field_0x2f24[i] != NULL) {
i_Meter->field_0x2f24[i]->becomeInvalidEmitter();
i_Meter->field_0x2f24[i]->stopDrawParticle();
i_Meter->field_0x2f24[i]->quitImmortalEmitter();
i_Meter->field_0x2f24[i] = 0;
}
}
}
if (oldType != 0) {
if (i_Meter->field_0x2f24[0] == NULL) {
local_6c.set(i_Meter->field_0x29b0[0].mPosCenter.x - 320.0f, i_Meter->field_0x29b0[0].mPosCenter.y - 240.0f, 0.0f);
i_Meter->field_0x2f24[0] = dComIfGp_particle_set2Dfore(particleName[oldType * 1 - 1], &local_6c);
}
} else {
if (i_Meter->field_0x2f24[0] != NULL) {
i_Meter->field_0x2f24[0]->becomeInvalidEmitter();
i_Meter->field_0x2f24[0]->stopDrawParticle();
i_Meter->field_0x2f24[0]->quitImmortalEmitter();
i_Meter->field_0x2f24[0] = NULL;
}
}
if (arrowType != 0) {
if (i_Meter->field_0x2f24[1] == NULL) {
local_78.set(i_Meter->field_0x29b0[0].mPosCenter.x - 320.0f, i_Meter->field_0x29b0[1].mPosCenter.y - 240.0f, 0.0f);
i_Meter->field_0x2f24[1] = dComIfGp_particle_set2Dfore(particleName[arrowType * 1 - 1], &local_78);
}
} else {
if (i_Meter->field_0x2f24[1] != NULL) {
i_Meter->field_0x2f24[1]->becomeInvalidEmitter();
i_Meter->field_0x2f24[1]->stopDrawParticle();
i_Meter->field_0x2f24[1]->quitImmortalEmitter();
i_Meter->field_0x2f24[1] = NULL;
}
}
if (i_Meter->field_0x29b0[1].mUserArea == 0) {
i_Meter->field_0x29b0[1].mUserArea = 1;
}
if (i_Meter->field_0x29b0[0].mUserArea < 10) {
i_Meter->field_0x29b0[0].mUserArea++;
if (i_Meter->field_0x29b0[0].mUserArea == 10) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2940[0]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x29b0[0]);
fopMsgM_setInitAlpha(&i_Meter->field_0x2940[1]);
fopMsgM_setInitAlpha(&i_Meter->field_0x29b0[1]);
for (s32 i = 0; i < 2; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x2940[i], dVar16, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x29b0[i], dVar16, 0.0f);
}
} else {
dVar15 = fopMsgM_valueIncrease(10, i_Meter->field_0x29b0[0].mUserArea, 0);
dVar16 = (f32)(dVar16 * dVar15);
for (s32 i = 0; i < 2; i++) {
fopMsgM_paneTrans(&i_Meter->field_0x2940[i], dVar16, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x29b0[i], dVar16, 0.0f);
}
fopMsgM_setNowAlpha(&i_Meter->field_0x2940[1], dVar15);
fopMsgM_setNowAlpha(&i_Meter->field_0x29b0[1], dVar15);
if (i_Meter->field_0x29b0[1].mUserArea == 2) {
f32 dVar16_2 = fopMsgM_valueIncrease(10, 10 - i_Meter->field_0x29b0[0].mUserArea, 0);
fopMsgM_setNowAlpha(&i_Meter->field_0x2940[0], dVar16_2);
fopMsgM_setNowAlpha(&i_Meter->field_0x29b0[0], dVar16_2);
} else {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2940[0]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x29b0[0]);
}
}
}
for (s32 i = 0; i < 2; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x2940[i]);
fopMsgM_setAlpha(&i_Meter->field_0x29b0[i]);
}
} else {
if (i_Meter->field_0x29b0[1].mUserArea != 0) {
i_Meter->field_0x29b0[1].mUserArea = 0;
}
if (i_Meter->field_0x29b0[0].mUserArea > 0) {
i_Meter->field_0x29b0[0].mUserArea--;
if (i_Meter->field_0x29b0[0].mUserArea == 0) {
for (s32 i = 0; i < 2; i++) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2940[i]);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x29b0[i]);
fopMsgM_setAlpha(&i_Meter->field_0x2940[i]);
fopMsgM_setAlpha(&i_Meter->field_0x29b0[i]);
if (i_Meter->field_0x2f24[i] != NULL) {
i_Meter->field_0x2f24[i]->becomeInvalidEmitter();
i_Meter->field_0x2f24[i]->stopDrawParticle();
i_Meter->field_0x2f24[i]->quitImmortalEmitter();
i_Meter->field_0x2f24[i] = NULL;
}
}
} else {
dVar16 = fopMsgM_valueIncrease(10, i_Meter->field_0x29b0[0].mUserArea, 0);
for (s32 i = 0; i < 2; i++) {
i_Meter->field_0x2940[i].pane->setAlpha(i_Meter->field_0x2940[i].mNowAlpha * dVar16);
i_Meter->field_0x29b0[i].pane->setAlpha(i_Meter->field_0x29b0[i].mNowAlpha * dVar16);
}
}
}
}
for (s32 i = 0; i < 2; i++) {
if (i_Meter->field_0x2f24[i] != NULL) {
i_Meter->field_0x2f24[i]->playDrawParticle();
f32 x = i_Meter->field_0x29b0[1].mPosCenter.x - 320.0f;
f32 y = i_Meter->field_0x29b0[1].mPosCenter.y - 240.0f;
i_Meter->field_0x2f24[i]->setGlobalTranslation(x, y, 0.0f);
i_Meter->field_0x2f24[i]->setGlobalAlpha(i_Meter->field_0x2940[i].mNowAlpha);
}
}
}
/* 801FFEB0-801FFF30 .text dMeter_moveItemInit__FP15sub_meter_class */
void dMeter_moveItemInit(sub_meter_class* i_Meter) {
JKRArchive* archive = dComIfGp_getItemIconArchive();
const char* pFilename = dItem_data::getTexture(0x27);
JKRArchive::readTypeResource(i_Meter->moveIconTex[0], 0xc00, 'TIMG', pFilename, archive);
DCStoreRangeNoSync(i_Meter->moveIconTex[0], 0xc00);
moveItemPane = new J2DPicture(i_Meter->moveIconTex[0]);
}
/* 801FFF30-80200398 .text dMeter_moveItemMove__FP15sub_meter_class */
void dMeter_moveItemMove(sub_meter_class* i_Meter) {
/* Nonmatching */
int iVar3;
f32 dVar4;
f32 in_f31;
f32 in_f30;
const char* pFilename;
JKRArchive* archive;
u8 uVar1 = g_menuHIO.field_0xc8;
if (dMeter_itemTimer == 0) {
if (dMeter_itemNum >= dInvSlot_ReserveFirst_e) {
archive = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGs_getItemReserve(dMeter_itemNum - dInvSlot_ReserveFirst_e));
JKRArchive::readTypeResource(i_Meter->moveIconTex[0], 0xc00, 'TIMG', pFilename, archive);
DCStoreRangeNoSync(i_Meter->moveIconTex[0], 0xc00);
moveItemPane->changeTexture(i_Meter->moveIconTex[0], 0);
} else if (dMeter_itemNum >= dInvSlot_BaitFirst_e) {
archive = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGs_getItemBait(dMeter_itemNum - dInvSlot_BaitFirst_e));
JKRArchive::readTypeResource(i_Meter->moveIconTex[0], 0xc00, 'TIMG', pFilename, archive);
DCStoreRangeNoSync(i_Meter->moveIconTex[0], 0xc00);
moveItemPane->changeTexture(i_Meter->moveIconTex[0], 0);
} else if (dMeter_itemNum >= dInvSlot_BeastFirst_e) {
archive = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(dComIfGs_getItemBeast(dMeter_itemNum - dInvSlot_BeastFirst_e));
JKRArchive::readTypeResource(i_Meter->moveIconTex[0], 0xc00, 'TIMG', pFilename, archive);
DCStoreRangeNoSync(i_Meter->moveIconTex[0], 0xc00);
moveItemPane->changeTexture(i_Meter->moveIconTex[0], 0);
} else {
u8 uVar2_2 = dComIfGs_getItem(dMeter_itemNum);
if (uVar2_2 == 0x35 || uVar2_2 == 0x36) {
uVar2_2 = 0x27;
}
archive = dComIfGp_getItemIconArchive();
pFilename = dItem_data::getTexture(uVar2_2);
JKRArchive::readTypeResource(i_Meter->moveIconTex[0], 0xc00, 'TIMG', pFilename, archive);
DCStoreRangeNoSync(i_Meter->moveIconTex[0], 0xc00);
moveItemPane->changeTexture(i_Meter->moveIconTex[0], 0);
}
}
if (dMeter_btn_chk == 0) {
in_f31 = (i_Meter->field_0x2080[0].mPosCenter.x - item_parts.mPosCenterOrig.x);
in_f30 = (i_Meter->field_0x2080[0].mPosCenter.y - item_parts.mPosCenterOrig.y);
} else if (dMeter_btn_chk == 1) {
in_f31 = (i_Meter->field_0x2080[1].mPosCenter.x - item_parts.mPosCenterOrig.x);
in_f30 = (i_Meter->field_0x2080[1].mPosCenter.y - item_parts.mPosCenterOrig.y);
} else if (dMeter_btn_chk == 2) {
in_f31 = (i_Meter->field_0x2080[2].mPosCenter.x - item_parts.mPosCenterOrig.x);
in_f30 = (i_Meter->field_0x2080[2].mPosCenter.y - item_parts.mPosCenterOrig.y);
}
dMeter_itemTimer++;
iVar3 = (s16)uVar1;
if (dMeter_itemTimer <= (s16)iVar3) {
dVar4 = fopMsgM_valueIncrease(iVar3, (s16)dMeter_itemTimer, 2);
item_parts.mPosCenter.x = item_parts.mPosCenterOrig.x + (in_f31 * dVar4);
item_parts.mPosCenter.y = item_parts.mPosCenterOrig.y + (in_f30 * dVar4);
f32 temp_f3 = item_parts.mSizeOrig.x * g_menuHIO.field_0x8;
f32 temp_f3_2 = temp_f3 - i_Meter->field_0x2080[0].mSizeOrig.x;
f32 temp_f2 = item_parts.mSizeOrig.y * g_menuHIO.field_0x8;
f32 temp_f2_2 = temp_f2 - i_Meter->field_0x2080[0].mSizeOrig.y;
switch (g_menuHIO.field_0xc9) {
case 1:
item_parts.mSize.x = temp_f3;
item_parts.mSize.y = temp_f2;
break;
case 2:
item_parts.mSize.x = temp_f3 - (temp_f3_2 * dVar4);
item_parts.mSize.y = temp_f2 - (temp_f2_2 * dVar4);
break;
default:
item_parts.mSize.x = item_parts.mSizeOrig.x;
item_parts.mSize.y = item_parts.mSizeOrig.y;
break;
}
item_parts.mPosTopLeft.x = item_parts.mPosCenter.x - item_parts.mSize.x / 2.0f;
item_parts.mPosTopLeft.y = item_parts.mPosCenter.y - item_parts.mSize.y / 2.0f;
if (dMeter_itemTimer == iVar3 + -1) {
dMeter_itemMoveFlag = 2;
}
}
}
/* 80200398-8020042C .text dMeter_moveItemDraw__FP15sub_meter_class */
void dMeter_moveItemDraw(sub_meter_class* i_Meter) {
s16 uVar1 = g_menuHIO.field_0xc8;
if (dMeter_itemMoveFlagCheck() && dMeter_itemTimer != 0 && moveItemPane != NULL) {
moveItemPane->draw(item_parts.mPosTopLeft.x, item_parts.mPosTopLeft.y, item_parts.mSize.x, item_parts.mSize.y, false, false, false);
if (dMeter_itemTimer >= uVar1) {
dMeter_itemMoveFlag = 0;
}
}
}
/* 8020042C-8020054C .text dMeter_swimTransY__FP15sub_meter_classf */
void dMeter_swimTransY(sub_meter_class* i_Meter, f32 param_2) {
for (s32 i = 0; i < 9; i++) {
i_Meter->field_0x2a90[i].mPosCenterOrig.y = param_2 + (i_Meter->field_0x2a90[i].mPosTopLeftOrig.y + i_Meter->field_0x2a90[i].mSizeOrig.y / 2.0f);
}
i_Meter->field_0x2c88.mPosCenterOrig.y = param_2 + (i_Meter->field_0x2c88.mPosTopLeftOrig.y + i_Meter->field_0x2c88.mSizeOrig.y / 2.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2c88, 0.0f, 0.0f);
i_Meter->field_0x2cc0.mPosCenterOrig.y = param_2 + (i_Meter->field_0x2cc0.mPosTopLeftOrig.y + i_Meter->field_0x2cc0.mSizeOrig.y / 2.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2cc0, 0.0f, 0.0f);
i_Meter->field_0x2d30.mPosCenterOrig.y = param_2 + (i_Meter->field_0x2d30.mPosTopLeftOrig.y + i_Meter->field_0x2d30.mSizeOrig.y / 2.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2d30, 0.0f, 0.0f);
i_Meter->field_0x2dd8.mPosCenterOrig.y = param_2 + (i_Meter->field_0x2dd8.mPosTopLeftOrig.y + i_Meter->field_0x2dd8.mSizeOrig.y / 2.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2dd8, 0.0f, 0.0f);
}
/* 8020054C-8020059C .text dMeter_swimPaneShow__FP15sub_meter_class */
void dMeter_swimPaneShow(sub_meter_class* i_Meter) {
fopMsgM_setInitAlpha(&i_Meter->field_0x2cf8);
fopMsgM_setInitAlpha(&i_Meter->field_0x2da0);
fopMsgM_setInitAlpha(&i_Meter->field_0x2d30);
fopMsgM_setInitAlpha(&i_Meter->field_0x2c88);
fopMsgM_setInitAlpha(&i_Meter->field_0x2dd8);
}
/* 8020059C-80200630 .text dMeter_swimPaneHide__FP15sub_meter_class */
void dMeter_swimPaneHide(sub_meter_class* i_Meter) {
for (s32 i = 0; i < 9; i++) {
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2a90[i]);
}
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2c88);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2cc0);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2cf8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2d30);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2da0);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2dd8);
tekari.mBlack.a = 0;
}
/* 80200630-802006AC .text dMeter_swimPaneTransY__FP15sub_meter_classf */
void dMeter_swimPaneTransY(sub_meter_class* i_Meter, f32 param_2) {
fopMsgM_paneTrans(&i_Meter->field_0x2d30, 0.0f, param_2);
fopMsgM_paneTrans(&i_Meter->field_0x2c88, 0.0f, param_2);
fopMsgM_paneTrans(&i_Meter->field_0x2cf8, 0.0f, 0.0f);
fopMsgM_paneTrans(&i_Meter->field_0x2da0, 0.0f, 0.0f);
}
/* 802006AC-8020070C .text dMeter_swimPaneAlpha__FP15sub_meter_classf */
void dMeter_swimPaneAlpha(sub_meter_class* i_Meter, f32 param_2) {
fopMsgM_setNowAlpha(&i_Meter->field_0x2cf8, param_2);
fopMsgM_setNowAlpha(&i_Meter->field_0x2da0, param_2);
fopMsgM_setNowAlpha(&i_Meter->field_0x2d30, param_2);
fopMsgM_setNowAlpha(&i_Meter->field_0x2c88, param_2);
}
/* 8020070C-802008F4 .text dMeter_swimInit__FP15sub_meter_class */
void dMeter_swimInit(sub_meter_class* i_Meter) {
ResTIMG* texture1;
ResTIMG* texture2;
dMeter_screenDataTimeSet(i_Meter);
dMeter_swimPaneHide(i_Meter);
if (!dStage_stagInfo_ChkKeyDisp(dComIfGp_getStageStagInfo())) {
dMeter_swimTransY(i_Meter, g_meterHIO.field_0x13a + 32.0f);
}
JUtility::TColor black = ((J2DPicture*)i_Meter->field_0x2c88.pane)->getBlack();
i_Meter->field_0x2ef0 = black;
JUtility::TColor white = ((J2DPicture*)i_Meter->field_0x2c88.pane)->getWhite();
i_Meter->field_0x2ef4 = white;
JUtility::TColor black2 = ((J2DPicture*)i_Meter->field_0x2da0.pane)->getBlack();
i_Meter->field_0x2f00 = black2;
i_Meter->field_0x2da0.mUserArea = 0;
i_Meter->field_0x2c88.mUserArea = 0;
i_Meter->field_0x2dd8.mUserArea = 0;
JKRArchive* pArchive = dComIfGp_getSwimResArchive();
texture1 = (ResTIMG*)JKRArchive::getGlbResource('TIMG', "swimtime_meter_mask.bti", pArchive);
JKRArchive* pArchive2 = dComIfGp_getSwimResArchive();
texture2 = (ResTIMG*)JKRArchive::getGlbResource('TIMG', "tekari.bti", pArchive2);
JUT_ASSERT(11498, texture1 != NULL && texture2 != NULL);
tekari.init(texture1, texture2, 1.0f, 1.0f);
}
/* 802008F4-80200D7C .text dMeter_swimMove__FP15sub_meter_class */
void dMeter_swimMove(sub_meter_class* i_Meter) {
if (dComIfGp_getItemTimeCount() >= (dComIfGp_getItemTimeMax() / 2)) {
i_Meter->field_0x2f04.r = 200;
i_Meter->field_0x2f04.g = 200;
i_Meter->field_0x2f04.b = 0xff;
i_Meter->field_0x2ef8 = i_Meter->field_0x2ef0;
i_Meter->field_0x2efc = i_Meter->field_0x2ef4;
i_Meter->field_0x3000 = g_meterHIO.field_0x130;
}
if (i_Meter->field_0x2da0.mUserArea == 0) {
if (dComIfGp_getItemTimeCount() != 0) {
if (sScrTimer1 == NULL && sScrTimer2 == NULL) {
dMeter_swimInit(i_Meter);
}
i_Meter->field_0x2da0.mUserArea = 1;
i_Meter->field_0x3010 = 0;
i_Meter->field_0x2c88.mUserArea = 0;
i_Meter->field_0x2dd8.mUserArea = 0;
i_Meter->field_0x2cf8.mUserArea = 0;
i_Meter->field_0x2d30.mUserArea = (s16)dComIfGp_getItemTimeCount();
dMeter_xyRotateZ(&i_Meter->field_0x2cf8, 0, 0);
((J2DPicture*)i_Meter->field_0x2c88.pane)->setBlack(i_Meter->field_0x2ef0);
((J2DPicture*)i_Meter->field_0x2c88.pane)->setWhite(i_Meter->field_0x2ef4);
((J2DPicture*)i_Meter->field_0x2cf8.pane)->setBlack(i_Meter->field_0x2f00);
((J2DPicture*)i_Meter->field_0x2da0.pane)->setBlack(i_Meter->field_0x2f00);
i_Meter->field_0x2fc4 = 0;
i_Meter->field_0x2f04.r = 200;
i_Meter->field_0x2f04.g = 200;
i_Meter->field_0x2f04.b = 0xff;
i_Meter->field_0x2ef8 = i_Meter->field_0x2ef0;
i_Meter->field_0x2efc = i_Meter->field_0x2ef4;
i_Meter->field_0x3000 = g_meterHIO.field_0x130;
for (s32 i = 0; i < 9; i++) {
i_Meter->field_0x2a90[i].mUserArea = 0;
}
mDoAud_seStart(JA_SE_SWIM_TIMER_ON);
}
} else if (i_Meter->field_0x2da0.mUserArea == 1) {
if (dComIfGp_getItemTimeCount() != 0) {
if (!dMenu_flag() && !dComIfGp_event_runCheck() && dComIfGp_getItemSwimTimerStatus() != false) {
dMeter_swimOpenProc(i_Meter);
} else {
dMeter_swimPaneHide(i_Meter);
}
} else {
dMeter_swimPaneHide(i_Meter);
i_Meter->field_0x2da0.mUserArea = 0;
if (sScrTimer1 != NULL && sScrTimer2 != NULL) {
dComIfGp_getSwimResArchive()->removeResourceAll();
delete sScrTimer1;
delete sScrTimer2;
sScrTimer1 = NULL;
sScrTimer2 = NULL;
}
}
} else if (i_Meter->field_0x2da0.mUserArea == 2) {
if (dComIfGp_getItemTimeCount() != 0) {
if (!dMenu_flag() && !dComIfGp_event_runCheck() && dComIfGp_getItemSwimTimerStatus() != false) {
dMeter_swimMoveProc(i_Meter);
} else {
dMeter_swimPaneHide(i_Meter);
}
} else {
dMeter_swimPaneHide(i_Meter);
i_Meter->field_0x2da0.mUserArea = 0;
if (sScrTimer1 != NULL && sScrTimer2 != NULL) {
dComIfGp_getSwimResArchive()->removeResourceAll();
delete sScrTimer1;
delete sScrTimer2;
sScrTimer1 = NULL;
sScrTimer2 = NULL;
}
}
} else if (i_Meter->field_0x2da0.mUserArea == 3) {
if (!dMenu_flag()) {
dMeter_swimMoveProc(i_Meter);
} else {
dMeter_swimPaneHide(i_Meter);
}
}
}
/* 80200D7C-80200E18 .text dMeter_swimDraw__FP15sub_meter_class */
void dMeter_swimDraw(sub_meter_class* i_Meter) {
if (sScrTimer2 != NULL) {
for (s32 i = 0; i < 9; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x2a90[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x2c88);
fopMsgM_setAlpha(&i_Meter->field_0x2cc0);
}
if (sScrTimer1 != NULL) {
fopMsgM_setAlpha(&i_Meter->field_0x2cf8);
fopMsgM_setAlpha(&i_Meter->field_0x2da0);
fopMsgM_setAlpha(&i_Meter->field_0x2d30);
fopMsgM_setAlpha(&i_Meter->field_0x2dd8);
}
}
/* 80200E18-802011D0 .text dMeter_swimOpenProc__FP15sub_meter_class */
void dMeter_swimOpenProc(sub_meter_class* i_Meter) {
/* Nonmatching */
int r31 = ++i_Meter->field_0x2c88.mUserArea;
static f32 dist_buf = 0.0f;
f32 dVar3;
if (r31 == 1) {
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, 0.1f);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2dd8);
} else if (r31 < 5) {
dVar3 = fopMsgM_valueIncrease(4, r31 - 1, 0);
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, (dVar3 * 0.9f) + 0.1f);
fopMsgM_setNowAlpha(&i_Meter->field_0x2dd8, dVar3);
} else if (r31 < 8) {
dVar3 = fopMsgM_valueIncrease(3, r31 - 5, 0);
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, 1.0f - (dVar3 * 0.3f));
} else if (r31 < 10) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 8, 0);
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, (dVar3 * 0.3f) + 0.7f);
} else if (r31 < 0xc) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 10, 0);
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, 1.0f - (dVar3 * 0.100000024f));
} else if (r31 < 0xe) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 0xc, 0);
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, (dVar3 * 0.100000024f) + 0.9f);
} else if (r31 == 0xe) {
fopMsgM_paneScaleXY(&i_Meter->field_0x2dd8, 1.0f);
}
if (r31 == 1) {
dMeter_swimPaneTransY(i_Meter, -130.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2cf8, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2da0, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2d30, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2c88, 1.0f);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2cf8);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2da0);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2d30);
fopMsgM_setNowAlphaZero(&i_Meter->field_0x2c88);
} else if (r31 <= 5) {
dVar3 = fopMsgM_valueIncrease(4, r31 - 1, 0);
dMeter_swimPaneTransY(i_Meter, -((1.0f - dVar3) * 130.0f));
dMeter_swimPaneAlpha(i_Meter, dVar3);
} else if (r31 <= 8) {
dVar3 = fopMsgM_valueIncrease(3, r31 - 5, 0);
dMeter_swimPaneTransY(i_Meter, (-25.0f - (1.0f - dVar3) * -25.0f));
dMeter_swimPaneShow(i_Meter);
} else if (r31 <= 0xa) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 8, 0);
dMeter_swimPaneTransY(i_Meter, -((1.0f - dVar3) * 25.0f));
dMeter_swimPaneShow(i_Meter);
} else if (r31 <= 0xc) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 10, 0);
dMeter_swimPaneTransY(i_Meter, (-6.0f - (1.0f - dVar3) * -6.0f));
dMeter_swimPaneShow(i_Meter);
} else if (r31 < 0xe) {
dVar3 = fopMsgM_valueIncrease(2, r31 - 0xc, 0);
dMeter_swimPaneTransY(i_Meter, -((1.0f - dVar3) * 6.0f));
dMeter_swimPaneShow(i_Meter);
} else if (r31 == 0xe) {
dMeter_swimPaneTransY(i_Meter, 0);
fopMsgM_paneScaleY(&i_Meter->field_0x2cf8, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2da0, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2d30, 1.0f);
fopMsgM_paneScaleY(&i_Meter->field_0x2c88, 1.0f);
dMeter_swimPaneShow(i_Meter);
i_Meter->field_0x2c88.mUserArea = 0;
i_Meter->field_0x2da0.mUserArea = 2;
}
}
/* 802011D0-80201224 .text dMeter_swimMoveProc__FP15sub_meter_class */
void dMeter_swimMoveProc(sub_meter_class* i_Meter) {
dMeter_swimMainRotate(i_Meter);
dMeter_swimMainBlink(i_Meter);
dMeter_swimMainDown(i_Meter);
dMeter_swimTekariScroll(i_Meter);
dMeter_swimLightMove(i_Meter);
dMeter_swimPaneShow(i_Meter);
}
/* 80201224-802012CC .text dMeter_swimMainRotate__FP15sub_meter_class */
void dMeter_swimMainRotate(sub_meter_class* i_Meter) {
const s16 r5 = g_meterHIO.field_0x132;
s16 r4 = ++i_Meter->field_0x2c88.mUserArea;
f32 f1;
if (r4 < r5) {
f1 = ((r4 * 360.0f) / r5);
} else if (r4 == r5) {
i_Meter->field_0x2c88.mUserArea = 0;
f1 = 0.0f;
}
dMeter_xyRotateZ(&i_Meter->field_0x2cf8, f1, 0.0f);
}
/* 802012CC-80201C08 .text dMeter_swimMainBlink__FP15sub_meter_class */
void dMeter_swimMainBlink(sub_meter_class* i_Meter) {
f32 fVar2;
s32 uVar5;
int iVar6;
f32 dVar8;
JUtility::TColor local_100 = i_Meter->field_0x2f00;
JUtility::TColor local_104 = i_Meter->field_0x2ef0;
JUtility::TColor local_108 = i_Meter->field_0x2ef4;
int uVar7 = ++i_Meter->field_0x2dd8.mUserArea;
uVar5 = i_Meter->field_0x3000;
if ((int)uVar7 < (int)uVar5) {
fVar2 = ((f32)uVar7 / (f32)uVar5);
local_100.r = (75.0f + (fVar2 * (f32)(i_Meter->field_0x2f04.r - 0x4B)));
local_100.g = (75.0f + (fVar2 * (f32)(i_Meter->field_0x2f04.g - 0x4B)));
local_100.b = (255.0f + (fVar2 * (f32)(i_Meter->field_0x2f04.b - 0xFF)));
local_104.r = (i_Meter->field_0x2ef0.r + fVar2 * (i_Meter->field_0x2ef8.r - i_Meter->field_0x2ef0.r));
local_104.g = (i_Meter->field_0x2ef0.g + fVar2 * (i_Meter->field_0x2ef8.g - i_Meter->field_0x2ef0.g));
local_104.b = (i_Meter->field_0x2ef0.b + fVar2 * (i_Meter->field_0x2ef8.b - i_Meter->field_0x2ef0.b));
local_108.r = (i_Meter->field_0x2ef4.r + fVar2 * (i_Meter->field_0x2efc.r - i_Meter->field_0x2ef4.r));
local_108.g = (i_Meter->field_0x2ef4.g + fVar2 * (i_Meter->field_0x2efc.g - i_Meter->field_0x2ef4.g));
local_108.b = (i_Meter->field_0x2ef4.b + fVar2 * (i_Meter->field_0x2efc.b - i_Meter->field_0x2ef4.b));
} else {
if ((int)uVar7 < (s16)(uVar5 * 2)) {
fVar2 = (f32)(uVar7 - (f32)uVar5) / (f32)uVar5;
local_100.r = (i_Meter->field_0x2f04.r + fVar2 * (0x4b - i_Meter->field_0x2f04.r));
local_100.g = (i_Meter->field_0x2f04.g + fVar2 * (0x4b - i_Meter->field_0x2f04.g));
local_100.b = (i_Meter->field_0x2f04.b + fVar2 * (0xff - i_Meter->field_0x2f04.b));
local_104.r = (i_Meter->field_0x2ef8.r + fVar2 * (i_Meter->field_0x2ef0.r - i_Meter->field_0x2ef8.r));
local_104.g = (i_Meter->field_0x2ef8.g + fVar2 * (i_Meter->field_0x2ef0.g - i_Meter->field_0x2ef8.g));
local_104.b = (i_Meter->field_0x2ef8.b + fVar2 * (i_Meter->field_0x2ef0.b - i_Meter->field_0x2ef8.b));
local_108.r = (i_Meter->field_0x2efc.r + fVar2 * (i_Meter->field_0x2ef4.r - i_Meter->field_0x2efc.r));
local_108.g = (i_Meter->field_0x2efc.g + fVar2 * (i_Meter->field_0x2ef4.g - i_Meter->field_0x2efc.g));
local_108.b = (i_Meter->field_0x2efc.b + fVar2 * (i_Meter->field_0x2ef4.b - i_Meter->field_0x2efc.b));
} else if ((int)uVar7 >= (s16)(uVar5 * 2)) {
i_Meter->field_0x2dd8.mUserArea = 0;
local_100.r = 0x4b;
local_100.g = 0x4b;
local_100.b = 0xff;
local_104 = i_Meter->field_0x2ef0;
local_108 = i_Meter->field_0x2ef4;
if (dComIfGp_getItemTimeCount() <= 0) {
i_Meter->field_0x3000 = 0;
} else {
if (dComIfGp_getItemTimeCount() < dComIfGp_getItemTimeMax() / 2) {
dVar8 = fopMsgM_valueIncrease(dComIfGp_getItemTimeMax() / 2, dComIfGp_getItemTimeMax() / 2 - dComIfGp_getItemTimeCount(), 1);
i_Meter->field_0x3000 = (s16)(g_meterHIO.field_0x130 + (dVar8 * (g_meterHIO.field_0x134 - g_meterHIO.field_0x130)));
i_Meter->field_0x2f04.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2f04.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2f04.b = g_meterHIO.field_0x14c;
i_Meter->field_0x2ef8.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2ef8.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2ef8.b = g_meterHIO.field_0x14c;
i_Meter->field_0x2efc.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2efc.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2efc.b = g_meterHIO.field_0x14c;
if (i_Meter->field_0x2cf8.mUserArea <= 0) {
i_Meter->field_0x2cf8.mUserArea = 2;
if (!dComIfGp_event_runCheck()) {
mDoAud_seStart(JA_SE_SWIM_TIMER_BLINLK);
}
} else {
i_Meter->field_0x2cf8.mUserArea--;
}
} else if (dComIfGp_getItemTimeCount() < 0) {
i_Meter->field_0x3000 = g_meterHIO.field_0x134;
i_Meter->field_0x2f04.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2f04.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2f04.b = g_meterHIO.field_0x14c;
i_Meter->field_0x2ef8.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2ef8.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2ef8.b = g_meterHIO.field_0x14c;
i_Meter->field_0x2efc.r = g_meterHIO.field_0x14a;
i_Meter->field_0x2efc.g = g_meterHIO.field_0x14b;
i_Meter->field_0x2efc.b = g_meterHIO.field_0x14c;
}
}
}
}
if (i_Meter->field_0x3000 != 0) {
((J2DPicture*)i_Meter->field_0x2c88.pane)->setBlack(local_104);
((J2DPicture*)i_Meter->field_0x2c88.pane)->setWhite(local_108);
((J2DPicture*)i_Meter->field_0x2cf8.pane)->setBlack(local_100);
((J2DPicture*)i_Meter->field_0x2da0.pane)->setBlack(local_100);
} else {
((J2DPicture*)i_Meter->field_0x2c88.pane)->setBlack(i_Meter->field_0x2ef8);
((J2DPicture*)i_Meter->field_0x2c88.pane)->setWhite(i_Meter->field_0x2efc);
((J2DPicture*)i_Meter->field_0x2cf8.pane)->setBlack(i_Meter->field_0x2f04);
((J2DPicture*)i_Meter->field_0x2da0.pane)->setBlack(i_Meter->field_0x2f04);
}
}
/* 80201C08-80201D2C .text dMeter_swimMainDown__FP15sub_meter_class */
void dMeter_swimMainDown(sub_meter_class* i_Meter) {
s16 sVar1;
sVar1 = (s16)dComIfGp_getItemTimeCount();
dMeter_paneBottomScaleY(&i_Meter->field_0x2d30, ((f32)sVar1 / (f32)i_Meter->field_0x2d30.mUserArea));
i_Meter->field_0x2da0.mPosTopLeft.y =
(i_Meter->field_0x2d30.mPosCenterOrig.y - i_Meter->field_0x2d30.mSizeOrig.y / 2.0f) - i_Meter->field_0x2d30.mPosTopLeft.y;
i_Meter->field_0x2da0.mPosCenter.y = i_Meter->field_0x2da0.mPosTopLeft.y + i_Meter->field_0x2da0.mSize.y / 2.0f;
fopMsgM_cposMove(&i_Meter->field_0x2da0);
i_Meter->field_0x2cf8.mPosCenter.y = i_Meter->field_0x2da0.mPosCenter.y;
fopMsgM_cposMove(&i_Meter->field_0x2cf8);
if (sVar1 > 0) {
if (!dComIfGp_event_runCheck() && dComIfGp_getItemSwimTimerStatus() != false) {
g_dComIfG_gameInfo.play.mAirMeter--;
}
if (dComIfGp_getItemTimeCount() == 0) {
i_Meter->field_0x2da0.mUserArea = 3;
dComIfGp_stopItemSwimTimer();
}
}
}
/* 80201D2C-80201FC0 .text dMeter_swimTekariScroll__FP15sub_meter_class */
void dMeter_swimTekariScroll(sub_meter_class* i_Meter) {
s16 temp_r0 = g_meterHIO.field_0x14e + g_meterHIO.field_0x150;
s16 temp_r0_2 = temp_r0 + g_meterHIO.field_0x14e;
s16 temp_r0_3 = temp_r0_2 + g_meterHIO.field_0x152;
s16 temp_r0_4 = temp_r0_3 + g_meterHIO.field_0x14e;
s16 temp_r0_5 = temp_r0_4 + g_meterHIO.field_0x154;
f32 dVar12;
s16 var_r30;
s16 temp_r29 = (REG6_F(0) + (i_Meter->field_0x2c88.mPosCenterOrig.x - i_Meter->field_0x2c88.mSizeOrig.x / 2.0f));
s16 temp_r28 = (REG6_F(1) + (i_Meter->field_0x2c88.mPosCenterOrig.y - i_Meter->field_0x2c88.mSizeOrig.y / 2.0f));
s16 temp_r27 = (REG6_F(0) + (i_Meter->field_0x2c88.mPosCenterOrig.x + i_Meter->field_0x2c88.mSizeOrig.x / 2.0f));
s16 temp_r26 = (REG6_F(1) + (i_Meter->field_0x2c88.mPosCenterOrig.y + i_Meter->field_0x2c88.mSizeOrig.y / 2.0f));
s16 temp_r4 = i_Meter->field_0x2fc4;
if (temp_r4 < g_meterHIO.field_0x14e) {
dVar12 = fopMsgM_valueIncrease(g_meterHIO.field_0x14e, temp_r4, 0);
var_r30 = (0.5f + (28.0f - (64.0f * dVar12)));
} else if (temp_r4 < temp_r0) {
var_r30 = -0x24;
} else if (temp_r4 < temp_r0_2) {
dVar12 = fopMsgM_valueIncrease(g_meterHIO.field_0x14e, temp_r4 - temp_r0, 0);
var_r30 = (0.5f + (28.0f - (64.0f * dVar12)));
} else if (temp_r4 < temp_r0_3) {
var_r30 = -0x24;
} else if (temp_r4 < temp_r0_4) {
dVar12 = fopMsgM_valueIncrease(g_meterHIO.field_0x14e, temp_r4 - temp_r0_3, 0);
var_r30 = (0.5f + (28.0f - (64.0f * dVar12)));
} else if (temp_r4 < temp_r0_5) {
var_r30 = -0x24;
}
i_Meter->field_0x2fc4 += 1;
if (i_Meter->field_0x2fc4 >= temp_r0_5) {
i_Meter->field_0x2fc4 = 0;
}
tekari.setPos(temp_r29, temp_r28, temp_r27, temp_r26);
GXColor color1 = {0xFF, 0xFF, 0xFF, 0XFF};
tekari.mBlack.r = color1.r;
tekari.mBlack.g = color1.g;
tekari.mBlack.b = color1.b;
tekari.mBlack.a = color1.a;
GXColor color2 = {0xFF, 0xFF, 0xFF, 0X00};
tekari.mWhite.r = color2.r;
tekari.mWhite.g = color2.g;
tekari.mWhite.b = color2.b;
tekari.mWhite.a = color2.a;
tekari.setScroll(0, 0, 0);
tekari.mBlack.a = 0xFF;
tekari.setScroll(1, var_r30, var_r30);
}
/* 80201FC0-8020205C .text dMeter_swimLightMove__FP15sub_meter_class */
void dMeter_swimLightMove(sub_meter_class* i_Meter) {
if (dComIfGp_getItemTimeCount() != 0) {
if (i_Meter->field_0x3010 == 0) {
dMeter_swimLightBirth(i_Meter);
} else {
i_Meter->field_0x3010--;
}
}
for (s16 i = 0; i < 9; i++) {
if (i_Meter->field_0x2a90[i].mUserArea != 0) {
dMeter_swimLightAnime(i_Meter, i);
}
}
}
/* 8020205C-802021B4 .text dMeter_swimLightBirth__FP15sub_meter_class */
void dMeter_swimLightBirth(sub_meter_class* i_Meter) {
s16 sVar1;
s16 iVar3;
sVar1 = 0;
for (s16 i = 0; i < 9; i++) {
if (i_Meter->field_0x2a90[i].mUserArea == 0) {
sVar1++;
}
}
iVar3 = cM_rndF(sVar1);
i_Meter->field_0x2f74[iVar3] = (cM_rndF(3.0f) + 5.0f);
i_Meter->field_0x2f98[iVar3] = cM_rndFX(5.0f);
i_Meter->field_0x2a90[iVar3].mUserArea = 1;
i_Meter->field_0x2a90[iVar3].mPosCenter.y = i_Meter->field_0x2d30.mPosTopLeft.y + g_meterHIO.field_0x13c;
fopMsgM_cposMove(&i_Meter->field_0x2a90[iVar3]);
i_Meter->field_0x3010 = cM_rndF((f32)g_meterHIO.field_0x138);
}
/* 802021B4-8020238C .text dMeter_swimLightAnime__FP15sub_meter_classs */
void dMeter_swimLightAnime(sub_meter_class* i_Meter, s16 param_2) {
/* Nonmatching */
s16 sVar1;
s16 sVar2;
s16 iVar3;
fopMsgM_pane_class* pane2;
int iVar4;
int iVar5;
f32 dVar6;
s16 iVar7;
sVar2 = g_meterHIO.field_0x136;
iVar5 = g_meterHIO.field_0x136;
iVar4 = (s16)(g_meterHIO.field_0x136 + g_meterHIO.field_0x138);
sVar1 = i_Meter->field_0x2a90[param_2].mUserArea;
dVar6 = sin((f32)(sVar1 * 0.5235988f));
i_Meter->field_0x2a90[param_2].mPosCenter.x = i_Meter->field_0x2a90[param_2].mPosCenterOrig.x + i_Meter->field_0x2f98[param_2] * dVar6;
i_Meter->field_0x2a90[param_2].mPosCenter.y = i_Meter->field_0x2a90[param_2].mPosCenter.y - i_Meter->field_0x2f74[param_2];
i_Meter->field_0x2a90[param_2].mSize.x = g_meterHIO.field_0x7e;
i_Meter->field_0x2a90[param_2].mSize.y = g_meterHIO.field_0x7e;
pane2 = &i_Meter->field_0x2a90[param_2];
fopMsgM_cposMove(pane2);
i_Meter->field_0x2f74[param_2] = i_Meter->field_0x2f74[param_2] * (cM_rndF(0.2f) + 0.8f);
i_Meter->field_0x2f98[param_2] = i_Meter->field_0x2f98[param_2] * (cM_rndF(0.1f) + 0.9f);
iVar3 = (int)sVar1;
iVar7 = (int)sVar2;
if (iVar3 == 1) {
fopMsgM_setNowAlphaZero(pane2);
} else if (iVar3 < iVar7) {
dVar6 = fopMsgM_valueIncrease(iVar5 + -1, iVar3 + -1, 1);
fopMsgM_setNowAlpha(pane2, dVar6);
} else if (iVar3 < iVar4) {
dVar6 = fopMsgM_valueIncrease(iVar4 - iVar5, iVar3 - iVar5, 0);
fopMsgM_setNowAlpha(pane2, (f32)(1.0f - dVar6));
} else if (iVar3 == iVar4) {
fopMsgM_setNowAlphaZero(pane2);
}
i_Meter->field_0x2a90[param_2].mUserArea++;
if (i_Meter->field_0x2a90[param_2].mUserArea > iVar4) {
i_Meter->field_0x2a90[param_2].mUserArea = 0;
}
}
/* 8020238C-8020240C .text dMeter_placeNameMove__Fv */
void dMeter_placeNameMove() {
if (!dMeter_place_name) {
if (dComIfGp_checkStageName() == 2) {
fopMsgM_create(fpcNm_PLACE_NAME_e);
dMeter_place_name = true;
}
} else {
if (dComIfGp_checkStageName() == 0) {
dMeter_place_name = false;
}
}
}
/* 8020240C-80202438 .text dMeter_arrowInit__FP15sub_meter_class */
void dMeter_arrowInit(sub_meter_class* i_Meter) {
for (int i = 0; i < 4; i++) {
i_Meter->field_0x2e10[i].mUserArea = 0;
}
i_Meter->field_0x3025 = 0;
}
/* 80202438-80202580 .text dMeter_arrowCheckStatus__FP15sub_meter_class */
void dMeter_arrowCheckStatus(sub_meter_class* i_Meter) {
if ((g_dComIfG_gameInfo.play.getDirection() & 1) != 0) {
if (i_Meter->field_0x2e10[0].mUserArea == 0) {
if (i_Meter->field_0x3025 == 0 || i_Meter->field_0x3025 == 0x14) {
i_Meter->field_0x2e10[0].mUserArea = 1;
}
}
} else {
dMeter_arrowErase(&i_Meter->field_0x2e10[0]);
}
if ((g_dComIfG_gameInfo.play.getDirection() & 2) != 0) {
if (i_Meter->field_0x2e10[1].mUserArea == 0) {
if (i_Meter->field_0x3025 == 0 || i_Meter->field_0x3025 == 0x14) {
i_Meter->field_0x2e10[1].mUserArea = 1;
}
}
} else {
dMeter_arrowErase(&i_Meter->field_0x2e10[1]);
}
if ((g_dComIfG_gameInfo.play.getDirection() & 4) != 0) {
if (i_Meter->field_0x2e10[2].mUserArea == 0) {
if (i_Meter->field_0x3025 == 0 || i_Meter->field_0x3025 == 0x14) {
i_Meter->field_0x2e10[2].mUserArea = 1;
}
}
} else {
dMeter_arrowErase(&i_Meter->field_0x2e10[2]);
}
if ((g_dComIfG_gameInfo.play.getDirection() & 8) != 0) {
if (i_Meter->field_0x2e10[3].mUserArea == 0) {
if (i_Meter->field_0x3025 == 0 || i_Meter->field_0x3025 == 0x14) {
i_Meter->field_0x2e10[3].mUserArea = 1;
}
}
} else {
dMeter_arrowErase(&i_Meter->field_0x2e10[3]);
}
}
/* 80202580-80202770 .text dMeter_arrowTransScale__FP15sub_meter_classffi */
void dMeter_arrowTransScale(sub_meter_class* i_Meter, f32 param_2, f32 param_3, int param_4) {
f32 fVar1;
f32 fVar2;
f32 fVar3;
f32 dVar4;
switch (param_4) {
case 0:
fVar1 = i_Meter->field_0x2e10[0].mPosTopLeftOrig.x + i_Meter->field_0x2e10[0].mSizeOrig.x;
fVar2 = i_Meter->field_0x2e10[0].mPosTopLeftOrig.y;
i_Meter->field_0x2e10[0].mSize.x = i_Meter->field_0x2e10[0].mSizeOrig.x * param_3;
i_Meter->field_0x2e10[0].mSize.y = i_Meter->field_0x2e10[0].mSizeOrig.y;
i_Meter->field_0x2e10[0].mPosTopLeft.x =fVar1 - param_2 - i_Meter->field_0x2e10[0].mSize.x;
i_Meter->field_0x2e10[0].mPosTopLeft.y = fVar2;
break;
case 1:
fVar1 = i_Meter->field_0x2e10[1].mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x2e10[1].mPosTopLeftOrig.y;
i_Meter->field_0x2e10[1].mSize.x = i_Meter->field_0x2e10[1].mSizeOrig.x;
i_Meter->field_0x2e10[1].mSize.y = i_Meter->field_0x2e10[1].mSizeOrig.y * param_3;
i_Meter->field_0x2e10[1].mPosTopLeft.x = fVar1;
i_Meter->field_0x2e10[1].mPosTopLeft.y = fVar2 + param_2;
break;
case 2:
fVar1 = i_Meter->field_0x2e10[2].mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x2e10[2].mPosTopLeftOrig.y;
i_Meter->field_0x2e10[2].mSize.x = i_Meter->field_0x2e10[2].mSizeOrig.x * param_3;
i_Meter->field_0x2e10[2].mSize.y = i_Meter->field_0x2e10[2].mSizeOrig.y;
i_Meter->field_0x2e10[2].mPosTopLeft.x = fVar1 + param_2;
i_Meter->field_0x2e10[2].mPosTopLeft.y = fVar2;
break;
case 3:
fVar1 = i_Meter->field_0x2e10[3].mPosTopLeftOrig.x;
fVar2 = i_Meter->field_0x2e10[3].mPosTopLeftOrig.y + i_Meter->field_0x2e10[3].mSizeOrig.y;
i_Meter->field_0x2e10[3].mSize.x = i_Meter->field_0x2e10[3].mSizeOrig.x;
i_Meter->field_0x2e10[3].mSize.y = i_Meter->field_0x2e10[3].mSizeOrig.y * param_3;
i_Meter->field_0x2e10[3].mPosTopLeft.x = fVar1;
i_Meter->field_0x2e10[3].mPosTopLeft.y = fVar2 - param_2 - i_Meter->field_0x2e10[3].mSize.y;
break;
}
i_Meter->field_0x2e10[param_4].pane->move((int)i_Meter->field_0x2e10[param_4].mPosTopLeft.x, (int)i_Meter->field_0x2e10[param_4].mPosTopLeft.y);
i_Meter->field_0x2e10[param_4].pane->resize((int)i_Meter->field_0x2e10[param_4].mSize.x, (int)i_Meter->field_0x2e10[param_4].mSize.y);
}
/* 80202770-80203298 .text dMeter_arrowAnime__FP15sub_meter_class */
void dMeter_arrowAnime(sub_meter_class* i_Meter) {
/* Nonmatching */
static const f32 scale[] = {1.0f, 1.9f, 1.0f, 1.9f};
static const s32 trans[] = {0, 30, 0, 30};
static const u8 white[] = {0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF};
static const u8 black[] = {0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00};
s16 iVar6;
f32 dVar7;
for (s32 i = 0; i < 4; i++) {
if (i_Meter->field_0x2e10[i].mUserArea == 1) {
iVar6 = i_Meter->field_0x3025;
if (iVar6 > 0x14) {
iVar6 = (s16)(i_Meter->field_0x3025 + -0x14);
}
dVar7 = fopMsgM_valueIncrease(10, iVar6, 0);
dMeter_arrowTransScale(i_Meter, (dVar7 * (trans[1] - trans[0])) + trans[0], (dVar7 * (scale[1] - scale[0])) + scale[0], i);
fopMsgM_setNowAlpha(&i_Meter->field_0x2e10[i], dVar7 * 0.8627451f);
GXColor color1;
color1.r = (dVar7 * (black[4] - black[0])) + black[0];
color1.g = (dVar7 * (black[5] - black[1])) + black[1];
color1.b = (dVar7 * (black[6] - black[2])) + black[2];
color1.a = (dVar7 * (black[7] - black[3])) + black[3];
GXColor color2;
color2.r = (dVar7 * (white[4] - white[0])) + white[0];
color2.g = (dVar7 * (white[5] - white[1])) + white[1];
color2.b = (dVar7 * (white[6] - white[2])) + white[2];
color2.a = (dVar7 * (white[7] - white[3])) + white[3];
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setBlack(color1);
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setWhite(color2);
if ((s16)iVar6 == 10) {
i_Meter->field_0x2e10[i].mUserArea = 2;
}
} else if (i_Meter->field_0x2e10[i].mUserArea == 2) {
if (i_Meter->field_0x3025 <= 0x14) {
dVar7 = fopMsgM_valueIncrease(10, (i_Meter->field_0x3025 + -10), 0);
dMeter_arrowTransScale(i_Meter, (dVar7 * (trans[2] - trans[1])) + trans[1], (dVar7 * (scale[2] - scale[1])) + scale[1], i);
GXColor color1;
color1.r = (dVar7 * (black[8] - black[4])) + black[4];
color1.g = (dVar7 * (black[9] - black[5])) + black[5];
color1.b = (dVar7 * (black[10] - black[6])) + black[6];
color1.a = (dVar7 * (black[11] - black[7])) + black[7];
GXColor color2;
color2.r = (dVar7 * (white[8] - white[4])) + white[4];
color2.g = (dVar7 * (white[9] - white[5])) + white[5];
color2.b = (dVar7 * (white[10] - white[6])) + white[6];
color2.a = (dVar7 * (white[11] - white[7])) + white[7];
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setBlack(color1);
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setWhite(color2);
} else {
dVar7 = fopMsgM_valueIncrease(10, (i_Meter->field_0x3025 + -0x14), 0);
dMeter_arrowTransScale(i_Meter, (dVar7 * (trans[3] - trans[2])) + trans[2], (dVar7 * (scale[3] - scale[2])) + scale[2], i);
GXColor color1;
color1.r = (dVar7 * (black[12] - black[8])) + black[8];
color1.g = (dVar7 * (black[13] - black[9])) + black[9];
color1.b = (dVar7 * (black[14] - black[10])) + black[10];
color1.a = (dVar7 * (black[15] - black[11])) + black[11];
GXColor color2;
color2.r = (dVar7 * (white[12] - white[8])) + white[8];
color2.g = (dVar7 * (white[13] - white[9])) + white[9];
color2.b = (dVar7 * (white[14] - white[10])) + white[10];
color2.a = (dVar7 * (white[15] - white[11])) + white[11];
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setBlack(color1);
((J2DPicture*)i_Meter->field_0x2e10[i].pane)->setWhite(color2);
}
}
}
}
/* 80203298-80203354 .text dMeter_arrowErase__FP18fopMsgM_pane_class */
void dMeter_arrowErase(fopMsgM_pane_class* param_1) {
if (param_1->mUserArea != 0) {
fopMsgM_setNowAlphaZero(param_1);
fopMsgM_paneTrans(param_1, 0.0f, 0.0f);
fopMsgM_paneScaleXY(param_1, 1.0f);
((J2DPicture*)param_1->pane)->setBlack(0xFF000000);
((J2DPicture*)param_1->pane)->setWhite(0xFF0000FF);
param_1->mUserArea = 0;
}
}
/* 80203354-80203410 .text dMeter_arrowMove__FP15sub_meter_class */
void dMeter_arrowMove(sub_meter_class* i_Meter) {
if (dComIfGp_getAdvanceDirection() != 0 && !dMenu_flag()) {
dMeter_arrowCheckStatus(i_Meter);
i_Meter->field_0x3025++;
dMeter_arrowAnime(i_Meter);
if (i_Meter->field_0x3025 < 30) {
return;
}
i_Meter->field_0x3025 = 10;
return;
}
if (i_Meter->field_0x3025 != 0) {
i_Meter->field_0x3025 = 0;
for (s32 i = 0; i < 4; i++) {
dMeter_arrowErase(&i_Meter->field_0x2e10[i]);
}
}
}
/* 80203410-80203464 .text dMeter_arrowDraw__FP15sub_meter_class */
void dMeter_arrowDraw(sub_meter_class* i_Meter) {
for (s32 i = 0; i < 4; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x2e10[i]);
}
}
/* 80203464-8020408C .text dMeter_screenDataSet__FP15sub_meter_class */
void dMeter_screenDataSet(sub_meter_class* i_Meter) {
fopMsgM_setPaneData(&i_Meter->field_0x02f8, sMainParts1, 'wiy1');
fopMsgM_setPaneData(&i_Meter->field_0x0100[0], sMainParts1, 'yrig');
fopMsgM_setPaneData(&i_Meter->field_0x0100[1], sMainParts1, 'yup');
fopMsgM_setPaneData(&i_Meter->field_0x0100[2], sMainParts1, 'ylef');
fopMsgM_setPaneData(&i_Meter->field_0x0250, sMainParts1, 'r');
fopMsgM_setPaneData(&i_Meter->field_0x0288, sMainParts1, 'l');
fopMsgM_setPaneData(&i_Meter->field_0x02c0, sMainParts1, 'crs1');
i_Meter->field_0x0100[0].mPosCenterOrig.x -= 2.0f;
i_Meter->field_0x0100[1].mPosCenterOrig.y -= 2.0f;
i_Meter->field_0x0100[2].mPosCenterOrig.x -= 1.0f;
fopMsgM_setPaneData(&i_Meter->field_0x0368, sMainParts1, 'bey1');
fopMsgM_setPaneData(&i_Meter->field_0x03a0, sMainParts1, 'bey2');
fopMsgM_setPaneData(&i_Meter->field_0x03d8, sMainParts1, 'enem');
fopMsgM_setPaneData(&i_Meter->field_0x0410, sMainParts1, 'enm2');
fopMsgM_setPaneData(&i_Meter->field_0x0448[0], sMainParts1, 'ben1');
fopMsgM_setPaneData(&i_Meter->field_0x0448[1], sMainParts1, 'ben2');
fopMsgM_setPaneData(&i_Meter->field_0x0448[2], sMainParts1, 'ben3');
fopMsgM_setPaneData(&i_Meter->field_0x0448[3], sMainParts1, 'ben4');
fopMsgM_setPaneData(&i_Meter->field_0x0528, sMainParts1, 'ene3');
fopMsgM_setPaneData(&i_Meter->field_0x0560, sMainParts1, 'ene2');
fopMsgM_setPaneData(&i_Meter->field_0x0598, sMainParts1, 'ene1');
fopMsgM_setPaneData(&i_Meter->field_0x05d0, sMainParts1, 'enk2');
fopMsgM_setPaneData(&i_Meter->field_0x0608, sMainParts1, 'enek');
s32 unk_13361[] = {'ht00', 'ht01', 'ht02', 'ht03', 'ht04', 'ht05', 'ht06', 'ht07', 'ht08', 'ht09',
'ht10', 'ht11', 'ht12', 'ht13', 'ht14', 'ht15', 'ht16', 'ht17', 'ht18', 'ht19'};
s32 unk_13362[] = {'hk00', 'hk01', 'hk02', 'hk03', 'hk04', 'hk05', 'hk06', 'hk07', 'hk08', 'hk09',
'hk10', 'hk11', 'hk12', 'hk13', 'hk14', 'hk15', 'hk16', 'hk17', 'hk18', 'hk19'};
for (s32 i = 0; i < 20; i++) {
fopMsgM_setPaneData(&i_Meter->mHeart[i], sMainParts1, unk_13361[i]);
fopMsgM_setPaneData(&i_Meter->mHeartShadow[i], sMainParts1, unk_13362[i]);
}
fopMsgM_setPaneData(&i_Meter->field_0x0f00, sMainParts1, 'htfl');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[0], sMainParts1, 'mbr1');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[1], sMainParts1, 'mbr2');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[2], sMainParts1, 'mbr3');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[3], sMainParts1, 'mbr4');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[4], sMainParts1, 'mbr5');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[5], sMainParts1, 'mbr6');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[6], sMainParts1, 'mbr7');
fopMsgM_setPaneData(&i_Meter->field_0x0f38[7], sMainParts1, 'mbr8');
fopMsgM_setPaneData(&i_Meter->field_0x10f8, sMainParts1, 'mbb3');
fopMsgM_setPaneData(&i_Meter->field_0x1130, sMainParts1, 'mbb2');
fopMsgM_setPaneData(&i_Meter->field_0x11a0, sMainParts1, 'mbb1');
fopMsgM_setPaneData(&i_Meter->field_0x1168, sMainParts1, 'mbk2');
fopMsgM_setPaneData(&i_Meter->field_0x11d8, sMainParts1, 'mbk1');
fopMsgM_setPaneData(&i_Meter->field_0x1210, sMainParts1, 'cmcv');
fopMsgM_setPaneData(&i_Meter->field_0x1248, sMainParts1, 'cmmg');
fopMsgM_setPaneData(&i_Meter->field_0x1280, sMainParts1, 'cmmk');
fopMsgM_setPaneData(&i_Meter->field_0x12b8, sMainParts1, 'cmrg');
fopMsgM_setPaneData(&i_Meter->field_0x12f0, sMainParts1, 'cmb1');
fopMsgM_setPaneData(&i_Meter->field_0x1398, sMainParts3, 'bar');
fopMsgM_setPaneData(&i_Meter->field_0x13d0, sMainParts3, 'rng2');
fopMsgM_setPaneData(&i_Meter->field_0x1408, sMainParts3, 'hrz1');
fopMsgM_setPaneData(&i_Meter->field_0x1440, sMainParts3, 'hrz2');
fopMsgM_setPaneData(&i_Meter->field_0x1478[0], sMainParts3, 'str5');
fopMsgM_setPaneData(&i_Meter->field_0x1478[1], sMainParts3, 'str6');
fopMsgM_setPaneData(&i_Meter->field_0x1478[2], sMainParts3, 'str7');
fopMsgM_setPaneData(&i_Meter->field_0x1520, sMainParts3, 'mon2');
fopMsgM_setPaneData(&i_Meter->field_0x1558, sMainParts3, 'sun2');
fopMsgM_setPaneData(&i_Meter->field_0x1590[0], sMainParts3, 'cir1');
fopMsgM_setPaneData(&i_Meter->field_0x1590[1], sMainParts3, 'cir2');
fopMsgM_setPaneData(&i_Meter->field_0x1590[2], sMainParts3, 'cir3');
fopMsgM_setPaneData(&i_Meter->field_0x1590[3], sMainParts3, 'cir4');
fopMsgM_setPaneData(&i_Meter->field_0x1670, sMainParts3, 'cnt2');
fopMsgM_setPaneData(&i_Meter->field_0x16a8, sMainParts3, 'cnt1');
((J2DPicture*)i_Meter->field_0x16a8.pane)->setWhite(0x00000000);
fopMsgM_setPaneData(&i_Meter->field_0x16e0, sMainParts3, 'rng1');
fopMsgM_setPaneData(&i_Meter->field_0x1718[0], sMainParts3, 'str1');
fopMsgM_setPaneData(&i_Meter->field_0x1718[1], sMainParts3, 'str2');
fopMsgM_setPaneData(&i_Meter->field_0x1718[2], sMainParts3, 'str3');
fopMsgM_setPaneData(&i_Meter->field_0x1718[3], sMainParts3, 'str4');
fopMsgM_setPaneData(&i_Meter->field_0x17f8, sMainParts3, 'mon1');
fopMsgM_setPaneData(&i_Meter->field_0x1830, sMainParts3, 'clp');
fopMsgM_setPaneData(&i_Meter->field_0x1868[0], sMainParts3, 'cld1');
fopMsgM_setPaneData(&i_Meter->field_0x1868[1], sMainParts3, 'cld2');
fopMsgM_setPaneData(&i_Meter->field_0x1868[2], sMainParts3, 'cld3');
fopMsgM_setPaneData(&i_Meter->field_0x1910, sMainParts3, 'sun1');
fopMsgM_setPaneData(&i_Meter->field_0x1948, sMainParts3, 'cmtm');
((J2DPicture*)i_Meter->field_0x1830.pane)->setWhite(0x00000000);
fopMsgM_setPaneData(&i_Meter->field_0x1980, sMainParts1, 'kyl1');
fopMsgM_setPaneData(&i_Meter->field_0x19b8, sMainParts1, 'kyl2');
fopMsgM_setPaneData(&i_Meter->field_0x1ad0[0], sMainParts1, 'nm03');
fopMsgM_setPaneData(&i_Meter->field_0x1ad0[1], sMainParts1, 'nm04');
fopMsgM_setPaneData(&i_Meter->field_0x1c20[0], sMainParts1, 'nm08');
fopMsgM_setPaneData(&i_Meter->field_0x1c20[1], sMainParts1, 'nm09');
fopMsgM_setPaneData(&i_Meter->field_0x1c90, sMainParts1, 'key0');
fopMsgM_setPaneData(&i_Meter->field_0x1cc8, sMainParts1, 'basv');
fopMsgM_setPaneData(&i_Meter->field_0x1d00, sMainParts1, 'bawd');
fopMsgM_setPaneData(&i_Meter->field_0x1d38, sMainParts1, 'bawp');
fopMsgM_setPaneData(&i_Meter->field_0x1da8[1], sMainParts1, 'baa2');
fopMsgM_setPaneData(&i_Meter->field_0x1e18[1], sMainParts1, 'bat2');
fopMsgM_setPaneData(&i_Meter->field_0x1fd8[1], sMainParts1, 'y01');
fopMsgM_setPaneData(&i_Meter->field_0x1f30[1], sMainParts1, 'y10');
fopMsgM_setPaneData(&i_Meter->field_0x2080[1], sMainParts1, 'yitm');
fopMsgM_setPaneData(&i_Meter->field_0x2128[1], sMainParts1, 'yitk');
fopMsgM_setPaneData(&i_Meter->field_0x2320[1], sMainParts1, 'bly1');
fopMsgM_setPaneData(&i_Meter->field_0x23c8[1], sMainParts1, 'bly2');
fopMsgM_setPaneData(&i_Meter->field_0x2470[1], sMainParts1, 'bly3');
i_Meter->field_0x2320[1].pane->hide();
i_Meter->field_0x23c8[1].pane->hide();
i_Meter->field_0x2470[1].pane->hide();
fopMsgM_setPaneData(&i_Meter->field_0x1fd8[0], sMainParts1, 'x01');
fopMsgM_setPaneData(&i_Meter->field_0x1f30[0], sMainParts1, 'x10');
fopMsgM_setPaneData(&i_Meter->field_0x2080[0], sMainParts1, 'xitm');
fopMsgM_setPaneData(&i_Meter->field_0x2128[0], sMainParts1, 'xitk');
fopMsgM_setPaneData(&i_Meter->field_0x2320[0], sMainParts1, 'blx1');
fopMsgM_setPaneData(&i_Meter->field_0x23c8[0], sMainParts1, 'blx2');
fopMsgM_setPaneData(&i_Meter->field_0x2470[0], sMainParts1, 'blx3');
i_Meter->field_0x2320[0].pane->hide();
i_Meter->field_0x23c8[0].pane->hide();
i_Meter->field_0x2470[0].pane->hide();
fopMsgM_setPaneData(&i_Meter->field_0x1fd8[2], sMainParts1, 'z01');
fopMsgM_setPaneData(&i_Meter->field_0x1f30[2], sMainParts1, 'z10');
fopMsgM_setPaneData(&i_Meter->field_0x2080[2], sMainParts1, 'zitm');
fopMsgM_setPaneData(&i_Meter->field_0x2128[2], sMainParts1, 'zitk');
fopMsgM_setPaneData(&i_Meter->field_0x2320[2], sMainParts1, 'blz1');
fopMsgM_setPaneData(&i_Meter->field_0x23c8[2], sMainParts1, 'blz2');
fopMsgM_setPaneData(&i_Meter->field_0x2470[2], sMainParts1, 'blz3');
i_Meter->field_0x2320[2].pane->hide();
i_Meter->field_0x23c8[2].pane->hide();
i_Meter->field_0x2470[2].pane->hide();
fopMsgM_setPaneData(&i_Meter->field_0x2518, sMainParts1, 'baz');
fopMsgM_setPaneData(&i_Meter->field_0x2550[1], sMainParts1, 'bay');
fopMsgM_setPaneData(&i_Meter->field_0x25c0[1], sMainParts1, 'b002');
fopMsgM_setPaneData(&i_Meter->field_0x2630[1], sMainParts1, 'ba02');
fopMsgM_setPaneData(&i_Meter->field_0x2550[0], sMainParts1, 'bax1');
fopMsgM_setPaneData(&i_Meter->field_0x25c0[0], sMainParts1, 'b001');
fopMsgM_setPaneData(&i_Meter->field_0x2630[0], sMainParts1, 'ba01');
fopMsgM_setPaneData(&i_Meter->field_0x1da8[0], sMainParts1, 'baa');
fopMsgM_setPaneData(&i_Meter->field_0x1e18[0], sMainParts1, 'bawe');
fopMsgM_setPaneData(&i_Meter->field_0x26a0, sMainParts1, 'bar1');
fopMsgM_setPaneData(&i_Meter->field_0x26d8, sMainParts1, 'ba0r');
fopMsgM_setPaneData(&i_Meter->field_0x2748, sMainParts1, 'a10');
fopMsgM_setPaneData(&i_Meter->field_0x2780, sMainParts1, 'a01');
fopMsgM_setPaneData(&i_Meter->field_0x27b8, sMainParts1, 'yum');
fopMsgM_setPaneData(&i_Meter->field_0x27f0, sMainParts1, 'yumk');
fopMsgM_setPaneData(&i_Meter->field_0x2828, sMainParts1, 'weit');
fopMsgM_setPaneData(&i_Meter->field_0x2860, sMainParts1, 'witk');
fopMsgM_setPaneData(&i_Meter->field_0x2898, sMainParts1, 'bab');
fopMsgM_setPaneData(&i_Meter->field_0x28d0, sMainParts1, 'baat');
fopMsgM_setPaneData(&i_Meter->field_0x2908, sMainParts1, 'cent');
fopMsgM_setPaneData(&i_Meter->field_0x2940[0], sMainParts1, 'arw1');
fopMsgM_setPaneData(&i_Meter->field_0x29b0[0], sMainParts1, 'ip00');
fopMsgM_setPaneData(&i_Meter->field_0x2940[1], sMainParts1, 'arw2');
fopMsgM_setPaneData(&i_Meter->field_0x29b0[1], sMainParts1, 'ip02');
fopMsgM_setPaneData(&i_Meter->field_0x2a20, sMainParts2, 'rup1');
fopMsgM_setPaneData(&i_Meter->field_0x2a58, sMainParts2, 'rup2');
fopMsgM_setPaneData(&i_Meter->field_0x19f0[0], sMainParts2, 'nm00');
fopMsgM_setPaneData(&i_Meter->field_0x19f0[1], sMainParts2, 'nm01');
fopMsgM_setPaneData(&i_Meter->field_0x19f0[2], sMainParts2, 'nm02');
fopMsgM_setPaneData(&i_Meter->field_0x19f0[3], sMainParts2, 'nm03');
fopMsgM_setPaneData(&i_Meter->field_0x1b40[0], sMainParts2, 'nm04');
fopMsgM_setPaneData(&i_Meter->field_0x1b40[1], sMainParts2, 'nm05');
fopMsgM_setPaneData(&i_Meter->field_0x1b40[2], sMainParts2, 'nm06');
fopMsgM_setPaneData(&i_Meter->field_0x1b40[3], sMainParts2, 'nm07');
i_Meter->field_0x19f0[1].mUserArea = dComIfGs_getWalletSize();
dMeter_walletChange(i_Meter);
}
/* 8020408C-8020438C .text dMeter_screenDataTimeSet__FP15sub_meter_class */
void dMeter_screenDataTimeSet(sub_meter_class* i_Meter) {
sScrTimer1 = new J2DScreen();
JUT_ASSERT(12863, sScrTimer1 != NULL);
sScrTimer2 = new J2DScreen();
JUT_ASSERT(12865, sScrTimer2 != NULL);
sScrTimer1->set("time_swim_1.blo", dComIfGp_getSwimResArchive());
sScrTimer2->set("time_swim_2.blo", dComIfGp_getSwimResArchive());
fopMsgM_setPaneData(&i_Meter->field_0x2a90[8], sScrTimer2, 'hk33');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[7], sScrTimer2, 'hk32');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[6], sScrTimer2, 'hk31');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[5], sScrTimer2, 'hk23');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[4], sScrTimer2, 'hk22');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[3], sScrTimer2, 'hk21');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[2], sScrTimer2, 'hk13');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[1], sScrTimer2, 'hk12');
fopMsgM_setPaneData(&i_Meter->field_0x2a90[0], sScrTimer2, 'hk11');
fopMsgM_setPaneData(&i_Meter->field_0x2c88, sScrTimer2, 'wk00');
fopMsgM_setPaneData(&i_Meter->field_0x2cc0, sScrTimer2, 'msk2');
fopMsgM_setPaneData(&i_Meter->field_0x2d30, sScrTimer1, 'msk1');
fopMsgM_setPaneData(&i_Meter->field_0x2cf8, sScrTimer1, 'soul');
fopMsgM_setPaneData(&i_Meter->field_0x2da0, sScrTimer1, 'main');
fopMsgM_setPaneData(&i_Meter->field_0x2dd8, sScrTimer1, 'kg00');
sScrTimer2->search('kra')->hide();
}
/* 8020438C-80204404 .text dMeter_screenDataArrowSet__FP15sub_meter_class */
void dMeter_screenDataArrowSet(sub_meter_class* i_Meter) {
fopMsgM_setPaneData(&i_Meter->field_0x2e10[0], sChoiceRoad, 'yaz4');
fopMsgM_setPaneData(&i_Meter->field_0x2e10[1], sChoiceRoad, 'yaz3');
fopMsgM_setPaneData(&i_Meter->field_0x2e10[2], sChoiceRoad, 'yaz2');
fopMsgM_setPaneData(&i_Meter->field_0x2e10[3], sChoiceRoad, 'yaz1');
}
/* 80204404-80204820 .text dMeter_Draw__FP15sub_meter_class */
static BOOL dMeter_Draw(sub_meter_class* i_Meter) {
fopMsgM_setAlpha(&i_Meter->field_0x02f8);
for (s32 i = 0; i < 3; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x0100[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x0250);
fopMsgM_setAlpha(&i_Meter->field_0x0288);
fopMsgM_setAlpha(&i_Meter->field_0x02c0);
fopMsgM_setAlpha(&i_Meter->field_0x0368);
fopMsgM_setAlpha(&i_Meter->field_0x03a0);
fopMsgM_setAlpha(&i_Meter->field_0x03d8);
fopMsgM_setAlpha(&i_Meter->field_0x0410);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x0448[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x0528);
fopMsgM_setAlpha(&i_Meter->field_0x0560);
fopMsgM_setAlpha(&i_Meter->field_0x0598);
fopMsgM_setAlpha(&i_Meter->field_0x0608);
dMeter_heartDraw(i_Meter);
for (s32 i = 0; i < 8; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x0f38[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x10f8);
fopMsgM_setAlpha(&i_Meter->field_0x11a0);
fopMsgM_setAlpha(&i_Meter->field_0x11d8);
fopMsgM_setAlpha(&i_Meter->field_0x1210);
fopMsgM_setAlpha(&i_Meter->field_0x12f0);
fopMsgM_setAlpha(&i_Meter->field_0x1398);
fopMsgM_setAlpha(&i_Meter->field_0x13d0);
fopMsgM_setAlpha(&i_Meter->field_0x1408);
fopMsgM_setAlpha(&i_Meter->field_0x1440);
for (s32 i = 0; i < 3; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x1478[i]);
fopMsgM_setAlpha(i_Meter->field_0x1868);
}
fopMsgM_setAlpha(&i_Meter->field_0x1520);
fopMsgM_setAlpha(&i_Meter->field_0x1558);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x1590[i]);
fopMsgM_setAlpha(i_Meter->field_0x1718);
}
fopMsgM_setAlpha(&i_Meter->field_0x1670);
fopMsgM_setAlpha(&i_Meter->field_0x16a8);
fopMsgM_setAlpha(&i_Meter->field_0x16e0);
fopMsgM_setAlpha(&i_Meter->field_0x17f8);
fopMsgM_setAlpha(&i_Meter->field_0x1830);
fopMsgM_setAlpha(&i_Meter->field_0x1910);
fopMsgM_setAlpha(&i_Meter->field_0x1948);
if (i_Meter->field_0x1830.pane->isVisible() && i_Meter->field_0x3020 == 7) {
for (s32 i = 0; i < 3; i++) {
clock[i].mBlack.a = i_Meter->field_0x1830.mNowAlpha;
}
} else {
for (s32 i = 0; i < 3; i++) {
clock[i].mBlack.a = 0;
}
}
fopMsgM_setAlpha(&i_Meter->field_0x1980);
fopMsgM_setAlpha(&i_Meter->field_0x19b8);
for (s32 i = 0; i < 2; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x1ad0[i]);
fopMsgM_setAlpha(&i_Meter->field_0x1c20[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x1c90);
dMeter_weponDraw(i_Meter);
dMeter_actionDraw(i_Meter);
dMeter_xyDraw(i_Meter);
dMeter_rDraw(i_Meter);
for (s32 i = 0; i < 4; i++) {
fopMsgM_setAlpha(&i_Meter->field_0x19f0[i]);
fopMsgM_setAlpha(&i_Meter->field_0x1b40[i]);
}
fopMsgM_setAlpha(&i_Meter->field_0x2a20);
fopMsgM_setAlpha(&i_Meter->field_0x2a58);
dMeter_swimDraw(i_Meter);
dMeter_arrowDraw(i_Meter);
if (!fopOvlpM_IsDoingReq()) {
dComIfGd_set2DOpa(&meter1);
for (s32 i = 0; i < 3; i++) {
dComIfGd_set2DOpa(&clock[i]);
}
if (sScrTimer1 != NULL && sScrTimer2 != NULL) {
dComIfGd_set2DOpa(&tekari);
}
dComIfGd_set2DOpaTop(&meter2);
dMeter_moveItemDraw(i_Meter);
if (i_Meter->field_0x3028 == 1 && dComIfGp_getMetronome() && !(i_Meter->mStatusFlags & dMtrStts_UNK8_e) &&
!(i_Meter->mStatusFlags & dMtrStts_UNK10_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK800000_e) && !(i_Meter->mStatusFlags & dMtrStts_UNK20_e))
{
dComIfGd_set2DOpa(dMn_c);
}
}
return TRUE;
}
/* 80204820-80204C20 .text dMeter_Execute__FP15sub_meter_class */
static BOOL dMeter_Execute(sub_meter_class* i_Meter) {
JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_Meter->heap);
i_Meter->field_0x3024 = 0;
dMeter_statusCheck(i_Meter);
dMeter_alphaControl(i_Meter);
dMeter_heartMove(i_Meter);
dMeter_actionMove(i_Meter);
dMeter_weponMove(i_Meter);
dMeter_xyMove(i_Meter);
dMeter_rMove(i_Meter);
f32 f31 = g_meterHIO.field_0x40 / 100.0f;
f32 f30 = g_meterHIO.field_0x44 / 100.0f;
f32 f29 = g_meterHIO.field_0x46 / 100.0f;
dMeter_parentPaneTrans(&i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x2898, &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x28d0, &i_Meter->field_0x2908, f31);
dMeter_childPaneTransOnly(&i_Meter->field_0x1d00, &i_Meter->field_0x2908, f31, f30);
dMeter_childPaneTransOnly(&i_Meter->field_0x2828, &i_Meter->field_0x2908, f31, f29);
dMeter_childPaneTransChildTrans(&i_Meter->field_0x2860, &i_Meter->field_0x2908, &i_Meter->field_0x2828, f31, f29);
dMeter_childPaneTransOnly(&i_Meter->field_0x1d38, &i_Meter->field_0x2908, f31, f30);
for (int i = 0; i < 2; i++) {
dMeter_childPaneTrans(&i_Meter->field_0x1e18[i], &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x1da8[i], &i_Meter->field_0x2908, f31);
}
dMeter_childPaneTrans(&i_Meter->field_0x2748, &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x2780, &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x27b8, &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x27f0, &i_Meter->field_0x2908, f31);
for (int i = 0; i < 3; i++) {
dMeter_childPaneTransOnly(&i_Meter->field_0x2080[i], &i_Meter->field_0x2908, f31, f29);
dMeter_childPaneTransChildTransOnly(&i_Meter->field_0x1fd8[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
dMeter_childPaneTransChildTransOnly(&i_Meter->field_0x1f30[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
dMeter_childPaneTransChildTrans(&i_Meter->field_0x2128[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
dMeter_childPaneTransChildTrans(&i_Meter->field_0x2320[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
dMeter_childPaneTransChildTrans(&i_Meter->field_0x23c8[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
dMeter_childPaneTransChildTrans(&i_Meter->field_0x2470[i], &i_Meter->field_0x2908, &i_Meter->field_0x2080[i], f31, f29);
}
dMeter_childPaneTrans(&i_Meter->field_0x2518, &i_Meter->field_0x2908, f31);
for (int i = 0; i < 2; i++) {
dMeter_childPaneTrans(&i_Meter->field_0x2550[i], &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x25c0[i], &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x2630[i], &i_Meter->field_0x2908, f31);
}
dMeter_childPaneTransOnly(&i_Meter->field_0x1cc8, &i_Meter->field_0x2908, f31, f30);
dMeter_childPaneTrans(&i_Meter->field_0x26d8, &i_Meter->field_0x2908, f31);
dMeter_childPaneTrans(&i_Meter->field_0x26a0, &i_Meter->field_0x2908, f31);
dMeter_enemyMove(i_Meter);
dMeter_magicMove(i_Meter);
dMeter_windMove(i_Meter);
dMeter_metronomeMove(i_Meter);
dMeter_rupyMove(i_Meter);
dMeter_keyMove(i_Meter);
dMeter_compassMove(i_Meter);
dMeter_mapMove(i_Meter);
dMeter_swimMove(i_Meter);
dMeter_arrowMove(i_Meter);
if (dMeter_itemMoveFlagCheck()) {
dMeter_moveItemMove(i_Meter);
}
dMeter_arwMove(i_Meter);
dMeter_placeNameMove();
dMeter_menuMove(i_Meter);
dMeter_gaugeAlpha(i_Meter);
dComIfGp_setButtonActionMode(i_Meter->field_0x3024);
mDoExt_setCurrentHeap(oldHeap);
return TRUE;
}
/* 80204C20-80204C28 .text dMeter_IsDelete__FP15sub_meter_class */
static BOOL dMeter_IsDelete(sub_meter_class* i_Meter) {
return TRUE;
}
/* 80204C28-80205034 .text dMeter_Delete__FP15sub_meter_class */
static BOOL dMeter_Delete(sub_meter_class* i_Meter) {
JKRHeap* pJVar1 = mDoExt_setCurrentHeap(i_Meter->heap);
if ((s32)dMeter_mMapCtrlDisp.field_0x0 != 0) {
g_dComIfG_gameInfo.play.field_0x497a = 0;
} else {
g_dComIfG_gameInfo.play.field_0x497a = 1;
}
if (rupy_soundOnFlag != 0) {
mDoAud_seStart(JA_SE_LUPY_INC_CNT_2);
rupy_soundSetFlag = 0;
rupy_soundOnFlag = 0;
}
if (dMeter_windID != fpcM_ERROR_PROCESS_ID_e) {
if (fopMsgM_SearchByID(dMeter_windID) != NULL) {
msg_class* pmVar2 = fopMsgM_SearchByID(dMeter_windID);
fopMsgM_Delete(pmVar2);
dMeter_windID = fpcM_ERROR_PROCESS_ID_e;
dMeter_windStatus = 0;
} else {
dMeter_windID = fpcM_ERROR_PROCESS_ID_e;
dMeter_windStatus = 0;
}
}
if (i_Meter->mpRupyParticle != NULL) {
i_Meter->mpRupyParticle->becomeInvalidEmitter();
i_Meter->mpRupyParticle->quitImmortalEmitter();
}
for (s32 i = 0; i < 2; i++) {
if (i_Meter->field_0x2f24[i] != NULL) {
i_Meter->field_0x2f24[i]->becomeInvalidEmitter();
i_Meter->field_0x2f24[i]->quitImmortalEmitter();
}
}
for (s32 i = 0; i < 2; i++) {
if (i_Meter->field_0x2f2c[i] != NULL) {
i_Meter->field_0x2f2c[i]->becomeInvalidEmitter();
i_Meter->field_0x2f2c[i]->quitImmortalEmitter();
}
}
if (dMn_c != NULL) {
dMn_c->_delete();
delete dMn_c;
dMn_c = NULL;
}
for (s32 i = 0; i < 3; i++) {
i_Meter->heap->free(i_Meter->actionTex[i]);
i_Meter->heap->free(i_Meter->xyIconTex[i]);
}
for (s32 i = 0; i < 2; i++) {
i_Meter->heap->free(i_Meter->arrowTex[i]);
if (i == 0) {
i_Meter->heap->free(i_Meter->moveIconTex[i]);
}
}
delete sMainParts1;
delete sMainParts2;
delete sMainParts3;
if (sScrTimer1 != NULL && sScrTimer2 != NULL) {
dComIfGp_getSwimResArchive()->removeResourceAll();
delete sScrTimer1;
delete sScrTimer2;
sScrTimer1 = NULL;
sScrTimer2 = NULL;
}
delete sChoiceRoad;
sChoiceRoad = NULL;
delete moveItemPane;
moveItemPane = NULL;
mDoExt_setCurrentHeap(pJVar1);
fopMsgM_destroyExpHeap(i_Meter->heap);
mDoHIO_deleteChild(g_meterHIO.mNo);
mDoHIO_deleteChild(g_menuHIO.mNo);
mDoHIO_deleteChild(g_msgHIO.mNo);
mDoHIO_deleteChild(g_messageHIO.mNo);
mDoHIO_deleteChild(g_meter_mapHIO.mNo);
return TRUE;
}
/* 80205034-802057B8 .text dMeter_Create__FP9msg_class */
static cPhs_State dMeter_Create(msg_class* i_this) {
sub_meter_class* i_Meter = (sub_meter_class*)i_this;
#if VERSION > VERSION_DEMO
mapAlpha = 0;
menu_status = 0;
menu_status_old = 0;
dMenu_pause = 0;
dMenu_frame_timer = 0;
dMenu_menuButton = 0;
subWinFlag = 0;
dMeter_auctionFlag = 0;
dMeter_itemMoveFlag = 0;
dMeter_btn_chk = 0;
dMeter_itemNum = 0;
dMeter_itemTimer = 0;
texRateX = 0.0f;
texRateY = 0.0f;
texScaleX = 0.0f;
texScaleY = 0.0f;
dMenu_menuFlag = 0;
dMeter_place_name = 0;
dMeter_itemMode = 0;
dMeter_collectMode = 0;
rupy_soundSetFlag = 0;
rupy_soundOnFlag = 0;
#endif
i_Meter->heap = fopMsgM_createExpHeap(0x2a819);
JUT_ASSERT(13475, i_Meter->heap != NULL);
JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_Meter->heap);
sMainParts1 = new MyScreen();
JUT_ASSERT(13480, sMainParts1 != NULL);
sMainParts1->set("main_parts1.blo", dComIfGp_getMenuArchive());
sMainParts2 = new J2DScreen();
JUT_ASSERT(13484, sMainParts2 != NULL);
sMainParts2->set("main_parts2.blo", dComIfGp_getMenuArchive());
sMainParts3 = new J2DScreen();
JUT_ASSERT(13488, sMainParts3 != NULL);
sMainParts3->set("main_parts3.blo", dComIfGp_getMenuArchive());
sChoiceRoad = new J2DScreen();
JUT_ASSERT(13492, sChoiceRoad != NULL);
sChoiceRoad->set("choice_road.blo", dComIfGp_getMenuArchive());
for (s32 i = 0; i < 3; i++) {
i_Meter->actionTex[i] = (ResTIMG*)i_Meter->heap->alloc(0xc00, 0x20);
JUT_ASSERT(13497, i_Meter->actionTex[i] != NULL);
i_Meter->xyIconTex[i] = (ResTIMG*)i_Meter->heap->alloc(0xc00, 0x20);
JUT_ASSERT(13499, i_Meter->xyIconTex[i] != NULL);
}
for (s32 i = 0; i < 2; i++) {
if (i == 0) {
i_Meter->moveIconTex[i] = (ResTIMG*)i_Meter->heap->alloc(0xc00, 0x20);
JUT_ASSERT(13506, i_Meter->moveIconTex[i] != NULL);
}
i_Meter->arrowTex[i] = (ResTIMG*)i_Meter->heap->alloc(0xc00, 0x20);
JUT_ASSERT(13509, i_Meter->arrowTex[i] != NULL);
}
#if VERSION == VERSION_DEMO
fopMsgM_Create(fpcNm_MENUWINDOW_e, NULL, NULL);
#else
if (strcmp(dComIfGp_getStartStageName(), "sea_T") != 0) {
fopMsgM_Create(fpcNm_MENUWINDOW_e, NULL, NULL);
}
#endif
fopMsgM_Create(fpcNm_MESG_e, NULL, NULL);
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
dComIfGp_setRStatusForce(dActStts_BLANK_e);
dComIfGp_setAStatusForce(dActStts_BLANK_e);
g_meterHIO.mNo = mDoHIO_createChild("通常画面表示", &g_meterHIO); // "Normal Screen Display"
g_menuHIO.mNo = mDoHIO_createChild("メニュー画面", &g_menuHIO); // "Menu Screen"
g_msgHIO.mNo = mDoHIO_createChild("Message(会話)", &g_msgHIO); // "Message (Talk)"
g_messageHIO.mNo = mDoHIO_createChild("Message(看板)", &g_messageHIO); // "Message (Sign)"
g_meter_mapHIO.mNo = mDoHIO_createChild("マップ2", &g_meter_mapHIO); // "Map 2"
dMeter_screenDataSet(i_Meter);
dMeter_screenDataArrowSet(i_Meter);
dComIfGp_2dShowOn();
i_Meter->field_0x2f6c = 1.0f;
i_Meter->field_0x2fd8 = g_meterHIO.field_0x6;
dMeter_mapInit(i_Meter);
dMeter_compassInit(i_Meter);
dMeter_arrowInit(i_Meter);
mDoExt_setCurrentHeap(i_Meter->heap);
dMeter_heartInit(i_Meter);
dMeter_weponInit(i_Meter);
dMeter_actionInit(i_Meter);
dMeter_xyInit(i_Meter);
dMeter_rInit(i_Meter);
dMeter_enemyInit(i_Meter);
dMeter_magicInit(i_Meter);
dMeter_menuInit(i_Meter);
dMeter_windInit(i_Meter);
dMeter_metronomeInit(i_Meter);
dMeter_rupyInit(i_Meter);
dMeter_keyInit(i_Meter);
dMeter_moveItemInit(i_Meter);
dMeter_arwInit(i_Meter);
dTimer_createStockTimer();
mDoExt_setCurrentHeap(oldHeap);
fopMsgM_setStageLayer(i_Meter);
return cPhs_COMPLEATE_e;
}
/* 802057B8-80205814 .text __dt__16dDlst_2DMETER2_cFv */
dDlst_2DMETER2_c::~dDlst_2DMETER2_c() {
}
/* 80205814-80205870 .text __dt__16dDlst_2DMETER1_cFv */
dDlst_2DMETER1_c::~dDlst_2DMETER1_c() {
}
/* 80205870-802058B8 .text __dt__20dMeter_message_HIO_cFv */
dMeter_message_HIO_c::~dMeter_message_HIO_c() {
}
/* 802058B8-80205900 .text __dt__16dMeter_msg_HIO_cFv */
dMeter_msg_HIO_c::~dMeter_msg_HIO_c() {
}
/* 80205900-80205948 .text __dt__16dMeter_menuHIO_cFv */
dMeter_menuHIO_c::~dMeter_menuHIO_c() {
}
/* 80205948-80205990 .text __dt__12dMeter_HIO_cFv */
dMeter_HIO_c::~dMeter_HIO_c() {
}
/* 80205990-802059E0 .text __ct__16dMeter_map_HIO_cFv */
dMeter_map_HIO_c::dMeter_map_HIO_c() {
field_0x8 = 0x23;
field_0xa = 0x152;
field_0xc = -0xb4;
field_0x14 = 0x24e;
field_0x16 = 0x96;
field_0x6 = 200;
field_0x7 = 1;
field_0x10 = 0.8f;
}
/* 802059E0-80205A44 .text initMapCtrlDisp__13mapCtrlDisp_cFv */
void mapCtrlDisp_c::initMapCtrlDisp() {
dMap_setMapAlpha(0);
dMap_setIconFreeAlpha(0);
dMap_setMapDispMode(1);
dMap_setMapDispPosLeftUpX(g_meter_mapHIO.field_0x8);
dMap_setMapDispPosLeftUpY(g_meter_mapHIO.field_0xa);
dMap_setIconFreePosX(g_meter_mapHIO.field_0x14);
dMap_setIconFreePosY(g_meter_mapHIO.field_0x16);
dMap_setIconFreeScale(0.0f);
dMap_setIconSelfAlpha(0);
dMap_setIconSelfScale(0.0f);
dMap_setIconDispMode(0);
field_0x0 = 0;
field_0x1 = 0;
field_0x2 = 0;
field_0x4 = 0;
}
/* 80205A44-80205D24 .text moveMapCtrlDisp__13mapCtrlDisp_cFv */
void mapCtrlDisp_c::moveMapCtrlDisp() {
f32 fVar1;
f32 dVar7;
if (dCam_isManual(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0))) != 0) {
if (field_0x2 < 9) {
field_0x2++;
if (field_0x2 < 6) {
dVar7 = fopMsgM_valueIncrease(6, field_0x2, 0);
fVar1 = dVar7 * 1.2f;
} else {
dVar7 = fopMsgM_valueIncrease(3, field_0x2 - 6, 2);
fVar1 = 1.2f - (dVar7 * 0.1f);
dVar7 = 1.0f;
}
} else {
dVar7 = 1.0f;
fVar1 = 1.1f;
}
} else {
if (field_0x2 > 5) {
field_0x2 = 5;
}
if (field_0x2 != 0) {
field_0x2--;
}
dVar7 = fopMsgM_valueIncrease(5, field_0x2, 2);
fVar1 = 1.1f;
}
dMap_c::setIconDispMode(dMapIconDisp_NONE_e);
s8 alpha = (u8)((dVar7 * 255.0f) * (g_meter_mapHIO.field_0x6 / 255.0f));
dMap_c::setIconFreeAlpha(alpha);
dMap_c::setIconFreeScale(fVar1 * g_meter_mapHIO.field_0x10);
if ((u8)alpha != 0) {
dMap_c::setIconDispMode(dMapIconDisp_FREE_e);
}
if (dComIfGp_checkCameraAttentionStatus(0, dCamAttnStts_00000400_e)) {
daPy_py_c* player = daPy_getPlayerActorClass();
BOOL temp = player->checkSubjectAccept() && !dComIfGp_event_runCheck();
if (temp) {
dMap_c::setIconSelfAlpha(0xCC);
dMap_c::setIconDispMode(dMapIconDisp_SELF_e );
}
}
if (dCam_getBody()->mCurMode == 4) {
dMap_c::setIconDispMode(dMapIconDisp_NONE_e);
}
if (field_0x0 != 0) {
if (field_0x4 != 0 && cLib_addCalcAngleS(&field_0x4, 0, 2, 0x3c, 10) == 0 && ((field_0x1 & 4) == 0)) {
mDoAud_seStart(JA_SE_MAP_SHOW_END);
}
} else {
cLib_addCalcAngleS(&field_0x4, g_meter_mapHIO.field_0xc - g_meter_mapHIO.field_0x8, 2, 0x3c, 10);
}
int uVar6_2 = ((dComIfGp_getWindow(0)->getScissor()->mYOrig + dComIfGp_getWindow(0)->getScissor()->mHeight) - 452.0f);
dMap_c::setMapDispPosLeftUpX(g_meter_mapHIO.field_0x8 + field_0x4);
dMap_c::setMapDispPosLeftUpY(g_meter_mapHIO.field_0xa);
if ((f32)(uVar6_2) < 0.0f) {
dMap_c::setMapDispPosLeftUpY(uVar6_2 + g_meter_mapHIO.field_0xa);
}
}
/* 80205D24-80205D6C .text __dt__16dMeter_map_HIO_cFv */
dMeter_map_HIO_c::~dMeter_map_HIO_c() {
}
static msg_method_class l_dMeter_Method = {
(process_method_func)dMeter_Create,
(process_method_func)dMeter_Delete,
(process_method_func)dMeter_Execute,
(process_method_func)dMeter_IsDelete,
(process_method_func)dMeter_Draw,
};
msg_process_profile_definition g_profile_METER = {
/* Layer ID */ fpcLy_CURRENT_e,
/* List ID */ 12,
/* List Prio */ fpcPi_CURRENT_e,
/* Proc Name */ fpcNm_METER_e,
/* Proc SubMtd */ &g_fpcLf_Method.base,
/* Size */ sizeof(sub_meter_class),
/* Size Other */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopMsg_Method,
/* Draw Prio */ fpcDwPi_METER_e,
/* Msg SubMtd */ &l_dMeter_Method,
};