diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index e7f69ce9..181055f3 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -355,12 +355,20 @@ d/lyt/meter/d_lyt_meter_remocon_bg.cpp: d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp: .text start:0x800E7220 end:0x800E8168 .ctors start:0x804DB6F8 end:0x804DB6FC + .rodata start:0x804E5640 end:0x804E58B8 .data start:0x80514F10 end:0x80515178 + .sdata start:0x805723C0 end:0x805723D8 + .sdata2 start:0x80579BB0 end:0x80579BC0 + .bss start:0x805AAAD0 end:0x805AABD0 d/lyt/meter/d_lyt_meter_nun_stk.cpp: .text start:0x800E8170 end:0x800E8ED8 .ctors start:0x804DB6FC end:0x804DB700 + .rodata start:0x804E58B8 end:0x804E5B28 .data start:0x80515178 end:0x805153A8 + .sdata start:0x805723D8 end:0x805723F0 + .sdata2 start:0x80579BC0 end:0x80579BD0 + .bss start:0x805AABD0 end:0x805AACD0 d/lyt/meter/d_lyt_meter_item_select.cpp: .text start:0x800E8EE0 end:0x800F35A8 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 3cf63f21..4f4a1519 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -4839,15 +4839,15 @@ changeState__93sStateMgr_c<24dLytMeterCrossBtnParts_c,20sStateMethodUsr_FI_c,12s getStateID__93sStateMgr_c<24dLytMeterCrossBtnParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800DA6F0; // type:function size:0x10 changeState__89sStateMgr_c<20dLytCommonIconItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800DA700; // type:function size:0x10 getStateID__89sStateMgr_c<20dLytCommonIconItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800DA710; // type:function size:0x10 -fn_800DA720 = .text:0x800DA720; // type:function size:0x8 -fn_800DA730 = .text:0x800DA730; // type:function size:0x8 -fn_800DA740 = .text:0x800DA740; // type:function size:0x8 -fn_800DA750 = .text:0x800DA750; // type:function size:0x8 -fn_800DA760 = .text:0x800DA760; // type:function size:0x8 -fn_800DA770 = .text:0x800DA770; // type:function size:0x8 -fn_800DA780 = .text:0x800DA780; // type:function size:0x8 -fn_800DA790 = .text:0x800DA790; // type:function size:0x8 -fn_800DA7A0 = .text:0x800DA7A0; // type:function size:0x8 +getName__25dLytCommonIconItemPart3_cCFv = .text:0x800DA720; // type:function size:0x8 +getLyt__25dLytCommonIconItemPart3_cFv = .text:0x800DA730; // type:function size:0x8 +getPane__25dLytCommonIconItemPart3_cFv = .text:0x800DA740; // type:function size:0x8 +getName__25dLytCommonIconItemPart2_cCFv = .text:0x800DA750; // type:function size:0x8 +getLyt__25dLytCommonIconItemPart2_cFv = .text:0x800DA760; // type:function size:0x8 +getPane__25dLytCommonIconItemPart2_cFv = .text:0x800DA770; // type:function size:0x8 +getName__25dLytCommonIconItemPart1_cCFv = .text:0x800DA780; // type:function size:0x8 +getLyt__25dLytCommonIconItemPart1_cFv = .text:0x800DA790; // type:function size:0x8 +getPane__25dLytCommonIconItemPart1_cFv = .text:0x800DA7A0; // type:function size:0x8 changeState__91sStateMgr_c<22dLytMeterShieldGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800DA7B0; // type:function size:0x10 changeState__83sStateMgr_c<14dLytDobutton_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800DA7C0; // type:function size:0x10 build__30sFStateFct_c<14dLytSkyGauge_c>FRC12sStateIDIf_c = .text:0x800DA7D0; // type:function size:0x60 @@ -5622,47 +5622,47 @@ getPane__20dLytMeterRemoconBg_cFv = .text:0x800E6DE0; // type:function size:0x8 __sinit_\d_lyt_meter_remocon_bg_cpp = .text:0x800E6DF0; // type:function size:0x338 scope:local __dt__35sFStateID_c<20dLytMeterRemoconBg_c>Fv = .text:0x800E7130; // type:function size:0x58 isSameName__35sFStateID_c<20dLytMeterRemoconBg_c>CFPCc = .text:0x800E7190; // type:function size:0x88 -fn_800E7220 = .text:0x800E7220; // type:function size:0xC -fn_800E7230 = .text:0x800E7230; // type:function size:0x11C -fn_800E7350 = .text:0x800E7350; // type:function size:0x4 -fn_800E7360 = .text:0x800E7360; // type:function size:0x4 -fn_800E7370 = .text:0x800E7370; // type:function size:0x60 -fn_800E73D0 = .text:0x800E73D0; // type:function size:0x4 -fn_800E73E0 = .text:0x800E73E0; // type:function size:0x4 -fn_800E73F0 = .text:0x800E73F0; // type:function size:0x11C -fn_800E7510 = .text:0x800E7510; // type:function size:0x4 -fn_800E7520 = .text:0x800E7520; // type:function size:0x4 -fn_800E7530 = .text:0x800E7530; // type:function size:0x78 -fn_800E75B0 = .text:0x800E75B0; // type:function size:0x4 -fn_800E75C0 = .text:0x800E75C0; // type:function size:0x1DC -fn_800E77A0 = .text:0x800E77A0; // type:function size:0x58 -fn_800E7800 = .text:0x800E7800; // type:function size:0x3A0 -fn_800E7BA0 = .text:0x800E7BA0; // type:function size:0x164 -fn_800E7D10 = .text:0x800E7D10; // type:function size:0x8 -fn_800E7D20 = .text:0x800E7D20; // type:function size:0x8 -fn_800E7D30 = .text:0x800E7D30; // type:function size:0x8 +initializeState_Wait__21dLytMeterNunchakuBg_cFv = .text:0x800E7220; // type:function size:0xC +executeState_Wait__21dLytMeterNunchakuBg_cFv = .text:0x800E7230; // type:function size:0x11C +finalizeState_Wait__21dLytMeterNunchakuBg_cFv = .text:0x800E7350; // type:function size:0x4 +initializeState_On__21dLytMeterNunchakuBg_cFv = .text:0x800E7360; // type:function size:0x4 +executeState_On__21dLytMeterNunchakuBg_cFv = .text:0x800E7370; // type:function size:0x60 +finalizeState_On__21dLytMeterNunchakuBg_cFv = .text:0x800E73D0; // type:function size:0x4 +initializeState_Active__21dLytMeterNunchakuBg_cFv = .text:0x800E73E0; // type:function size:0x4 +executeState_Active__21dLytMeterNunchakuBg_cFv = .text:0x800E73F0; // type:function size:0x11C +finalizeState_Active__21dLytMeterNunchakuBg_cFv = .text:0x800E7510; // type:function size:0x4 +initializeState_Off__21dLytMeterNunchakuBg_cFv = .text:0x800E7520; // type:function size:0x4 +executeState_Off__21dLytMeterNunchakuBg_cFv = .text:0x800E7530; // type:function size:0x78 +finalizeState_Off__21dLytMeterNunchakuBg_cFv = .text:0x800E75B0; // type:function size:0x4 +build__21dLytMeterNunchakuBg_cFPQ23d2d10ResAccIf_c = .text:0x800E75C0; // type:function size:0x1DC +remove__21dLytMeterNunchakuBg_cFv = .text:0x800E77A0; // type:function size:0x58 +execute__21dLytMeterNunchakuBg_cFv = .text:0x800E7800; // type:function size:0x3A0 +setMessage__21dLytMeterNunchakuBg_cFl = .text:0x800E7BA0; // type:function size:0x164 +getName__21dLytMeterNunchakuBg_cCFv = .text:0x800E7D10; // type:function size:0x8 +getLyt__21dLytMeterNunchakuBg_cFv = .text:0x800E7D20; // type:function size:0x8 +getPane__21dLytMeterNunchakuBg_cFv = .text:0x800E7D30; // type:function size:0x8 __sinit_\d_lyt_meter_nunchaku_bg_cpp = .text:0x800E7D40; // type:function size:0x338 scope:local __dt__36sFStateID_c<21dLytMeterNunchakuBg_c>Fv = .text:0x800E8080; // type:function size:0x58 isSameName__36sFStateID_c<21dLytMeterNunchakuBg_c>CFPCc = .text:0x800E80E0; // type:function size:0x88 -fn_800E8170 = .text:0x800E8170; // type:function size:0xC -fn_800E8180 = .text:0x800E8180; // type:function size:0x11C -fn_800E82A0 = .text:0x800E82A0; // type:function size:0x4 -fn_800E82B0 = .text:0x800E82B0; // type:function size:0x4 -fn_800E82C0 = .text:0x800E82C0; // type:function size:0x60 -fn_800E8320 = .text:0x800E8320; // type:function size:0x4 -fn_800E8330 = .text:0x800E8330; // type:function size:0x4 -fn_800E8340 = .text:0x800E8340; // type:function size:0x11C -fn_800E8460 = .text:0x800E8460; // type:function size:0x4 -fn_800E8470 = .text:0x800E8470; // type:function size:0x4 -fn_800E8480 = .text:0x800E8480; // type:function size:0x78 -fn_800E8500 = .text:0x800E8500; // type:function size:0x4 -fn_800E8510 = .text:0x800E8510; // type:function size:0x1B8 -fn_800E86D0 = .text:0x800E86D0; // type:function size:0x58 -fn_800E8730 = .text:0x800E8730; // type:function size:0x1D4 -fn_800E8910 = .text:0x800E8910; // type:function size:0x164 -fn_800E8A80 = .text:0x800E8A80; // type:function size:0x8 -fn_800E8A90 = .text:0x800E8A90; // type:function size:0x8 -fn_800E8AA0 = .text:0x800E8AA0; // type:function size:0x8 +initializeState_Wait__17dLytMeterNunStk_cFv = .text:0x800E8170; // type:function size:0xC +executeState_Wait__17dLytMeterNunStk_cFv = .text:0x800E8180; // type:function size:0x11C +finalizeState_Wait__17dLytMeterNunStk_cFv = .text:0x800E82A0; // type:function size:0x4 +initializeState_On__17dLytMeterNunStk_cFv = .text:0x800E82B0; // type:function size:0x4 +executeState_On__17dLytMeterNunStk_cFv = .text:0x800E82C0; // type:function size:0x60 +finalizeState_On__17dLytMeterNunStk_cFv = .text:0x800E8320; // type:function size:0x4 +initializeState_Active__17dLytMeterNunStk_cFv = .text:0x800E8330; // type:function size:0x4 +executeState_Active__17dLytMeterNunStk_cFv = .text:0x800E8340; // type:function size:0x11C +finalizeState_Active__17dLytMeterNunStk_cFv = .text:0x800E8460; // type:function size:0x4 +initializeState_Off__17dLytMeterNunStk_cFv = .text:0x800E8470; // type:function size:0x4 +executeState_Off__17dLytMeterNunStk_cFv = .text:0x800E8480; // type:function size:0x78 +finalizeState_Off__17dLytMeterNunStk_cFv = .text:0x800E8500; // type:function size:0x4 +build__17dLytMeterNunStk_cFPQ23d2d10ResAccIf_c = .text:0x800E8510; // type:function size:0x1B8 +remove__17dLytMeterNunStk_cFv = .text:0x800E86D0; // type:function size:0x58 +execute__17dLytMeterNunStk_cFv = .text:0x800E8730; // type:function size:0x1D4 +setMessage__17dLytMeterNunStk_cFl = .text:0x800E8910; // type:function size:0x164 +getName__17dLytMeterNunStk_cCFv = .text:0x800E8A80; // type:function size:0x8 +getLyt__17dLytMeterNunStk_cFv = .text:0x800E8A90; // type:function size:0x8 +getPane__17dLytMeterNunStk_cFv = .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 @@ -31377,18 +31377,18 @@ lbl_80514FC8 = .data:0x80514FC8; // type:object size:0x10 lbl_80514FD8 = .data:0x80514FD8; // type:object size:0x10 __vt__21dLytMeterNunchakuBg_c = .data:0x80514FE8; // type:object size:0x158 __vt__36sFStateID_c<21dLytMeterNunchakuBg_c> = .data:0x80515140; // type:object size:0x34 -lbl_80515178 = .data:0x80515178; // type:object size:0x18 -lbl_80515190 = .data:0x80515190; // type:object size:0xC -lbl_8051519C = .data:0x8051519C; // type:object size:0x18 -lbl_805151B4 = .data:0x805151B4; // type:object size:0xC -lbl_805151C0 = .data:0x805151C0; // type:object size:0xC -lbl_805151CC = .data:0x805151CC; // type:object size:0x10 -lbl_805151DC = .data:0x805151DC; // type:object size:0x10 -lbl_805151EC = .data:0x805151EC; // type:object size:0xC +lbl_80515178 = .data:0x80515178; // type:object size:0x16 data:string +lbl_80515190 = .data:0x80515190; // type:object size:0xB data:string +lbl_8051519C = .data:0x8051519C; // type:object size:0x15 data:string +lbl_805151B4 = .data:0x805151B4; // type:object size:0xA data:string +lbl_805151C0 = .data:0x805151C0; // type:object size:0x9 data:string +lbl_805151CC = .data:0x805151CC; // type:object size:0xE data:string +lbl_805151DC = .data:0x805151DC; // type:object size:0xF data:string +lbl_805151EC = .data:0x805151EC; // type:object size:0x9 data:string lbl_805151F8 = .data:0x805151F8; // type:object size:0x10 data:string -lbl_80515208 = .data:0x80515208; // type:object size:0x10 -lbl_80515218 = .data:0x80515218; // type:object size:0x10 -__vt__17dLytMeterNunStk_c = .data:0x80515228; // type:object size:0x14C +lbl_80515208 = .data:0x80515208; // type:object size:0xE data:string +lbl_80515218 = .data:0x80515218; // type:object size:0xD data:string +__vt__17dLytMeterNunStk_c = .data:0x80515228; // type:object size:0x34 __vt__32sFStateID_c<17dLytMeterNunStk_c> = .data:0x80515374; // type:object size:0x34 lbl_805153A8 = .data:0x805153A8; // type:object size:0xF data:string lbl_805153B8 = .data:0x805153B8; // type:object size:0xF data:string @@ -38137,9 +38137,9 @@ lbl_805723B8 = .sdata:0x805723B8; // type:object size:0x4 data:4byte lbl_805723C0 = .sdata:0x805723C0; // type:object size:0x8 data:4byte lbl_805723C8 = .sdata:0x805723C8; // type:object size:0x8 data:4byte lbl_805723D0 = .sdata:0x805723D0; // type:object size:0x8 data:4byte -lbl_805723D8 = .sdata:0x805723D8; // type:object size:0x8 data:4byte +lbl_805723D8 = .sdata:0x805723D8; // type:object size:0x4 data:4byte lbl_805723E0 = .sdata:0x805723E0; // type:object size:0x8 data:4byte -lbl_805723E8 = .sdata:0x805723E8; // type:object size:0x8 data:4byte +lbl_805723E8 = .sdata:0x805723E8; // type:object size:0x4 data:4byte lbl_805723F0 = .sdata:0x805723F0; // type:object size:0x4 data:4byte lbl_805723F4 = .sdata:0x805723F4; // type:object size:0x6 data:wstring lbl_805723FC = .sdata:0x805723FC; // type:object size:0x2 @@ -48668,10 +48668,10 @@ LytMeterNunchakuBg__STATE_WAIT = .bss:0x805AAAE0; // type:object size:0x40 data: LytMeterNunchakuBg__STATE_ON = .bss:0x805AAB20; // type:object size:0x40 data:4byte LytMeterNunchakuBg__STATE_ACTIVE = .bss:0x805AAB60; // type:object size:0x40 data:4byte LytMeterNunchakuBg__STATE_OFF = .bss:0x805AABA0; // type:object size:0x30 data:4byte -lbl_805AABD0 = .bss:0x805AABD0; // type:object size:0x10 -LytMeterNunStk__STATE_WAIT = .bss:0x805AABE0; // type:object size:0x40 data:4byte -LytMeterNunStk__STATE_ON = .bss:0x805AAC20; // type:object size:0x40 data:4byte -LytMeterNunStk__STATE_ACTIVE = .bss:0x805AAC60; // type:object size:0x40 data:4byte +lbl_805AABD0 = .bss:0x805AABD0; // type:object size:0xC +LytMeterNunStk__STATE_WAIT = .bss:0x805AABE0; // type:object size:0x30 data:4byte +LytMeterNunStk__STATE_ON = .bss:0x805AAC20; // type:object size:0x30 data:4byte +LytMeterNunStk__STATE_ACTIVE = .bss:0x805AAC60; // type:object size:0x30 data:4byte LytMeterNunStk__STATE_OFF = .bss:0x805AACA0; // type:object size:0x30 data:4byte lbl_805AACD0 = .bss:0x805AACD0; // type:object size:0xC LytMeterItemSelectIcon__STATE_WAIT = .bss:0x805AACE0; // type:object size:0x30 data:4byte diff --git a/configure.py b/configure.py index 981f2dd4..92e6fa56 100644 --- a/configure.py +++ b/configure.py @@ -392,7 +392,7 @@ config.libs = [ Object(Matching, "d/lyt/meter/d_lyt_meter_drink.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_remocon_bg.cpp"), Object(NonMatching, "d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_nun_stk.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_nun_stk.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_item_select.cpp"), Object(NonMatching, "d/lyt/meter/d_lyt_meter_plus_btn.cpp"), Object(NonMatching, "d/lyt/meter/d_lyt_meter_minus_btn.cpp"), diff --git a/include/d/lyt/d_lyt_unknowns.h b/include/d/lyt/d_lyt_unknowns.h index d8e68bb2..3f18f1dc 100644 --- a/include/d/lyt/d_lyt_unknowns.h +++ b/include/d/lyt/d_lyt_unknowns.h @@ -32,8 +32,9 @@ public: DO_BUTTON_B = 1, DO_BUTTON_Z = 3, - + DO_BUTTON_NUN_STK = 4, DO_BUTTON_REMOCON_BG = 5, + DO_BUTTON_NUN_BG = 6, }; static void set(DoButton_e button, Action_e value) { diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 716a049f..7078a9e5 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -57,6 +57,10 @@ public: return field_0x1377E; } + dLytMeterNunStk_c *getNunStk() { + return &mNunStk; + } + /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ d2d::LytBase_c mLyt; /* 0x00404 */ d2d::AnmGroup_c mAnmGroups[34]; diff --git a/include/d/lyt/meter/d_lyt_meter_nun_stk.h b/include/d/lyt/meter/d_lyt_meter_nun_stk.h index fc3e153c..a42fc669 100644 --- a/include/d/lyt/meter/d_lyt_meter_nun_stk.h +++ b/include/d/lyt/meter/d_lyt_meter_nun_stk.h @@ -2,8 +2,8 @@ #define D_LYT_METER_NUN_STK_H #include "d/lyt/d2d.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterNunStk_c : public d2d::dSubPane { public: @@ -11,21 +11,46 @@ public: 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(); + } + + nw4r::lyt::Pane *getBgPane() { + return mpPane; + } virtual ~dLytMeterNunStk_c() {} + private: + void setMessage(s32 id); + STATE_FUNC_DECLARE(dLytMeterNunStk_c, Wait); STATE_FUNC_DECLARE(dLytMeterNunStk_c, On); STATE_FUNC_DECLARE(dLytMeterNunStk_c, Active); STATE_FUNC_DECLARE(dLytMeterNunStk_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterNunStk_c); - d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[2]; - /* 0x??? */ u8 padding[0x12350 - 0x12320]; + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytMeterNunStk_c); + /* 0x044 */ d2d::dLytSub mLyt; + /* 0x0D8 */ d2d::AnmGroup_c mAnm[2]; + /* 0x158 */ nw4r::lyt::Pane *mpPane; + /* 0x15C */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x160 */ dTextBox_c *mpTextBoxes[2]; + /* 0x168 */ dWindow_c *mpWindow[1]; + /* 0x16C */ dTextBox_c *mpSizeBox[1]; + + /* 0x170 */ s32 field_0x170; + /* 0x174 */ s32 field_0x174; + /* 0x178 */ BOOL field_0x178; + /* 0x17C */ s32 field_0x17C; + /* 0x180 */ s32 mOnDelay; + /* 0x184 */ bool field_0x184; + /* 0x185 */ u8 field_0x185; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_nunchaku_bg.h b/include/d/lyt/meter/d_lyt_meter_nunchaku_bg.h index 1c8de0c1..ede149c3 100644 --- a/include/d/lyt/meter/d_lyt_meter_nunchaku_bg.h +++ b/include/d/lyt/meter/d_lyt_meter_nunchaku_bg.h @@ -3,7 +3,6 @@ #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterNunchakuBg_c : public d2d::dSubPane { public: @@ -11,21 +10,42 @@ public: 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 ~dLytMeterNunchakuBg_c() {} + private: + void setMessage(s32 id); + STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Wait); STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, On); STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Active); STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterNunchakuBg_c); - d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3]; - /* 0x??? */ u8 padding[0x12608 - 0x125D8]; + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytMeterNunchakuBg_c); + /* 0x044 */ d2d::dLytSub mLyt; + /* 0x0D8 */ d2d::AnmGroup_c mAnm[3]; + /* 0x198 */ nw4r::lyt::Pane *mpPane; + /* 0x19C */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x1A0 */ dTextBox_c *mpTextBoxes[2]; + /* 0x1A8 */ dWindow_c *mpWindow[1]; + /* 0x1AC */ dTextBox_c *mpSizeBox[1]; + /* 0x1B0 */ s32 field_0x1B0; + /* 0x1B4 */ s32 field_0x1B4; + /* 0x1B8 */ BOOL field_0x1B8; + /* 0x1BC */ s32 field_0x1BC; + /* 0x1C0 */ s32 mOnDelay; + /* 0x1C4 */ bool field_0x1C4; + /* 0x1C5 */ u8 field_0x1C5; + /* 0x1C6 */ u8 field_0x1C6; }; #endif diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 4cf8ab35..02538e79 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -377,7 +377,7 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { for (int i = 0; i < 7; i++) { mAnmGroups[33].setFrame(i); mLyt.calc(); - mPosArray2[i] = mLyt.findPane("N_rupy_00")->GetTranslate(); + mPosArray2[i].copyFrom(mLyt.findPane("N_rupy_00")->GetTranslate()); } mAnmGroups[33].setAnimEnable(false); @@ -431,16 +431,16 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { mpKakeraKey = nullptr; } - if (!dStageMgr_c::GetInstance()->isAreaTypeDungeon() || dScGame_c::currentSpawnInfo.stageName == "F100_1" || - dScGame_c::currentSpawnInfo.stageName == "F103_1") { - mpBossKey = nullptr; - } else { + if (dStageMgr_c::GetInstance()->isAreaTypeDungeon() && !(dScGame_c::currentSpawnInfo.stageName == "F100_1") && + !(dScGame_c::currentSpawnInfo.stageName == "F103_1")) { mpBossKey = new dLytMeterBossKey_c(); mpBossKey->build(resAcc); + } else { + mpBossKey = nullptr; } - if (dStageMgr_c::GetInstance()->isAreaTypeDungeon() && - (!(dScGame_c::currentSpawnInfo.stageName == "F100_1") && !(dScGame_c::currentSpawnInfo.stageName == "F103_1")) || + if (dStageMgr_c::GetInstance()->isAreaTypeDungeon() && (!(dScGame_c::currentSpawnInfo.stageName == "F100_1") && + !(dScGame_c::currentSpawnInfo.stageName == "F103_1")) || dScGame_c::currentSpawnInfo.stageName == "F302" || dScGame_c::currentSpawnInfo.stageName == "F302") { mpSmallKey = new dLytMeterSmallKey_c(); mpSmallKey->build(resAcc); @@ -462,7 +462,6 @@ bool dLytMeter_c::remove() { mAnmGroups[i].remove(); } - for (d2d::SubPaneList::Iterator it = mMeters.GetBeginIter(); it != mMeters.GetEndIter(); ++it) { d2d::dSubPane *m = it->mpLytPane; if (m != nullptr) { @@ -548,7 +547,6 @@ bool dLytMeter_c::remove() { mpDrink = nullptr; } - return true; } @@ -645,7 +643,6 @@ bool dLytMeterContainer_c::remove() { mpDoButtonRelated->remove(); delete mpDoButtonRelated; mpDoButtonRelated = nullptr; - } mMeter.remove(); if (mpEventSkip != nullptr) { 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 10d8c174..c958bcc3 100644 --- a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp @@ -147,6 +147,8 @@ static const char *sTextBoxes[] = { "T_aBtnS_00", }; +static const char *sWindows[] = {"W_bgP_00"}; + bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("remoConBtn_06.brlyt", nullptr); @@ -163,7 +165,6 @@ bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) { mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); } - static const char *sWindows[] = {"W_bgP_00"}; for (int i = 0; i < 1; i++) { mpWindow[i] = mLyt.getWindow(sWindows[i]); mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]); diff --git a/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp b/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp index 44f22d05..0b133e26 100644 --- a/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp +++ b/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp @@ -1,6 +1,238 @@ #include "d/lyt/meter/d_lyt_meter_nun_stk.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" + STATE_DEFINE(dLytMeterNunStk_c, Wait); STATE_DEFINE(dLytMeterNunStk_c, On); STATE_DEFINE(dLytMeterNunStk_c, Active); STATE_DEFINE(dLytMeterNunStk_c, Off); + +static const d2d::LytBrlanMapping brlanMap[] = { + {"nunBtn_02_input.brlan", "G_input_00"}, + { "nunBtn_02_loop.brlan", "G_loop_00"}, +}; + +#define NUN_STK_ANIM_INPUT 0 +#define NUN_STK_ANIM_LOOP 1 + +#define NUN_STK_NUM_ANIMS 2 + +void dLytMeterNunStk_c::initializeState_Wait() { + mOnDelay = 15; +} +void dLytMeterNunStk_c::executeState_Wait() { + s32 timer = mOnDelay; + if (field_0x184) { + if (field_0x178) { + bool bDoUpdate = true; + if (field_0x174 != LytDoButtonRelated::DO_NONE) { + if (timer <= 0) { + mAnm[NUN_STK_ANIM_INPUT].setBackwardsOnce(); + mAnm[NUN_STK_ANIM_INPUT].setToStart(); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_On); + setMessage(field_0x174); + } else { + mOnDelay = timer - 1; + bDoUpdate = false; + } + } + if (bDoUpdate) { + field_0x170 = field_0x174; + } + } else { + if (field_0x174 != LytDoButtonRelated::DO_NONE) { + setMessage(field_0x174); + } + field_0x170 = field_0x174; + } + } + + if (timer == mOnDelay) { + mOnDelay = 15; + } +} +void dLytMeterNunStk_c::finalizeState_Wait() {} + +void dLytMeterNunStk_c::initializeState_On() {} +void dLytMeterNunStk_c::executeState_On() { + if (mAnm[NUN_STK_ANIM_INPUT].isStop2()) { + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} +void dLytMeterNunStk_c::finalizeState_On() {} + +void dLytMeterNunStk_c::initializeState_Active() {} +void dLytMeterNunStk_c::executeState_Active() { + if (field_0x174 != field_0x170 || !field_0x178) { + if (field_0x174 == LytDoButtonRelated::DO_NONE || !field_0x178) { + mAnm[NUN_STK_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_STK_ANIM_INPUT].setFrame(0.0f); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(true); + if (field_0x170 != field_0x17C) { + field_0x174 = field_0x17C; + } + mStateMgr.changeState(StateID_Off); + } else { + setMessage(field_0x174); + } + field_0x170 = field_0x174; + } else if (field_0x170 == LytDoButtonRelated::DO_NONE) { + mAnm[NUN_STK_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_STK_ANIM_INPUT].setFrame(0.0f); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterNunStk_c::finalizeState_Active() {} + +void dLytMeterNunStk_c::initializeState_Off() {} +void dLytMeterNunStk_c::executeState_Off() { + if (mAnm[NUN_STK_ANIM_INPUT].isEndReached()) { + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} +void dLytMeterNunStk_c::finalizeState_Off() {} + +static const char *sPane = "N_all_00"; + +static const char *sTextBoxes[] = { + "T_conStick_00", + "T_conStickS_00", +}; + +static const char *sWindows[] = {"W_bgP_00"}; + +bool dLytMeterNunStk_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("nunBtn_02.brlyt", nullptr); + + for (int i = 0; i < NUN_STK_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + mpPane = mLyt.findPane(sPane); + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); + } + + for (int i = 0; i < 1; i++) { + mpWindow[i] = mLyt.getWindow(sWindows[i]); + mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]); + } + + field_0x17C = LytDoButtonRelated::DO_NONE; + field_0x170 = LytDoButtonRelated::DO_NONE; + field_0x174 = LytDoButtonRelated::DO_NONE; + field_0x184 = true; + field_0x178 = true; + + field_0x185 = false; + mpOwnerPane = nullptr; + + setMessage(field_0x170); + + mAnm[NUN_STK_ANIM_INPUT].setToEnd(); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(true); + + mAnm[NUN_STK_ANIM_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(false); + + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterNunStk_c::remove() { + for (int i = 0; i < NUN_STK_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterNunStk_c::execute() { + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_Active) { + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(true); + } + if (mAnm[NUN_STK_ANIM_INPUT].isEnabled()) { + mAnm[NUN_STK_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_STK_ANIM_INPUT].setToEnd2(); + mLyt.calc(); + mAnm[NUN_STK_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_NUN_STK, LytDoButtonRelated::DO_NONE); + field_0x174 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_NUN_STK); + setMessage(field_0x174); + return true; + } + + field_0x185 = false; + + field_0x174 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_NUN_STK); + field_0x178 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_NUN_STK); + + mStateMgr.executeState(); + for (int i = 0; i < NUN_STK_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + return true; +} + +// TODO +static const s32 sActIds[] = { + 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, + 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, -1, 0x1, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + +void dLytMeterNunStk_c::setMessage(s32 id) { + char buf[11]; + for (int i = 0; i < 11; i++) { + buf[i] = 0; + } + + if (id < LytDoButtonRelated::DO_NONE) { + if (id < 0x5D) { + sprintf(buf, "ACT_INFO_%03d", sActIds[id]); + } else { + s32 id2 = id - 0x5E; + sprintf(buf, "ACT_ETC_%03d", sActIds[id2]); + } + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + + mpWindow[0]->SetVisible(true); + mpWindow[0]->UpdateSize(mpSizeBox[0], 32.0f); + field_0x17C = id; + } else { + wchar_t b2[2]; + b2[0] = b2[1] = 0; + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->setTextWithGlobalTextProcessor(b2); + } + mpWindow[0]->SetVisible(false); + } +} diff --git a/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp index 1d53431e..83a13e6d 100644 --- a/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp +++ b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp @@ -1,6 +1,259 @@ #include "d/lyt/meter/d_lyt_meter_nunchaku_bg.h" +#include "common.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "toBeSorted/event_manager.h" + STATE_DEFINE(dLytMeterNunchakuBg_c, Wait); STATE_DEFINE(dLytMeterNunchakuBg_c, On); STATE_DEFINE(dLytMeterNunchakuBg_c, Active); STATE_DEFINE(dLytMeterNunchakuBg_c, Off); + +static const d2d::LytBrlanMapping brlanMap[] = { + { "nunBg_00_input.brlan", "G_input_00"}, + {"nunBg_00_arrowV.brlan", "G_arrowAlpha_00"}, + { "nunBg_00_loop.brlan", "G_loop_00"}, +}; + +#define NUN_BG_ANIM_INPUT 0 +#define NUN_BG_ANIM_ARROWV 1 +#define NUN_BG_ANIM_LOOP 2 + +#define NUN_BG_NUM_ANIMS 3 + +void dLytMeterNunchakuBg_c::initializeState_Wait() { + mOnDelay = 15; +} +void dLytMeterNunchakuBg_c::executeState_Wait() { + s32 timer = mOnDelay; + if (field_0x1C4) { + if (field_0x1B8) { + bool bDoUpdate = true; + if (field_0x1B4 != LytDoButtonRelated::DO_NONE) { + if (timer <= 0) { + mAnm[NUN_BG_ANIM_INPUT].setBackwardsOnce(); + mAnm[NUN_BG_ANIM_INPUT].setToStart(); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_On); + setMessage(field_0x1B4); + } else { + mOnDelay = timer - 1; + bDoUpdate = false; + } + } + if (bDoUpdate) { + field_0x1B0 = field_0x1B4; + } + } else { + if (field_0x1B4 != LytDoButtonRelated::DO_NONE) { + setMessage(field_0x1B4); + } + field_0x1B0 = field_0x1B4; + } + } + + if (timer == mOnDelay) { + mOnDelay = 15; + } +} +void dLytMeterNunchakuBg_c::finalizeState_Wait() {} + +void dLytMeterNunchakuBg_c::initializeState_On() {} +void dLytMeterNunchakuBg_c::executeState_On() { + if (mAnm[NUN_BG_ANIM_INPUT].isStop2()) { + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} +void dLytMeterNunchakuBg_c::finalizeState_On() {} + +void dLytMeterNunchakuBg_c::initializeState_Active() {} +void dLytMeterNunchakuBg_c::executeState_Active() { + if (field_0x1B4 != field_0x1B0 || !field_0x1B8) { + if (field_0x1B4 == LytDoButtonRelated::DO_NONE || !field_0x1B8) { + mAnm[NUN_BG_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_BG_ANIM_INPUT].setFrame(0.0f); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(true); + if (field_0x1B0 != field_0x1BC) { + field_0x1B4 = field_0x1BC; + } + mStateMgr.changeState(StateID_Off); + } else { + setMessage(field_0x1B4); + } + field_0x1B0 = field_0x1B4; + } else if (field_0x1B0 == LytDoButtonRelated::DO_NONE) { + mAnm[NUN_BG_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_BG_ANIM_INPUT].setFrame(0.0f); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterNunchakuBg_c::finalizeState_Active() {} + +void dLytMeterNunchakuBg_c::initializeState_Off() {} +void dLytMeterNunchakuBg_c::executeState_Off() { + if (mAnm[NUN_BG_ANIM_INPUT].isEndReached()) { + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} +void dLytMeterNunchakuBg_c::finalizeState_Off() {} + +static const char *sPane = "N_nunBg_00"; + +static const char *sTextBoxes[] = { + "T_nunchaku_00", + "T_nunchakuS_00", +}; + +static const char *sWindows[] = {"W_bgP_04"}; + +bool dLytMeterNunchakuBg_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("nunBg_00.brlyt", nullptr); + + for (int i = 0; i < NUN_BG_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mpPane = mLyt.findPane(sPane); + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); + } + + for (int i = 0; i < 1; i++) { + mpWindow[i] = mLyt.getWindow(sWindows[i]); + mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]); + } + + field_0x1BC = 0x60; + field_0x1B0 = 0x60; + field_0x1B4 = 0x60; + field_0x1C4 = false; + field_0x1B8 = true; + + field_0x1C5 = 0; + field_0x1C6 = 0; + mpOwnerPane = nullptr; + mOnDelay = 15; + + dLytMeterContainer_c::GetMeter()->getNunStk()->getBgPane()->SetVisible(false); + + setMessage(field_0x1B0); + + mAnm[NUN_BG_ANIM_INPUT].setToEnd(); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(true); + + mAnm[NUN_BG_ANIM_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterNunchakuBg_c::remove() { + for (int i = 0; i < NUN_BG_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterNunchakuBg_c::execute() { + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_Active) { + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(true); + } + if (mAnm[NUN_BG_ANIM_INPUT].isEnabled()) { + mAnm[NUN_BG_ANIM_INPUT].setForwardOnce(); + mAnm[NUN_BG_ANIM_INPUT].setToEnd2(); + mLyt.calc(); + mAnm[NUN_BG_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_NUN_BG, LytDoButtonRelated::DO_NONE); + field_0x1B4 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_NUN_STK); + setMessage(field_0x1B4); + return true; + } + + if (EventManager::isInEvent()) { + field_0x1C4 = false; + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_NUN_BG, LytDoButtonRelated::DO_NONE); + } else { + field_0x1C4 = true; + } + + s32 d = dLytDobutton_c::getFn0x8010E5E0(); + if (d == 6 || d == 9) { + LytDoButtonRelated::Action_e a = LytDoButtonRelated::convertDoButton(dLytDobutton_c::getFn0x8010E5D0()); + if (a >= 0) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_NUN_BG, a); + } + } + + field_0x1B4 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_NUN_BG); + field_0x1B8 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_NUN_BG); + + bool hasZ = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_Z); + + mStateMgr.executeState(); + for (int i = 0; i < NUN_BG_NUM_ANIMS; i++) { + if (i != 1 && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + return true; +} + +// TODO +static const s32 sActIds[] = { + 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, + 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, -1, 0x1, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + +void dLytMeterNunchakuBg_c::setMessage(s32 id) { + char buf[11]; + for (int i = 0; i < 11; i++) { + buf[i] = 0; + } + + if (id < LytDoButtonRelated::DO_NONE) { + if (id < 0x5D) { + sprintf(buf, "ACT_INFO_%03d", sActIds[id]); + } else { + s32 id2 = id - 0x5E; + sprintf(buf, "ACT_ETC_%03d", sActIds[id2]); + } + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + mpWindow[0]->SetVisible(true); + mpWindow[0]->UpdateSize(mpSizeBox[0], 32.0f); + field_0x1BC = id; + } else { + wchar_t b2[2]; + b2[0] = b2[1] = 0; + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->setTextWithGlobalTextProcessor(b2); + } + mpWindow[0]->SetVisible(false); + } +} diff --git a/src/d/lyt/meter/d_lyt_meter_z_btn.cpp b/src/d/lyt/meter/d_lyt_meter_z_btn.cpp index e97583a8..3f808f47 100644 --- a/src/d/lyt/meter/d_lyt_meter_z_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_z_btn.cpp @@ -113,6 +113,8 @@ static const char *sTextBoxes[] = { "T_zBtnS_00", }; +static const char *sWindows[] = {"W_bgP_00"}; + bool dLytMeterZBtn_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("nunBtn_01.brlyt", nullptr); @@ -129,7 +131,6 @@ bool dLytMeterZBtn_c::build(d2d::ResAccIf_c *resAcc) { mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); } - static const char *sWindows[] = {"W_bgP_00"}; for (int i = 0; i < 1; i++) { mpWindow[i] = mLyt.getWindow(sWindows[i]); mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]); @@ -140,7 +141,7 @@ bool dLytMeterZBtn_c::build(d2d::ResAccIf_c *resAcc) { field_0x1B4 = 0x5E; field_0x1C4 = false; field_0x1B8 = true; - mpOwnerPane = 0; + mpOwnerPane = nullptr; setMessage(0x5E); field_0x1C5 = 0;