From 7ac3f3cd036e97e725cc2e2b599152f3061004f0 Mon Sep 17 00:00:00 2001 From: robojumper Date: Wed, 9 Apr 2025 01:53:57 +0200 Subject: [PATCH] d_lyt_meter stuff --- config/SOUE01/splits.txt | 4 + config/SOUE01/symbols.txt | 348 ++++---- include/common.h | 9 + include/d/a/d_a_player.h | 16 +- include/d/lyt/d2d.h | 2 +- include/d/lyt/d_lyt_common_icon_item.h | 6 + include/d/lyt/d_lyt_do_button.h | 10 +- include/d/lyt/d_lyt_meter_configuration.h | 92 +- include/d/lyt/d_lyt_unknowns.h | 20 +- include/d/lyt/meter/d_lyt_meter.h | 112 +-- include/d/lyt/meter/d_lyt_meter_a_btn.h | 4 +- .../d/lyt/meter/d_lyt_meter_ganbari_gauge.h | 52 +- include/d/lyt/meter/d_lyt_meter_item_select.h | 219 ++++- include/d/lyt/meter/d_lyt_meter_parts.h | 91 ++ include/nw4r/lyt/lyt_pane.h | 4 + src/d/lyt/meter/d_lyt_meter_a_btn.cpp | 12 +- src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp | 394 ++++++++- src/d/lyt/meter/d_lyt_meter_item_select.cpp | 809 ++++++++++++++++++ 18 files changed, 1837 insertions(+), 367 deletions(-) create mode 100644 include/d/lyt/meter/d_lyt_meter_parts.h diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 82b606cb..5d290b6d 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -359,6 +359,7 @@ d/lyt/meter/d_lyt_meter_item_select.cpp: .text start:0x800E8EE0 end:0x800F35A8 .ctors start:0x804DB700 end:0x804DB704 .data start:0x805153A8 end:0x80516A28 + .bss start:0x805AACD0 end:0x805AB650 d/lyt/meter/d_lyt_meter_plus_btn.cpp: .text start:0x800F35B0 end:0x800F4768 @@ -388,7 +389,10 @@ d/lyt/meter/d_lyt_meter_rupy.cpp: d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp: .text start:0x801026B0 end:0x80105548 .ctors start:0x804DB718 end:0x804DB71C + .rodata start:0x804E69D8 end:0x804E6A58 .data start:0x80518F00 end:0x80519578 + .sdata2 start:0x80579C78 end:0x80579CF8 + .bss start:0x805AC750 end:0x805ACA90 d/lyt/meter/d_lyt_meter_event_skip.cpp: .text start:0x80105550 end:0x80105F68 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 1c644bf3..677f45dc 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -5666,148 +5666,148 @@ fn_800E8AA0 = .text:0x800E8AA0; // type:function size:0x8 __sinit_\d_lyt_meter_nun_stk_cpp = .text:0x800E8AB0; // type:function size:0x338 scope:local __dt__32sFStateID_c<17dLytMeterNunStk_c>Fv = .text:0x800E8DF0; // type:function size:0x58 isSameName__32sFStateID_c<17dLytMeterNunStk_c>CFPCc = .text:0x800E8E50; // type:function size:0x88 -LytMeterItemSelectIcon__stateWaitEnter = .text:0x800E8EE0; // type:function size:0x4 -LytMeterItemSelectIcon__stateWaitUpdate = .text:0x800E8EF0; // type:function size:0x8C +initializeState_Wait__25dLytMeterItemSelectIcon_cFv = .text:0x800E8EE0; // type:function size:0x4 +executeState_Wait__25dLytMeterItemSelectIcon_cFv = .text:0x800E8EF0; // type:function size:0x8C changeState__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800E8F80; // type:function size:0x10 -LytMeterItemSelectIcon__stateWaitLeave = .text:0x800E8F90; // type:function size:0x4 -LytMeterItemSelectIcon__stateOnEnter = .text:0x800E8FA0; // type:function size:0x4 -LytMeterItemSelectIcon__stateOnUpdate = .text:0x800E8FB0; // type:function size:0x9C -LytMeterItemSelectIcon__stateOnLeave = .text:0x800E9050; // type:function size:0x4 -LytMeterItemSelectIcon__stateSelectEnter = .text:0x800E9060; // type:function size:0x4 -LytMeterItemSelectIcon__stateSelectUpdate = .text:0x800E9070; // type:function size:0x98 -LytMeterItemSelectIcon__stateSelectLeave = .text:0x800E9110; // type:function size:0x4 -LytMeterItemSelectIcon__stateOffEnter = .text:0x800E9120; // type:function size:0x4 -LytMeterItemSelectIcon__stateOffUpdate = .text:0x800E9130; // type:function size:0x84 -LytMeterItemSelectIcon__stateOffLeave = .text:0x800E91C0; // type:function size:0x4 -fn_800E91D0 = .text:0x800E91D0; // type:function size:0x6C -fn_800E9240 = .text:0x800E9240; // type:function size:0x10 +finalizeState_Wait__25dLytMeterItemSelectIcon_cFv = .text:0x800E8F90; // type:function size:0x4 +initializeState_On__25dLytMeterItemSelectIcon_cFv = .text:0x800E8FA0; // type:function size:0x4 +executeState_On__25dLytMeterItemSelectIcon_cFv = .text:0x800E8FB0; // type:function size:0x9C +finalizeState_On__25dLytMeterItemSelectIcon_cFv = .text:0x800E9050; // type:function size:0x4 +initializeState_Select__25dLytMeterItemSelectIcon_cFv = .text:0x800E9060; // type:function size:0x4 +executeState_Select__25dLytMeterItemSelectIcon_cFv = .text:0x800E9070; // type:function size:0x98 +finalizeState_Select__25dLytMeterItemSelectIcon_cFv = .text:0x800E9110; // type:function size:0x4 +initializeState_Off__25dLytMeterItemSelectIcon_cFv = .text:0x800E9120; // type:function size:0x4 +executeState_Off__25dLytMeterItemSelectIcon_cFv = .text:0x800E9130; // type:function size:0x84 +finalizeState_Off__25dLytMeterItemSelectIcon_cFv = .text:0x800E91C0; // type:function size:0x4 +init__25dLytMeterItemSelectIcon_cFv = .text:0x800E91D0; // type:function size:0x6C +execute__25dLytMeterItemSelectIcon_cFv = .text:0x800E9240; // type:function size:0x10 executeState__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800E9250; // type:function size:0x10 -fn_800E9260 = .text:0x800E9260; // type:function size:0x4 -fn_800E9270 = .text:0x800E9270; // type:function size:0x8C +initializeState_Wait__26dLytMeterItemSelectBlink_cFv = .text:0x800E9260; // type:function size:0x4 +executeState_Wait__26dLytMeterItemSelectBlink_cFv = .text:0x800E9270; // type:function size:0x8C changeState__95sStateMgr_c<26dLytMeterItemSelectBlink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800E9300; // type:function size:0x10 -fn_800E9310 = .text:0x800E9310; // type:function size:0x4 -fn_800E9320 = .text:0x800E9320; // type:function size:0x4 -fn_800E9330 = .text:0x800E9330; // type:function size:0x9C -fn_800E93D0 = .text:0x800E93D0; // type:function size:0x4 -fn_800E93E0 = .text:0x800E93E0; // type:function size:0x4 -fn_800E93F0 = .text:0x800E93F0; // type:function size:0x98 -fn_800E9490 = .text:0x800E9490; // type:function size:0x4 -fn_800E94A0 = .text:0x800E94A0; // type:function size:0x4 -fn_800E94B0 = .text:0x800E94B0; // type:function size:0x84 -fn_800E9540 = .text:0x800E9540; // type:function size:0x4 -fn_800E9550 = .text:0x800E9550; // type:function size:0x20 -fn_800E9570 = .text:0x800E9570; // type:function size:0x10 +finalizeState_Wait__26dLytMeterItemSelectBlink_cFv = .text:0x800E9310; // type:function size:0x4 +initializeState_On__26dLytMeterItemSelectBlink_cFv = .text:0x800E9320; // type:function size:0x4 +executeState_On__26dLytMeterItemSelectBlink_cFv = .text:0x800E9330; // type:function size:0x9C +finalizeState_On__26dLytMeterItemSelectBlink_cFv = .text:0x800E93D0; // type:function size:0x4 +initializeState_Select__26dLytMeterItemSelectBlink_cFv = .text:0x800E93E0; // type:function size:0x4 +executeState_Select__26dLytMeterItemSelectBlink_cFv = .text:0x800E93F0; // type:function size:0x98 +finalizeState_Select__26dLytMeterItemSelectBlink_cFv = .text:0x800E9490; // type:function size:0x4 +initializeState_Off__26dLytMeterItemSelectBlink_cFv = .text:0x800E94A0; // type:function size:0x4 +executeState_Off__26dLytMeterItemSelectBlink_cFv = .text:0x800E94B0; // type:function size:0x84 +finalizeState_Off__26dLytMeterItemSelectBlink_cFv = .text:0x800E9540; // type:function size:0x4 +init__26dLytMeterItemSelectBlink_cFv = .text:0x800E9550; // type:function size:0x20 +execute__26dLytMeterItemSelectBlink_cFv = .text:0x800E9570; // type:function size:0x10 executeState__95sStateMgr_c<26dLytMeterItemSelectBlink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800E9580; // type:function size:0x10 -fn_800E9590 = .text:0x800E9590; // type:function size:0x4 -fn_800E95A0 = .text:0x800E95A0; // type:function size:0x8C +initializeState_Wait__25dLytMeterItemSelectText_cFv = .text:0x800E9590; // type:function size:0x4 +executeState_Wait__25dLytMeterItemSelectText_cFv = .text:0x800E95A0; // type:function size:0x8C changeState__94sStateMgr_c<25dLytMeterItemSelectText_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800E9630; // type:function size:0x10 -fn_800E9640 = .text:0x800E9640; // type:function size:0x4 -fn_800E9650 = .text:0x800E9650; // type:function size:0x4 -fn_800E9660 = .text:0x800E9660; // type:function size:0x9C -fn_800E9700 = .text:0x800E9700; // type:function size:0x4 -fn_800E9710 = .text:0x800E9710; // type:function size:0x4 -fn_800E9720 = .text:0x800E9720; // type:function size:0x98 -fn_800E97C0 = .text:0x800E97C0; // type:function size:0x4 -fn_800E97D0 = .text:0x800E97D0; // type:function size:0x4 -fn_800E97E0 = .text:0x800E97E0; // type:function size:0x84 -fn_800E9870 = .text:0x800E9870; // type:function size:0x4 -fn_800E9880 = .text:0x800E9880; // type:function size:0x20 -fn_800E98A0 = .text:0x800E98A0; // type:function size:0x10 +finalizeState_Wait__25dLytMeterItemSelectText_cFv = .text:0x800E9640; // type:function size:0x4 +initializeState_On__25dLytMeterItemSelectText_cFv = .text:0x800E9650; // type:function size:0x4 +executeState_On__25dLytMeterItemSelectText_cFv = .text:0x800E9660; // type:function size:0x9C +finalizeState_On__25dLytMeterItemSelectText_cFv = .text:0x800E9700; // type:function size:0x4 +initializeState_Select__25dLytMeterItemSelectText_cFv = .text:0x800E9710; // type:function size:0x4 +executeState_Select__25dLytMeterItemSelectText_cFv = .text:0x800E9720; // type:function size:0x98 +finalizeState_Select__25dLytMeterItemSelectText_cFv = .text:0x800E97C0; // type:function size:0x4 +initializeState_Off__25dLytMeterItemSelectText_cFv = .text:0x800E97D0; // type:function size:0x4 +executeState_Off__25dLytMeterItemSelectText_cFv = .text:0x800E97E0; // type:function size:0x84 +finalizeState_Off__25dLytMeterItemSelectText_cFv = .text:0x800E9870; // type:function size:0x4 +init__25dLytMeterItemSelectText_cFv = .text:0x800E9880; // type:function size:0x20 +execute__25dLytMeterItemSelectText_cFv = .text:0x800E98A0; // type:function size:0x10 executeState__94sStateMgr_c<25dLytMeterItemSelectText_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800E98B0; // type:function size:0x10 -fn_800E98C0 = .text:0x800E98C0; // type:function size:0xC -fn_800E98D0 = .text:0x800E98D0; // type:function size:0x90 +initializeState_Invisible__24dLytMeterItemSelectBtn_cFv = .text:0x800E98C0; // type:function size:0xC +executeState_Invisible__24dLytMeterItemSelectBtn_cFv = .text:0x800E98D0; // type:function size:0x90 changeState__93sStateMgr_c<24dLytMeterItemSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800E9960; // type:function size:0x10 -fn_800E9970 = .text:0x800E9970; // type:function size:0x4 -fn_800E9980 = .text:0x800E9980; // type:function size:0x84 -fn_800E9A10 = .text:0x800E9A10; // type:function size:0x10C -fn_800E9B20 = .text:0x800E9B20; // type:function size:0x4 -fn_800E9B30 = .text:0x800E9B30; // type:function size:0x4 -fn_800E9B40 = .text:0x800E9B40; // type:function size:0x6C -fn_800E9BB0 = .text:0x800E9BB0; // type:function size:0x4 -fn_800E9BC0 = .text:0x800E9BC0; // type:function size:0x84 -fn_800E9C50 = .text:0x800E9C50; // type:function size:0x10C -fn_800E9D60 = .text:0x800E9D60; // type:function size:0x4 -fn_800E9D70 = .text:0x800E9D70; // type:function size:0x40 -fn_800E9DB0 = .text:0x800E9DB0; // type:function size:0x3C +finalizeState_Invisible__24dLytMeterItemSelectBtn_cFv = .text:0x800E9970; // type:function size:0x4 +initializeState_On__24dLytMeterItemSelectBtn_cFv = .text:0x800E9980; // type:function size:0x84 +executeState_On__24dLytMeterItemSelectBtn_cFv = .text:0x800E9A10; // type:function size:0x10C +finalizeState_On__24dLytMeterItemSelectBtn_cFv = .text:0x800E9B20; // type:function size:0x4 +initializeState_Visible__24dLytMeterItemSelectBtn_cFv = .text:0x800E9B30; // type:function size:0x4 +executeState_Visible__24dLytMeterItemSelectBtn_cFv = .text:0x800E9B40; // type:function size:0x6C +finalizeState_Visible__24dLytMeterItemSelectBtn_cFv = .text:0x800E9BB0; // type:function size:0x4 +initializeState_Off__24dLytMeterItemSelectBtn_cFv = .text:0x800E9BC0; // type:function size:0x84 +executeState_Off__24dLytMeterItemSelectBtn_cFv = .text:0x800E9C50; // type:function size:0x10C +finalizeState_Off__24dLytMeterItemSelectBtn_cFv = .text:0x800E9D60; // type:function size:0x4 +init__24dLytMeterItemSelectBtn_cFlPQ23d2d7dLytSubPQ34nw4r3lyt4Pane = .text:0x800E9D70; // type:function size:0x40 +execute__24dLytMeterItemSelectBtn_cFv = .text:0x800E9DB0; // type:function size:0x3C executeState__93sStateMgr_c<24dLytMeterItemSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800E9DF0; // type:function size:0x10 -fn_800E9E00 = .text:0x800E9E00; // type:function size:0x24 -fn_800E9E30 = .text:0x800E9E30; // type:function size:0x114 +fn_800E9E00__24dLytMeterItemSelectBtn_cFUcUc = .text:0x800E9E00; // type:function size:0x24 +fn_800E9E30__24dLytMeterItemSelectBtn_cFUc = .text:0x800E9E30; // type:function size:0x114 fn_800E9F50 = .text:0x800E9F50; // type:function size:0x18 fn_800E9F70 = .text:0x800E9F70; // type:function size:0xDC __ct__21dLytMeterItemSelect_cFv = .text:0x800EA050; // type:function size:0x268 __ct__25dLytMeterItemSelectIcon_cFv = .text:0x800EA2C0; // type:function size:0x8C __ct__25dLytMeterItemSelectText_cFv = .text:0x800EA350; // type:function size:0x8C __ct__24dLytMeterItemSelectBtn_cFv = .text:0x800EA3E0; // type:function size:0x8C -LytMeterItemSelect__stateInitWaitEnter = .text:0x800EA470; // type:function size:0x4 -LytMeterItemSelect__stateInitWaitUpdate = .text:0x800EA480; // type:function size:0x6BC +initializeState_InitWait__21dLytMeterItemSelect_cFv = .text:0x800EA470; // type:function size:0x4 +executeState_InitWait__21dLytMeterItemSelect_cFv = .text:0x800EA480; // type:function size:0x6BC changeState__90sStateMgr_c<21dLytMeterItemSelect_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800EAB40; // type:function size:0x10 -LytMeterItemSelect__stateInitWaitLeave = .text:0x800EAB50; // type:function size:0x4 -LytMeterItemSelect__stateWaitEnter = .text:0x800EAB60; // type:function size:0x1C -LytMeterItemSelect__stateWaitUpdate = .text:0x800EAB80; // type:function size:0x2C0 -LytMeterItemSelect__stateWaitLeave = .text:0x800EAE40; // type:function size:0x4 -LytMeterItemSelect__stateSelectInEnter = .text:0x800EAE50; // type:function size:0x280 -LytMeterItemSelect__stateSelectInUpdate = .text:0x800EB0D0; // type:function size:0x154 -LytMeterItemSelect__stateSelectInLeave = .text:0x800EB230; // type:function size:0xC -LytMeterItemSelect__stateSelectEnter = .text:0x800EB240; // type:function size:0x4 -LytMeterItemSelect__stateSelectUpdate = .text:0x800EB250; // type:function size:0x110 -LytMeterItemSelect__stateSelectLeave = .text:0x800EB360; // type:function size:0x4 -LytMeterItemSelect__stateSetInEnter = .text:0x800EB370; // type:function size:0x120 -LytMeterItemSelect__stateSetInUpdate = .text:0x800EB490; // type:function size:0x1A8 -LytMeterItemSelect__stateSetInLeave = .text:0x800EB640; // type:function size:0x4 -LytMeterItemSelect__stateSetSpecialItemInEnter = .text:0x800EB650; // type:function size:0x184 -LytMeterItemSelect__stateSetSpecialItemInUpdate = .text:0x800EB7E0; // type:function size:0x160 -LytMeterItemSelect__stateSetSpecialItemInLeave = .text:0x800EB940; // type:function size:0x4 -LytMeterItemSelect__stateSetEnter = .text:0x800EB950; // type:function size:0x44 -LytMeterItemSelect__stateSetUpdate = .text:0x800EB9A0; // type:function size:0x1F0 -LytMeterItemSelect__stateSetLeave = .text:0x800EBB90; // type:function size:0x4 -LytMeterItemSelect__stateSetOutEnter = .text:0x800EBBA0; // type:function size:0x10 -LytMeterItemSelect__stateSetOutUpdate = .text:0x800EBBB0; // type:function size:0x8C -LytMeterItemSelect__stateSetOutLeave = .text:0x800EBC40; // type:function size:0x4 -fn_800EBC50 = .text:0x800EBC50; // type:function size:0xD8 -fn_800EBD30 = .text:0x800EBD30; // type:function size:0x10C -fn_800EBE40 = .text:0x800EBE40; // type:function size:0x4 -fn_800EBE50 = .text:0x800EBE50; // type:function size:0xAC -fn_800EBF00 = .text:0x800EBF00; // type:function size:0x17C -fn_800EC080 = .text:0x800EC080; // type:function size:0x4 -fn_800EC090 = .text:0x800EC090; // type:function size:0x78 -fn_800EC110 = .text:0x800EC110; // type:function size:0x84 -fn_800EC1A0 = .text:0x800EC1A0; // type:function size:0x4 -fn_800EC1B0 = .text:0x800EC1B0; // type:function size:0x4 -fn_800EC1C0 = .text:0x800EC1C0; // type:function size:0x1C8 -fn_800EC390 = .text:0x800EC390; // type:function size:0x4 -fn_800EC3A0 = .text:0x800EC3A0; // type:function size:0x6C -fn_800EC410 = .text:0x800EC410; // type:function size:0x138 -fn_800EC550 = .text:0x800EC550; // type:function size:0x4 -fn_800EC560 = .text:0x800EC560; // type:function size:0x140 -fn_800EC6A0 = .text:0x800EC6A0; // type:function size:0x240 -fn_800EC8E0 = .text:0x800EC8E0; // type:function size:0x54 -fn_800EC940 = .text:0x800EC940; // type:function size:0x8C -fn_800EC9D0 = .text:0x800EC9D0; // type:function size:0x27C -fn_800ECC50 = .text:0x800ECC50; // type:function size:0x4 -fn_800ECC60 = .text:0x800ECC60; // type:function size:0x4 -fn_800ECC70 = .text:0x800ECC70; // type:function size:0x150 -fn_800ECDC0 = .text:0x800ECDC0; // type:function size:0x4 -fn_800ECDD0 = .text:0x800ECDD0; // type:function size:0x2F4 -fn_800ED0D0 = .text:0x800ED0D0; // type:function size:0x210 -fn_800ED2E0 = .text:0x800ED2E0; // type:function size:0x4 -fn_800ED2F0 = .text:0x800ED2F0; // type:function size:0x90 -fn_800ED380 = .text:0x800ED380; // type:function size:0x11C -fn_800ED4A0 = .text:0x800ED4A0; // type:function size:0x4 -fn_800ED4B0 = .text:0x800ED4B0; // type:function size:0x54 -fn_800ED510 = .text:0x800ED510; // type:function size:0xAC -fn_800ED5C0 = .text:0x800ED5C0; // type:function size:0x4 -fn_800ED5D0 = .text:0x800ED5D0; // type:function size:0x138 -fn_800ED710 = .text:0x800ED710; // type:function size:0xE0 -fn_800ED7F0 = .text:0x800ED7F0; // type:function size:0x4 -fn_800ED800 = .text:0x800ED800; // type:function size:0x4 -fn_800ED810 = .text:0x800ED810; // type:function size:0xB0 -fn_800ED8C0 = .text:0x800ED8C0; // type:function size:0x4 -fn_800ED8D0 = .text:0x800ED8D0; // type:function size:0x1D4 -fn_800EDAB0 = .text:0x800EDAB0; // type:function size:0x1BC -fn_800EDC70 = .text:0x800EDC70; // type:function size:0x4 -fn_800EDC80 = .text:0x800EDC80; // type:function size:0x590 -fn_800EE210 = .text:0x800EE210; // type:function size:0x10C -fn_800EE320 = .text:0x800EE320; // type:function size:0x123C +finalizeState_InitWait__21dLytMeterItemSelect_cFv = .text:0x800EAB50; // type:function size:0x4 +initializeState_Wait__21dLytMeterItemSelect_cFv = .text:0x800EAB60; // type:function size:0x1C +executeState_Wait__21dLytMeterItemSelect_cFv = .text:0x800EAB80; // type:function size:0x2C0 +finalizeState_Wait__21dLytMeterItemSelect_cFv = .text:0x800EAE40; // type:function size:0x4 +initializeState_SelectIn__21dLytMeterItemSelect_cFv = .text:0x800EAE50; // type:function size:0x280 +executeState_SelectIn__21dLytMeterItemSelect_cFv = .text:0x800EB0D0; // type:function size:0x154 +finalizeState_SelectIn__21dLytMeterItemSelect_cFv = .text:0x800EB230; // type:function size:0xC +initializeState_Select__21dLytMeterItemSelect_cFv = .text:0x800EB240; // type:function size:0x4 +executeState_Select__21dLytMeterItemSelect_cFv = .text:0x800EB250; // type:function size:0x110 +finalizeState_Select__21dLytMeterItemSelect_cFv = .text:0x800EB360; // type:function size:0x4 +initializeState_SetIn__21dLytMeterItemSelect_cFv = .text:0x800EB370; // type:function size:0x120 +executeState_SetIn__21dLytMeterItemSelect_cFv = .text:0x800EB490; // type:function size:0x1A8 +finalizeState_SetIn__21dLytMeterItemSelect_cFv = .text:0x800EB640; // type:function size:0x4 +initializeState_SetSpecialItemIn__21dLytMeterItemSelect_cFv = .text:0x800EB650; // type:function size:0x184 +executeState_SetSpecialItemIn__21dLytMeterItemSelect_cFv = .text:0x800EB7E0; // type:function size:0x160 +finalizeState_SetSpecialItemIn__21dLytMeterItemSelect_cFv = .text:0x800EB940; // type:function size:0x4 +initializeState_Set__21dLytMeterItemSelect_cFv = .text:0x800EB950; // type:function size:0x44 +executeState_Set__21dLytMeterItemSelect_cFv = .text:0x800EB9A0; // type:function size:0x1F0 +finalizeState_Set__21dLytMeterItemSelect_cFv = .text:0x800EBB90; // type:function size:0x4 +initializeState_SetOut__21dLytMeterItemSelect_cFv = .text:0x800EBBA0; // type:function size:0x10 +executeState_SetOut__21dLytMeterItemSelect_cFv = .text:0x800EBBB0; // type:function size:0x8C +finalizeState_SetOut__21dLytMeterItemSelect_cFv = .text:0x800EBC40; // type:function size:0x4 +initializeState_SetNone__21dLytMeterItemSelect_cFv = .text:0x800EBC50; // type:function size:0xD8 +executeState_SetNone__21dLytMeterItemSelect_cFv = .text:0x800EBD30; // type:function size:0x10C +finalizeState_SetNone__21dLytMeterItemSelect_cFv = .text:0x800EBE40; // type:function size:0x4 +initializeState_SelectOut__21dLytMeterItemSelect_cFv = .text:0x800EBE50; // type:function size:0xAC +executeState_SelectOut__21dLytMeterItemSelect_cFv = .text:0x800EBF00; // type:function size:0x17C +finalizeState_SelectOut__21dLytMeterItemSelect_cFv = .text:0x800EC080; // type:function size:0x4 +initializeState_ResetIn__21dLytMeterItemSelect_cFv = .text:0x800EC090; // type:function size:0x78 +executeState_ResetIn__21dLytMeterItemSelect_cFv = .text:0x800EC110; // type:function size:0x84 +finalizeState_ResetIn__21dLytMeterItemSelect_cFv = .text:0x800EC1A0; // type:function size:0x4 +initializeState_Reset__21dLytMeterItemSelect_cFv = .text:0x800EC1B0; // type:function size:0x4 +executeState_Reset__21dLytMeterItemSelect_cFv = .text:0x800EC1C0; // type:function size:0x1C8 +finalizeState_Reset__21dLytMeterItemSelect_cFv = .text:0x800EC390; // type:function size:0x4 +initializeState_ResetOut__21dLytMeterItemSelect_cFv = .text:0x800EC3A0; // type:function size:0x6C +executeState_ResetOut__21dLytMeterItemSelect_cFv = .text:0x800EC410; // type:function size:0x138 +finalizeState_ResetOut__21dLytMeterItemSelect_cFv = .text:0x800EC550; // type:function size:0x4 +initializeState_ToUse__21dLytMeterItemSelect_cFv = .text:0x800EC560; // type:function size:0x140 +executeState_ToUse__21dLytMeterItemSelect_cFv = .text:0x800EC6A0; // type:function size:0x240 +finalizeState_ToUse__21dLytMeterItemSelect_cFv = .text:0x800EC8E0; // type:function size:0x54 +initializeState_ToUnuse__21dLytMeterItemSelect_cFv = .text:0x800EC940; // type:function size:0x8C +executeState_ToUnuse__21dLytMeterItemSelect_cFv = .text:0x800EC9D0; // type:function size:0x27C +finalizeState_ToUnuse__21dLytMeterItemSelect_cFv = .text:0x800ECC50; // type:function size:0x4 +initializeState_Unuse__21dLytMeterItemSelect_cFv = .text:0x800ECC60; // type:function size:0x4 +executeState_Unuse__21dLytMeterItemSelect_cFv = .text:0x800ECC70; // type:function size:0x150 +finalizeState_Unuse__21dLytMeterItemSelect_cFv = .text:0x800ECDC0; // type:function size:0x4 +initializeState_DemoMove__21dLytMeterItemSelect_cFv = .text:0x800ECDD0; // type:function size:0x2F4 +executeState_DemoMove__21dLytMeterItemSelect_cFv = .text:0x800ED0D0; // type:function size:0x210 +finalizeState_DemoMove__21dLytMeterItemSelect_cFv = .text:0x800ED2E0; // type:function size:0x4 +initializeState_DemoOut0__21dLytMeterItemSelect_cFv = .text:0x800ED2F0; // type:function size:0x90 +executeState_DemoOut0__21dLytMeterItemSelect_cFv = .text:0x800ED380; // type:function size:0x11C +finalizeState_DemoOut0__21dLytMeterItemSelect_cFv = .text:0x800ED4A0; // type:function size:0x4 +initializeState_DemoOut1__21dLytMeterItemSelect_cFv = .text:0x800ED4B0; // type:function size:0x54 +executeState_DemoOut1__21dLytMeterItemSelect_cFv = .text:0x800ED510; // type:function size:0xAC +finalizeState_DemoOut1__21dLytMeterItemSelect_cFv = .text:0x800ED5C0; // type:function size:0x4 +initializeState_FrameOffIn__21dLytMeterItemSelect_cFv = .text:0x800ED5D0; // type:function size:0x138 +executeState_FrameOffIn__21dLytMeterItemSelect_cFv = .text:0x800ED710; // type:function size:0xE0 +finalizeState_FrameOffIn__21dLytMeterItemSelect_cFv = .text:0x800ED7F0; // type:function size:0x4 +initializeState_FrameOffMove__21dLytMeterItemSelect_cFv = .text:0x800ED800; // type:function size:0x4 +executeState_FrameOffMove__21dLytMeterItemSelect_cFv = .text:0x800ED810; // type:function size:0xB0 +finalizeState_FrameOffMove__21dLytMeterItemSelect_cFv = .text:0x800ED8C0; // type:function size:0x4 +initializeState_FrameOffOut__21dLytMeterItemSelect_cFv = .text:0x800ED8D0; // type:function size:0x1D4 +executeState_FrameOffOut__21dLytMeterItemSelect_cFv = .text:0x800EDAB0; // type:function size:0x1BC +finalizeState_FrameOffOut__21dLytMeterItemSelect_cFv = .text:0x800EDC70; // type:function size:0x4 +build__21dLytMeterItemSelect_cFPQ23d2d10ResAccIf_c = .text:0x800EDC80; // type:function size:0x590 +remove__21dLytMeterItemSelect_cFv = .text:0x800EE210; // type:function size:0x10C +execute__21dLytMeterItemSelect_cFv = .text:0x800EE320; // type:function size:0x123C getStateID__90sStateMgr_c<21dLytMeterItemSelect_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800EF560; // type:function size:0x10 executeState__90sStateMgr_c<21dLytMeterItemSelect_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800EF570; // type:function size:0x10 fn_800EF580 = .text:0x800EF580; // type:function size:0x128 @@ -5816,10 +5816,10 @@ fn_800EF6F0 = .text:0x800EF6F0; // type:function size:0x18 fn_800EF710 = .text:0x800EF710; // type:function size:0x8 relatedToBWheelDisplay = .text:0x800EF720; // type:function size:0x7C fn_800EF7A0 = .text:0x800EF7A0; // type:function size:0x14 -fn_800EF7C0 = .text:0x800EF7C0; // type:function size:0xF8 -fn_800EF8C0 = .text:0x800EF8C0; // type:function size:0x10C +fn_800EF7C0__21dLytMeterItemSelect_cFv = .text:0x800EF7C0; // type:function size:0xF8 +fn_800EF8C0__21dLytMeterItemSelect_cFUc = .text:0x800EF8C0; // type:function size:0x10C fn_800EF9D0 = .text:0x800EF9D0; // type:function size:0x100 -fn_800EFAD0 = .text:0x800EFAD0; // type:function size:0x200 +fn_800EFAD0__21dLytMeterItemSelect_cFlb = .text:0x800EFAD0; // type:function size:0x200 fn_800EFCD0 = .text:0x800EFCD0; // type:function size:0xD0 fn_800EFDA0 = .text:0x800EFDA0; // type:function size:0x4C fn_800EFDF0 = .text:0x800EFDF0; // type:function size:0x238 @@ -5833,13 +5833,13 @@ fn_800F01F0 = .text:0x800F01F0; // type:function size:0x28 fn_800F0220 = .text:0x800F0220; // type:function size:0xC8 fn_800F02F0 = .text:0x800F02F0; // type:function size:0x14 fn_800F0310 = .text:0x800F0310; // type:function size:0x128 -fn_800F0440 = .text:0x800F0440; // type:function size:0x23C -fn_800F0680 = .text:0x800F0680; // type:function size:0x78 +fn_800F0440__21dLytMeterItemSelect_cFl = .text:0x800F0440; // type:function size:0x23C +fn_800F0680__21dLytMeterItemSelect_cFUc = .text:0x800F0680; // type:function size:0x78 fn_800F0700 = .text:0x800F0700; // type:function size:0xC8 -fn_800F07D0 = .text:0x800F07D0; // type:function size:0xD4 +fn_800F07D0__21dLytMeterItemSelect_cFl = .text:0x800F07D0; // type:function size:0xD4 fn_800F08B0 = .text:0x800F08B0; // type:function size:0xD4 -fn_800F0990 = .text:0x800F0990; // type:function size:0x44 -fn_800F09E0 = .text:0x800F09E0; // type:function size:0xBC +fn_800F0990__21dLytMeterItemSelect_cFUc = .text:0x800F0990; // type:function size:0x44 +fn_800F09E0__21dLytMeterItemSelect_cFv = .text:0x800F09E0; // type:function size:0xBC fn_800F0AA0 = .text:0x800F0AA0; // type:function size:0x8 checkRollercoasterMinigameState = .text:0x800F0AB0; // type:function size:0x8 fn_800F0AC0 = .text:0x800F0AC0; // type:function size:0xA8 @@ -5905,32 +5905,32 @@ getState__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFS getNewStateID__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800F11A0; // type:function size:0x10 getStateID__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800F11B0; // type:function size:0x10 getOldStateID__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800F11C0; // type:function size:0x10 -fn_800F11D0 = .text:0x800F11D0; // type:function size:0x30 -fn_800F1200 = .text:0x800F1200; // type:function size:0x30 -fn_800F1230 = .text:0x800F1230; // type:function size:0x30 -fn_800F1260 = .text:0x800F1260; // type:function size:0x30 -fn_800F1290 = .text:0x800F1290; // type:function size:0x30 -fn_800F12C0 = .text:0x800F12C0; // type:function size:0x30 -fn_800F12F0 = .text:0x800F12F0; // type:function size:0x30 -fn_800F1320 = .text:0x800F1320; // type:function size:0x30 -fn_800F1350 = .text:0x800F1350; // type:function size:0x30 -fn_800F1380 = .text:0x800F1380; // type:function size:0x30 -fn_800F13B0 = .text:0x800F13B0; // type:function size:0x30 -fn_800F13E0 = .text:0x800F13E0; // type:function size:0x30 -fn_800F1410 = .text:0x800F1410; // type:function size:0x30 -fn_800F1440 = .text:0x800F1440; // type:function size:0x30 -fn_800F1470 = .text:0x800F1470; // type:function size:0x30 -LytMeterItemSelect__initStates = .text:0x800F14A0; // type:function size:0x1C60 -LytMeterItemSelectIcon__dtor = .text:0x800F3100; // type:function size:0x58 -LytMeterItemSelectBlink__dtor = .text:0x800F3160; // type:function size:0x58 -LytMeterItemSelectText__dtor = .text:0x800F31C0; // type:function size:0x58 -LytMeterItemSelectBtn__dtor = .text:0x800F3220; // type:function size:0x58 -LytMeterItemSelect__dtor = .text:0x800F3280; // type:function size:0x58 -fn_800F32E0 = .text:0x800F32E0; // type:function size:0x88 -fn_800F3370 = .text:0x800F3370; // type:function size:0x88 -fn_800F3400 = .text:0x800F3400; // type:function size:0x88 -fn_800F3490 = .text:0x800F3490; // type:function size:0x88 -fn_800F3520 = .text:0x800F3520; // type:function size:0x88 +finalizeState__40sFStateID_c<25dLytMeterItemSelectIcon_c>CFR25dLytMeterItemSelectIcon_c = .text:0x800F11D0; // type:function size:0x30 +executeState__40sFStateID_c<25dLytMeterItemSelectIcon_c>CFR25dLytMeterItemSelectIcon_c = .text:0x800F1200; // type:function size:0x30 +initializeState__40sFStateID_c<25dLytMeterItemSelectIcon_c>CFR25dLytMeterItemSelectIcon_c = .text:0x800F1230; // type:function size:0x30 +finalizeState__41sFStateID_c<26dLytMeterItemSelectBlink_c>CFR26dLytMeterItemSelectBlink_c = .text:0x800F1260; // type:function size:0x30 +executeState__41sFStateID_c<26dLytMeterItemSelectBlink_c>CFR26dLytMeterItemSelectBlink_c = .text:0x800F1290; // type:function size:0x30 +initializeState__41sFStateID_c<26dLytMeterItemSelectBlink_c>CFR26dLytMeterItemSelectBlink_c = .text:0x800F12C0; // type:function size:0x30 +finalizeState__40sFStateID_c<25dLytMeterItemSelectText_c>CFR25dLytMeterItemSelectText_c = .text:0x800F12F0; // type:function size:0x30 +executeState__40sFStateID_c<25dLytMeterItemSelectText_c>CFR25dLytMeterItemSelectText_c = .text:0x800F1320; // type:function size:0x30 +initializeState__40sFStateID_c<25dLytMeterItemSelectText_c>CFR25dLytMeterItemSelectText_c = .text:0x800F1350; // type:function size:0x30 +finalizeState__39sFStateID_c<24dLytMeterItemSelectBtn_c>CFR24dLytMeterItemSelectBtn_c = .text:0x800F1380; // type:function size:0x30 +executeState__39sFStateID_c<24dLytMeterItemSelectBtn_c>CFR24dLytMeterItemSelectBtn_c = .text:0x800F13B0; // type:function size:0x30 +initializeState__39sFStateID_c<24dLytMeterItemSelectBtn_c>CFR24dLytMeterItemSelectBtn_c = .text:0x800F13E0; // type:function size:0x30 +finalizeState__36sFStateID_c<21dLytMeterItemSelect_c>CFR21dLytMeterItemSelect_c = .text:0x800F1410; // type:function size:0x30 +executeState__36sFStateID_c<21dLytMeterItemSelect_c>CFR21dLytMeterItemSelect_c = .text:0x800F1440; // type:function size:0x30 +initializeState__36sFStateID_c<21dLytMeterItemSelect_c>CFR21dLytMeterItemSelect_c = .text:0x800F1470; // type:function size:0x30 +__sinit_\d_lyt_meter_item_select_cpp = .text:0x800F14A0; // type:function size:0x1C60 +__dt__40sFStateID_c<25dLytMeterItemSelectIcon_c>Fv = .text:0x800F3100; // type:function size:0x58 +__dt__41sFStateID_c<26dLytMeterItemSelectBlink_c>Fv = .text:0x800F3160; // type:function size:0x58 +__dt__40sFStateID_c<25dLytMeterItemSelectText_c>Fv = .text:0x800F31C0; // type:function size:0x58 +__dt__39sFStateID_c<24dLytMeterItemSelectBtn_c>Fv = .text:0x800F3220; // type:function size:0x58 +__dt__36sFStateID_c<21dLytMeterItemSelect_c>Fv = .text:0x800F3280; // type:function size:0x58 +isSameName__36sFStateID_c<21dLytMeterItemSelect_c>CFPCc = .text:0x800F32E0; // type:function size:0x88 +isSameName__39sFStateID_c<24dLytMeterItemSelectBtn_c>CFPCc = .text:0x800F3370; // type:function size:0x88 +isSameName__40sFStateID_c<25dLytMeterItemSelectText_c>CFPCc = .text:0x800F3400; // type:function size:0x88 +isSameName__41sFStateID_c<26dLytMeterItemSelectBlink_c>CFPCc = .text:0x800F3490; // type:function size:0x88 +isSameName__40sFStateID_c<25dLytMeterItemSelectIcon_c>CFPCc = .text:0x800F3520; // type:function size:0x88 fn_800F35B0 = .text:0x800F35B0; // type:function size:0x4 fn_800F35C0 = .text:0x800F35C0; // type:function size:0x34 fn_800F3600 = .text:0x800F3600; // type:function size:0x4 @@ -6301,15 +6301,15 @@ finalizeState_ToMax__23dLytMeterGanbariGauge_cFv = .text:0x801034A0; // type:fun fn_801034B0 = .text:0x801034B0; // type:function size:0x68 fn_80103520 = .text:0x80103520; // type:function size:0x58 build__23dLytMeterGanbariGauge_cFPQ23d2d10ResAccIf_c = .text:0x80103580; // type:function size:0x250 -fn_801037D0 = .text:0x801037D0; // type:function size:0x50 -fn_80103820 = .text:0x80103820; // type:function size:0xEF0 +remove__23dLytMeterGanbariGauge_cFv = .text:0x801037D0; // type:function size:0x50 +execute__23dLytMeterGanbariGauge_cFv = .text:0x80103820; // type:function size:0xEF0 fn_80104710 = .text:0x80104710; // type:function size:0x4C fn_80104760 = .text:0x80104760; // type:function size:0x48 fn_801047B0 = .text:0x801047B0; // type:function size:0x60 fn_80104810 = .text:0x80104810; // type:function size:0x10 -fn_80104820 = .text:0x80104820; // type:function size:0x38 +swimmingRelated__23dLytMeterGanbariGauge_cFv = .text:0x80104820; // type:function size:0x38 fn_80104860 = .text:0x80104860; // type:function size:0x58 -fn_801048C0 = .text:0x801048C0; // type:function size:0x190 +realizeAnimState__23dLytMeterGanbariGauge_cFv = .text:0x801048C0; // type:function size:0x190 getName__23dLytMeterGanbariGauge_cCFv = .text:0x80104A50; // type:function size:0x8 getLyt__23dLytMeterGanbariGauge_cFv = .text:0x80104A60; // type:function size:0x8 getPane__23dLytMeterGanbariGauge_cFv = .text:0x80104A70; // type:function size:0x8 @@ -31488,11 +31488,11 @@ __vt__64sFStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c> = .data __vt__94sStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80515BF8; // type:object size:0x30 __vt__41sFStateFct_c<25dLytMeterItemSelectIcon_c> = .data:0x80515C28; // type:object size:0x18 __vt__38sFState_c<25dLytMeterItemSelectIcon_c> = .data:0x80515C40; // type:object size:0xCE4 -lbl_80516924 = .data:0x80516924; // type:object size:0x34 -lbl_80516958 = .data:0x80516958; // type:object size:0x34 -lbl_8051698C = .data:0x8051698C; // type:object size:0x34 -lbl_805169C0 = .data:0x805169C0; // type:object size:0x34 -lbl_805169F4 = .data:0x805169F4; // type:object size:0x34 +__vt__36sFStateID_c<21dLytMeterItemSelect_c> = .data:0x80516924; // type:object size:0x34 +__vt__39sFStateID_c<24dLytMeterItemSelectBtn_c> = .data:0x80516958; // type:object size:0x34 +__vt__40sFStateID_c<25dLytMeterItemSelectText_c> = .data:0x8051698C; // type:object size:0x34 +__vt__41sFStateID_c<26dLytMeterItemSelectBlink_c> = .data:0x805169C0; // type:object size:0x34 +__vt__40sFStateID_c<25dLytMeterItemSelectIcon_c> = .data:0x805169F4; // type:object size:0x34 lbl_80516A28 = .data:0x80516A28; // type:object size:0x1C lbl_80516A44 = .data:0x80516A44; // type:object size:0xC lbl_80516A50 = .data:0x80516A50; // type:object size:0x1C @@ -31730,8 +31730,8 @@ lbl_805190C4 = .data:0x805190C4; // type:object size:0xC lbl_805190D0 = .data:0x805190D0; // type:object size:0x18 lbl_805190E8 = .data:0x805190E8; // type:object size:0x18 data:string lbl_80519100 = .data:0x80519100; // type:object size:0x10 -__vt__23dLytMeterGanbariGauge_c = .data:0x80519110; // type:object size:0x430 -__vt__38sFStateID_c<23dLytMeterGanbariGauge_c> = .data:0x80519540; // type:object size:0x38 +__vt__23dLytMeterGanbariGauge_c = .data:0x80519110; // type:object size:0x34 +__vt__38sFStateID_c<23dLytMeterGanbariGauge_c> = .data:0x80519540; // type:object size:0x34 lbl_80519578 = .data:0x80519578; // type:object size:0x14 lbl_8051958C = .data:0x8051958C; // type:object size:0xC lbl_80519598 = .data:0x80519598; // type:object size:0x14 @@ -40095,7 +40095,7 @@ lbl_80575430 = .sbss:0x80575430; // type:object size:0x8 data:4byte sInstance__18SpecialItemDropMgr = .sbss:0x80575438; // type:object size:0x4 data:4byte FOR_LOADED_PARTICLES = .sbss:0x80575440; // type:object size:0x8 data:4byte sInstance__20dLytMeterContainer_c = .sbss:0x80575448; // type:object size:0x8 data:4byte -lbl_80575450 = .sbss:0x80575450; // type:object size:0x8 data:4byte +sInstance__24dLytMeterConfiguration_c = .sbss:0x80575450; // type:object size:0x8 data:4byte sInstance__20LytMeterTimerPart1_c = .sbss:0x80575458; // type:object size:0x4 data:4byte sInstance__20LytMeterTimerPart2_c = .sbss:0x8057545C; // type:object size:0x4 data:4byte lbl_80575460 = .sbss:0x80575460; // type:object size:0x1 data:byte @@ -40103,7 +40103,7 @@ DO_FINISH_TRIAL_TEAR_ANIM = .sbss:0x80575461; // type:object size:0x1 data:byte LytMeterTimer__FINISHED = .sbss:0x80575462; // type:object size:0x6 data:byte sInstance__14dLytDobutton_c = .sbss:0x80575468; // type:object size:0x8 data:4byte lbl_80575470 = .sbss:0x80575470; // type:object size:0x8 -lbl_80575478 = .sbss:0x80575478; // type:object size:0x8 data:4byte +sInstance__18LytDoButtonRelated = .sbss:0x80575478; // type:object size:0x8 data:4byte sInstance__20LytBirdButtonRelated = .sbss:0x80575480; // type:object size:0x8 data:4byte sInstance__15dLytMsgWindow_c = .sbss:0x80575488; // type:object size:0x4 data:4byte lbl_8057548C = .sbss:0x8057548C; // type:object size:0x4 data:4byte diff --git a/include/common.h b/include/common.h index 1dd07be5..2a6bddb0 100644 --- a/include/common.h +++ b/include/common.h @@ -21,6 +21,15 @@ #define ALIGN_DECL(ALIGNMENT) __attribute__((aligned(ALIGNMENT))) +// static_assert from TP +#ifdef __MWERKS__ + #define GLUE(a, b) a##b + #define GLUE2(a, b) GLUE(a, b) + #define STATIC_ASSERT(cond) typedef char GLUE2(static_assertion_failed, __LINE__)[(cond) ? 1 : -1] +#else + #define STATIC_ASSERT(...) +#endif + // To remove some warnings #ifdef __MWERKS__ #define DECL_SECTION(x) __declspec(section x) diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index d1e16f3e..3bb8fc97 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -230,9 +230,13 @@ public: /* vt 0x314 */ virtual void vt_0x314(); /* vt 0x318 */ virtual void vt_0x318(); - /* 0x330 */ u8 unk_0x330[0x340 - 0x330]; + /* 0x330 */ u8 unk_0x330[0x339 - 0x330]; + /* 0x339 */ u8 mRidingActorType; + /* 0x33A */ u8 unk_0x33A[0x340 - 0x33A]; /* 0x340 */ u32 someFlags_0x340; - /* 0x344 */ u8 unk_0x344[0x350 - 0x344]; + /* 0x344 */ u8 unk_0x344[0x348 - 0x344]; + /* 0x348 */ u32 mSwordAndMoreStates; + /* 0x34C */ u8 unk_0x34C[0x350 - 0x34C]; /* 0x350 */ u32 someFlags_0x350; u8 UNK_0x354[0x35C - 0x354]; /* 0x35C */ u32 mForceOrPreventActionFlags; @@ -263,6 +267,10 @@ public: return mCurrentAction == action; } + inline bool checkSwordAndMoreStates(u32 mask) const { + return (mSwordAndMoreStates & mask) != 0; + } + inline bool checkActionFlags(u32 mask) const { return (mActionFlags & mask) != 0; } @@ -270,6 +278,10 @@ public: return (mActionFlagsCont & mask) != 0; } + inline u8 getRidingActorType() const { + return mRidingActorType; + } + static nw4r::g3d::ResFile getItemResFile(const char *name, mAllocator_c &allocator); static const dAcPy_c *GetLink() { diff --git a/include/d/lyt/d2d.h b/include/d/lyt/d2d.h index d7a7bc8d..eaeefae2 100644 --- a/include/d/lyt/d2d.h +++ b/include/d/lyt/d2d.h @@ -46,7 +46,7 @@ public: virtual ~Multi_c() {} /* vt 0x0C */ virtual void draw() override; /* vt 0x10 */ virtual void animate(); - /* vt 0x18 */ virtual void calc(); + /* vt 0x14 */ virtual void calc(); /* vt 0x18 */ virtual bool build(const char *name, m2d::ResAccIf_c *acc); void calcBefore(); diff --git a/include/d/lyt/d_lyt_common_icon_item.h b/include/d/lyt/d_lyt_common_icon_item.h index 12b03864..58711426 100644 --- a/include/d/lyt/d_lyt_common_icon_item.h +++ b/include/d/lyt/d_lyt_common_icon_item.h @@ -213,6 +213,12 @@ private: */ class dLytCommonIconItem_c : public d2d::dSubPane { public: + enum Variant_e { + B_WHEEL, + POUCH, + DOWSING, + }; + dLytCommonIconItem_c() : mStateMgr(*this, sStateID::null), mPart(3) {} ~dLytCommonIconItem_c() {} diff --git a/include/d/lyt/d_lyt_do_button.h b/include/d/lyt/d_lyt_do_button.h index 349230a0..06e2fd4c 100644 --- a/include/d/lyt/d_lyt_do_button.h +++ b/include/d/lyt/d_lyt_do_button.h @@ -18,9 +18,17 @@ public: bool remove(); bool draw(); - static dLytDobutton_c *sInstance; + static dLytDobutton_c *GetInstance() { + return sInstance; + } + + s32 getField0x47C() const { + return field_0x47C; + } private: + static dLytDobutton_c *sInstance; + STATE_FUNC_DECLARE(dLytDobutton_c, InvisibleWait); STATE_FUNC_DECLARE(dLytDobutton_c, InvisibleTimeCnt); STATE_FUNC_DECLARE(dLytDobutton_c, In); diff --git a/include/d/lyt/d_lyt_meter_configuration.h b/include/d/lyt/d_lyt_meter_configuration.h index ef9b8a65..82d4dcf3 100644 --- a/include/d/lyt/d_lyt_meter_configuration.h +++ b/include/d/lyt/d_lyt_meter_configuration.h @@ -8,9 +8,97 @@ public: dLytMeterConfiguration_c(); virtual ~dLytMeterConfiguration_c(); - static dLytMeterConfiguration_c *sInstance; - f32 field_0x04[0x7A - 0x01]; + + /* 0x004 */ u8 field_0x004; + /* 0x005 */ u8 field_0x005; + /* 0x006 */ u8 field_0x006; + /* 0x007 */ u8 field_0x007; + /* 0x008 */ u8 field_0x008; + /* 0x009 */ u8 field_0x009; + /* 0x00A */ u8 field_0x00A; + /* 0x00B */ u8 field_0x00B; + /* 0x00C */ f32 field_0x00C; + /* 0x010 */ u8 field_0x010; + /* 0x011 */ u8 field_0x011; + /* 0x012 */ u8 field_0x012; + /* 0x013 */ u8 field_0x013; + /* 0x014 */ f32 field_0x014; + /* 0x018 */ f32 field_0x018; + /* 0x01C */ u8 field_0x01C; + /* 0x01D */ u8 field_0x01D; + /* 0x01E */ u8 field_0x01E; + /* 0x01F */ u8 field_0x01F; + /* 0x020 */ s32 field_0x020; + /* 0x024 */ s32 field_0x024; + /* 0x028 */ u8 field_0x028; + /* 0x029 */ u8 field_0x029; + /* 0x02A */ u8 field_0x02A; + /* 0x02B */ u8 field_0x02B; + /* 0x02C */ s32 field_0x02C[16]; + /* 0x06C */ s32 field_0x06C[16]; + /* 0x0AC */ f32 field_0x0AC[16]; + /* 0x0EC */ u8 field_0x0EC[16]; + /* 0x0FC */ u8 field_0x0FC; + /* 0x0FD */ u8 field_0x0FD; + /* 0x0FE */ u8 field_0x0FE; + /* 0x0FF */ u8 field_0x0FF; + /* 0x100 */ s32 field_0x100[8]; + /* 0x121 */ u8 field_0x121; + /* 0x124 */ f32 field_0x124; + /* 0x128 */ f32 field_0x128; + /* 0x12C */ f32 field_0x12C; + /* 0x130 */ f32 field_0x130; + /* 0x134 */ u8 field_0x134; + /* 0x135 */ u8 field_0x135; + /* 0x138 */ f32 field_0x138; + /* 0x13C */ u8 field_0x13C; + /* 0x140 */ f32 field_0x140; + /* 0x144 */ f32 field_0x144; + /* 0x148 */ f32 field_0x148; + /* 0x14C */ f32 field_0x14C; + /* 0x150 */ f32 field_0x150; + /* 0x154 */ f32 field_0x154; + /* 0x158 */ f32 field_0x158; + /* 0x15C */ f32 field_0x15C; + /* 0x160 */ f32 field_0x160; + /* 0x164 */ u8 field_0x164; + /* 0x168 */ f32 field_0x168; + /* 0x16C */ f32 field_0x16C; + /* 0x170 */ f32 field_0x170; + /* 0x174 */ f32 field_0x174; + /* 0x178 */ f32 field_0x178; + /* 0x17C */ f32 field_0x17C; + /* 0x180 */ f32 field_0x180; + /* 0x184 */ f32 field_0x184; + /* 0x188 */ f32 field_0x188; + /* 0x18C */ f32 field_0x18C; + /* 0x190 */ f32 field_0x190; + /* 0x194 */ f32 field_0x194; + /* 0x198 */ f32 field_0x198; + /* 0x19C */ f32 field_0x19C; + /* 0x1A0 */ f32 field_0x1A0; + /* 0x1A4 */ f32 field_0x1A4; + /* 0x1A8 */ f32 field_0x1A8; + /* 0x1AC */ f32 field_0x1AC; + /* 0x1B0 */ u8 field_0x1B0; + /* 0x1B1 */ u8 field_0x1B1; + /* 0x1B4 */ f32 field_0x1B4; + /* 0x1B8 */ f32 field_0x1B8; + /* 0x1BC */ u8 field_0x1BC; + /* 0x1C0 */ f32 field_0x1C0; + /* 0x1C4 */ f32 field_0x1C4; + /* 0x1C8 */ u32 field_0x1C8; + /* 0x1CC */ f32 field_0x1CC; + /* 0x1D0 */ f32 field_0x1D0; + /* 0x1D4 */ u8 field_0x1D4; + /* 0x1D5 */ u8 field_0x1D5; + /* 0x1D6 */ u8 field_0x1D6; + /* 0x1D7 */ u8 field_0x1D7; + /* 0x1D8 */ s32 field_0x1D8; + /* 0x1D8 */ s32 field_0x1DC; + /* 0x1D8 */ s32 field_0x1E0; + /* 0x1D8 */ s32 field_0x1E4; }; #endif diff --git a/include/d/lyt/d_lyt_unknowns.h b/include/d/lyt/d_lyt_unknowns.h index 7dc2ebf1..25129c35 100644 --- a/include/d/lyt/d_lyt_unknowns.h +++ b/include/d/lyt/d_lyt_unknowns.h @@ -11,10 +11,26 @@ public: bool build(d2d::ResAccIf_c *resAcc); bool remove(); - static LytDoButtonRelated *sInstance; + static LytDoButtonRelated *GetInstance() { + return sInstance; + } + void set0x08(s32 value) { + field_0x08 = value; + field_0x35 = 1; + } + + s32 get0x08() { + return field_0x08; + } + private: - u8 field_0x04[0x40 - 0x04]; + + static LytDoButtonRelated *sInstance; + /* 0x04 */ u8 field_0x04[0x08 - 0x04]; + /* 0x08 */ s32 field_0x08; + /* 0x0C */ u8 _0x08[0x35 - 0x0C]; + /* 0x35 */ u8 field_0x35; }; // size 0x27C diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 73d3d6e5..9298c211 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -2,6 +2,7 @@ #define D_LYT_METER_H // TODO sort includes for vtable order // clang-format off +#include "common.h" #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_do_button.h" #include "d/lyt/meter/d_lyt_meter_shield_gauge.h" @@ -21,94 +22,7 @@ #include "d/lyt/meter/d_lyt_meter_event_skip.h" #include "d/lyt/meter/d_lyt_meter_item_select.h" -// clang-format on - -class dLytMeter1Button_c : public d2d::dSubPane { -public: - dLytMeter1Button_c() : mStateMgr(*this, sStateID::null) {} - virtual ~dLytMeter1Button_c() {} - virtual bool build(d2d::ResAccIf_c *resAcc) override; - virtual bool remove() override; - virtual bool execute() override; - virtual nw4r::lyt::Pane *getPane() override { - return mLyt.getLayout()->GetRootPane(); - } - virtual d2d::LytBase_c *getLyt() override { - return &mLyt; - } - virtual const char *getName() const override { - return mLyt.getName(); - } - -private: - STATE_FUNC_DECLARE(dLytMeter1Button_c, Wait); - STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUse); - STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUnuse); - STATE_FUNC_DECLARE(dLytMeter1Button_c, Unuse); - - UI_STATE_MGR_DECLARE(dLytMeter1Button_c); - d2d::dLytSub mLyt; - d2d::AnmGroup_c mAnmGroups[3]; - /* 0x198 */ dWindow_c *mpWindow; - /* 0x19C */ dTextBox_c *mpTextbox; - /* 0x1A0 */ u32 field_0x1A0; - /* 0x1A4 */ s32 field_0x1A4; - /* 0x1A8 */ s32 field_0x1A8; - /* 0x1AC */ u8 field_0x1AC; - /* 0x1AD */ u8 field_0x1AD; -}; - -class dLytMeter2Button_c : public d2d::dSubPane { -public: - dLytMeter2Button_c() : mStateMgr(*this, sStateID::null) {} - virtual ~dLytMeter2Button_c() {} - virtual bool build(d2d::ResAccIf_c *resAcc) override; - virtual bool remove() override; - virtual bool execute() override; - virtual nw4r::lyt::Pane *getPane() override { - return mLyt.getLayout()->GetRootPane(); - } - virtual d2d::LytBase_c *getLyt() override { - return &mLyt; - } - virtual const char *getName() const override { - return mLyt.getName(); - } - -private: - STATE_FUNC_DECLARE(dLytMeter2Button_c, Wait); - STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUse); - STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUnuse); - STATE_FUNC_DECLARE(dLytMeter2Button_c, Unuse); - - UI_STATE_MGR_DECLARE(dLytMeter2Button_c); - d2d::dLytSub mLyt; - d2d::AnmGroup_c mAnmGroups[3]; - /* 0x198 */ dWindow_c *mpWindow; - /* 0x19C */ dTextBox_c *mpTextbox; - /* 0x1A0 */ u32 field_0x1A0; - /* 0x1A4 */ s32 field_0x1A4; - /* 0x1A8 */ s32 field_0x1A8; - /* 0x1AC */ u8 field_0x1AC; - /* 0x1AD */ u8 field_0x1AD; -}; - -class dLytMeterParts_c { -public: - dLytMeterParts_c() : mStateMgr(*this, sStateID::null) {} - -private: - STATE_FUNC_DECLARE(dLytMeterParts_c, Invisible); - STATE_FUNC_DECLARE(dLytMeterParts_c, In); - STATE_FUNC_DECLARE(dLytMeterParts_c, Visible); - STATE_FUNC_DECLARE(dLytMeterParts_c, Out); - - UI_STATE_MGR_DECLARE(dLytMeterParts_c); - u8 field_0x3C[0x10]; -}; - -// TODO sort includes for vtable order -// clang-format off +#include "d/lyt/meter/d_lyt_meter_parts.h" #include "d/lyt/meter/d_lyt_meter_key.h" #include "d/lyt/d_lyt_unknowns.h" @@ -179,6 +93,21 @@ public: /* 0x13B38 */ u32 field_0x13B38; }; +STATIC_ASSERT(offsetof(dLytMeter_c, mGanbariGauge) == 0x00C8C); +STATIC_ASSERT(offsetof(dLytMeter_c, mRupy) == 0x011E8); +STATIC_ASSERT(offsetof(dLytMeter_c, mItemSelect) == 0x01A98); +STATIC_ASSERT(offsetof(dLytMeter_c, mCrossBtn) == 0x07260); +STATIC_ASSERT(offsetof(dLytMeter_c, mPlusBtn) == 0x078A0); +STATIC_ASSERT(offsetof(dLytMeter_c, mMinusBtn) == 0x07A64); +STATIC_ASSERT(offsetof(dLytMeter_c, mDowsing) == 0x0C928); +STATIC_ASSERT(offsetof(dLytMeter_c, mABtn) == 0x11E34); +STATIC_ASSERT(offsetof(dLytMeter_c, mZBtn) == 0x12000); +STATIC_ASSERT(offsetof(dLytMeter_c, mNunStk) == 0x121C8); +STATIC_ASSERT(offsetof(dLytMeter_c, mRemoCon) == 0x12350); +STATIC_ASSERT(offsetof(dLytMeter_c, mNunBg) == 0x12440); +STATIC_ASSERT(offsetof(dLytMeter_c, mHeart) == 0x12608); +STATIC_ASSERT(offsetof(dLytMeter_c, mShield) == 0x12DA4); + // made up name class dLytMeterContainer_c { public: @@ -200,6 +129,10 @@ public: return sInstance; } + bool checkAllFlags(u32 mask) const { + return (mFlags & mask) == mask; + } + private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip; @@ -208,8 +141,11 @@ private: /* 0x13B40 */ LytDoButtonRelated *mpDoButtonRelated; /* 0x13B44 */ LytBirdButtonRelated *mpBirdRelated; /* 0x13B48 */ bool mVisible; + /* 0x13B49 */ u8 _0x13B49[0x13B50 - 0x13B49]; + /* 0x13B50 */ s32 mFlags; static dLytMeterContainer_c *sInstance; }; + #endif diff --git a/include/d/lyt/meter/d_lyt_meter_a_btn.h b/include/d/lyt/meter/d_lyt_meter_a_btn.h index 603709d2..ef7a51e2 100644 --- a/include/d/lyt/meter/d_lyt_meter_a_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_a_btn.h @@ -45,8 +45,8 @@ private: /* 0x1A0 */ nw4r::lyt::Pane *mpPane; /* 0x1A4 */ void *field_0x1A4; /* 0x1A8 */ dTextBox_c *mpTextBoxes[2]; - /* 0x1B0 */ dWindow_c *mpWindow; - /* 0x1B4 */ dTextBox_c *mpSizeBox; + /* 0x1B0 */ dWindow_c *mpWindow[1]; + /* 0x1B4 */ dTextBox_c *mpSizeBox[1]; /* 0x1B8 */ u32 field_0x1B8; /* 0x1BC */ u32 field_0x1BC; /* 0x1C0 */ u32 field_0x1C0; diff --git a/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h b/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h index 1bfd8d02..702033e9 100644 --- a/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h +++ b/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h @@ -1,22 +1,36 @@ #ifndef D_LYT_METER_GANBARI_GAUGE_H #define D_LYT_METER_GANBARI_GAUGE_H +#include "common.h" #include "d/lyt/d2d.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterGanbariGauge_c : public d2d::dSubPane { public: - dLytMeterGanbariGauge_c() : mStateMgr1(*this, sStateID::null), mStateMgr2(*this, sStateID::null) {} + dLytMeterGanbariGauge_c() : mStateMgrMain(*this, sStateID::null), mStateMgrWheel(*this, sStateID::null) {} virtual bool build(d2d::ResAccIf_c *resAcc) override; virtual bool remove() override; virtual bool execute() override; - virtual nw4r::lyt::Pane *getPane() override; - virtual d2d::LytBase_c *getLyt() override; - virtual const char *getName() const override; + virtual nw4r::lyt::Pane *getPane() override { + return mLyt.getLayout()->GetRootPane(); + } + virtual d2d::LytBase_c *getLyt() override { + return &mLyt; + } + virtual const char *getName() const override { + return mLyt.getName(); + } virtual ~dLytMeterGanbariGauge_c() {} + private: + void realizeAnimState(); + static bool swimmingRelated(); + static bool fn_801034B0(f32); + static bool fn_80103520(f32); + STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, InvisibleWait); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, In); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Wait); @@ -31,13 +45,33 @@ private: STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Recovery); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, ToMax); - STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr1; - STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr2; + STATE_MGR(dLytMeterGanbariGauge_c) mStateMgrMain; + STATE_MGR(dLytMeterGanbariGauge_c) mStateMgrWheel; /* 0x080 */ d2d::dLytSub mLyt; - /* 0x114 */ d2d::AnmGroup_c mAnmGroups[16]; - /* 0x??? */ u8 padding[0x11E8 - 0x11A0]; + /* 0x114 */ d2d::AnmGroup_c mAnm[16]; + /* 0x514 */ nw4r::lyt::Pane *mpPane; + /* 0x518 */ f32 field_0x518; + /* 0x51C */ f32 field_0x51C; + /* 0x520 */ u8 _0x520[0x524 - 0x520]; + /* 0x524 */ mVec3_c field_0x524; + /* 0x530 */ u8 field_0x530; + /* 0x534 */ s32 field_0x534; + /* 0x538 */ u32 field_0x538; + /* 0x53C */ s32 mOutWaitTimer; + /* 0x540 */ u32 field_0x540; + /* 0x544 */ u32 field_0x544; + /* 0x548 */ u32 field_0x548; + /* 0x54C */ f32 field_0x54C; + /* 0x550 */ f32 field_0x550; + + /* 0x554 */ f32 field_0x554; + u8 field_0x558; + u8 field_0x559; + u8 field_0x55A; + u8 field_0x55B; }; +STATIC_ASSERT(sizeof(dLytMeterGanbariGauge_c) == 0x55C); #endif diff --git a/include/d/lyt/meter/d_lyt_meter_item_select.h b/include/d/lyt/meter/d_lyt_meter_item_select.h index 28c568eb..a8e967d6 100644 --- a/include/d/lyt/meter/d_lyt_meter_item_select.h +++ b/include/d/lyt/meter/d_lyt_meter_item_select.h @@ -3,51 +3,118 @@ #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_common_icon_item.h" -#include "toBeSorted/effects_struct.h" +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" +#include "toBeSorted/effects_struct.h" class dLytMeterItemSelectIcon_c { public: - dLytMeterItemSelectIcon_c(): mStateMgr(*this, sStateID::null) {} + dLytMeterItemSelectIcon_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterItemSelectIcon_c() {} -private: - UI_STATE_MGR_DECLARE(dLytMeterItemSelectIcon_c); - u32 padding; - u32 padding2; + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + +private: + STATE_FUNC_DECLARE(dLytMeterItemSelectIcon_c, Wait); + STATE_FUNC_DECLARE(dLytMeterItemSelectIcon_c, On); + STATE_FUNC_DECLARE(dLytMeterItemSelectIcon_c, Select); + STATE_FUNC_DECLARE(dLytMeterItemSelectIcon_c, Off); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterItemSelectIcon_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 padding2; }; class dLytMeterItemSelectBlink_c { public: - dLytMeterItemSelectBlink_c(): mStateMgr(*this, sStateID::null) {} + dLytMeterItemSelectBlink_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterItemSelectBlink_c() {} -private: - UI_STATE_MGR_DECLARE(dLytMeterItemSelectBlink_c); - u32 padding; - u32 padding2; + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + +private: + STATE_FUNC_DECLARE(dLytMeterItemSelectBlink_c, Wait); + STATE_FUNC_DECLARE(dLytMeterItemSelectBlink_c, On); + STATE_FUNC_DECLARE(dLytMeterItemSelectBlink_c, Select); + STATE_FUNC_DECLARE(dLytMeterItemSelectBlink_c, Off); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterItemSelectBlink_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 padding2; }; class dLytMeterItemSelectText_c { public: - dLytMeterItemSelectText_c(): mStateMgr(*this, sStateID::null) {} + dLytMeterItemSelectText_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterItemSelectText_c() {} -private: - UI_STATE_MGR_DECLARE(dLytMeterItemSelectText_c); - u32 padding; - u32 padding2; + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + +private: + STATE_FUNC_DECLARE(dLytMeterItemSelectText_c, Wait); + STATE_FUNC_DECLARE(dLytMeterItemSelectText_c, On); + STATE_FUNC_DECLARE(dLytMeterItemSelectText_c, Select); + STATE_FUNC_DECLARE(dLytMeterItemSelectText_c, Off); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterItemSelectText_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 padding2; }; class dLytMeterItemSelectBtn_c { public: - dLytMeterItemSelectBtn_c(): mStateMgr(*this, sStateID::null) {} + dLytMeterItemSelectBtn_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterItemSelectBtn_c() {} -private: - UI_STATE_MGR_DECLARE(dLytMeterItemSelectBtn_c); - u8 padding[0x58 - 0x3C]; + void init(s32 i, d2d::dLytSub *lyt, nw4r::lyt::Pane *pane); + void fn_800E9E00(u8, u8); + void fn_800E9E30(u8); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + u8 getField_0x57() const { + return field_0x57; + } + + void setField_0x57(u8 val) { + field_0x57 = val; + } + +private: + STATE_FUNC_DECLARE(dLytMeterItemSelectBtn_c, Invisible); + STATE_FUNC_DECLARE(dLytMeterItemSelectBtn_c, On); + STATE_FUNC_DECLARE(dLytMeterItemSelectBtn_c, Visible); + STATE_FUNC_DECLARE(dLytMeterItemSelectBtn_c, Off); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterItemSelectBtn_c); + + /* 0x3C */ u8 _0x3C[0x40 - 0x3C]; + /* 0x40 */ d2d::AnmGroup_c *mpAnm; + /* 0x44 */ u8 padding[0x57 - 0x44]; + /* 0x57 */ u8 field_0x57; }; class dLytMeterItemSelect_c : public d2d::dSubPane { @@ -61,7 +128,17 @@ public: virtual const char *getName() const override; virtual ~dLytMeterItemSelect_c() {} + private: + void fn_800F0680(u8); + s32 fn_800F0990(u8); + s32 fn_800F07D0(s32); + void fn_800EFAD0(s32, bool); + void fn_800EF7C0(); + void fn_800EF8C0(u8); + bool fn_800F09E0(); + void fn_800F0440(s32); + STATE_FUNC_DECLARE(dLytMeterItemSelect_c, InitWait); STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Wait); STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SelectIn); @@ -85,35 +162,83 @@ private: STATE_FUNC_DECLARE(dLytMeterItemSelect_c, FrameOffMove); STATE_FUNC_DECLARE(dLytMeterItemSelect_c, FrameOffOut); - dLytMeterItemSelectIcon_c mIcon[8]; - dLytMeterItemSelectBlink_c mBlink; - dLytMeterItemSelectText_c mText[2]; - dLytMeterItemSelectBtn_c mBtn[4]; - UI_STATE_MGR_DECLARE(dLytMeterItemSelect_c); + /* 0x0008 */ dLytMeterItemSelectIcon_c mIcon[8]; + /* 0x0228 */ dLytMeterItemSelectBlink_c mBlink; + /* 0x026C */ dLytMeterItemSelectText_c mText[2]; + /* 0x02F4 */ dLytMeterItemSelectBtn_c mBtn[4]; + /* 0x0454 */ UI_STATE_MGR_DECLARE(dLytMeterItemSelect_c); + /* 0x0490 */ d2d::dLytSub mLyt; + /* 0x0524 */ d2d::AnmGroup_c mAnm[34]; - /* 0x490 */ d2d::dLytSub mLyt; + /* 0x0DA4 */ nw4r::lyt::Pane *mpPanes[17]; - /* 0x524 */ d2d::AnmGroup_c mAnmGroups[34]; + /* 0x0DE8 */ nw4r::lyt::Pane *mpSomePane; + /* 0x0DEC */ dTextBox_c *mpTextBoxes[10]; + /* 0x0E14 */ dWindow_c *mpWindows[4]; + /* 0x0E24 */ dTextBox_c *mpSizeBoxes[4]; + /* 0x0E34 */ dLytCommonIconItem_c mItemIcons[9]; + /* 0x567C */ d2d::SubPaneList mSubpaneList; + /* 0x5688 */ d2d::SubPaneListNode mSubpanes[9]; + /* 0x5718 */ EffectsStruct mEffects; - // What is here? - u8 padding2[0xE34 - 0xDA4]; - - /* 0xE34 */ dLytCommonIconItem_c mItemIcons[9]; - - d2d::SubPaneList mNodeList; - d2d::SubPaneListNode mNodes[9]; - EffectsStruct mEffects; - - s32 field_0x574C; - s32 field_0x5750; - s32 field_0x5754; - s32 field_0x5758; - s32 field_0x575C; - s32 field_0x5760; - s32 field_0x5764; - s32 field_0x5768; - - /* 0x??? */ u8 padding[0x7260 - 0x7204]; + /* 0x574C */ s32 field_0x574C; + /* 0x5750 */ s32 field_0x5750; + /* 0x5754 */ s32 field_0x5754; + /* 0x5758 */ s32 field_0x5758; + /* 0x575C */ s32 field_0x575C; + /* 0x5760 */ s32 field_0x5760; + /* 0x5764 */ s32 field_0x5764; + /* 0x5768 */ s32 field_0x5768; + /* 0x576C */ s32 field_0x576C; + /* 0x5770 */ s32 field_0x5770; + /* 0x5774 */ s32 field_0x5774; + /* 0x5778 */ f32 field_0x5778; + /* 0x577C */ f32 field_0x577C; + /* 0x5780 */ s32 field_0x5780; + /* 0x5784 */ f32 field_0x5784; + /* 0x5788 */ s32 field_0x5788; + /* 0x578C */ s32 field_0x578C; + /* 0x5790 */ s32 field_0x5790; + /* 0x5794 */ u8 field_0x5794; + /* 0x5795 */ u8 field_0x5795; + /* 0x5796 */ u8 field_0x5796; + /* 0x5797 */ u8 field_0x5797; + /* 0x5798 */ u8 field_0x5798; + /* 0x5799 */ u8 field_0x5799; + /* 0x579A */ u8 field_0x579A; + /* 0x579B */ u8 field_0x579B; + /* 0x579C */ u8 field_0x579C; + /* 0x579C */ u8 field_0x579D; + /* 0x579C */ u8 field_0x579E; + /* 0x579C */ u8 field_0x579F; + /* 0x57A0 */ u8 field_0x57A0; + /* 0x57A1 */ u8 field_0x57A1; + /* 0x57A2 */ u8 field_0x57A2; + /* 0x57A4 */ s32 field_0x57A4; + /* 0x57A8 */ s32 field_0x57A8; + /* 0x57AC */ s32 field_0x57AC; + /* 0x57B0 */ u8 field_0x57B0; + /* 0x57B1 */ u8 field_0x57B1; + /* 0x57B2 */ u8 field_0x57B2; + /* 0x57B3 */ u8 field_0x57B3; + /* 0x57B4 */ u8 field_0x57B4; + /* 0x57B5 */ u8 field_0x57B5; + /* 0x57B6 */ bool field_0x57B6; + /* 0x57B7 */ bool field_0x57B7; + /* 0x57B8 */ u8 field_0x57B8; + /* 0x57B9 */ u8 field_0x57B9; + /* 0x57BA */ u8 field_0x57BA; + /* 0x57BB */ u8 field_0x57BB; + /* 0x57BC */ u8 field_0x57BC; + /* 0x57BD */ u8 field_0x57BD; + /* 0x57BE */ u8 field_0x57BE; + /* 0x57BF */ u8 field_0x57BF; + /* 0x57C0 */ u8 field_0x57C0; + /* 0x57C1 */ u8 field_0x57C1; + /* 0x57C2 */ u8 field_0x57C2; + /* 0x57C3 */ u8 field_0x57C3; + /* 0x57C4 */ u8 field_0x57C4; + /* 0x57C5 */ u8 field_0x57C5; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_parts.h b/include/d/lyt/meter/d_lyt_meter_parts.h new file mode 100644 index 00000000..7791a315 --- /dev/null +++ b/include/d/lyt/meter/d_lyt_meter_parts.h @@ -0,0 +1,91 @@ +#ifndef D_LYT_METER_PARTS_H +#define D_LYT_METER_PARTS_H + +#include "d/lyt/d2d.h" +#include "s/s_State.hpp" + +class dLytMeter1Button_c : public d2d::dSubPane { +public: + dLytMeter1Button_c() : mStateMgr(*this, sStateID::null) {} + virtual ~dLytMeter1Button_c() {} + virtual bool build(d2d::ResAccIf_c *resAcc) override; + virtual bool remove() override; + virtual bool execute() override; + virtual nw4r::lyt::Pane *getPane() override { + return mLyt.getLayout()->GetRootPane(); + } + virtual d2d::LytBase_c *getLyt() override { + return &mLyt; + } + virtual const char *getName() const override { + return mLyt.getName(); + } + +private: + STATE_FUNC_DECLARE(dLytMeter1Button_c, Wait); + STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUse); + STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUnuse); + STATE_FUNC_DECLARE(dLytMeter1Button_c, Unuse); + + UI_STATE_MGR_DECLARE(dLytMeter1Button_c); + d2d::dLytSub mLyt; + d2d::AnmGroup_c mAnmGroups[3]; + /* 0x198 */ dWindow_c *mpWindow; + /* 0x19C */ dTextBox_c *mpTextbox; + /* 0x1A0 */ u32 field_0x1A0; + /* 0x1A4 */ s32 field_0x1A4; + /* 0x1A8 */ s32 field_0x1A8; + /* 0x1AC */ u8 field_0x1AC; + /* 0x1AD */ u8 field_0x1AD; +}; + +class dLytMeter2Button_c : public d2d::dSubPane { +public: + dLytMeter2Button_c() : mStateMgr(*this, sStateID::null) {} + virtual ~dLytMeter2Button_c() {} + virtual bool build(d2d::ResAccIf_c *resAcc) override; + virtual bool remove() override; + virtual bool execute() override; + virtual nw4r::lyt::Pane *getPane() override { + return mLyt.getLayout()->GetRootPane(); + } + virtual d2d::LytBase_c *getLyt() override { + return &mLyt; + } + virtual const char *getName() const override { + return mLyt.getName(); + } + +private: + STATE_FUNC_DECLARE(dLytMeter2Button_c, Wait); + STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUse); + STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUnuse); + STATE_FUNC_DECLARE(dLytMeter2Button_c, Unuse); + + UI_STATE_MGR_DECLARE(dLytMeter2Button_c); + d2d::dLytSub mLyt; + d2d::AnmGroup_c mAnmGroups[3]; + /* 0x198 */ dWindow_c *mpWindow; + /* 0x19C */ dTextBox_c *mpTextbox; + /* 0x1A0 */ u32 field_0x1A0; + /* 0x1A4 */ s32 field_0x1A4; + /* 0x1A8 */ s32 field_0x1A8; + /* 0x1AC */ u8 field_0x1AC; + /* 0x1AD */ u8 field_0x1AD; +}; + +class dLytMeterParts_c { +public: + dLytMeterParts_c() : mStateMgr(*this, sStateID::null) {} + +private: + STATE_FUNC_DECLARE(dLytMeterParts_c, Invisible); + STATE_FUNC_DECLARE(dLytMeterParts_c, In); + STATE_FUNC_DECLARE(dLytMeterParts_c, Visible); + STATE_FUNC_DECLARE(dLytMeterParts_c, Out); + + UI_STATE_MGR_DECLARE(dLytMeterParts_c); + u8 field_0x3C[0x10]; +}; + +#endif diff --git a/include/nw4r/lyt/lyt_pane.h b/include/nw4r/lyt/lyt_pane.h index fd43858f..cbd0d5b6 100644 --- a/include/nw4r/lyt/lyt_pane.h +++ b/include/nw4r/lyt/lyt_pane.h @@ -71,6 +71,10 @@ public: mTranslate = value; } + void SetRotate(const nw4r::math::VEC3 &value) { + mRotate = value; + } + const math::MTX34 &GetGlobalMtx() const { return mGlbMtx; } diff --git a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp index 9383d1c8..aec3ca26 100644 --- a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp @@ -1,7 +1,7 @@ -#include "d/lyt/d_textbox.h" -#include "d/lyt/d_window.h" #include "d/lyt/meter/d_lyt_meter_a_btn.h" +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" STATE_DEFINE(dLytMeterABtn_c, InvisibleWait); STATE_DEFINE(dLytMeterABtn_c, In); @@ -105,9 +105,11 @@ bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) { mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); } - static const char *sWindow = "W_bg_P_00"; - mpWindow = mLyt.getWindow(sWindow); - mpSizeBox = mLyt.getSizeBoxInWindow(sWindow); + static const char *sWindows[] = {"W_bg_P_00"}; + for (int i = 0; i < 1; i++) { + mpWindow[i] = mLyt.getWindow(sWindows[i]); + mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]); + } field_0x1C4 = 0x5F; field_0x1B8 = 0x5F; diff --git a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp index 113af247..4fd6c49b 100644 --- a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp +++ b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp @@ -1,5 +1,9 @@ #include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h" +#include "common.h" +#include "d/a/d_a_player.h" +#include "d/lyt/d_lyt_meter_configuration.h" + STATE_DEFINE(dLytMeterGanbariGauge_c, InvisibleWait); STATE_DEFINE(dLytMeterGanbariGauge_c, In); STATE_DEFINE(dLytMeterGanbariGauge_c, Wait); @@ -14,80 +18,402 @@ STATE_DEFINE(dLytMeterGanbariGauge_c, ToMin); STATE_DEFINE(dLytMeterGanbariGauge_c, Recovery); STATE_DEFINE(dLytMeterGanbariGauge_c, ToMax); -void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() {} +static const d2d::LytBrlanMapping brlanMap[] = { + { "guts_00_in.brlan", "G_inOut_00"}, + { "guts_00_angle.brlan", "G_angle_00"}, + {"guts_00_ganbariUpDown.brlan", "G_ganbari_00"}, + {"guts_00_ganbariUpDown.brlan", "G_ganbari_01"}, + { "guts_00_ganbariUse.brlan", "G_ganbari_01"}, + { "guts_00_ganbariLoop.brlan", "G_ganbariLoop_00"}, + { "guts_00_drink.brlan", "G_drink_00"}, + { "guts_00_mLoop.brlan", "G_mLoop_00"}, + { "guts_00_mCaution.brlan", "G_mCaution_00"}, + { "guts_00_caution.brlan", "G_caution_00"}, + { "guts_00_toMin.brlan", "G_minMax_00"}, + { "guts_00_toMinLoop.brlan", "G_toMinLoop"}, + { "guts_00_toMax.brlan", "G_minMax_00"}, + { "guts_00_color.brlan", "G_color_00"}, + { "guts_00_out.brlan", "G_inOut_00"}, + { "guts_00_cameraOut.brlan", "G_inOut_00"}, +}; + +#define GANBARI_ANIM_IN 0 +#define GANBARI_ANIM_ANGLE 1 +#define GANBARI_ANIM_UPDOWN_0 2 +#define GANBARI_ANIM_UPDOWN_1 3 +#define GANBARI_ANIM_USE 4 +#define GANBARI_ANIM_LOOP 5 +#define GANBARI_ANIM_DRINK 6 +#define GANBARI_ANIM_M_LOOP 7 +#define GANBARI_ANIM_M_CAUTION 8 +#define GANBARI_ANIM_CAUTION 9 +#define GANBARI_ANIM_TO_MIN 10 +#define GANBARI_ANIM_TO_MIN_LOOP 11 +#define GANBARI_ANIM_TO_MAX 12 +#define GANBARI_ANIM_COLOR 13 +#define GANBARI_ANIM_OUT 14 +#define GANBARI_ANIM_CAMERA_OUT 15 + +#define GANBARI_NUM_ANIMS 16 + +void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() { + mAnm[GANBARI_ANIM_IN].setToStart(); + mAnm[GANBARI_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[GANBARI_ANIM_IN].setAnimEnable(false); + mAnm[GANBARI_ANIM_OUT].setAnimEnable(false); +} void dLytMeterGanbariGauge_c::executeState_InvisibleWait() {} void dLytMeterGanbariGauge_c::finalizeState_InvisibleWait() {} -void dLytMeterGanbariGauge_c::initializeState_In() {} -void dLytMeterGanbariGauge_c::executeState_In() {} -void dLytMeterGanbariGauge_c::finalizeState_In() {} +void dLytMeterGanbariGauge_c::initializeState_In() { + if (dAcPy_c::GetLink()->getRidingActorType() == 3) { + field_0x554 = 3.0f; + } else if (swimmingRelated()) { + field_0x554 = 1.0f; + } else { + field_0x554 = 0.0f; + } + mAnm[GANBARI_ANIM_IN].setAnimEnable(true); + mAnm[GANBARI_ANIM_IN].setFrame(0.0f); +} +#pragma pool_data off +void dLytMeterGanbariGauge_c::executeState_In() { + if (mAnm[GANBARI_ANIM_IN].getFrame() == 1.0f) { + realizeAnimState(); + if (*mStateMgrWheel.getStateID() == StateID_Caution || *mStateMgrWheel.getStateID() == StateID_ToMin || + *mStateMgrWheel.getStateID() == StateID_Recovery || *mStateMgrWheel.getStateID() == StateID_ToMax) { + if (field_0x518 > 0.95f) { + mStateMgrWheel.changeState(StateID_Normal); + } else { + mStateMgrWheel.changeState(*mStateMgrWheel.getStateID()); + } + } + } + + if (mAnm[GANBARI_ANIM_IN].isEndReached()) { + mAnm[GANBARI_ANIM_IN].setAnimEnable(false); + mStateMgrMain.changeState(StateID_Wait); + } +} +#pragma pool_data on +void dLytMeterGanbariGauge_c::finalizeState_In() { + mAnm[GANBARI_ANIM_IN].setAnimEnable(false); +} void dLytMeterGanbariGauge_c::initializeState_Wait() {} void dLytMeterGanbariGauge_c::executeState_Wait() {} void dLytMeterGanbariGauge_c::finalizeState_Wait() {} -void dLytMeterGanbariGauge_c::initializeState_OutWait() {} -void dLytMeterGanbariGauge_c::executeState_OutWait() {} +void dLytMeterGanbariGauge_c::initializeState_OutWait() { + mOutWaitTimer = 0x1E; +} +void dLytMeterGanbariGauge_c::executeState_OutWait() { + if (--mOutWaitTimer <= 0) { + mStateMgrMain.changeState(StateID_Out); + } else if (field_0x518 < 0.9999f) { + mStateMgrMain.changeState(StateID_Wait); + } +} void dLytMeterGanbariGauge_c::finalizeState_OutWait() {} -void dLytMeterGanbariGauge_c::initializeState_Out() {} -void dLytMeterGanbariGauge_c::executeState_Out() {} -void dLytMeterGanbariGauge_c::finalizeState_Out() {} +void dLytMeterGanbariGauge_c::initializeState_Out() { + mAnm[GANBARI_ANIM_IN].setAnimEnable(false); + mAnm[GANBARI_ANIM_OUT].setAnimEnable(true); + mAnm[GANBARI_ANIM_OUT].setFrame(0.0f); +} +void dLytMeterGanbariGauge_c::executeState_Out() { + if (mAnm[GANBARI_ANIM_OUT].isEndReached()) { + mLyt.calc(); + mStateMgrMain.changeState(StateID_InvisibleWait); + } +} +void dLytMeterGanbariGauge_c::finalizeState_Out() { + mAnm[GANBARI_ANIM_OUT].setAnimEnable(false); +} -void dLytMeterGanbariGauge_c::initializeState_CameraOut() {} -void dLytMeterGanbariGauge_c::executeState_CameraOut() {} -void dLytMeterGanbariGauge_c::finalizeState_CameraOut() {} +void dLytMeterGanbariGauge_c::initializeState_CameraOut() { + mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(true); + mAnm[GANBARI_ANIM_CAMERA_OUT].setFrame(0.0f); +} +void dLytMeterGanbariGauge_c::executeState_CameraOut() { + if (mAnm[GANBARI_ANIM_CAMERA_OUT].isEndReached()) { + mLyt.calc(); + mStateMgrMain.changeState(StateID_InvisibleWait); + } +} +void dLytMeterGanbariGauge_c::finalizeState_CameraOut() { + mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(false); +} void dLytMeterGanbariGauge_c::initializeState_Full() {} -void dLytMeterGanbariGauge_c::executeState_Full() {} +void dLytMeterGanbariGauge_c::executeState_Full() { + if (field_0x518 < 0.9999f) { + mStateMgrWheel.changeState(StateID_Normal); + } else if (dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20) || field_0x558 != 0) { + mStateMgrWheel.changeState(StateID_FullGutsUse); + } +} void dLytMeterGanbariGauge_c::finalizeState_Full() {} void dLytMeterGanbariGauge_c::initializeState_FullGutsUse() {} -void dLytMeterGanbariGauge_c::executeState_FullGutsUse() {} +void dLytMeterGanbariGauge_c::executeState_FullGutsUse() { + if (field_0x518 < 0.9999f) { + mStateMgrWheel.changeState(StateID_Normal); + } else if (!dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20) && field_0x558 == 0) { + mStateMgrWheel.changeState(StateID_Full); + } +} void dLytMeterGanbariGauge_c::finalizeState_FullGutsUse() {} void dLytMeterGanbariGauge_c::initializeState_Normal() {} -void dLytMeterGanbariGauge_c::executeState_Normal() {} +void dLytMeterGanbariGauge_c::executeState_Normal() { + if (fn_801034B0(field_0x518)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(1.0f); + mStateMgrWheel.changeState(StateID_Caution); + } else if (fn_80103520(field_0x518)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f); + mStateMgrWheel.changeState(StateID_Caution); + } else if (field_0x518 >= 0.9999f) { + mStateMgrWheel.changeState(StateID_ToMax); + } +} void dLytMeterGanbariGauge_c::finalizeState_Normal() {} -void dLytMeterGanbariGauge_c::initializeState_Caution() {} -void dLytMeterGanbariGauge_c::executeState_Caution() {} -void dLytMeterGanbariGauge_c::finalizeState_Caution() {} +void dLytMeterGanbariGauge_c::initializeState_Caution() { + mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(true); + mAnm[GANBARI_ANIM_CAUTION].setFrame(0.0f); +} +void dLytMeterGanbariGauge_c::executeState_Caution() { + if (field_0x518 <= 0.0001f) { + mStateMgrWheel.changeState(StateID_ToMin); + } else if (fn_80103520(field_0x518)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f); + } else if (fn_801034B0(field_0x518)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(1.0f); + } else { + mStateMgrWheel.changeState(StateID_Normal); + } +} +void dLytMeterGanbariGauge_c::finalizeState_Caution() { + mAnm[GANBARI_ANIM_CAUTION].setFrame(0.0f); + mLyt.calc(); + mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(false); +} -void dLytMeterGanbariGauge_c::initializeState_ToMin() {} -void dLytMeterGanbariGauge_c::executeState_ToMin() {} +void dLytMeterGanbariGauge_c::initializeState_ToMin() { + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f); + mLyt.calc(); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false); + + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MIN].setToStart(); +} +void dLytMeterGanbariGauge_c::executeState_ToMin() { + if (field_0x518 >= 0.9999f) { + mAnm[GANBARI_ANIM_TO_MIN].setToStart(); + mLyt.calc(); + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false); + mStateMgrWheel.changeState(StateID_ToMax); + } else if (mAnm[GANBARI_ANIM_TO_MIN].isEndReached()) { + mStateMgrWheel.changeState(StateID_Recovery); + } +} void dLytMeterGanbariGauge_c::finalizeState_ToMin() {} -void dLytMeterGanbariGauge_c::initializeState_Recovery() {} -void dLytMeterGanbariGauge_c::executeState_Recovery() {} +void dLytMeterGanbariGauge_c::initializeState_Recovery() { + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MIN].setToEnd2(); + mLyt.calc(); + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false); + + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f); + + if (dAcPy_c::GetLink()->getRidingActorType() == 3) { + field_0x554 = 4.0f; + } else if (swimmingRelated()) { + field_0x554 = 1.0f; + } else { + field_0x554 = 2.0f; + } +} +void dLytMeterGanbariGauge_c::executeState_Recovery() { + if (swimmingRelated()) { + if (field_0x518 >= 0.0001f) { + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MAX].setToEnd2(); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f); + mLyt.calc(); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(false); + mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(false); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false); + mStateMgrWheel.changeState(StateID_Normal); + } + } else if (field_0x518 >= 0.9999f) { + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f); + mLyt.calc(); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(false); + mStateMgrWheel.changeState(StateID_ToMax); + } +} void dLytMeterGanbariGauge_c::finalizeState_Recovery() {} -void dLytMeterGanbariGauge_c::initializeState_ToMax() {} -void dLytMeterGanbariGauge_c::executeState_ToMax() {} +void dLytMeterGanbariGauge_c::initializeState_ToMax() { + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MIN].setToStart(); + mLyt.calc(); + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false); + mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(true); + mAnm[GANBARI_ANIM_TO_MAX].setToStart(); + if (swimmingRelated()) { + field_0x554 = 1.0f; + } +} +void dLytMeterGanbariGauge_c::executeState_ToMax() { + if (mAnm[GANBARI_ANIM_TO_MAX].isStop2()) { + realizeAnimState(); + if (dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20)) { + mStateMgrWheel.changeState(StateID_FullGutsUse); + } else { + mStateMgrWheel.changeState(StateID_Full); + } + } +} void dLytMeterGanbariGauge_c::finalizeState_ToMax() {} bool dLytMeterGanbariGauge_c::build(d2d::ResAccIf_c *resAcc) { - // TODO + mLyt.setResAcc(resAcc); + mLyt.build("guts_00.brlyt", nullptr); + + for (int i = 0; i < GANBARI_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(true); + } + + mAnm[GANBARI_ANIM_USE].setAnimEnable(false); + mAnm[GANBARI_ANIM_LOOP].setAnimEnable(false); + mAnm[GANBARI_ANIM_M_LOOP].setAnimEnable(false); + mAnm[GANBARI_ANIM_M_CAUTION].setAnimEnable(false); + mAnm[GANBARI_ANIM_OUT].setAnimEnable(false); + mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(false); + + field_0x518 = 1.0f; + field_0x51C = 1.0f; + field_0x54C = 1.0f; + field_0x550 = 1.0f; + + field_0x548 = dLytMeterConfiguration_c::sInstance->field_0x1C8; + + field_0x558 = 0; + field_0x559 = 0; + field_0x55B = 0; + mpPane = nullptr; + field_0x55A = 0; + + field_0x554 = 0.0f; + + mOutWaitTimer = 0x1E; + field_0x540 = 0; + field_0x534 = 0; + + if (dLytMeterConfiguration_c::sInstance->field_0x13C != 0) { + field_0x534 = 0; + } else { + field_0x534 = 1; + } + + if (field_0x534 == 0) { + mAnm[GANBARI_ANIM_IN].setToStart(); + } else { + mAnm[GANBARI_ANIM_IN].setToEnd2(); + } + + mAnm[GANBARI_ANIM_IN].setAnimEnable(true); + realizeAnimState(); + mAnm[GANBARI_ANIM_IN].setAnimEnable(false); + + field_0x524.copyFrom(mLyt.getLayout()->GetRootPane()->GetTranslate()); + field_0x530 = 0; + field_0x544 = 0; + + if (field_0x534 == 0) { + mStateMgrMain.changeState(StateID_InvisibleWait); + } else { + mStateMgrMain.changeState(StateID_Wait); + } + + mStateMgrWheel.changeState(StateID_Full); + return true; } bool dLytMeterGanbariGauge_c::remove() { + for (int i = 0; i < GANBARI_NUM_ANIMS; i++) { + mAnm[i].remove(); + } return true; } bool dLytMeterGanbariGauge_c::execute() { - // TODO + if (mpPane == nullptr) { + return true; + } + + if (!mpPane->IsVisible()) { + if (!(*mStateMgrMain.getStateID() != StateID_InvisibleWait)) { + return true; + } + mStateMgrMain.changeState(StateID_InvisibleWait); + return true; + } + + // TODO I really don't like the look of the rest of this function. Depends on a bunch + // of player, camera and filemanager stuff with a ton of inlines... + return true; } -const char *dLytMeterGanbariGauge_c::getName() const { - return mLyt.getName(); -} +void dLytMeterGanbariGauge_c::realizeAnimState() { + mAnm[GANBARI_ANIM_TO_MIN].setToStart(); + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true); -d2d::LytBase_c *dLytMeterGanbariGauge_c::getLyt() { - return &mLyt; -} + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(true); -nw4r::lyt::Pane *dLytMeterGanbariGauge_c::getPane() { - return mLyt.getLayout()->GetRootPane(); + mAnm[GANBARI_ANIM_TO_MAX].setToEnd2(); + mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(true); + + mAnm[GANBARI_ANIM_CAUTION].setFrame(0.0f); + mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(true); + + // okay + mAnm[GANBARI_ANIM_USE].setAnimEnable(false); + mAnm[GANBARI_ANIM_USE].setAnimEnable(true); + + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f); + + mLyt.calc(); + + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(false); + mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(false); + mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(false); + mAnm[GANBARI_ANIM_USE].setAnimEnable(false); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false); + + if (dAcPy_c::GetLink() != nullptr) { + if (dAcPy_c::GetLink()->getRidingActorType() == 3) { + field_0x554 = 3.0f; + } else if (swimmingRelated()) { + field_0x554 = 1.0f; + } else { + field_0x554 = 0.0f; + } + } } diff --git a/src/d/lyt/meter/d_lyt_meter_item_select.cpp b/src/d/lyt/meter/d_lyt_meter_item_select.cpp index 4f57a478..d3346605 100644 --- a/src/d/lyt/meter/d_lyt_meter_item_select.cpp +++ b/src/d/lyt/meter/d_lyt_meter_item_select.cpp @@ -1,5 +1,200 @@ #include "d/lyt/meter/d_lyt_meter_item_select.h" +#include "common.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_common_icon_item.h" +#include "d/lyt/d_lyt_do_button.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_group.h" +#include "nw4r/math/math_types.h" +#include "toBeSorted/small_sound_mgr.h" + +STATE_DEFINE(dLytMeterItemSelectIcon_c, Wait); +STATE_DEFINE(dLytMeterItemSelectIcon_c, On); +STATE_DEFINE(dLytMeterItemSelectIcon_c, Select); +STATE_DEFINE(dLytMeterItemSelectIcon_c, Off); + +STATE_DEFINE(dLytMeterItemSelectBlink_c, Wait); +STATE_DEFINE(dLytMeterItemSelectBlink_c, On); +STATE_DEFINE(dLytMeterItemSelectBlink_c, Select); +STATE_DEFINE(dLytMeterItemSelectBlink_c, Off); + +STATE_DEFINE(dLytMeterItemSelectText_c, Wait); +STATE_DEFINE(dLytMeterItemSelectText_c, On); +STATE_DEFINE(dLytMeterItemSelectText_c, Select); +STATE_DEFINE(dLytMeterItemSelectText_c, Off); + +STATE_DEFINE(dLytMeterItemSelectBtn_c, Invisible); +STATE_DEFINE(dLytMeterItemSelectBtn_c, On); +STATE_DEFINE(dLytMeterItemSelectBtn_c, Visible); +STATE_DEFINE(dLytMeterItemSelectBtn_c, Off); + +STATE_DEFINE(dLytMeterItemSelect_c, InitWait); +STATE_DEFINE(dLytMeterItemSelect_c, Wait); +STATE_DEFINE(dLytMeterItemSelect_c, SelectIn); +STATE_DEFINE(dLytMeterItemSelect_c, Select); +STATE_DEFINE(dLytMeterItemSelect_c, SetIn); +STATE_DEFINE(dLytMeterItemSelect_c, SetSpecialItemIn); +STATE_DEFINE(dLytMeterItemSelect_c, Set); +STATE_DEFINE(dLytMeterItemSelect_c, SetOut); +STATE_DEFINE(dLytMeterItemSelect_c, SetNone); +STATE_DEFINE(dLytMeterItemSelect_c, SelectOut); +STATE_DEFINE(dLytMeterItemSelect_c, ResetIn); +STATE_DEFINE(dLytMeterItemSelect_c, Reset); +STATE_DEFINE(dLytMeterItemSelect_c, ResetOut); +STATE_DEFINE(dLytMeterItemSelect_c, ToUse); +STATE_DEFINE(dLytMeterItemSelect_c, ToUnuse); +STATE_DEFINE(dLytMeterItemSelect_c, Unuse); +STATE_DEFINE(dLytMeterItemSelect_c, DemoMove); +STATE_DEFINE(dLytMeterItemSelect_c, DemoOut0); +STATE_DEFINE(dLytMeterItemSelect_c, DemoOut1); +STATE_DEFINE(dLytMeterItemSelect_c, FrameOffIn); +STATE_DEFINE(dLytMeterItemSelect_c, FrameOffMove); +STATE_DEFINE(dLytMeterItemSelect_c, FrameOffOut); + +void dLytMeterItemSelectIcon_c::initializeState_Wait() {} +void dLytMeterItemSelectIcon_c::executeState_Wait() {} +void dLytMeterItemSelectIcon_c::finalizeState_Wait() {} + +void dLytMeterItemSelectIcon_c::initializeState_On() {} +void dLytMeterItemSelectIcon_c::executeState_On() {} +void dLytMeterItemSelectIcon_c::finalizeState_On() {} + +void dLytMeterItemSelectIcon_c::initializeState_Select() {} +void dLytMeterItemSelectIcon_c::executeState_Select() {} +void dLytMeterItemSelectIcon_c::finalizeState_Select() {} + +void dLytMeterItemSelectIcon_c::initializeState_Off() {} +void dLytMeterItemSelectIcon_c::executeState_Off() {} +void dLytMeterItemSelectIcon_c::finalizeState_Off() {} + +void dLytMeterItemSelectBlink_c::initializeState_Wait() {} +void dLytMeterItemSelectBlink_c::executeState_Wait() {} +void dLytMeterItemSelectBlink_c::finalizeState_Wait() {} + +void dLytMeterItemSelectBlink_c::initializeState_On() {} +void dLytMeterItemSelectBlink_c::executeState_On() {} +void dLytMeterItemSelectBlink_c::finalizeState_On() {} + +void dLytMeterItemSelectBlink_c::initializeState_Select() {} +void dLytMeterItemSelectBlink_c::executeState_Select() {} +void dLytMeterItemSelectBlink_c::finalizeState_Select() {} + +void dLytMeterItemSelectBlink_c::initializeState_Off() {} +void dLytMeterItemSelectBlink_c::executeState_Off() {} +void dLytMeterItemSelectBlink_c::finalizeState_Off() {} + +void dLytMeterItemSelectText_c::initializeState_Wait() {} +void dLytMeterItemSelectText_c::executeState_Wait() {} +void dLytMeterItemSelectText_c::finalizeState_Wait() {} + +void dLytMeterItemSelectText_c::initializeState_On() {} +void dLytMeterItemSelectText_c::executeState_On() {} +void dLytMeterItemSelectText_c::finalizeState_On() {} + +void dLytMeterItemSelectText_c::initializeState_Select() {} +void dLytMeterItemSelectText_c::executeState_Select() {} +void dLytMeterItemSelectText_c::finalizeState_Select() {} + +void dLytMeterItemSelectText_c::initializeState_Off() {} +void dLytMeterItemSelectText_c::executeState_Off() {} +void dLytMeterItemSelectText_c::finalizeState_Off() {} + +void dLytMeterItemSelectBtn_c::initializeState_Invisible() {} +void dLytMeterItemSelectBtn_c::executeState_Invisible() {} +void dLytMeterItemSelectBtn_c::finalizeState_Invisible() {} + +void dLytMeterItemSelectBtn_c::initializeState_On() {} +void dLytMeterItemSelectBtn_c::executeState_On() {} +void dLytMeterItemSelectBtn_c::finalizeState_On() {} + +void dLytMeterItemSelectBtn_c::initializeState_Visible() {} +void dLytMeterItemSelectBtn_c::executeState_Visible() {} +void dLytMeterItemSelectBtn_c::finalizeState_Visible() {} + +void dLytMeterItemSelectBtn_c::initializeState_Off() {} +void dLytMeterItemSelectBtn_c::executeState_Off() {} +void dLytMeterItemSelectBtn_c::finalizeState_Off() {} + +static const char *sPaneNames[] = { + "N_itemArrow_00", "N_arrowHand_00", "N_bBtn_00", "N_itemSelect_00", "N_setBtn_00", "N_bBtn_01", + "N_btnBg_00", "N_btn_00", "N_input_00", "N_iconA_00", "N_iconB_00", "N_iconC_00", + "N_iconD_00", "N_iconE_00", "N_iconF_00", "N_iconG_00", "N_iconH_00", +}; + +static const d2d::LytBrlanMapping brlanMap[] = { + { "remoConBtn_00_in.brlan", "G_inOut_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemA_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemB_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemC_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemD_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemE_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemF_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemG_00"}, + { "remoConBtn_00_onOff.brlan", "G_itemH_00"}, + { "remoConBtn_00_onOff.brlan", "G_text_00"}, + { "remoConBtn_00_onOff.brlan", "G_text_01"}, + { "remoConBtn_00_have.brlan", "G_itemA_00"}, + { "remoConBtn_00_have.brlan", "G_itemB_00"}, + { "remoConBtn_00_have.brlan", "G_itemC_00"}, + { "remoConBtn_00_have.brlan", "G_itemD_00"}, + { "remoConBtn_00_have.brlan", "G_itemE_00"}, + { "remoConBtn_00_have.brlan", "G_itemF_00"}, + { "remoConBtn_00_have.brlan", "G_itemG_00"}, + { "remoConBtn_00_have.brlan", "G_itemH_00"}, + {"remoConBtn_00_selectOnOff.brlan", "G_selectOnOff_00"}, + { "remoConBtn_00_selectLoop.brlan", "G_selectLoop_00"}, + { "remoConBtn_00_itemArrow.brlan", "G_itemArrow_00"}, + { "remoConBtn_00_decide.brlan", "G_decide_00"}, + { "remoConBtn_00_numberV.brlan", "G_numberV_00"}, + { "remoConBtn_00_out.brlan", "G_inOut_00"}, + { "remoConBtn_00_reset.brlan", "G_inOut_00"}, + { "remoConBtn_00_textColor.brlan", "G_textColor_00"}, + { "remoConBtn_00_enough.brlan", "G_enough_00"}, + { "remoConBtn_00_full.brlan", "G_full_00"}, + { "remoConBtn_00_call.brlan", "G_call_00"}, + { "remoConBtn_00_input.brlan", "G_input_00"}, + { "remoConBtn_00_input.brlan", "G_input_01"}, + { "remoConBtn_00_input.brlan", "G_input_02"}, + { "remoConBtn_00_input.brlan", "G_input_03"}, +}; + +#define ITEM_SELECT_ANIM_IN 0 +#define ITEM_SELECT_ANIM_ONOFF_OFFSET 1 +#define ITEM_SELECT_ANIM_TEXT_ONOFF_OFFSET 9 +#define ITEM_SELECT_ANIM_HAVE_OFFSET 11 +#define ITEM_SELECT_ANIM_SELECT_ONOFF 19 +#define ITEM_SELECT_ANIM_SELECT_LOOP 20 +#define ITEM_SELECT_ANIM_ARROW 21 +#define ITEM_SELECT_ANIM_DECIDE 22 +#define ITEM_SELECT_ANIM_NUMBERV 23 +#define ITEM_SELECT_ANIM_OUT 24 +#define ITEM_SELECT_ANIM_RESET 25 +#define ITEM_SELECT_ANIM_TEXTCOLOR 26 +#define ITEM_SELECT_ANIM_ENOUGH 27 +#define ITEM_SELECT_ANIM_FULL 28 +#define ITEM_SELECT_ANIM_CALL 29 +#define ITEM_SELECT_ANIM_INPUT_OFFSET 30 + +#define ITEM_SELECT_NUM_ANIMS 34 + +static const char *sTextboxNames[] = { + "T_number_00", "T_numberS_00", "T_numberS_01", "T_numberS_02", "T_back_00", + "T_backS_00", "T_itemName_00", "T_itemNameS_00", "T_item_00", "T_itemS_00", +}; + +static const char *sWindowNames[] = { + "W_bgP_00", + "W_bgP_01", + "W_bgP_02", + "W_bgP_04", +}; + +static const char *groupName = "G_ref_00"; + dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null) { field_0x574C = 11; field_0x5750 = 11; @@ -10,3 +205,617 @@ dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null field_0x5764 = -1; field_0x5768 = 2; } + +void dLytMeterItemSelect_c::initializeState_InitWait() {} +void dLytMeterItemSelect_c::executeState_InitWait() {} +void dLytMeterItemSelect_c::finalizeState_InitWait() {} + +void dLytMeterItemSelect_c::initializeState_Wait() {} +void dLytMeterItemSelect_c::executeState_Wait() {} +void dLytMeterItemSelect_c::finalizeState_Wait() {} + +void dLytMeterItemSelect_c::initializeState_SelectIn() {} +void dLytMeterItemSelect_c::executeState_SelectIn() {} +void dLytMeterItemSelect_c::finalizeState_SelectIn() {} + +void dLytMeterItemSelect_c::initializeState_Select() {} +void dLytMeterItemSelect_c::executeState_Select() {} +void dLytMeterItemSelect_c::finalizeState_Select() {} + +void dLytMeterItemSelect_c::initializeState_SetIn() {} +void dLytMeterItemSelect_c::executeState_SetIn() {} +void dLytMeterItemSelect_c::finalizeState_SetIn() {} + +void dLytMeterItemSelect_c::initializeState_SetSpecialItemIn() {} +void dLytMeterItemSelect_c::executeState_SetSpecialItemIn() {} +void dLytMeterItemSelect_c::finalizeState_SetSpecialItemIn() {} + +void dLytMeterItemSelect_c::initializeState_Set() {} +void dLytMeterItemSelect_c::executeState_Set() {} +void dLytMeterItemSelect_c::finalizeState_Set() {} + +void dLytMeterItemSelect_c::initializeState_SetOut() {} +void dLytMeterItemSelect_c::executeState_SetOut() {} +void dLytMeterItemSelect_c::finalizeState_SetOut() {} + +void dLytMeterItemSelect_c::initializeState_SetNone() {} +void dLytMeterItemSelect_c::executeState_SetNone() {} +void dLytMeterItemSelect_c::finalizeState_SetNone() {} + +void dLytMeterItemSelect_c::initializeState_SelectOut() {} +void dLytMeterItemSelect_c::executeState_SelectOut() {} +void dLytMeterItemSelect_c::finalizeState_SelectOut() {} + +void dLytMeterItemSelect_c::initializeState_ResetIn() {} +void dLytMeterItemSelect_c::executeState_ResetIn() {} +void dLytMeterItemSelect_c::finalizeState_ResetIn() {} + +void dLytMeterItemSelect_c::initializeState_Reset() {} +void dLytMeterItemSelect_c::executeState_Reset() {} +void dLytMeterItemSelect_c::finalizeState_Reset() {} + +void dLytMeterItemSelect_c::initializeState_ResetOut() {} +void dLytMeterItemSelect_c::executeState_ResetOut() {} +void dLytMeterItemSelect_c::finalizeState_ResetOut() {} + +void dLytMeterItemSelect_c::initializeState_ToUse() {} +void dLytMeterItemSelect_c::executeState_ToUse() {} +void dLytMeterItemSelect_c::finalizeState_ToUse() {} + +void dLytMeterItemSelect_c::initializeState_ToUnuse() {} +void dLytMeterItemSelect_c::executeState_ToUnuse() {} +void dLytMeterItemSelect_c::finalizeState_ToUnuse() {} + +void dLytMeterItemSelect_c::initializeState_Unuse() {} +void dLytMeterItemSelect_c::executeState_Unuse() {} +void dLytMeterItemSelect_c::finalizeState_Unuse() {} + +void dLytMeterItemSelect_c::initializeState_DemoMove() {} +void dLytMeterItemSelect_c::executeState_DemoMove() {} +void dLytMeterItemSelect_c::finalizeState_DemoMove() {} + +void dLytMeterItemSelect_c::initializeState_DemoOut0() {} +void dLytMeterItemSelect_c::executeState_DemoOut0() {} +void dLytMeterItemSelect_c::finalizeState_DemoOut0() {} + +void dLytMeterItemSelect_c::initializeState_DemoOut1() {} +void dLytMeterItemSelect_c::executeState_DemoOut1() {} +void dLytMeterItemSelect_c::finalizeState_DemoOut1() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffIn() {} +void dLytMeterItemSelect_c::executeState_FrameOffIn() {} +void dLytMeterItemSelect_c::finalizeState_FrameOffIn() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffMove() {} +void dLytMeterItemSelect_c::executeState_FrameOffMove() {} +void dLytMeterItemSelect_c::finalizeState_FrameOffMove() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffOut() {} +void dLytMeterItemSelect_c::executeState_FrameOffOut() {} +void dLytMeterItemSelect_c::finalizeState_FrameOffOut() {} + +bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("remoConBtn_00.brlyt", nullptr); + + for (int i = 0; i < 17; i++) { + mpPanes[i] = mLyt.findPane(sPaneNames[i]); + } + + for (int i = 0; i < ITEM_SELECT_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + for (int i = 0; i < 8; i++) { + mIcon[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_ONOFF_OFFSET]); + mIcon[i].init(); + } + + mBlink.setAnm(&mAnm[ITEM_SELECT_ANIM_NUMBERV]); + mBlink.init(); + + for (int i = 0; i < 2; i++) { + mText[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_TEXT_ONOFF_OFFSET]); + mText[i].init(); + } + + for (int i = 0; i < 4; i++) { + mBtn[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET]); + mBtn[i].init(i, &mLyt, mpPanes[5]); + } + + for (int i = 0; i < 10; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextboxNames[i]); + } + + for (int i = 0; i < 4; i++) { + mpWindows[i] = mLyt.getWindow(sWindowNames[i]); + mpSizeBoxes[i] = mLyt.getSizeBoxInWindow(sWindowNames[i]); + mpWindows[i]->UpdateSize(mpSizeBoxes[i], 32.0f); + } + + for (int i = 0; i < 9; i++) { + mSubpanes[i].mpLytPane = &mItemIcons[i]; + mItemIcons[i].build(resAcc, dLytCommonIconItem_c::B_WHEEL); + mSubpaneList.PushBack(&mSubpanes[i]); + } + + if (mLyt.getLayout()->GetRootPane() != nullptr) { + nw4r::lyt::Group *g = mLyt.findGroupByName("G_ref_00"); + linkMeters(g, &mSubpaneList); + } + + for (int i = 0; i < 9; i++) { + mItemIcons[i].reset(); + mItemIcons[i].setVisible(false); + mItemIcons[i].setSize(true); + } + + mStateMgr.changeState(StateID_InitWait); + + return true; +} + +bool dLytMeterItemSelect_c::remove() { + for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) { + if (!it->mpLytPane->LytMeter0x24()) { + continue; + } + d2d::dSubPane *subPane = it->mpLytPane; + if (subPane != nullptr) { + nw4r::lyt::Pane *parent = subPane->getPane()->GetParent(); + parent->RemoveChild(subPane->getPane()); + } + } + + for (int i = 0; i < 9; i++) { + mSubpanes[i].mpLytPane->remove(); + } + + for (int i = 0; i < ITEM_SELECT_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + + mEffects.remove(true); + return true; +} + +bool dLytMeterItemSelect_c::execute() { + if (StoryflagManager::sInstance->getCounterOrFlag(569) != 0) { + if (field_0x57A2 != 0 || (field_0x57A0 != 0 && field_0x5794 != 2 && field_0x5794 != 9 && field_0x5794 != 10)) { + field_0x57B9 = 0; + StoryflagManager::sInstance->unsetFlag(569); + } else { + field_0x57B9 = 1; + } + } + + field_0x57BF = field_0x57BE; + if (mpSomePane == nullptr) { + return true; + } + + if (!mpSomePane->IsVisible()) { + if (*mStateMgr.getStateID() != StateID_DemoMove && *mStateMgr.getStateID() != StateID_DemoOut0 && + *mStateMgr.getStateID() != StateID_DemoOut1 && field_0x57C5 != 0) { + mpPanes[6]->SetVisible(true); + mpPanes[7]->SetVisible(true); + mpPanes[8]->SetVisible(true); + field_0x57C5 = 0; + } + if ((*mStateMgr.getStateID() == StateID_SetIn) || (*mStateMgr.getStateID() == StateID_Set) || + (*mStateMgr.getStateID() == StateID_SetOut) || (*mStateMgr.getStateID() == StateID_ToUnuse)) { + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].setToEnd2(); + } + + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_DECIDE].setToEnd2(); + } + + if (field_0x5798 != 11) { + if (field_0x5794 != 11) { + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2(); + } else { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + } + } else if (field_0x5794 != 11) { + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2(); + } else { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + } + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + } + + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false); + } + + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + } + + mBtn[1].fn_800E9E00(1, 1); + mBtn[0].fn_800E9E00(1, 1); + + field_0x57B3 = 0; + + if (field_0x5798 != 11) { + if (field_0x5794 != 11) { + mBtn[2].fn_800E9E00(0, 1); + } else { + mBtn[2].fn_800E9E00(1, 1); + } + } else if (field_0x5794 != 11) { + mBtn[2].fn_800E9E00(0, 1); + } else { + mBtn[2].fn_800E9E00(1, 1); + } + + mStateMgr.changeState(StateID_Wait); + } else if (*mStateMgr.getStateID() == StateID_SelectOut) { + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].setToEnd2(); + } + + if (field_0x57BD != 0) { + field_0x579B = 0; + field_0x5784 = 0.8f; + mEffects.fn_80027320(0); + field_0x57BD = 0; + field_0x57BE = 0; + mpPanes[11]->SetAlpha(0xFF); + } + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + } + + mStateMgr.changeState(StateID_Wait); + } + + // LAB_800ee8ec: + if (*mStateMgr.getStateID() == StateID_SetNone) { + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + mBtn[0].fn_800E9E30(1); + mBtn[2].fn_800E9E30(1); + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B3 = 0; + field_0x579A = 11; + mStateMgr.changeState(StateID_Wait); + } + if (*mStateMgr.getStateID() == StateID_SetSpecialItemIn) { + mBtn[0].fn_800E9E00(1, 1); + if (mpSomePane->GetAlpha() != 0xFF) { + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + } + + mpPanes[4]->SetVisible(true); + + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + + mBtn[1].fn_800E9E00(1, 1); + mBtn[2].fn_800E9E00(1, 1); + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + mpPanes[4]->SetVisible(false); + field_0x57B3 = 0; + field_0x579A = 11; + mStateMgr.changeState(StateID_Wait); + } + } + // TODO maybe an inline + s32 tmp; + if (dLytDobutton_c::GetInstance() != nullptr) { + tmp = dLytDobutton_c::GetInstance()->getField0x47C(); + } else { + tmp = 0x5E; + } + + if (tmp == 0x28) { + if (field_0x5774 == 0) { + SmallSoundManager::GetInstance()->playSound(SE_S_PARACHUTE_CALL); + } + field_0x5774++; + if (field_0x5774 >= mAnm[ITEM_SELECT_ANIM_CALL].getAnimDuration() / 2.0f) { + field_0x5774 = 0; + } + } else { + field_0x5774 = 0; + } + + return true; + } + + bool a = false; + bool b = false; + if (field_0x5790 > 0) { + field_0x5790--; + } + + if (field_0x5794 != field_0x5796) { + field_0x5796 = field_0x5794; + a = true; + if (field_0x5794 != 11) { + field_0x5797 = field_0x5794; + field_0x57B4 = 0; + } else { + field_0x57B4 = 1; + } + fn_800F0680(field_0x5796); + b = true; + } else if (field_0x579C != fn_800F07D0(fn_800F0990(1))) { + field_0x579C = fn_800F07D0(fn_800F0990(1)); + fn_800F0680(field_0x5796); + b = true; + } else if (field_0x579D != fn_800F07D0(fn_800F0990(5))) { + field_0x579D = fn_800F07D0(fn_800F0990(5)); + fn_800F0680(field_0x5796); + b = true; + } else if (field_0x579E != fn_800F07D0(fn_800F0990(4))) { + field_0x579E = fn_800F07D0(fn_800F0990(4)); + fn_800F0680(field_0x5796); + b = true; + } else if (field_0x579F != fn_800F07D0(fn_800F0990(7))) { + field_0x579F = fn_800F07D0(fn_800F0990(7)); + fn_800F0680(field_0x5796); + b = true; + } + + if (field_0x5797 != 11) { + fn_800EFAD0(fn_800F07D0(fn_800F0990(field_0x5797)), a); + } + + if (field_0x57B6) { + if (!mAnm[ITEM_SELECT_ANIM_ENOUGH].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_ENOUGH].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_ENOUGH].setAnimEnable(true); + } + field_0x57B6 = false; + } + + if (field_0x57B7) { + if (!mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_FULL].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(true); + if (field_0x5797 == 0) { + SmallSoundManager::GetInstance()->playSound(SE_S_BM_MAX); + } else if (field_0x5797 == 1) { + SmallSoundManager::GetInstance()->playSound(SE_S_AW_MAX); + } else if (field_0x5797 == 5) { + SmallSoundManager::GetInstance()->playSound(SE_S_PC_MAX); + } + } + field_0x57B7 = false; + } + + fn_800EF7C0(); + mStateMgr.executeState(); + fn_800EF8C0(0); + + // TODO maybe an inline + s32 tmp; + if (dLytDobutton_c::GetInstance() != nullptr) { + tmp = dLytDobutton_c::GetInstance()->getField0x47C(); + } else { + tmp = 0x5E; + } + + if (tmp == 0x28) { + if (field_0x57C3 != 0) { + field_0x57BB = 1; + } + } else { + field_0x57C3 = 0; + } + + bool b2 = false; + if (field_0x57B9 != 0 && dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && field_0x576C == 0x85) { + if (field_0x57BA == 0) { + mAnm[ITEM_SELECT_ANIM_CALL].setToEnd(); + mAnm[ITEM_SELECT_ANIM_CALL].setRate(1.0f); + mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(true); + field_0x57BA = 1; + } + + if (mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_CALL].play(); + if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && + mAnm[ITEM_SELECT_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_B_BUTTON_BLINK); + } + } + b2 = true; + } else { + if (field_0x57BA == 1) { + mAnm[ITEM_SELECT_ANIM_CALL].setToEnd(); + b2 = true; + } + + if (field_0x57BB != 0) { + if (field_0x57BC == 0) { + mAnm[ITEM_SELECT_ANIM_CALL].setToEnd(); + mAnm[ITEM_SELECT_ANIM_CALL].setRate(2.0f); + mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(true); + } + + if (mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_CALL].play(); + if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && + mAnm[ITEM_SELECT_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_PARACHUTE_CALL); + } + } + b2 = true; + } else if (field_0x57BC == 1) { + mAnm[ITEM_SELECT_ANIM_CALL].setToEnd(); + b2 = true; + } + } + + if (!b2 && mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(false); + } + + if (field_0x57B9 == 0) { + field_0x57BA = field_0x57B9; + } + + field_0x57B9 = 0; + field_0x57BC = field_0x57BB; + field_0x57BB = 0; + + if (*mStateMgr.getStateID() != StateID_InitWait) { + for (int i = 0; i < 8; i++) { + mIcon[i].execute(); + } + mBlink.execute(); + for (int i = 0; i < 2; i++) { + mText[i].execute(); + } + + for (int i = 0; i < 4; i++) { + mBtn[i].execute(); + if (mBtn[i].getField_0x57() != 0) { + mBtn[i].setField_0x57(0); + b = true; + } + } + + if (b) { + mLyt.getLayout()->Animate(0); + } + + mVec3_c t1(0.0f, 0.0f, 0.0f); + t1.z = field_0x5778; + mpPanes[0]->SetRotate(t1); + mVec3_c t2(0.0f, 0.0f, 0.0f); + t2.z = -field_0x5778; + mpPanes[1]->SetRotate(t2); + mpPanes[2]->SetRotate(t2); + + f32 frame = mAnm[ITEM_SELECT_ANIM_ARROW].getAnimDuration(); + if (field_0x577C < 0.0f) { + field_0x577C = 0.0f; + } + if (field_0x577C > 1.0f) { + field_0x577C = 1.0f; + } + mAnm[ITEM_SELECT_ANIM_ARROW].setFrame(frame * field_0x577C); + mAnm[ITEM_SELECT_ANIM_ARROW].setAnimEnable(true); + + if (mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].play(); + } + + if (mAnm[ITEM_SELECT_ANIM_ENOUGH].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_ENOUGH].isEndReached()) { + mAnm[ITEM_SELECT_ANIM_ENOUGH].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_ENOUGH].setAnimEnable(false); + } else { + mAnm[ITEM_SELECT_ANIM_ENOUGH].play(); + } + } + + if (mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_FULL].isEndReached()) { + mAnm[ITEM_SELECT_ANIM_FULL].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(false); + } else { + mAnm[ITEM_SELECT_ANIM_FULL].play(); + } + } + + for (int i = 0; i < 9; i++) { + mSubpanes[i].mpLytPane->execute(); + } + + if (field_0x5794 == 2) { + if (LytDoButtonRelated::GetInstance() != nullptr) { + LytDoButtonRelated::GetInstance()->set0x08(0x91); + } + } else if (field_0x5794 == 9) { + if (field_0x57B3 != 0) { + if (LytDoButtonRelated::GetInstance() != nullptr) { + LytDoButtonRelated::GetInstance()->set0x08(0x90); + } + } else { + if (LytDoButtonRelated::GetInstance() != nullptr) { + LytDoButtonRelated::GetInstance()->set0x08(0x8F); + } + } + } + + if (field_0x578C <= 0 && *mStateMgr.getStateID() != StateID_SetIn && + *mStateMgr.getStateID() != StateID_SetOut && *mStateMgr.getStateID() != StateID_ToUnuse && + *mStateMgr.getStateID() != StateID_Unuse) { + s32 tmp; + if (LytDoButtonRelated::GetInstance() != nullptr) { + tmp = LytDoButtonRelated::GetInstance()->get0x08(); + } else { + tmp = 0x98; + } + if (field_0x576C != tmp) { + s32 tmp; + if (LytDoButtonRelated::GetInstance() != nullptr) { + tmp = LytDoButtonRelated::GetInstance()->get0x08(); + } else { + tmp = 0x98; + } + field_0x576C = tmp; + fn_800F0440(field_0x576C); + } + } else { + if (field_0x576C != 0x98) { + field_0x576C = 0x98; + fn_800F0440(field_0x576C); + } + + if (field_0x578C > 0) { + field_0x578C--; + } + } + + if (LytDoButtonRelated::GetInstance() != nullptr) { + LytDoButtonRelated::GetInstance()->set0x08(0x98); + } + } + + field_0x57C1 = fn_800F09E0(); + return true; +}