mirror of
https://github.com/zeldaret/ss
synced 2026-05-28 16:31:21 -04:00
d_lyt_meter_cross_btn OK
This commit is contained in:
@@ -400,7 +400,11 @@ d/lyt/meter/d_lyt_meter_minus_btn.cpp:
|
||||
d/lyt/meter/d_lyt_meter_cross_btn.cpp:
|
||||
.text start:0x800F8DA0 end:0x800FAFC8
|
||||
.ctors start:0x804DB70C end:0x804DB710
|
||||
.rodata start:0x804E62A8 end:0x804E6568
|
||||
.data start:0x80517818 end:0x80517CE0
|
||||
.sdata start:0x80572480 end:0x805724A8
|
||||
.sdata2 start:0x80579C18 end:0x80579C38
|
||||
.bss start:0x805ABC90 end:0x805ABE90
|
||||
|
||||
d/lyt/meter/d_lyt_meter_dowsing.cpp:
|
||||
.text start:0x800FAFD0 end:0x801003E8
|
||||
|
||||
+69
-69
@@ -6051,41 +6051,41 @@ isSameName__34sFStateID_c<19dLytMeterMinusBtn_c>CFPCc = .text:0x800F8B60; // typ
|
||||
isSameName__38sFStateID_c<23dLytMeterMinusBtnText_c>CFPCc = .text:0x800F8BF0; // type:function size:0x88
|
||||
isSameName__39sFStateID_c<24dLytMeterMinusBtnBlink_c>CFPCc = .text:0x800F8C80; // type:function size:0x88
|
||||
isSameName__42sFStateID_c<27dLytMeterMinusBtnMenuIcon_c>CFPCc = .text:0x800F8D10; // type:function size:0x88
|
||||
fn_800F8DA0 = .text:0x800F8DA0; // type:function size:0xC
|
||||
fn_800F8DB0 = .text:0x800F8DB0; // type:function size:0x138
|
||||
fn_800F8EF0 = .text:0x800F8EF0; // type:function size:0x4
|
||||
fn_800F8F00 = .text:0x800F8F00; // type:function size:0x70
|
||||
fn_800F8F70 = .text:0x800F8F70; // type:function size:0x64
|
||||
fn_800F8FE0 = .text:0x800F8FE0; // type:function size:0x4
|
||||
fn_800F8FF0 = .text:0x800F8FF0; // type:function size:0x4
|
||||
fn_800F9000 = .text:0x800F9000; // type:function size:0xE8
|
||||
fn_800F90F0 = .text:0x800F90F0; // type:function size:0x4
|
||||
fn_800F9100 = .text:0x800F9100; // type:function size:0x70
|
||||
fn_800F9170 = .text:0x800F9170; // type:function size:0x64
|
||||
fn_800F91E0 = .text:0x800F91E0; // type:function size:0x4
|
||||
fn_800F91F0 = .text:0x800F91F0; // type:function size:0x80
|
||||
fn_800F9270 = .text:0x800F9270; // type:function size:0x4C8
|
||||
fn_800F9740 = .text:0x800F9740; // type:function size:0x508
|
||||
fn_800F9C50 = .text:0x800F9C50; // type:function size:0x4
|
||||
fn_800F9C60 = .text:0x800F9C60; // type:function size:0x4
|
||||
fn_800F9C70 = .text:0x800F9C70; // type:function size:0x4
|
||||
fn_800F9C80 = .text:0x800F9C80; // type:function size:0x60
|
||||
fn_800F9CE0 = .text:0x800F9CE0; // type:function size:0x70
|
||||
fn_800F9D50 = .text:0x800F9D50; // type:function size:0xC
|
||||
fn_800F9D60 = .text:0x800F9D60; // type:function size:0x60
|
||||
fn_800F9DC0 = .text:0x800F9DC0; // type:function size:0x70
|
||||
fn_800F9E30 = .text:0x800F9E30; // type:function size:0xC
|
||||
fn_800F9E40 = .text:0x800F9E40; // type:function size:0x4
|
||||
fn_800F9E50 = .text:0x800F9E50; // type:function size:0x34
|
||||
fn_800F9E90 = .text:0x800F9E90; // type:function size:0x4
|
||||
fn_800F9EA0 = .text:0x800F9EA0; // type:function size:0x358
|
||||
fn_800FA200 = .text:0x800FA200; // type:function size:0x58
|
||||
fn_800FA260 = .text:0x800FA260; // type:function size:0x4AC
|
||||
fn_800FA710 = .text:0x800FA710; // type:function size:0x18
|
||||
fn_800FA730 = .text:0x800FA730; // type:function size:0x48
|
||||
fn_800FA780 = .text:0x800FA780; // type:function size:0x8
|
||||
fn_800FA790 = .text:0x800FA790; // type:function size:0x8
|
||||
fn_800FA7A0 = .text:0x800FA7A0; // type:function size:0x8
|
||||
initializeState_Wait__24dLytMeterCrossBtnParts_cFv = .text:0x800F8DA0; // type:function size:0xC
|
||||
executeState_Wait__24dLytMeterCrossBtnParts_cFv = .text:0x800F8DB0; // type:function size:0x138
|
||||
finalizeState_Wait__24dLytMeterCrossBtnParts_cFv = .text:0x800F8EF0; // type:function size:0x4
|
||||
initializeState_On__24dLytMeterCrossBtnParts_cFv = .text:0x800F8F00; // type:function size:0x70
|
||||
executeState_On__24dLytMeterCrossBtnParts_cFv = .text:0x800F8F70; // type:function size:0x64
|
||||
finalizeState_On__24dLytMeterCrossBtnParts_cFv = .text:0x800F8FE0; // type:function size:0x4
|
||||
initializeState_Active__24dLytMeterCrossBtnParts_cFv = .text:0x800F8FF0; // type:function size:0x4
|
||||
executeState_Active__24dLytMeterCrossBtnParts_cFv = .text:0x800F9000; // type:function size:0xE8
|
||||
finalizeState_Active__24dLytMeterCrossBtnParts_cFv = .text:0x800F90F0; // type:function size:0x4
|
||||
initializeState_Off__24dLytMeterCrossBtnParts_cFv = .text:0x800F9100; // type:function size:0x70
|
||||
executeState_Off__24dLytMeterCrossBtnParts_cFv = .text:0x800F9170; // type:function size:0x64
|
||||
finalizeState_Off__24dLytMeterCrossBtnParts_cFv = .text:0x800F91E0; // type:function size:0x4
|
||||
init__24dLytMeterCrossBtnParts_cFv = .text:0x800F91F0; // type:function size:0x80
|
||||
execute__24dLytMeterCrossBtnParts_cFb = .text:0x800F9270; // type:function size:0x4C8
|
||||
setMessage__24dLytMeterCrossBtnParts_cFl = .text:0x800F9740; // type:function size:0x508
|
||||
initializeState_Wait__19dLytMeterCrossBtn_cFv = .text:0x800F9C50; // type:function size:0x4
|
||||
executeState_Wait__19dLytMeterCrossBtn_cFv = .text:0x800F9C60; // type:function size:0x4
|
||||
finalizeState_Wait__19dLytMeterCrossBtn_cFv = .text:0x800F9C70; // type:function size:0x4
|
||||
initializeState_ToUse__19dLytMeterCrossBtn_cFv = .text:0x800F9C80; // type:function size:0x60
|
||||
executeState_ToUse__19dLytMeterCrossBtn_cFv = .text:0x800F9CE0; // type:function size:0x70
|
||||
finalizeState_ToUse__19dLytMeterCrossBtn_cFv = .text:0x800F9D50; // type:function size:0xC
|
||||
initializeState_ToUnuse__19dLytMeterCrossBtn_cFv = .text:0x800F9D60; // type:function size:0x60
|
||||
executeState_ToUnuse__19dLytMeterCrossBtn_cFv = .text:0x800F9DC0; // type:function size:0x70
|
||||
finalizeState_ToUnuse__19dLytMeterCrossBtn_cFv = .text:0x800F9E30; // type:function size:0xC
|
||||
initializeState_Unuse__19dLytMeterCrossBtn_cFv = .text:0x800F9E40; // type:function size:0x4
|
||||
executeState_Unuse__19dLytMeterCrossBtn_cFv = .text:0x800F9E50; // type:function size:0x34
|
||||
finalizeState_Unuse__19dLytMeterCrossBtn_cFv = .text:0x800F9E90; // type:function size:0x4
|
||||
build__19dLytMeterCrossBtn_cFPQ23d2d10ResAccIf_c = .text:0x800F9EA0; // type:function size:0x358
|
||||
remove__19dLytMeterCrossBtn_cFv = .text:0x800FA200; // type:function size:0x58
|
||||
execute__19dLytMeterCrossBtn_cFv = .text:0x800FA260; // type:function size:0x4AC
|
||||
setOwnerPane__19dLytMeterCrossBtn_cFPQ34nw4r3lyt4Pane = .text:0x800FA710; // type:function size:0x18
|
||||
fn_800FA730__19dLytMeterCrossBtn_cCFv = .text:0x800FA730; // type:function size:0x48
|
||||
getName__19dLytMeterCrossBtn_cCFv = .text:0x800FA780; // type:function size:0x8
|
||||
getLyt__19dLytMeterCrossBtn_cFv = .text:0x800FA790; // type:function size:0x8
|
||||
getPane__19dLytMeterCrossBtn_cFv = .text:0x800FA7A0; // type:function size:0x8
|
||||
__sinit_\d_lyt_meter_cross_btn_cpp = .text:0x800FA7B0; // type:function size:0x634 scope:local
|
||||
__dt__39sFStateID_c<24dLytMeterCrossBtnParts_c>Fv = .text:0x800FADF0; // type:function size:0x58
|
||||
__dt__34sFStateID_c<19dLytMeterCrossBtn_c>Fv = .text:0x800FAE50; // type:function size:0x58
|
||||
@@ -6543,8 +6543,8 @@ fn_8010EB30 = .text:0x8010EB30; // type:function size:0x40
|
||||
__ct__18LytDoButtonRelatedFv = .text:0x8010EB70; // type:function size:0x14
|
||||
build__18LytDoButtonRelatedFPQ23d2d10ResAccIf_c = .text:0x8010EB90; // type:function size:0x70
|
||||
remove__18LytDoButtonRelatedFv = .text:0x8010EC00; // type:function size:0x8
|
||||
fn_8010EC10 = .text:0x8010EC10; // type:function size:0x134
|
||||
fn_8010ED50 = .text:0x8010ED50; // type:function size:0x110
|
||||
fn_8010EC10__18LytDoButtonRelatedFQ218LytDoButtonRelated8Action_eb = .text:0x8010EC10; // type:function size:0x134
|
||||
fn_8010ED50__18LytDoButtonRelatedFQ218LytDoButtonRelated8Action_eb = .text:0x8010ED50; // type:function size:0x110
|
||||
convertDoButton__18LytDoButtonRelatedFl = .text:0x8010EE60; // type:function size:0xE8
|
||||
fn_8010EF50 = .text:0x8010EF50; // type:function size:0x3C
|
||||
build__16dLytCommonABtn_cFPQ23d2d10ResAccIf_c = .text:0x8010EF90; // type:function size:0xAC
|
||||
@@ -31576,34 +31576,34 @@ __vt__38sFStateID_c<23dLytMeterMinusBtnText_c> = .data:0x80517748; // type:objec
|
||||
__vt__39sFStateID_c<24dLytMeterMinusBtnBlink_c> = .data:0x8051777C; // type:object size:0x34
|
||||
__vt__42sFStateID_c<27dLytMeterMinusBtnMenuIcon_c> = .data:0x805177B0; // type:object size:0x34
|
||||
__vt__34sFStateID_c<19dLytMeterMinusBtn_c> = .data:0x805177E4; // type:object size:0x34
|
||||
lbl_80517818 = .data:0x80517818; // type:object size:0x10
|
||||
lbl_80517828 = .data:0x80517828; // type:object size:0x10
|
||||
lbl_80517838 = .data:0x80517838; // type:object size:0x1C
|
||||
lbl_80517818 = .data:0x80517818; // type:object size:0xE data:string
|
||||
lbl_80517828 = .data:0x80517828; // type:object size:0xD data:string
|
||||
lbl_80517838 = .data:0x80517838; // type:object size:0x1A data:string
|
||||
lbl_80517854 = .data:0x80517854; // type:object size:0xC data:string
|
||||
lbl_80517860 = .data:0x80517860; // type:object size:0xC data:string
|
||||
lbl_8051786C = .data:0x8051786C; // type:object size:0xC data:string
|
||||
lbl_80517878 = .data:0x80517878; // type:object size:0xC data:string
|
||||
lbl_80517884 = .data:0x80517884; // type:object size:0x1C data:string
|
||||
lbl_805178A0 = .data:0x805178A0; // type:object size:0x1C
|
||||
lbl_805178BC = .data:0x805178BC; // type:object size:0xC
|
||||
lbl_805178C8 = .data:0x805178C8; // type:object size:0xC
|
||||
lbl_805178D4 = .data:0x805178D4; // type:object size:0xC
|
||||
lbl_805178E0 = .data:0x805178E0; // type:object size:0x1C
|
||||
lbl_805178FC = .data:0x805178FC; // type:object size:0xC
|
||||
lbl_80517908 = .data:0x80517908; // type:object size:0xC
|
||||
lbl_80517914 = .data:0x80517914; // type:object size:0xC
|
||||
lbl_80517920 = .data:0x80517920; // type:object size:0xC
|
||||
lbl_8051792C = .data:0x8051792C; // type:object size:0xC
|
||||
lbl_80517938 = .data:0x80517938; // type:object size:0xC
|
||||
lbl_805178A0 = .data:0x805178A0; // type:object size:0x19 data:string
|
||||
lbl_805178BC = .data:0x805178BC; // type:object size:0xA data:string
|
||||
lbl_805178C8 = .data:0x805178C8; // type:object size:0xA data:string
|
||||
lbl_805178D4 = .data:0x805178D4; // type:object size:0xA data:string
|
||||
lbl_805178E0 = .data:0x805178E0; // type:object size:0x19 data:string
|
||||
lbl_805178FC = .data:0x805178FC; // type:object size:0xA data:string
|
||||
lbl_80517908 = .data:0x80517908; // type:object size:0x9 data:string
|
||||
lbl_80517914 = .data:0x80517914; // type:object size:0xB data:string
|
||||
lbl_80517920 = .data:0x80517920; // type:object size:0xB data:string
|
||||
lbl_8051792C = .data:0x8051792C; // type:object size:0xB data:string
|
||||
lbl_80517938 = .data:0x80517938; // type:object size:0xB data:string
|
||||
lbl_80517944 = .data:0x80517944; // type:object size:0xC data:string
|
||||
lbl_80517950 = .data:0x80517950; // type:object size:0xC data:string
|
||||
lbl_8051795C = .data:0x8051795C; // type:object size:0xC data:string
|
||||
lbl_80517968 = .data:0x80517968; // type:object size:0x30
|
||||
lbl_80517998 = .data:0x80517998; // type:object size:0xC
|
||||
lbl_805179A4 = .data:0x805179A4; // type:object size:0xC
|
||||
lbl_805179B0 = .data:0x805179B0; // type:object size:0xC
|
||||
lbl_805179BC = .data:0x805179BC; // type:object size:0x30
|
||||
__vt__19dLytMeterCrossBtn_c = .data:0x805179EC; // type:object size:0x28C
|
||||
lbl_80517968 = .data:0x80517968; // type:object size:0xC data:string
|
||||
lbl_80517998 = .data:0x80517998; // type:object size:0x9 data:string
|
||||
lbl_805179A4 = .data:0x805179A4; // type:object size:0x9 data:string
|
||||
lbl_805179B0 = .data:0x805179B0; // type:object size:0x9 data:string
|
||||
lbl_805179BC = .data:0x805179BC; // type:object size:0x9 data:string
|
||||
__vt__19dLytMeterCrossBtn_c = .data:0x805179EC; // type:object size:0x34
|
||||
__vt__34sFStateID_c<19dLytMeterCrossBtn_c> = .data:0x80517C78; // type:object size:0x34
|
||||
__vt__39sFStateID_c<24dLytMeterCrossBtnParts_c> = .data:0x80517CAC; // type:object size:0x34
|
||||
lbl_80517CE0 = .data:0x80517CE0; // type:object size:0x10
|
||||
@@ -38160,11 +38160,11 @@ lbl_80572468 = .sdata:0x80572468; // type:object size:0x8 data:4byte
|
||||
lbl_80572470 = .sdata:0x80572470; // type:object size:0x4 data:4byte
|
||||
lbl_80572474 = .sdata:0x80572474; // type:object size:0x4 data:4byte
|
||||
lbl_80572478 = .sdata:0x80572478; // type:object size:0x4 data:4byte
|
||||
lbl_80572480 = .sdata:0x80572480; // type:object size:0x8
|
||||
lbl_80572488 = .sdata:0x80572488; // type:object size:0x8
|
||||
lbl_80572490 = .sdata:0x80572490; // type:object size:0x8
|
||||
lbl_80572498 = .sdata:0x80572498; // type:object size:0x8
|
||||
lbl_805724A0 = .sdata:0x805724A0; // type:object size:0x8 data:4byte
|
||||
lbl_80572480 = .sdata:0x80572480; // type:object size:0x7 data:string
|
||||
lbl_80572488 = .sdata:0x80572488; // type:object size:0x7 data:string
|
||||
lbl_80572490 = .sdata:0x80572490; // type:object size:0x7 data:string
|
||||
lbl_80572498 = .sdata:0x80572498; // type:object size:0x7 data:string
|
||||
lbl_805724A0 = .sdata:0x805724A0; // type:object size:0x4 data:4byte
|
||||
lbl_805724A8 = .sdata:0x805724A8; // type:object size:0x8
|
||||
lbl_805724B0 = .sdata:0x805724B0; // type:object size:0x8
|
||||
lbl_805724B8 = .sdata:0x805724B8; // type:object size:0x8
|
||||
@@ -48729,13 +48729,13 @@ LtyMeterMinusBtn__STATE_MENU_SELECTING = .bss:0x805ABAE0; // type:object size:0x
|
||||
LtyMeterMinusBtn__STATE_MENU_SELECTING_OUT = .bss:0x805ABB20; // type:object size:0x30 data:4byte
|
||||
LtyMeterMinusBtn__STATE_UNUSE = .bss:0x805ABBE0; // type:object size:0x30 data:4byte
|
||||
LtyMeterMinusBtn__STATE_DEMO_OUT = .bss:0x805ABC60; // type:object size:0x30 data:4byte
|
||||
lbl_805ABC90 = .bss:0x805ABC90; // type:object size:0x10
|
||||
LytMeterCrossBtnParts__STATE_WAIT = .bss:0x805ABCA0; // type:object size:0x40 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_ON = .bss:0x805ABCE0; // type:object size:0x40 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_ACTIVE = .bss:0x805ABD20; // type:object size:0x40 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_OFF = .bss:0x805ABD60; // type:object size:0x40 data:4byte
|
||||
LytMeterCrossBtn__STATE_WAIT = .bss:0x805ABDA0; // type:object size:0x40 data:4byte
|
||||
LytMeterCrossBtn__STATE_TO_USE = .bss:0x805ABDE0; // type:object size:0x80 data:4byte
|
||||
lbl_805ABC90 = .bss:0x805ABC90; // type:object size:0xC
|
||||
LytMeterCrossBtnParts__STATE_WAIT = .bss:0x805ABCA0; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_ON = .bss:0x805ABCE0; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_ACTIVE = .bss:0x805ABD20; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtnParts__STATE_OFF = .bss:0x805ABD60; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtn__STATE_WAIT = .bss:0x805ABDA0; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtn__STATE_TO_USE = .bss:0x805ABDE0; // type:object size:0x30 data:4byte
|
||||
LytMeterCrossBtn__STATE_UNUSE = .bss:0x805ABE60; // type:object size:0x30 data:4byte
|
||||
lbl_805ABE90 = .bss:0x805ABE90; // type:object size:0x10
|
||||
LytMeterDowsingMenuIcon__STATE_WAIT = .bss:0x805ABEA0; // type:object size:0x40 data:4byte
|
||||
|
||||
+1
-1
@@ -396,7 +396,7 @@ config.libs = [
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_item_select.cpp"),
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_plus_btn.cpp"),
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_minus_btn.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_cross_btn.cpp"),
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_cross_btn.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_dowsing.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_rupy.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp"),
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_itembase.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
@@ -248,6 +249,12 @@ public:
|
||||
/* 0x36C */ int mCurrentAction; // TODO (Document Enum)
|
||||
/* 0x370 */ u8 _370[0x3C8 - 0x370];
|
||||
/* 0x3C8 */ nw4r::g3d::ResFile mSwordRes;
|
||||
/* 0x3CC */ u8 _0x3CC[0x5B4 - 0x3CC];
|
||||
/* 0x5B4 */ m3d::anmMatClr_c mAnmMatClr;
|
||||
|
||||
f32 getAnmMatClrFrame() const {
|
||||
return mAnmMatClr.getFrame(0);
|
||||
}
|
||||
|
||||
inline bool checkFlags0x340(u32 mask) const {
|
||||
return (someFlags_0x340 & mask) != 0;
|
||||
|
||||
@@ -36,6 +36,10 @@ public:
|
||||
return field_0x329;
|
||||
}
|
||||
|
||||
s32 getField_0x32C() const {
|
||||
return field_0x32C;
|
||||
}
|
||||
|
||||
void setField_0x329(bool v) {
|
||||
field_0x329 = v;
|
||||
}
|
||||
@@ -107,7 +111,9 @@ private:
|
||||
/* 0x329 */ bool field_0x329;
|
||||
/* 0x32A */ bool field_0x32A;
|
||||
|
||||
/* 0x32B */ u8 _0x32B[0x334 - 0x32B];
|
||||
/* 0x32B */ u8 field_0x32B;
|
||||
/* 0x32C */ s32 field_0x32C;
|
||||
/* 0x330 */ u8 _0x330[0x334 - 0x330];
|
||||
|
||||
/* 0x334 */ u32 mMinigameResultPoints;
|
||||
/* 0x338 */ u32 mMinigameTime;
|
||||
|
||||
@@ -36,6 +36,11 @@ public:
|
||||
DO_BUTTON_REMOCON_BG = 5,
|
||||
DO_BUTTON_NUN_BG = 6,
|
||||
|
||||
DO_BUTTON_CROSS_T = 7,
|
||||
DO_BUTTON_CROSS_D = 8,
|
||||
DO_BUTTON_CROSS_L = 9,
|
||||
DO_BUTTON_CROSS_R = 10,
|
||||
|
||||
DO_BUTTON_PLUS = 11,
|
||||
};
|
||||
|
||||
@@ -73,6 +78,9 @@ public:
|
||||
}
|
||||
|
||||
static Action_e convertDoButton(s32);
|
||||
|
||||
static void fn_8010EC10(Action_e, bool);
|
||||
static void fn_8010ED50(Action_e, bool);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
static bool getItemSelect0x75B2() {
|
||||
static bool getItemSelect0x75A2() {
|
||||
if (sInstance != nullptr) {
|
||||
return sInstance->mMeter.mItemSelect.getField_0x57A2();
|
||||
} else {
|
||||
|
||||
@@ -2,23 +2,53 @@
|
||||
#define D_LYT_METER_CROSS_BTN_H
|
||||
|
||||
#include "d/lyt/d2d.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"
|
||||
|
||||
// Size 0x80
|
||||
class dLytMeterCrossBtnParts_c {
|
||||
friend class dLytMeterCrossBtn_c;
|
||||
|
||||
public:
|
||||
dLytMeterCrossBtnParts_c(): mStateMgr(*this, sStateID::null) {}
|
||||
dLytMeterCrossBtnParts_c() : mStateMgr(*this, sStateID::null) {}
|
||||
~dLytMeterCrossBtnParts_c() {}
|
||||
|
||||
void init();
|
||||
void execute(bool bIsVisible);
|
||||
|
||||
bool isActive() const {
|
||||
return *mStateMgr.getStateID() == StateID_Active;
|
||||
}
|
||||
|
||||
private:
|
||||
void setMessage(s32 id);
|
||||
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Wait);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, On);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Active);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Off);
|
||||
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterCrossBtnParts_c);
|
||||
|
||||
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtnParts_c);
|
||||
|
||||
/* 0x3C */ u32 padding[17];
|
||||
/* 0x3C */ d2d::LytBase_c *mpLyt;
|
||||
/* 0x40 */ d2d::AnmGroup_c *mpAnm[2];
|
||||
/* 0x48 */ dTextBox_c *mpTextBoxes[2];
|
||||
/* 0x50 */ dWindow_c *mpWindow;
|
||||
/* 0x54 */ dTextBox_c *mpSizeBox;
|
||||
/* 0x58 */ nw4r::lyt::Pane *mpOwnerPane;
|
||||
/* 0x5C */ s32 mIndex;
|
||||
/* 0x60 */ s32 field_0x60;
|
||||
/* 0x64 */ s32 field_0x64;
|
||||
/* 0x68 */ s32 field_0x68;
|
||||
/* 0x6C */ s32 field_0x6C;
|
||||
/* 0x70 */ s32 field_0x70;
|
||||
/* 0x74 */ s32 field_0x74;
|
||||
/* 0x78 */ s32 mOnDelay;
|
||||
/* 0x7C */ u8 field_0x7C;
|
||||
};
|
||||
|
||||
class dLytMeterCrossBtn_c : public d2d::dSubPane {
|
||||
@@ -27,28 +57,56 @@ 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 ~dLytMeterCrossBtn_c() {}
|
||||
|
||||
s32 getField_0x620() const {
|
||||
return field_0x620;
|
||||
}
|
||||
|
||||
void setOwnerPane(nw4r::lyt::Pane *pane);
|
||||
bool fn_800FA730() const;
|
||||
|
||||
private:
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Wait);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUse);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUnuse);
|
||||
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Unuse);
|
||||
|
||||
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c);
|
||||
/* 0x040 */ d2d::dLytSub mLyt;
|
||||
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[12];
|
||||
/* 0x3D8 */ u8 field_0x3D8[0x420 - 0x3D8];
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtn_c);
|
||||
|
||||
/* 0x00C */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c);
|
||||
/* 0x044 */ d2d::dLytSub mLyt;
|
||||
/* 0x0D8 */ d2d::AnmGroup_c mAnm[12];
|
||||
/* 0x3D8 */ nw4r::lyt::Pane *mpPane;
|
||||
/* 0x3DC */ nw4r::lyt::Pane *mpOwnerPane;
|
||||
/* 0x3E0 */ dTextBox_c *mpTextboxes[8];
|
||||
/* 0x400 */ dWindow_c *mpWindows[4];
|
||||
/* 0x410 */ dTextBox_c *mpSizeBoxes[4];
|
||||
/* 0x420 */ dLytMeterCrossBtnParts_c mParts[4];
|
||||
/* 0x620 */ s32 field_0x620;
|
||||
/* 0x624 */ u8 padding[0x640 - 0x624];
|
||||
/* 0x624 */ s32 field_0x624;
|
||||
/* 0x628 */ u16 field_0x628;
|
||||
/* 0x62C */ s32 mCallCount0;
|
||||
/* 0x630 */ s32 mCallCount1;
|
||||
/* 0x634 */ u8 field_0x634;
|
||||
/* 0x635 */ u8 field_0x635;
|
||||
/* 0x636 */ u8 field_0x636;
|
||||
/* 0x637 */ u8 field_0x637;
|
||||
/* 0x638 */ u8 field_0x638;
|
||||
/* 0x639 */ u8 field_0x639;
|
||||
/* 0x63A */ u8 field_0x63A;
|
||||
/* 0x63B */ u8 field_0x63B;
|
||||
/* 0x63C */ u8 field_0x63C;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -147,7 +147,7 @@ private:
|
||||
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoMove);
|
||||
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoOut);
|
||||
|
||||
STATE_MGR_DECLARE_UTIL_ISSTATE(dLytMeterMinusBtn_c);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterMinusBtn_c);
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtn_c);
|
||||
|
||||
/* 0x0008 */ dLytMeterMinusBtnMenuIcon_c mIcon[8];
|
||||
|
||||
@@ -39,8 +39,8 @@ private:
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterPlusBtn_c);
|
||||
|
||||
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c);
|
||||
/* 0x040 */ d2d::dLytSub mLyt;
|
||||
/* 0x00C */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c);
|
||||
/* 0x044 */ d2d::dLytSub mLyt;
|
||||
/* 0x0D8 */ d2d::AnmGroup_c mAnm[3];
|
||||
/* 0x198 */ nw4r::lyt::Pane *mpPane[1];
|
||||
/* 0x19C */ nw4r::lyt::Pane *mpOwnerPane;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
mStateMgr.changeState(value); \
|
||||
}
|
||||
|
||||
#define STATE_MGR_DECLARE_UTIL_ISSTATE(class_name) \
|
||||
#define STATE_MGR_DEFINE_UTIL_ISSTATE(class_name) \
|
||||
bool isState(const sFStateID_c<class_name> &value) const { \
|
||||
return *mStateMgr.getStateID() == value; \
|
||||
}
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
#include "d/lyt/meter/d_lyt_meter_cross_btn.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/d_message.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "d/lyt/d2d.h"
|
||||
#include "d/lyt/d_lyt_unknowns.h"
|
||||
#include "d/lyt/meter/d_lyt_meter.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
#include "toBeSorted/small_sound_mgr.h"
|
||||
|
||||
STATE_DEFINE(dLytMeterCrossBtnParts_c, Wait);
|
||||
STATE_DEFINE(dLytMeterCrossBtnParts_c, On);
|
||||
STATE_DEFINE(dLytMeterCrossBtnParts_c, Active);
|
||||
@@ -9,3 +19,559 @@ STATE_DEFINE(dLytMeterCrossBtn_c, Wait);
|
||||
STATE_DEFINE(dLytMeterCrossBtn_c, ToUse);
|
||||
STATE_DEFINE(dLytMeterCrossBtn_c, ToUnuse);
|
||||
STATE_DEFINE(dLytMeterCrossBtn_c, Unuse);
|
||||
|
||||
void dLytMeterCrossBtnParts_c::initializeState_Wait() {
|
||||
mOnDelay = 15;
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::executeState_Wait() {
|
||||
if (dLytMeterContainer_c::GetMeter()->fn_800D5650()) {
|
||||
mOnDelay = 0;
|
||||
}
|
||||
|
||||
s32 timer = mOnDelay;
|
||||
if (field_0x7C) {
|
||||
if (field_0x68) {
|
||||
bool bDoUpdate = true;
|
||||
if (field_0x64 != LytDoButtonRelated::DO_NONE || field_0x70 != field_0x74) {
|
||||
if (timer <= 0) {
|
||||
mStateMgr.changeState(StateID_On);
|
||||
setMessage(field_0x64);
|
||||
} else {
|
||||
bDoUpdate = false;
|
||||
mOnDelay -= 1;
|
||||
}
|
||||
}
|
||||
if (bDoUpdate) {
|
||||
field_0x60 = field_0x64;
|
||||
field_0x70 = field_0x74;
|
||||
}
|
||||
} else {
|
||||
if (field_0x64 != LytDoButtonRelated::DO_NONE || field_0x70 != field_0x74) {
|
||||
setMessage(field_0x64);
|
||||
}
|
||||
field_0x60 = field_0x64;
|
||||
field_0x70 = field_0x74;
|
||||
}
|
||||
}
|
||||
|
||||
if (timer == mOnDelay) {
|
||||
mOnDelay = 15;
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::finalizeState_Wait() {}
|
||||
|
||||
void dLytMeterCrossBtnParts_c::initializeState_On() {
|
||||
mpAnm[0]->setBackwardsOnce();
|
||||
mpAnm[0]->setToStart();
|
||||
mpAnm[0]->setAnimEnable(true);
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::executeState_On() {
|
||||
if (mpAnm[0]->isStop2()) {
|
||||
mpAnm[0]->setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_Active);
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::finalizeState_On() {}
|
||||
|
||||
void dLytMeterCrossBtnParts_c::initializeState_Active() {}
|
||||
void dLytMeterCrossBtnParts_c::executeState_Active() {
|
||||
if (field_0x64 != field_0x60 || !field_0x68 || field_0x70 != field_0x74) {
|
||||
if ((field_0x64 == LytDoButtonRelated::DO_NONE && field_0x74 == 6) || !field_0x68) {
|
||||
if (field_0x60 != field_0x6C) {
|
||||
field_0x64 = field_0x6C;
|
||||
}
|
||||
mStateMgr.changeState(StateID_Off);
|
||||
} else {
|
||||
setMessage(field_0x64);
|
||||
}
|
||||
field_0x60 = field_0x64;
|
||||
field_0x70 = field_0x74;
|
||||
} else if (field_0x60 == LytDoButtonRelated::DO_NONE && field_0x74 == 6) {
|
||||
mStateMgr.changeState(StateID_Off);
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::finalizeState_Active() {}
|
||||
|
||||
void dLytMeterCrossBtnParts_c::initializeState_Off() {
|
||||
mpAnm[0]->setForwardOnce();
|
||||
mpAnm[0]->setToStart();
|
||||
mpAnm[0]->setAnimEnable(true);
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::executeState_Off() {
|
||||
if (mpAnm[0]->isStop2()) {
|
||||
mpAnm[0]->setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtnParts_c::finalizeState_Off() {}
|
||||
|
||||
void dLytMeterCrossBtnParts_c::init() {
|
||||
field_0x6C = LytDoButtonRelated::DO_NONE;
|
||||
field_0x60 = LytDoButtonRelated::DO_NONE;
|
||||
field_0x64 = LytDoButtonRelated::DO_NONE;
|
||||
field_0x7C = false;
|
||||
field_0x70 = 6;
|
||||
field_0x68 = 1;
|
||||
mOnDelay = 15;
|
||||
mpOwnerPane = 0;
|
||||
setMessage(LytDoButtonRelated::DO_NONE);
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
|
||||
extern "C" bool checkIsInSkykeepPuzzle();
|
||||
void dLytMeterCrossBtnParts_c::execute(bool bIsVisible) {
|
||||
if (mpOwnerPane == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mpOwnerPane->IsVisible()) {
|
||||
if (!(*mStateMgr.getStateID() == StateID_On)) {
|
||||
return;
|
||||
}
|
||||
field_0x70 = 6;
|
||||
mpAnm[0]->setForwardOnce();
|
||||
mpAnm[0]->setToEnd2();
|
||||
mpAnm[0]->setAnimEnable(true);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[0]->setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
return;
|
||||
}
|
||||
|
||||
if (dLytMeterContainer_c::GetInstance()->getMeterField_0x13750() == 0) {
|
||||
if (mIndex == 0) {
|
||||
LytDoButtonRelated::fn_8010EC10(LytDoButtonRelated::DO_NONE, true);
|
||||
} else if (mIndex == 1) {
|
||||
LytDoButtonRelated::fn_8010ED50(LytDoButtonRelated::DO_NONE, true);
|
||||
} else if (mIndex == 2) {
|
||||
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_L, LytDoButtonRelated::DO_NONE);
|
||||
} else if (mIndex == 3) {
|
||||
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_R, LytDoButtonRelated::DO_NONE);
|
||||
}
|
||||
|
||||
if (field_0x64 != LytDoButtonRelated::DO_NONE) {
|
||||
field_0x64 = LytDoButtonRelated::DO_NONE;
|
||||
field_0x60 = LytDoButtonRelated::DO_NONE;
|
||||
}
|
||||
setMessage(field_0x64);
|
||||
}
|
||||
|
||||
if (!bIsVisible && *mStateMgr.getStateID() == StateID_Off) {
|
||||
mpAnm[0]->setToEnd();
|
||||
mpLyt->calc();
|
||||
}
|
||||
|
||||
if ((EventManager::isInEvent() && dMessage_c::getInstance()->getField_0x32C() == 12 && !checkIsInSkykeepPuzzle() &&
|
||||
!dLytMeterContainer_c::GetInstance()->fn_800D5670()) ||
|
||||
((dLytMeterContainer_c::getItemSelect0x75A2() && (mIndex != 1 || field_0x74 != 0)) || !bIsVisible)) {
|
||||
field_0x7C = 0;
|
||||
|
||||
if (mIndex == 0) {
|
||||
LytDoButtonRelated::fn_8010EC10(LytDoButtonRelated::DO_NONE, true);
|
||||
} else if (mIndex == 1) {
|
||||
LytDoButtonRelated::fn_8010ED50(LytDoButtonRelated::DO_NONE, true);
|
||||
} else if (mIndex == 2) {
|
||||
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_L, LytDoButtonRelated::DO_NONE);
|
||||
} else if (mIndex == 3) {
|
||||
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_R, LytDoButtonRelated::DO_NONE);
|
||||
}
|
||||
} else {
|
||||
field_0x7C = 1;
|
||||
}
|
||||
|
||||
if (mIndex == 0) {
|
||||
field_0x64 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_CROSS_T);
|
||||
field_0x68 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_CROSS_T);
|
||||
} else if (mIndex == 1) {
|
||||
field_0x64 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_CROSS_D);
|
||||
field_0x68 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_CROSS_D);
|
||||
} else if (mIndex == 2) {
|
||||
field_0x64 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_CROSS_L);
|
||||
field_0x68 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_CROSS_L);
|
||||
} else if (mIndex == 3) {
|
||||
field_0x64 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_CROSS_R);
|
||||
field_0x68 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_CROSS_R);
|
||||
}
|
||||
|
||||
mStateMgr.executeState();
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (mpAnm[i]->isEnabled()) {
|
||||
mpAnm[i]->play();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#include "d/lyt/meter/d_lyt_meter_action_table.inc"
|
||||
|
||||
void dLytMeterCrossBtnParts_c::setMessage(s32 id) {
|
||||
char buf[11];
|
||||
for (int i = 0; i < 11; i++) {
|
||||
buf[i] = 0;
|
||||
}
|
||||
|
||||
// If only there was an easier way to write this
|
||||
if (field_0x74 == 0 || field_0x74 == 1) {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(0.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpTextBoxes[0]->SetVisible(false);
|
||||
mpTextBoxes[1]->SetVisible(false);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else if (field_0x74 == 2) {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(2.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpTextBoxes[0]->SetVisible(false);
|
||||
mpTextBoxes[1]->SetVisible(false);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else if (field_0x74 == 3) {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(3.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpTextBoxes[0]->SetVisible(false);
|
||||
mpTextBoxes[1]->SetVisible(false);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else if (field_0x74 == 4) {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(4.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpTextBoxes[0]->SetVisible(false);
|
||||
mpTextBoxes[1]->SetVisible(false);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else if (field_0x74 == 5) {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(5.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpTextBoxes[0]->SetVisible(false);
|
||||
mpTextBoxes[1]->SetVisible(false);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else 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]->SetVisible(true);
|
||||
mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr);
|
||||
}
|
||||
mpWindow->SetVisible(true);
|
||||
mpWindow->UpdateSize(mpSizeBox, 32.0f);
|
||||
field_0x6C = id;
|
||||
mpAnm[1]->setFrame(1.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
} else {
|
||||
mpWindow->SetVisible(false);
|
||||
mpAnm[1]->setFrame(1.0f);
|
||||
mpAnm[1]->setAnimEnable(true);
|
||||
mpLyt->getLayout()->Animate(0);
|
||||
mpLyt->calc();
|
||||
mpAnm[1]->setAnimEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
{ "remoConBtn_03_input.brlan", "G_inputT_00"},
|
||||
{ "remoConBtn_03_input.brlan", "G_inputD_00"},
|
||||
{ "remoConBtn_03_input.brlan", "G_inputL_00"},
|
||||
{ "remoConBtn_03_input.brlan", "G_inputR_00"},
|
||||
{"remoConBtn_03_pattern.brlan", "N_T_00"},
|
||||
{"remoConBtn_03_pattern.brlan", "N_D_00"},
|
||||
{"remoConBtn_03_pattern.brlan", "N_L_00"},
|
||||
{"remoConBtn_03_pattern.brlan", "N_R_00"},
|
||||
{ "remoConBtn_03_call.brlan", "G_call_00"},
|
||||
{ "remoConBtn_03_call.brlan", "G_call_01"},
|
||||
{ "remoConBtn_03_call.brlan", "G_call_02"},
|
||||
{ "remoConBtn_03_loop.brlan", "G_loop_00"},
|
||||
};
|
||||
|
||||
#define CROSS_BTN_ANIM_INPUT_T 0
|
||||
#define CROSS_BTN_ANIM_INPUT_OFFSET 0
|
||||
#define CROSS_BTN_ANIM_PATTERN_OFFSET 4
|
||||
#define CROSS_BTN_ANIM_CALL_0 8
|
||||
#define CROSS_BTN_ANIM_CALL_1 9
|
||||
#define CROSS_BTN_ANIM_CALL_2 10
|
||||
#define CROSS_BTN_ANIM_LOOP 11
|
||||
|
||||
#define CROSS_BTN_NUM_ANIMS 12
|
||||
|
||||
void dLytMeterCrossBtn_c::initializeState_Wait() {}
|
||||
void dLytMeterCrossBtn_c::executeState_Wait() {}
|
||||
void dLytMeterCrossBtn_c::finalizeState_Wait() {}
|
||||
|
||||
void dLytMeterCrossBtn_c::initializeState_ToUse() {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setBackwardsOnce();
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setToStart();
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setAnimEnable(true);
|
||||
}
|
||||
void dLytMeterCrossBtn_c::executeState_ToUse() {
|
||||
if (mAnm[CROSS_BTN_ANIM_INPUT_T].isStop2()) {
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
|
||||
if (mAnm[CROSS_BTN_ANIM_INPUT_T].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].play();
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtn_c::finalizeState_ToUse() {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setAnimEnable(false);
|
||||
}
|
||||
|
||||
void dLytMeterCrossBtn_c::initializeState_ToUnuse() {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setForwardOnce();
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setToStart();
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setAnimEnable(true);
|
||||
}
|
||||
void dLytMeterCrossBtn_c::executeState_ToUnuse() {
|
||||
if (mAnm[CROSS_BTN_ANIM_INPUT_T].isStop2()) {
|
||||
mStateMgr.changeState(StateID_Unuse);
|
||||
}
|
||||
|
||||
if (mAnm[CROSS_BTN_ANIM_INPUT_T].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].play();
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtn_c::finalizeState_ToUnuse() {
|
||||
mAnm[CROSS_BTN_ANIM_INPUT_T].setAnimEnable(false);
|
||||
}
|
||||
|
||||
void dLytMeterCrossBtn_c::initializeState_Unuse() {}
|
||||
void dLytMeterCrossBtn_c::executeState_Unuse() {
|
||||
if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x1)) {
|
||||
mStateMgr.changeState(StateID_ToUse);
|
||||
}
|
||||
}
|
||||
void dLytMeterCrossBtn_c::finalizeState_Unuse() {}
|
||||
|
||||
static const char *sPane = "N_all_00";
|
||||
|
||||
static const char *sTextBoxes[] = {
|
||||
"T_textT_00", "T_textD_00", "T_textL_00", "T_textR_00", "T_textTS_00", "T_textDS_00", "T_textLS_00", "T_textRS_00",
|
||||
};
|
||||
|
||||
static const char *sWindows[] = {"W_bgP_01", "W_bgP_00", "W_bgP_02", "W_bgP_03"};
|
||||
|
||||
bool dLytMeterCrossBtn_c::build(d2d::ResAccIf_c *resAcc) {
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("remoConBtn_03.brlyt", nullptr);
|
||||
|
||||
for (int i = 0; i < CROSS_BTN_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 < 8; i++) {
|
||||
mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mpWindows[i] = mLyt.getWindow(sWindows[i]);
|
||||
mpSizeBoxes[i] = mLyt.getSizeBoxInWindow(sWindows[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mParts[i].mIndex = i;
|
||||
mParts[i].mpLyt = &mLyt;
|
||||
mParts[i].mpAnm[0] = &mAnm[i + CROSS_BTN_ANIM_INPUT_OFFSET];
|
||||
mParts[i].mpAnm[1] = &mAnm[i + CROSS_BTN_ANIM_PATTERN_OFFSET];
|
||||
mParts[i].mpTextBoxes[0] = mpTextboxes[i];
|
||||
mParts[i].mpTextBoxes[1] = mpTextboxes[i + 4];
|
||||
mParts[i].mpWindow = mpWindows[i];
|
||||
mParts[i].mpSizeBox = mpSizeBoxes[i];
|
||||
mParts[i].field_0x74 = 6;
|
||||
mParts[i].init();
|
||||
}
|
||||
|
||||
field_0x634 = 0;
|
||||
field_0x635 = 0;
|
||||
field_0x636 = 0;
|
||||
|
||||
field_0x628 = 0xFFFF;
|
||||
mCallCount0 = 0;
|
||||
mCallCount1 = 0;
|
||||
field_0x620 = 6;
|
||||
field_0x624 = 6;
|
||||
|
||||
field_0x637 = 0;
|
||||
field_0x638 = 0;
|
||||
field_0x639 = 0;
|
||||
field_0x63A = 0;
|
||||
field_0x63B = 0;
|
||||
field_0x63C = 0;
|
||||
|
||||
mpOwnerPane = nullptr;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mAnm[i + CROSS_BTN_ANIM_INPUT_OFFSET].setToEnd();
|
||||
mAnm[i + CROSS_BTN_ANIM_INPUT_OFFSET].setAnimEnable(true);
|
||||
}
|
||||
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setToEnd();
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setAnimEnable(true);
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setToEnd();
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setAnimEnable(true);
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setToEnd();
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setAnimEnable(true);
|
||||
|
||||
mLyt.calc();
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mAnm[i + CROSS_BTN_ANIM_INPUT_OFFSET].setAnimEnable(false);
|
||||
}
|
||||
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setAnimEnable(false);
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setAnimEnable(false);
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setAnimEnable(false);
|
||||
mAnm[CROSS_BTN_ANIM_LOOP].setAnimEnable(true);
|
||||
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytMeterCrossBtn_c::remove() {
|
||||
for (int i = 0; i < CROSS_BTN_NUM_ANIMS; i++) {
|
||||
mAnm[i].unbind();
|
||||
mAnm[i].remove();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
extern "C" u16 prepareFiHelpIndex();
|
||||
bool dLytMeterCrossBtn_c::execute() {
|
||||
u16 newFiValue = prepareFiHelpIndex();
|
||||
if (newFiValue != field_0x628) {
|
||||
field_0x628 = newFiValue;
|
||||
mCallCount0 = 0;
|
||||
}
|
||||
|
||||
mParts[0].field_0x74 = field_0x624;
|
||||
mParts[1].field_0x74 = field_0x620;
|
||||
|
||||
if (mpOwnerPane != nullptr) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mParts[i].execute(mpOwnerPane->IsVisible());
|
||||
}
|
||||
}
|
||||
|
||||
mStateMgr.executeState();
|
||||
|
||||
if (StoryflagManager::sInstance->getCounterOrFlag(43)) {
|
||||
field_0x63B = 1;
|
||||
}
|
||||
|
||||
if (field_0x637 != 0) {
|
||||
if (field_0x620 == 0) {
|
||||
f32 frame = dAcPy_c::GetLink2()->getAnmMatClrFrame();
|
||||
if (frame == 0.0f) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setToEnd();
|
||||
if (!mAnm[CROSS_BTN_ANIM_CALL_0].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setAnimEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (mAnm[CROSS_BTN_ANIM_CALL_0].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].play();
|
||||
if (mParts[1].isActive() && mCallCount0 < 3 && mAnm[CROSS_BTN_ANIM_CALL_0].getFrame() == 1.0f) {
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_SG_CALL);
|
||||
mCallCount0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x638 == 1) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setToEnd();
|
||||
} else if (mAnm[CROSS_BTN_ANIM_CALL_0].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_0].setAnimEnable(false);
|
||||
}
|
||||
|
||||
if (field_0x639 != 0) {
|
||||
if (field_0x624 == 3) {
|
||||
if (field_0x63A == 0) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setToEnd();
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setAnimEnable(true);
|
||||
}
|
||||
if (mAnm[CROSS_BTN_ANIM_CALL_1].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].play();
|
||||
if (mParts[0].isActive() && mCallCount1 < 3 && mAnm[CROSS_BTN_ANIM_CALL_1].getFrame() == 1.0f) {
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_CATAPULT_READY);
|
||||
mCallCount1++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x63A == 1) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setToEnd();
|
||||
} else if (mAnm[CROSS_BTN_ANIM_CALL_1].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_1].setAnimEnable(false);
|
||||
}
|
||||
|
||||
if (field_0x63B != 0) {
|
||||
if (field_0x620 == 2) {
|
||||
if (field_0x63C == 0) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setToEnd();
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setRate(2.0f);
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setAnimEnable(true);
|
||||
}
|
||||
if (mAnm[CROSS_BTN_ANIM_CALL_2].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].play();
|
||||
if (mParts[1].isActive() && mAnm[CROSS_BTN_ANIM_CALL_2].getFrame() == 1.0f) {
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_BIRD_CALL);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x63C == 1) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setToEnd();
|
||||
} else if (mAnm[CROSS_BTN_ANIM_CALL_2].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_CALL_2].setAnimEnable(false);
|
||||
}
|
||||
|
||||
if (mAnm[CROSS_BTN_ANIM_LOOP].isEnabled()) {
|
||||
mAnm[CROSS_BTN_ANIM_LOOP].play();
|
||||
}
|
||||
|
||||
field_0x620 = 6;
|
||||
field_0x624 = 6;
|
||||
// Might be arrays
|
||||
field_0x638 = field_0x637;
|
||||
field_0x637 = 0;
|
||||
field_0x63A = field_0x639;
|
||||
field_0x639 = 0;
|
||||
field_0x63C = field_0x63B;
|
||||
field_0x63B = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void dLytMeterCrossBtn_c::setOwnerPane(nw4r::lyt::Pane *pane) {
|
||||
mpOwnerPane = pane;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mParts[i].mpOwnerPane = pane;
|
||||
}
|
||||
}
|
||||
|
||||
bool dLytMeterCrossBtn_c::fn_800FA730() const {
|
||||
if (field_0x620 == 2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return field_0x637 != 0 || field_0x639 != 0 || field_0x63B != 0;
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ bool dLytMeterRemoconBg_c::remove() {
|
||||
}
|
||||
|
||||
bool dLytMeterRemoconBg_c::execute() {
|
||||
if (EventManager::isInEvent() || dLytMeterContainer_c::getItemSelect0x75B2() != 0) {
|
||||
if (EventManager::isInEvent() || dLytMeterContainer_c::getItemSelect0x75A2() != 0) {
|
||||
field_0xEC = 0;
|
||||
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_REMOCON_BG, LytDoButtonRelated::DO_NONE);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user