diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 82b606cb..ffb2fbc5 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -316,19 +316,27 @@ d/lyt/meter/d_lyt_meter_unk.cpp: d/lyt/meter/d_lyt_meter_a_btn.cpp: .text start:0x800DFCC0 end:0x800E1188 .ctors start:0x804DB6E4 end:0x804DB6E8 - .data start:0x80513BE8 end:0x80513F38 + .rodata start:0x804E5020 end:0x804E5298 + .data start:0x80513B70 end:0x80513F38 + .sdata start:0x80572380 end:0x80572398 + .sdata2 start:0x80579B60 end:0x80579B70 .bss start:0x805AA190 end:0x805AA350 d/lyt/meter/d_lyt_meter_z_btn.cpp: .text start:0x800E1190 end:0x800E2238 .ctors start:0x804DB6E8 end:0x804DB6EC + .rodata start:0x804E5298 end:0x804E5510 .data start:0x80513F38 end:0x80514188 + .sdata start:0x80572398 end:0x805723B8 + .sdata2 start:0x80579B70 end:0x80579B80 .bss start:0x805AA350 end:0x805AA450 d/lyt/meter/d_lyt_meter_key.cpp: .text start:0x800E2240 end:0x800E4928 .ctors start:0x804DB6EC end:0x804DB6F0 + .rodata start:0x804E5510 end:0x804E55A0 .data start:0x80514188 end:0x805148B0 + .sdata2 start:0x80579B80 end:0x80579BA0 .bss start:0x805AA450 end:0x805AA790 d/lyt/meter/d_lyt_meter_drink.cpp: @@ -343,71 +351,121 @@ d/lyt/meter/d_lyt_meter_remocon_bg.cpp: .text start:0x800E6AD0 end:0x800E7218 .ctors start:0x804DB6F4 end:0x804DB6F8 .data start:0x80514D60 end:0x80514F10 + .sdata start:0x805723B8 end:0x805723C0 .bss start:0x805AA9D0 end:0x805AAAD0 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 .ctors start:0x804DB700 end:0x804DB704 + .rodata start:0x804E5B28 end:0x804E5F28 .data start:0x805153A8 end:0x80516A28 + .sdata start:0x805723F0 end:0x80572400 + .sdata2 start:0x80579BD0 end:0x80579BF8 + .bss start:0x805AACD0 end:0x805AB650 d/lyt/meter/d_lyt_meter_plus_btn.cpp: .text start:0x800F35B0 end:0x800F4768 .ctors start:0x804DB704 end:0x804DB708 + .rodata start:0x804E5F28 end:0x804E61A0 .data start:0x80516A28 end:0x80516C90 + .sdata start:0x80572400 end:0x80572418 + .sdata2 start:0x80579BF8 end:0x80579C08 + .bss start:0x805AB650 end:0x805AB750 d/lyt/meter/d_lyt_meter_minus_btn.cpp: .text start:0x800F4770 end:0x800F8D98 .ctors start:0x804DB708 end:0x804DB70C + .rodata start:0x804E61A0 end:0x804E62A8 .data start:0x80516C90 end:0x80517818 + .sdata start:0x80572418 end:0x80572480 + .sdata2 start:0x80579C08 end:0x80579C18 + .bss start:0x805AB750 end:0x805ABC90 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 .ctors start:0x804DB710 end:0x804DB714 + .rodata start:0x804E6568 end:0x804E6928 .data start:0x80517CE0 end:0x80518A60 + .sdata start:0x805724A8 end:0x805724F0 + .sdata2 start:0x80579C38 end:0x80579C48 + .bss start:0x805ABE90 end:0x805AC550 d/lyt/meter/d_lyt_meter_rupy.cpp: .text start:0x801003F0 end:0x801026A8 .ctors start:0x804DB714 end:0x804DB718 + .rodata start:0x804E6928 end:0x804E69D8 .data start:0x80518A60 end:0x80518F00 + .sdata2 start:0x80579C48 end:0x80579C78 + .bss start:0x805AC550 end:0x805AC750 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 + .sdata start:0x805724F0 end:0x80572500 + .sdata2 start:0x80579C78 end:0x80579CF8 + .bss start:0x805AC750 end:0x805ACA90 d/lyt/meter/d_lyt_meter_event_skip.cpp: .text start:0x80105550 end:0x80105F68 .ctors start:0x804DB71C end:0x804DB720 + .rodata start:0x804E6A58 end:0x804E6A68 .data start:0x80519578 end:0x80519748 + .sdata start:0x80572500 end:0x80572510 + .sdata2 start:0x80579CF8 end:0x80579D00 + .bss start:0x805ACA90 end:0x805ACB90 d/lyt/meter/d_lyt_meter_timer.cpp: .text start:0x80105F70 end:0x8010AEB8 .ctors start:0x804DB720 end:0x804DB724 + .rodata start:0x804E6A68 end:0x804E6C28 .data start:0x80519748 end:0x80519F60 + .sdata start:0x80572510 end:0x80572518 + .sbss start:0x80575458 end:0x80575468 + .sdata2 start:0x80579D00 end:0x80579D30 + .bss start:0x805ACB90 end:0x805ACD50 d/lyt/meter/d_lyt_meter_heart.cpp: .text start:0x8010AEC0 end:0x8010BD48 + .rodata start:0x804E6C28 end:0x804E6CF8 .data start:0x80519F60 end:0x8051A320 + .sdata start:0x80572518 end:0x80572520 + .sdata2 start:0x80579D30 end:0x80579D48 d/lyt/meter/d_lyt_meter_shield_gauge.cpp: .text start:0x8010BD50 end:0x8010CEC8 .ctors start:0x804DB724 end:0x804DB728 + .rodata start:0x804E6CF8 end:0x804E6D60 .data start:0x8051A320 end:0x8051A5A8 + .sdata2 start:0x80579D48 end:0x80579D70 .bss start:0x805ACD50 end:0x805ACE10 d/lyt/d_lyt_do_button.cpp: @@ -417,6 +475,10 @@ d/lyt/d_lyt_do_button.cpp: .data start:0x8051A5A8 end:0x8051AC00 .bss start:0x805ACE10 end:0x805ACF78 +d/lyt/d_lyt_do_button_related.cpp: + .text start:0x8010EB00 end:0x8010EF8C + .ctors start:0x804DB72C end:0x804DB730 + d/lyt/d_lyt_common_a_btn.cpp: .text start:0x8010EF90 end:0x8010F818 .rodata start:0x804E72E0 end:0x804E7330 @@ -592,12 +654,17 @@ d/lyt/d_lyt_area_caption.cpp: .data start:0x80522B00 end:0x80522E80 .sdata start:0x80572878 end:0x80572880 .sbss start:0x805754C0 end:0x805754C8 + .sdata2 start:0x80579FD0 end:0x80579FE0 .bss start:0x805B0A70 end:0x805B0B30 d/lyt/d_lyt_wipe.cpp: .text start:0x8014C6C0 end:0x8014E008 .ctors start:0x804DB77C end:0x804DB780 + .data start:0x80522E80 end:0x805231E8 + .sdata start:0x80572880 end:0x80572888 .sbss start:0x805754C8 end:0x805754D0 + .sdata2 start:0x80579FE0 end:0x80579FF0 + .bss start:0x805B0B30 end:0x805B0D30 d/lyt/d_lyt_help.cpp: .text start:0x8014E010 end:0x80150428 @@ -657,6 +724,9 @@ d/lyt/d_lyt_save_msg_window.cpp: .text start:0x80164F90 end:0x80166968 .ctors start:0x804DB7A8 end:0x804DB7AC +d/lyt/d_lyt_util_items.cpp: + .text start:0x80166970 end:0x80167FD4 + d/lyt/d_lyt_common_arrow.cpp: .text start:0x80167FE0 end:0x801695E8 .ctors start:0x804DB7AC end:0x804DB7B0 @@ -749,6 +819,9 @@ d/a/d_a_door_base.cpp: d/lyt/d_lyt_map_popup.cpp: .text start:0x801792D0 end:0x80189F9C +d/d_pouch.cpp: + .text start:0x80189FA0 end:0x8018B4A4 + d/a/d_a_fish_mgr_base.cpp: .text start:0x8018B880 end:0x8018BFC8 .ctors start:0x804DB7E4 end:0x804DB7E8 @@ -945,6 +1018,14 @@ d/lyt/d_lyt_save_mgr.cpp: .text start:0x80284FB0 end:0x80286C88 .ctors start:0x804DB864 end:0x804DB868 +d/lyt/d_lyt_drop_line.cpp: + .text start:0x80286C90 end:0x802884F8 + .ctors start:0x804DB868 end:0x804DB86C + +d/lyt/d_lyt_force_line.cpp: + .text start:0x80288500 end:0x8028A9F8 + .ctors start:0x804DB86C end:0x804DB870 + d/lyt/d_lyt_enemy_icon.cpp: .text start:0x8028AA00 end:0x8028BCD8 .ctors start:0x804DB870 end:0x804DB874 @@ -975,6 +1056,7 @@ d/lyt/d_lyt_end_roll.cpp: d/lyt/d_lyt_control_game.cpp: .text start:0x802CC7B0 end:0x802D16A8 .ctors start:0x804DB8A0 end:0x804DB8A4 + .data start:0x805403F8 end:0x80540C88 d/lyt/d_lyt_control_title.cpp: .text start:0x802D16B0 end:0x802D17BC diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 2047692c..aa413be6 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -312,7 +312,7 @@ getAngleT3__11FileManagerFv = .text:0x8000B080; // type:function size:0x44 setPouchData__11FileManagerFiUl = .text:0x8000B0D0; // type:function size:0x54 getPouchData__11FileManagerFi = .text:0x8000B130; // type:function size:0x74 setPouchItem__11FileManagerFi7ITEM_ID = .text:0x8000B1B0; // type:function size:0x6C -getPouchItem__11FileManagerFi = .text:0x8000B220; // type:function size:0x24 +getPouchItem__11FileManagerFl = .text:0x8000B220; // type:function size:0x24 setPouchUpperData__11FileManagerFii = .text:0x8000B250; // type:function size:0x6C getPouchUpperData__11FileManagerFi = .text:0x8000B2C0; // type:function size:0x24 setItemCheckData__11FileManagerFUlUl = .text:0x8000B2F0; // type:function size:0x70 @@ -328,17 +328,17 @@ getSelectedPouchSlot__11FileManagerFv = .text:0x8000B620; // type:function size: setShieldPouchSlot__11FileManagerFUc = .text:0x8000B670; // type:function size:0x30 getShieldPouchSlot__11FileManagerFv = .text:0x8000B6A0; // type:function size:0x44 setAirPotionTimer__11FileManagerFUs = .text:0x8000B6F0; // type:function size:0x30 -getAirPotionTimer__11FileManagerFv = .text:0x8000B720; // type:function size:0x44 +getAirPotionTimer__11FileManagerCFv = .text:0x8000B720; // type:function size:0x44 setAirPotionPlusTimer__11FileManagerFUs = .text:0x8000B770; // type:function size:0x30 -getAirPotionPlusTimer__11FileManagerFv = .text:0x8000B7A0; // type:function size:0x44 +getAirPotionPlusTimer__11FileManagerCFv = .text:0x8000B7A0; // type:function size:0x44 setStaminaPotionTimer__11FileManagerFUs = .text:0x8000B7F0; // type:function size:0x30 -getStaminaPotionTimer__11FileManagerFv = .text:0x8000B820; // type:function size:0x44 +getStaminaPotionTimer__11FileManagerCFv = .text:0x8000B820; // type:function size:0x44 setStaminaPotionPlusTimer__11FileManagerFUs = .text:0x8000B870; // type:function size:0x30 -getStaminaPotionPlusTimer__11FileManagerFv = .text:0x8000B8A0; // type:function size:0x44 +getStaminaPotionPlusTimer__11FileManagerCFv = .text:0x8000B8A0; // type:function size:0x44 setGuardianPotionTimer__11FileManagerFUs = .text:0x8000B8F0; // type:function size:0x30 -getGuardianPotionTimer__11FileManagerFv = .text:0x8000B920; // type:function size:0x44 +getGuardianPotionTimer__11FileManagerCFv = .text:0x8000B920; // type:function size:0x44 setGuardianPotionPlusTimer__11FileManagerFUs = .text:0x8000B970; // type:function size:0x30 -getGuardianPotionPlusTimer__11FileManagerFv = .text:0x8000B9A0; // type:function size:0x44 +getGuardianPotionPlusTimer__11FileManagerCFv = .text:0x8000B9A0; // type:function size:0x44 setDowsingSlotIdx__11FileManagerFUc = .text:0x8000B9F0; // type:function size:0x30 getDowsingSlotIdx__11FileManagerFv = .text:0x8000BA20; // type:function size:0x44 setBeaconPos__11FileManagerFUlUlP7mVec3_c = .text:0x8000BA70; // type:function size:0x104 @@ -902,12 +902,12 @@ fn_80026D70 = .text:0x80026D70; // type:function size:0x3C fn_80026DB0 = .text:0x80026DB0; // type:function size:0xA0 fn_80026E50 = .text:0x80026E50; // type:function size:0x3C fn_80026E90 = .text:0x80026E90; // type:function size:0x3C -fn_80026ED0 = .text:0x80026ED0; // type:function size:0x3C -fn_80026F10 = .text:0x80026F10; // type:function size:0x3C +fn_80026ED0__13EffectsStructFv = .text:0x80026ED0; // type:function size:0x3C +fn_80026F10__13EffectsStructFv = .text:0x80026F10; // type:function size:0x3C fn_80026F50 = .text:0x80026F50; // type:function size:0xD8 fn_80027030 = .text:0x80027030; // type:function size:0xD8 fn_80027110 = .text:0x80027110; // type:function size:0xC8 -fn_800271E0 = .text:0x800271E0; // type:function size:0x44 +fn_800271E0__13EffectsStructFP7mVec3_cP7mAng3_cP7mVec3_c = .text:0x800271E0; // type:function size:0x44 setMtx__13EffectsStructFRC6mMtx_c = .text:0x80027230; // type:function size:0x78 fn_800272B0 = .text:0x800272B0; // type:function size:0x70 fn_80027320__13EffectsStructFUc = .text:0x80027320; // type:function size:0x40 @@ -961,13 +961,13 @@ EffectManager__dtor = .text:0x800296F0; // type:function size:0xBC fn_800297B0 = .text:0x800297B0; // type:function size:0x90 fn_80029840 = .text:0x80029840; // type:function size:0x6C fn_800298B0 = .text:0x800298B0; // type:function size:0x4 -fn_800298C0 = .text:0x800298C0; // type:function size:0x4C +fn_800298C0__13EffectsStructFUsP7mVec3_cPvPvPvPv = .text:0x800298C0; // type:function size:0x4C fn_80029910 = .text:0x80029910; // type:function size:0x4 fn_80029920 = .text:0x80029920; // type:function size:0x54 -fn_80029980 = .text:0x80029980; // type:function size:0x64 +fn_80029980__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029980; // type:function size:0x64 fn_800299F0__13EffectsStructFUsP6mMtx_cPvPv = .text:0x800299F0; // type:function size:0x20 fn_80029A10__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029A10; // type:function size:0x54 -fn_80029A70 = .text:0x80029A70; // type:function size:0x64 +fn_80029A70__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029A70; // type:function size:0x64 fn_80029AE0 = .text:0x80029AE0; // type:function size:0x20 fn_80029B00 = .text:0x80029B00; // type:function size:0xD8 fn_80029BE0 = .text:0x80029BE0; // type:function size:0x43C @@ -2359,15 +2359,15 @@ fn_80059650 = .text:0x80059650; // type:function size:0x4 checkInputManagerPressedMask = .text:0x80059660; // type:function size:0x18 checkButtonAPressed__4dPadFv = .text:0x80059680; // type:function size:0x18 checkButtonBPressed__4dPadFv = .text:0x800596A0; // type:function size:0x18 -checkButtonCPressed = .text:0x800596C0; // type:function size:0x18 +checkButtonCPressed__4dPadFv = .text:0x800596C0; // type:function size:0x18 checkButtonZPressed__4dPadFv = .text:0x800596E0; // type:function size:0x18 -checkButtonDpadUpPressed = .text:0x80059700; // type:function size:0x18 -checkButtonDpadDownPressed = .text:0x80059720; // type:function size:0x18 -checkButtonDpadLeftPressed = .text:0x80059740; // type:function size:0x18 -checkButtonDpadRightPressed = .text:0x80059760; // type:function size:0x18 -checkButton1Pressed = .text:0x80059780; // type:function size:0x18 -checkButton2Pressed = .text:0x800597A0; // type:function size:0x18 -checkButtonMinusPressed = .text:0x800597C0; // type:function size:0x18 +checkButtonDpadUpPressed__4dPadFv = .text:0x80059700; // type:function size:0x18 +checkButtonDpadDownPressed__4dPadFv = .text:0x80059720; // type:function size:0x18 +checkButtonDpadLeftPressed__4dPadFv = .text:0x80059740; // type:function size:0x18 +checkButtonDpadRightPressed__4dPadFv = .text:0x80059760; // type:function size:0x18 +checkButton1Pressed__4dPadFv = .text:0x80059780; // type:function size:0x18 +checkButton2Pressed__4dPadFv = .text:0x800597A0; // type:function size:0x18 +checkButtonMinusPressed__4dPadFv = .text:0x800597C0; // type:function size:0x18 checkButtonPlusPressed__4dPadFv = .text:0x800597E0; // type:function size:0x18 checkInputManagerHeldMask = .text:0x80059800; // type:function size:0x18 down__Q23EGG14CoreControllerCFUl = .text:0x80059820; // type:function size:0x18 @@ -2472,7 +2472,7 @@ fn_8005BBC0 = .text:0x8005BBC0; // type:function size:0xC turnSoupCold = .text:0x8005BBD0; // type:function size:0x8 addExtraHearts = .text:0x8005BBE0; // type:function size:0x74 AcItem__healLink = .text:0x8005BC60; // type:function size:0x18 -ActorLink__getTotalHealthCapacity = .text:0x8005BC80; // type:function size:0x54 +getCurrentHealthCapacity__7dAcPy_cFv = .text:0x8005BC80; // type:function size:0x54 addDigInteractionTarget = .text:0x8005BCE0; // type:function size:0xC fn_8005BCF0 = .text:0x8005BCF0; // type:function size:0x30 ActorLink__playLinkSound = .text:0x8005BD20; // type:function size:0x40 @@ -2490,14 +2490,14 @@ updateCurrentSword = .text:0x8005C110; // type:function size:0x24 doesPlayerHaveSword = .text:0x8005C140; // type:function size:0x1C getSwordName = .text:0x8005C160; // type:function size:0x14 getCurrentlyEquippedShieldType = .text:0x8005C180; // type:function size:0x44 -getCurrentSlingshotType = .text:0x8005C1D0; // type:function size:0x48 -getCurrentBugNetType = .text:0x8005C220; // type:function size:0x48 -getCurrentBeetleType = .text:0x8005C270; // type:function size:0x78 -getCurrentBowType = .text:0x8005C2F0; // type:function size:0x60 +getCurrentSlingshotType__7dAcPy_cFv = .text:0x8005C1D0; // type:function size:0x48 +getCurrentBugNetType__7dAcPy_cFv = .text:0x8005C220; // type:function size:0x48 +getCurrentBeetleType__7dAcPy_cFv = .text:0x8005C270; // type:function size:0x78 +getCurrentBowType__7dAcPy_cFv = .text:0x8005C2F0; // type:function size:0x60 getCurrentMittsType = .text:0x8005C350; // type:function size:0x48 isPouchUsable = .text:0x8005C3A0; // type:function size:0x80 isInBossRushMinigameState = .text:0x8005C420; // type:function size:0x8 -isItemRestrictedByBokoBase = .text:0x8005C430; // type:function size:0xB8 +isItemRestrictedByBokoBase__7dAcPy_cF7ITEM_ID = .text:0x8005C430; // type:function size:0xB8 isItemRestricted = .text:0x8005C4F0; // type:function size:0xE0 fn_8005C5D0 = .text:0x8005C5D0; // type:function size:0x34 getLinkPtr2 = .text:0x8005C610; // type:function size:0x8 @@ -3593,9 +3593,9 @@ findActorBySpecialName = .text:0x800A0880; // type:function size:0x10 getCurrentEventActorBasedOnGroup = .text:0x800A0890; // type:function size:0x58 fn_800A08F0__12EventManagerFQ27fBase_c12GROUP_TYPE_e = .text:0x800A08F0; // type:function size:0x58 checkButton2HeldForCutscenes = .text:0x800A0950; // type:function size:0x60 -fn_800A09B0 = .text:0x800A09B0; // type:function size:0x1D0 +canSkipCurrentEvent__12EventManagerFv = .text:0x800A09B0; // type:function size:0x1D0 fn_800A0B80 = .text:0x800A0B80; // type:function size:0x10 -eventRelatedStateFlags_shift0x11_1 = .text:0x800A0B90; // type:function size:0x10 +eventRelatedStateFlags_shift0x11_1__12EventManagerFv = .text:0x800A0B90; // type:function size:0x10 fn_800A0BA0 = .text:0x800A0BA0; // type:function size:0x94 __ct__5EventFPCcUlUlPvPv = .text:0x800A0C40; // type:function size:0xEC __ct__5EventFPCcPvUlUlPvPv = .text:0x800A0D30; // type:function size:0xEC @@ -3632,7 +3632,7 @@ create__15MinigameManagerFv = .text:0x800A5160; // type:function size:0x50 destroy__15MinigameManagerFv = .text:0x800A51B0; // type:function size:0x44 fn_800A5200 = .text:0x800A5200; // type:function size:0x40 execute__15MinigameManagerFv = .text:0x800A5240; // type:function size:0x30 -isSpecialMinigameState1 = .text:0x800A5270; // type:function size:0x2C +isInAnyMinigame__15MinigameManagerFv = .text:0x800A5270; // type:function size:0x2C isInMinigameState__15MinigameManagerFQ215MinigameManager8Minigame = .text:0x800A52A0; // type:function size:0x28 setNextStoredSpecialMinigameState = .text:0x800A52D0; // type:function size:0x54 endSpecialMinigameState = .text:0x800A5330; // type:function size:0x50 @@ -4408,7 +4408,7 @@ Timekeeper__ctor = .text:0x800C7880; // type:function size:0x28 Timekeeper__dtorMaybe = .text:0x800C78B0; // type:function size:0x40 fn_800C78F0 = .text:0x800C78F0; // type:function size:0x34 setTime = .text:0x800C7930; // type:function size:0x6C -Timekeeper__getTime = .text:0x800C79A0; // type:function size:0x50 +getTime__10TimekeeperCFv = .text:0x800C79A0; // type:function size:0x50 Timekeeper__setIsCountingUp = .text:0x800C79F0; // type:function size:0x8 fn_800C7A00 = .text:0x800C7A00; // type:function size:0x8 fn_800C7A10 = .text:0x800C7A10; // type:function size:0x8 @@ -4460,7 +4460,7 @@ remove__18dLytMeter1Button_cFv = .text:0x800C8DC0; // type:function size:0x58 execute__18dLytMeter1Button_cFv = .text:0x800C8E20; // type:function size:0x268 getStateID__87sStateMgr_c<18dLytMeter1Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800C9090; // type:function size:0x10 executeState__87sStateMgr_c<18dLytMeter1Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800C90A0; // type:function size:0x10 -shouldButton1Beep = .text:0x800C90B0; // type:function size:0x84 +shouldCall__18dLytMeter1Button_cCFv = .text:0x800C90B0; // type:function size:0x84 initializeState_Wait__18dLytMeter2Button_cFv = .text:0x800C9140; // type:function size:0x4 executeState_Wait__18dLytMeter2Button_cFv = .text:0x800C9150; // type:function size:0x34 changeState__87sStateMgr_c<18dLytMeter2Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800C9190; // type:function size:0x10 @@ -4479,7 +4479,7 @@ remove__18dLytMeter2Button_cFv = .text:0x800C9560; // type:function size:0x58 execute__18dLytMeter2Button_cFv = .text:0x800C95C0; // type:function size:0x298 getStateID__87sStateMgr_c<18dLytMeter2Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x800C9860; // type:function size:0x10 executeState__87sStateMgr_c<18dLytMeter2Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800C9870; // type:function size:0x10 -fn_800C9880 = .text:0x800C9880; // type:function size:0x84 +shouldCall__18dLytMeter2Button_cCFv = .text:0x800C9880; // type:function size:0x84 initializeState_Invisible__16dLytMeterParts_cFv = .text:0x800C9910; // type:function size:0x4 executeState_Invisible__16dLytMeterParts_cFv = .text:0x800C9920; // type:function size:0x130 changeState__85sStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800C9A50; // type:function size:0x10 @@ -4493,16 +4493,16 @@ finalizeState_Visible__16dLytMeterParts_cFv = .text:0x800C9D00; // type:function initializeState_Out__16dLytMeterParts_cFv = .text:0x800C9D10; // type:function size:0x4 executeState_Out__16dLytMeterParts_cFv = .text:0x800C9D20; // type:function size:0x194 finalizeState_Out__16dLytMeterParts_cFv = .text:0x800C9EC0; // type:function size:0x4 -fn_800C9ED0 = .text:0x800C9ED0; // type:function size:0x24 -thisFadesUIInAndOut = .text:0x800C9F00; // type:function size:0x10 +build__16dLytMeterParts_cFl = .text:0x800C9ED0; // type:function size:0x24 +execute__16dLytMeterParts_cFv = .text:0x800C9F00; // type:function size:0x10 executeState__85sStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800C9F10; // type:function size:0x10 -fn_800C9F20 = .text:0x800C9F20; // type:function size:0x44 -fn_800C9F70 = .text:0x800C9F70; // type:function size:0x70 -fn_800C9FE0 = .text:0x800C9FE0; // type:function size:0x60 -fn_800CA040 = .text:0x800CA040; // type:function size:0x60 -fn_800CA0A0 = .text:0x800CA0A0; // type:function size:0x1C -hasSavedAfterCredits = .text:0x800CA0C0; // type:function size:0x38 -__ct__11dLytMeter_cFv = .text:0x800CA100; // type:function size:0x1C0 +isNotSilentRealmOrLoftwing__15dLytMeterMain_cFv = .text:0x800C9F20; // type:function size:0x44 +fn_800C9F70__15dLytMeterMain_cFv = .text:0x800C9F70; // type:function size:0x70 +fn_800C9FE0__15dLytMeterMain_cFv = .text:0x800C9FE0; // type:function size:0x60 +fn_800CA040__15dLytMeterMain_cFv = .text:0x800CA040; // type:function size:0x60 +setUiMode__15dLytMeterMain_cCFUs = .text:0x800CA0A0; // type:function size:0x1C +getUiMode__15dLytMeterMain_cFv = .text:0x800CA0C0; // type:function size:0x38 +__ct__15dLytMeterMain_cFv = .text:0x800CA100; // type:function size:0x1C0 __ct__Q23d2d10ResAccIf_cFv = .text:0x800CA2C0; // type:function size:0x6C __ct__Q23d2d10AnmGroup_cFv = .text:0x800CA330; // type:function size:0x84 __ct__23dLytMeterGanbariGauge_cFv = .text:0x800CA3C0; // type:function size:0x110 @@ -4674,7 +4674,7 @@ __dt__32sFStateFct_c<16dLytMeterParts_c>Fv = .text:0x800D0E20; // type:function __dt__85sStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800D0E90; // type:function size:0xA0 __dt__55sFStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c>Fv = .text:0x800D0F30; // type:function size:0xA4 __dt__16dLytMeterParts_cFv = .text:0x800D0FE0; // type:function size:0xA8 -build__11dLytMeter_cFPQ23d2d10ResAccIf_c = .text:0x800D1090; // type:function size:0x1510 +build__15dLytMeterMain_cFPQ23d2d10ResAccIf_c = .text:0x800D1090; // type:function size:0x1510 __dt__31sFState_c<18dLytMeter1Button_c>Fv = .text:0x800D25A0; // type:function size:0x58 __dt__34sFStateFct_c<18dLytMeter1Button_c>Fv = .text:0x800D2600; // type:function size:0x6C __dt__87sStateMgr_c<18dLytMeter1Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800D2670; // type:function size:0xA0 @@ -4731,7 +4731,7 @@ __dt__37sFStateFct_c<21dLytMeterDrinkParts_c>Fv = .text:0x800D41D0; // type:func __dt__90sStateMgr_c<21dLytMeterDrinkParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800D4240; // type:function size:0xA0 __dt__60sFStateMgr_c<21dLytMeterDrinkParts_c,20sStateMethodUsr_FI_c>Fv = .text:0x800D42E0; // type:function size:0xA4 __dt__21dLytMeterDrinkParts_cFv = .text:0x800D4390; // type:function size:0xA8 -remove__11dLytMeter_cFv = .text:0x800D4440; // type:function size:0x654 +remove__15dLytMeterMain_cFv = .text:0x800D4440; // type:function size:0x654 __dt__18dLytMeter1Button_cFv = .text:0x800D4AA0; // type:function size:0xDC __dt__18dLytMeter2Button_cFv = .text:0x800D4B80; // type:function size:0xDC __dt__20LytMeterTimerPart1_cFv = .text:0x800D4C60; // type:function size:0xB4 @@ -4740,28 +4740,28 @@ __dt__16dLytMeterTimer_cFv = .text:0x800D4DE0; // type:function size:0xB4 __dt__14dLytSkyGauge_cFv = .text:0x800D4EA0; // type:function size:0x164 __dt__15dLytBirdGauge_cFv = .text:0x800D5010; // type:function size:0x164 __dt__15dLytBossGauge_cFv = .text:0x800D5180; // type:function size:0x108 -fn_800D5290 = .text:0x800D5290; // type:function size:0xB4 -fn_800D5350 = .text:0x800D5350; // type:function size:0x30 -fn_800D5380 = .text:0x800D5380; // type:function size:0x44 -fn_800D53D0 = .text:0x800D53D0; // type:function size:0x50 -fn_800D5420 = .text:0x800D5420; // type:function size:0x114 -isSilentRealm__11dLytMeter_cFv = .text:0x800D5540; // type:function size:0x4C -fn_800D5590 = .text:0x800D5590; // type:function size:0x98 -fn_800D5630 = .text:0x800D5630; // type:function size:0x18 -fn_800D5650 = .text:0x800D5650; // type:function size:0x24 -fn_800D5680 = .text:0x800D5680; // type:function size:0x28 -fn_800D56B0 = .text:0x800D56B0; // type:function size:0xFC -fn_800D57B0 = .text:0x800D57B0; // type:function size:0x1A58 -fn_800D7210 = .text:0x800D7210; // type:function size:0x92C -fn_800D7B40 = .text:0x800D7B40; // type:function size:0xC -draw__11dLytMeter_cFv = .text:0x800D7B50; // type:function size:0x128 -fn_800D7C80 = .text:0x800D7C80; // type:function size:0x8 -fn_800D7C90 = .text:0x800D7C90; // type:function size:0x8 +fn_800D5290__15dLytMeterMain_cFv = .text:0x800D5290; // type:function size:0xB4 +fn_800D5350__15dLytMeterMain_cFv = .text:0x800D5350; // type:function size:0x30 +fn_800D5380__15dLytMeterMain_cFUc = .text:0x800D5380; // type:function size:0x44 +fn_800D53D0__15dLytMeterMain_cFv = .text:0x800D53D0; // type:function size:0x50 +fn_800D5420__15dLytMeterMain_cFv = .text:0x800D5420; // type:function size:0x114 +isSilentRealm__15dLytMeterMain_cFv = .text:0x800D5540; // type:function size:0x4C +fn_800D5590__15dLytMeterMain_cFv = .text:0x800D5590; // type:function size:0x98 +fn_800D5630__15dLytMeterMain_cFv = .text:0x800D5630; // type:function size:0x18 +fn_800D5650__15dLytMeterMain_cFv = .text:0x800D5650; // type:function size:0x24 +fn_800D5680__15dLytMeterMain_cFv = .text:0x800D5680; // type:function size:0x28 +fn_800D56B0__15dLytMeterMain_cFv = .text:0x800D56B0; // type:function size:0xFC +checkPaneVisibility__15dLytMeterMain_cFv = .text:0x800D57B0; // type:function size:0x1A58 +execute__15dLytMeterMain_cFv = .text:0x800D7210; // type:function size:0x92C +fn_800D7B40__15dLytMsgWindow_cFv = .text:0x800D7B40; // type:function size:0xC +draw__15dLytMeterMain_cFv = .text:0x800D7B50; // type:function size:0x128 +getLyt__20LytMeterTimerPart1_cFv = .text:0x800D7C80; // type:function size:0x8 +getLyt__20LytMeterTimerPart2_cFv = .text:0x800D7C90; // type:function size:0x8 getLyt__14dLytSkyGauge_cFv = .text:0x800D7CA0; // type:function size:0x8 getLyt__15dLytBirdGauge_cFv = .text:0x800D7CB0; // type:function size:0x8 -__ct__20dLytMeterContainer_cFv = .text:0x800D7CC0; // type:function size:0x84 -__dt__11dLytMeter_cFv = .text:0x800D7D50; // type:function size:0xB94 -build__20dLytMeterContainer_cFv = .text:0x800D88F0; // type:function size:0x324 +__ct__11dLytMeter_cFv = .text:0x800D7CC0; // type:function size:0x84 +__dt__15dLytMeterMain_cFv = .text:0x800D7D50; // type:function size:0xB94 +build__11dLytMeter_cFv = .text:0x800D88F0; // type:function size:0x324 __dt__33sFState_c<20dLytMeterEventSkip_c>Fv = .text:0x800D8C20; // type:function size:0x58 __dt__36sFStateFct_c<20dLytMeterEventSkip_c>Fv = .text:0x800D8C80; // type:function size:0x6C __dt__89sStateMgr_c<20dLytMeterEventSkip_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800D8CF0; // type:function size:0xA0 @@ -4770,23 +4770,23 @@ __dt__27sFState_c<14dLytDobutton_c>Fv = .text:0x800D8E40; // type:function size: __dt__30sFStateFct_c<14dLytDobutton_c>Fv = .text:0x800D8EA0; // type:function size:0x6C __dt__83sStateMgr_c<14dLytDobutton_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800D8F10; // type:function size:0xA0 __dt__53sFStateMgr_c<14dLytDobutton_c,20sStateMethodUsr_FI_c>Fv = .text:0x800D8FB0; // type:function size:0xA4 -remove__20dLytMeterContainer_cFv = .text:0x800D9060; // type:function size:0x16C +remove__11dLytMeter_cFv = .text:0x800D9060; // type:function size:0x16C __dt__14dLytDobutton_cFv = .text:0x800D91D0; // type:function size:0xE4 -fn_800D92C0 = .text:0x800D92C0; // type:function size:0x48 -fn_800D9310 = .text:0x800D9310; // type:function size:0xD8 -fn_800D93F0 = .text:0x800D93F0; // type:function size:0x1F0 -draw__20dLytMeterContainer_cFv = .text:0x800D95E0; // type:function size:0x90 -fn_800D9670 = .text:0x800D9670; // type:function size:0x8 -fn_800D9680 = .text:0x800D9680; // type:function size:0x64 -fn_800D96F0 = .text:0x800D96F0; // type:function size:0x20 -fn_800D9710 = .text:0x800D9710; // type:function size:0x10 -fn_800D9720 = .text:0x800D9720; // type:function size:0x8 -fn_800D9730 = .text:0x800D9730; // type:function size:0x4C -fn_800D9780 = .text:0x800D9780; // type:function size:0x18 -fn_800D97A0 = .text:0x800D97A0; // type:function size:0x20 -setStaminaWheelPercent = .text:0x800D97C0; // type:function size:0x14 -fn_800D97E0 = .text:0x800D97E0; // type:function size:0x1C -fn_800D9800 = .text:0x800D9800; // type:function size:0x18 +__dt__18LytDoButtonRelatedFv = .text:0x800D92C0; // type:function size:0x48 +__dt__20dLytMeterEventSkip_cFv = .text:0x800D9310; // type:function size:0xD8 +execute__11dLytMeter_cFv = .text:0x800D93F0; // type:function size:0x1F0 +draw__11dLytMeter_cFv = .text:0x800D95E0; // type:function size:0x90 +fn_800D5670__11dLytMeter_cFv = .text:0x800D9670; // type:function size:0x8 +setAreaCaptionOverrideVisibility__11dLytMeter_cFb = .text:0x800D9680; // type:function size:0x64 +fn_800D56F0__11dLytMeter_cFv = .text:0x800D96F0; // type:function size:0x20 +fn_800D9710__11dLytMeter_cFv = .text:0x800D9710; // type:function size:0x10 +setStaminaWheelPercentInternal__11dLytMeter_cFf = .text:0x800D9720; // type:function size:0x8 +fn_800D9730__11dLytMeter_cFUc = .text:0x800D9730; // type:function size:0x4C +fn_800D9780__11dLytMeter_cFb = .text:0x800D9780; // type:function size:0x18 +fn_800D97A0__11dLytMeter_cFv = .text:0x800D97A0; // type:function size:0x20 +setStaminaWheelPercent__11dLytMeter_cFf = .text:0x800D97C0; // type:function size:0x14 +fn_800D97E0__11dLytMeter_cFUc = .text:0x800D97E0; // type:function size:0x1C +setVisible__11dLytMeter_cFb = .text:0x800D9800; // type:function size:0x18 changeState__83sStateMgr_c<14dLytSkyGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9820; // type:function size:0x10 changeState__84sStateMgr_c<15dLytBossGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9830; // type:function size:0x10 changeState__84sStateMgr_c<15dLytBirdGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9840; // type:function size:0x10 @@ -4796,14 +4796,14 @@ getName__16dLytMeterDrink_cFv = .text:0x800D9870; // type:function size:0x8 getLyt__16dLytMeterDrink_cFv = .text:0x800D9880; // type:function size:0x8 changeState__85sStateMgr_c<16dLytMeterDrink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9890; // type:function size:0x10 changeState__90sStateMgr_c<21dLytMeterDrinkParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D98A0; // type:function size:0x10 -fn_800D98B0 = .text:0x800D98B0; // type:function size:0x8 -fn_800D98C0 = .text:0x800D98C0; // type:function size:0x8 +getName__19dLytMeterSmallKey_cCFv = .text:0x800D98B0; // type:function size:0x8 +getLyt__19dLytMeterSmallKey_cFv = .text:0x800D98C0; // type:function size:0x8 changeState__88sStateMgr_c<19dLytMeterSmallKey_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D98D0; // type:function size:0x10 -fn_800D98E0 = .text:0x800D98E0; // type:function size:0x8 -fn_800D98F0 = .text:0x800D98F0; // type:function size:0x8 +getName__18dLytMeterBossKey_cCFv = .text:0x800D98E0; // type:function size:0x8 +getLyt__18dLytMeterBossKey_cFv = .text:0x800D98F0; // type:function size:0x8 changeState__87sStateMgr_c<18dLytMeterBossKey_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9900; // type:function size:0x10 changeState__89sStateMgr_c<20dLytMeterKakeraKey_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800D9910; // type:function size:0x10 -__dt__20dLytMeterContainer_cFv = .text:0x800D9920; // type:function size:0xBD0 +__dt__11dLytMeter_cFv = .text:0x800D9920; // type:function size:0xBD0 LytMeter0x30__Q23d2d8dSubPaneFUc = .text:0x800DA4F0; // type:function size:0x8 LytMeter0x2C__Q23d2d8dSubPaneCFv = .text:0x800DA500; // type:function size:0x8 getName__18dLytMeter2Button_cCFv = .text:0x800DA510; // type:function size:0x8 @@ -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 @@ -5439,8 +5439,8 @@ __dt__31sFStateID_c<16dLytMeterParts_c>Fv = .text:0x800DF6A0; // type:function s isSameName__31sFStateID_c<16dLytMeterParts_c>CFPCc = .text:0x800DF700; // type:function size:0x88 isSameName__33sFStateID_c<18dLytMeter2Button_c>CFPCc = .text:0x800DF790; // type:function size:0x88 isSameName__33sFStateID_c<18dLytMeter1Button_c>CFPCc = .text:0x800DF820; // type:function size:0x88 -fn_800DF8B0 = .text:0x800DF8B0; // type:function size:0x3C0 -fn_800DFC70 = .text:0x800DFC70; // type:function size:0x48 +__ct__24dLytMeterConfiguration_cFv = .text:0x800DF8B0; // type:function size:0x3C0 +__dt__24dLytMeterConfiguration_cFv = .text:0x800DFC70; // type:function size:0x48 initializeState_InvisibleWait__15dLytMeterABtn_cFv = .text:0x800DFCC0; // type:function size:0x4 executeState_InvisibleWait__15dLytMeterABtn_cFv = .text:0x800DFCD0; // type:function size:0x34 finalizeState_InvisibleWait__15dLytMeterABtn_cFv = .text:0x800DFD10; // type:function size:0x4 @@ -5464,35 +5464,35 @@ executeState_Off__15dLytMeterABtn_cFv = .text:0x800E0230; // type:function size: finalizeState_Off__15dLytMeterABtn_cFv = .text:0x800E02B0; // type:function size:0x4 build__15dLytMeterABtn_cFPQ23d2d10ResAccIf_c = .text:0x800E02C0; // type:function size:0x1E0 remove__15dLytMeterABtn_cFv = .text:0x800E04A0; // type:function size:0x58 -fn_800E0500 = .text:0x800E0500; // type:function size:0x370 -fn_800E0870 = .text:0x800E0870; // type:function size:0x1E4 -fn_800E0A60__10dTextBox_cFPCce = .text:0x800E0A60; // type:function size:0xA0 +execute__15dLytMeterABtn_cFv = .text:0x800E0500; // type:function size:0x370 +setMessage__15dLytMeterABtn_cFl = .text:0x800E0870; // type:function size:0x1E4 +setMessageWithGlobalTextProcessor2__10dTextBox_cFPCcPve = .text:0x800E0A60; // type:function size:0xA0 getName__15dLytMeterABtn_cCFv = .text:0x800E0B00; // type:function size:0x8 getLyt__15dLytMeterABtn_cFv = .text:0x800E0B10; // type:function size:0x8 getPane__15dLytMeterABtn_cFv = .text:0x800E0B20; // type:function size:0x8 __sinit_\d_lyt_meter_a_btn_cpp = .text:0x800E0B30; // type:function size:0x56C scope:local __dt__30sFStateID_c<15dLytMeterABtn_c>Fv = .text:0x800E10A0; // type:function size:0x58 isSameName__30sFStateID_c<15dLytMeterABtn_c>CFPCc = .text:0x800E1100; // type:function size:0x88 -fn_800E1190 = .text:0x800E1190; // type:function size:0xC -fn_800E11A0 = .text:0x800E11A0; // type:function size:0x11C -fn_800E12C0 = .text:0x800E12C0; // type:function size:0x4 -fn_800E12D0 = .text:0x800E12D0; // type:function size:0x4 -fn_800E12E0 = .text:0x800E12E0; // type:function size:0x60 -fn_800E1340 = .text:0x800E1340; // type:function size:0x4 -fn_800E1350 = .text:0x800E1350; // type:function size:0x4 -fn_800E1360 = .text:0x800E1360; // type:function size:0x11C -fn_800E1480 = .text:0x800E1480; // type:function size:0x4 -fn_800E1490 = .text:0x800E1490; // type:function size:0x4 -fn_800E14A0 = .text:0x800E14A0; // type:function size:0x78 -fn_800E1520 = .text:0x800E1520; // type:function size:0x4 -fn_800E1530 = .text:0x800E1530; // type:function size:0x1F8 -fn_800E1730 = .text:0x800E1730; // type:function size:0x58 -fn_800E1790 = .text:0x800E1790; // type:function size:0x434 -fn_800E1BD0 = .text:0x800E1BD0; // type:function size:0x174 -fn_800E1D50 = .text:0x800E1D50; // type:function size:0x84 -fn_800E1DE0 = .text:0x800E1DE0; // type:function size:0x8 -fn_800E1DF0 = .text:0x800E1DF0; // type:function size:0x8 -fn_800E1E00 = .text:0x800E1E00; // type:function size:0x8 +initializeState_Wait__15dLytMeterZBtn_cFv = .text:0x800E1190; // type:function size:0xC +executeState_Wait__15dLytMeterZBtn_cFv = .text:0x800E11A0; // type:function size:0x11C +finalizeState_Wait__15dLytMeterZBtn_cFv = .text:0x800E12C0; // type:function size:0x4 +initializeState_On__15dLytMeterZBtn_cFv = .text:0x800E12D0; // type:function size:0x4 +executeState_On__15dLytMeterZBtn_cFv = .text:0x800E12E0; // type:function size:0x60 +finalizeState_On__15dLytMeterZBtn_cFv = .text:0x800E1340; // type:function size:0x4 +initializeState_Active__15dLytMeterZBtn_cFv = .text:0x800E1350; // type:function size:0x4 +executeState_Active__15dLytMeterZBtn_cFv = .text:0x800E1360; // type:function size:0x11C +finalizeState_Active__15dLytMeterZBtn_cFv = .text:0x800E1480; // type:function size:0x4 +initializeState_Off__15dLytMeterZBtn_cFv = .text:0x800E1490; // type:function size:0x4 +executeState_Off__15dLytMeterZBtn_cFv = .text:0x800E14A0; // type:function size:0x78 +finalizeState_Off__15dLytMeterZBtn_cFv = .text:0x800E1520; // type:function size:0x4 +build__15dLytMeterZBtn_cFPQ23d2d10ResAccIf_c = .text:0x800E1530; // type:function size:0x1F8 +remove__15dLytMeterZBtn_cFv = .text:0x800E1730; // type:function size:0x58 +execute__15dLytMeterZBtn_cFv = .text:0x800E1790; // type:function size:0x434 +setMessage__15dLytMeterZBtn_cFl = .text:0x800E1BD0; // type:function size:0x174 +isCalling__15dLytMeterZBtn_cCFv = .text:0x800E1D50; // type:function size:0x84 +getName__15dLytMeterZBtn_cCFv = .text:0x800E1DE0; // type:function size:0x8 +getLyt__15dLytMeterZBtn_cFv = .text:0x800E1DF0; // type:function size:0x8 +getPane__15dLytMeterZBtn_cFv = .text:0x800E1E00; // type:function size:0x8 __sinit_\d_lyt_meter_z_btn_cpp = .text:0x800E1E10; // type:function size:0x338 scope:local __dt__30sFStateID_c<15dLytMeterZBtn_c>Fv = .text:0x800E2150; // type:function size:0x58 isSameName__30sFStateID_c<15dLytMeterZBtn_c>CFPCc = .text:0x800E21B0; // type:function size:0x88 @@ -5513,9 +5513,9 @@ executeState_Off__20dLytMeterKakeraKey_cFv = .text:0x800E2690; // type:function finalizeState_Off__20dLytMeterKakeraKey_cFv = .text:0x800E2710; // type:function size:0x4 build__20dLytMeterKakeraKey_cFPQ23d2d10ResAccIf_c = .text:0x800E2720; // type:function size:0x1D0 remove__20dLytMeterKakeraKey_cFv = .text:0x800E28F0; // type:function size:0x58 -LytMeterKakera__update = .text:0x800E2950; // type:function size:0x218 +execute__20dLytMeterKakeraKey_cFv = .text:0x800E2950; // type:function size:0x218 draw__20dLytMeterKakeraKey_cFv = .text:0x800E2B70; // type:function size:0x28 -fn_800E2BA0 = .text:0x800E2BA0; // type:function size:0x20 +setPosition__20dLytMeterKakeraKey_cFl = .text:0x800E2BA0; // type:function size:0x20 initializeState_Wait__18dLytMeterBossKey_cFv = .text:0x800E2BC0; // type:function size:0x4 executeState_Wait__18dLytMeterBossKey_cFv = .text:0x800E2BD0; // type:function size:0x28 finalizeState_Wait__18dLytMeterBossKey_cFv = .text:0x800E2C00; // type:function size:0x4 @@ -5530,9 +5530,9 @@ executeState_Off__18dLytMeterBossKey_cFv = .text:0x800E2D90; // type:function si finalizeState_Off__18dLytMeterBossKey_cFv = .text:0x800E2E10; // type:function size:0x4 build__18dLytMeterBossKey_cFPQ23d2d10ResAccIf_c = .text:0x800E2E20; // type:function size:0x2F4 remove__18dLytMeterBossKey_cFv = .text:0x800E3120; // type:function size:0x58 -fn_800E3180 = .text:0x800E3180; // type:function size:0x21C +execute__18dLytMeterBossKey_cFv = .text:0x800E3180; // type:function size:0x21C draw__18dLytMeterBossKey_cFv = .text:0x800E33A0; // type:function size:0x28 -fn_800E33D0 = .text:0x800E33D0; // type:function size:0x20 +setPosition__18dLytMeterBossKey_cFl = .text:0x800E33D0; // type:function size:0x20 initializeState_Wait__19dLytMeterSmallKey_cFv = .text:0x800E33F0; // type:function size:0x4 executeState_Wait__19dLytMeterSmallKey_cFv = .text:0x800E3400; // type:function size:0x5C finalizeState_Wait__19dLytMeterSmallKey_cFv = .text:0x800E3460; // type:function size:0x4 @@ -5547,9 +5547,9 @@ executeState_Off__19dLytMeterSmallKey_cFv = .text:0x800E36D0; // type:function s finalizeState_Off__19dLytMeterSmallKey_cFv = .text:0x800E3750; // type:function size:0x4 build__19dLytMeterSmallKey_cFPQ23d2d10ResAccIf_c = .text:0x800E3760; // type:function size:0x230 remove__19dLytMeterSmallKey_cFv = .text:0x800E3990; // type:function size:0x58 -fn_800E39F0 = .text:0x800E39F0; // type:function size:0x224 +execute__19dLytMeterSmallKey_cFv = .text:0x800E39F0; // type:function size:0x224 draw__19dLytMeterSmallKey_cFv = .text:0x800E3C20; // type:function size:0x28 -fn_800E3C50 = .text:0x800E3C50; // type:function size:0x20 +setPosition__19dLytMeterSmallKey_cFl = .text:0x800E3C50; // type:function size:0x20 __sinit_\d_lyt_meter_key_cpp = .text:0x800E3C70; // type:function size:0x9EC scope:local __dt__35sFStateID_c<20dLytMeterKakeraKey_c>Fv = .text:0x800E4660; // type:function size:0x58 __dt__33sFStateID_c<18dLytMeterBossKey_c>Fv = .text:0x800E46C0; // type:function size:0x58 @@ -5622,230 +5622,230 @@ 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 -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_800E9F50 = .text:0x800E9F50; // type:function size:0x18 -fn_800E9F70 = .text:0x800E9F70; // type:function size:0xDC +setVisible__24dLytMeterItemSelectBtn_cFbb = .text:0x800E9E00; // type:function size:0x24 +setVisible__24dLytMeterItemSelectBtn_cFb = .text:0x800E9E30; // type:function size:0x114 +isSettled__24dLytMeterItemSelectBtn_cCFv = .text:0x800E9F50; // type:function size:0x18 +setVisible2__24dLytMeterItemSelectBtn_cFb = .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 -fn_800EF6B0 = .text:0x800EF6B0; // type:function size:0x38 -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_800EF9D0 = .text:0x800EF9D0; // type:function size:0x100 -fn_800EFAD0 = .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 -fn_800F0030 = .text:0x800F0030; // type:function size:0x114 -fn_800F0150 = .text:0x800F0150; // type:function size:0x14 -fn_800F0170 = .text:0x800F0170; // type:function size:0x14 -fn_800F0190 = .text:0x800F0190; // type:function size:0x18 -fn_800F01B0 = .text:0x800F01B0; // type:function size:0x30 -fn_800F01E0 = .text:0x800F01E0; // type:function size:0xC -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_800F0700 = .text:0x800F0700; // type:function size:0xC8 -fn_800F07D0 = .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_800F0AA0 = .text:0x800F0AA0; // type:function size:0x8 -checkRollercoasterMinigameState = .text:0x800F0AB0; // type:function size:0x8 -fn_800F0AC0 = .text:0x800F0AC0; // type:function size:0xA8 -fn_800F0B70 = .text:0x800F0B70; // type:function size:0x8 -fn_800F0B80 = .text:0x800F0B80; // type:function size:0x8 -fn_800F0B90 = .text:0x800F0B90; // type:function size:0x8 +fn_800EF580__21dLytMeterItemSelect_cFv = .text:0x800EF580; // type:function size:0x128 +fn_800EF6B0__21dLytMeterItemSelect_cFUc = .text:0x800EF6B0; // type:function size:0x38 +setOwnerPane__21dLytMeterItemSelect_cFPQ34nw4r3lyt4Pane = .text:0x800EF6F0; // type:function size:0x18 +fn_800EF710__21dLytMeterItemSelect_cFUc = .text:0x800EF710; // type:function size:0x8 +fn_800EF720__21dLytMeterItemSelect_cFQ221dLytMeterItemSelect_c14InternalItem_e = .text:0x800EF720; // type:function size:0x7C +fn_800EF7A0__21dLytMeterItemSelect_cFbl = .text:0x800EF7A0; // type:function size:0x14 +realizeSelectedWheelItem__21dLytMeterItemSelect_cFv = .text:0x800EF7C0; // type:function size:0xF8 +fn_800EF8C0__21dLytMeterItemSelect_cFb = .text:0x800EF8C0; // type:function size:0x10C +realizeWheelNumberForLytIndex__21dLytMeterItemSelect_cFll = .text:0x800EF9D0; // type:function size:0x100 +realizeBtnNumberForLytIndex__21dLytMeterItemSelect_cFlb = .text:0x800EFAD0; // type:function size:0x200 +sprintf__16SizedWString<32>FPCwe = .text:0x800EFCD0; // type:function size:0xD0 +realizeWheelNumberVForLytIndex__21dLytMeterItemSelect_cFll = .text:0x800EFDA0; // type:function size:0x4C +fn_800EFDF0__21dLytMeterItemSelect_cCFb = .text:0x800EFDF0; // type:function size:0x238 +fn_800F0030__21dLytMeterItemSelect_cCFv = .text:0x800F0030; // type:function size:0x114 +getBaseItemForBWheelSlot__21dLytMeterItemSelect_cFl = .text:0x800F0150; // type:function size:0x14 +fn_800F0170__21dLytMeterItemSelect_cCFl = .text:0x800F0170; // type:function size:0x14 +getInternalBaseItemForSlot__21dLytMeterItemSelect_cCFl = .text:0x800F0190; // type:function size:0x18 +fn_800F01B0__21dLytMeterItemSelect_cCFl = .text:0x800F01B0; // type:function size:0x30 +fn_800F01E0__21dLytMeterItemSelect_cCFl = .text:0x800F01E0; // type:function size:0xC +isSlotBocoburinLocked__21dLytMeterItemSelect_cFl = .text:0x800F01F0; // type:function size:0x28 +fn_800F0220__21dLytMeterItemSelect_cFl = .text:0x800F0220; // type:function size:0xC8 +fn_800F02F0__21dLytMeterItemSelect_cCFv = .text:0x800F02F0; // type:function size:0x14 +fn_800F0310__21dLytMeterItemSelect_cFv = .text:0x800F0310; // type:function size:0x128 +setBtnText__21dLytMeterItemSelect_cFl = .text:0x800F0440; // type:function size:0x23C +setBtnItem__21dLytMeterItemSelect_cFl = .text:0x800F0680; // type:function size:0x78 +realizeWheelItems__21dLytMeterItemSelect_cFv = .text:0x800F0700; // type:function size:0xC8 +baseItemLytIndexToCurrentVariant__21dLytMeterItemSelect_cCFl = .text:0x800F07D0; // type:function size:0xD4 +baseItemIdToCurrentVariant__21dLytMeterItemSelect_cCF7ITEM_ID = .text:0x800F08B0; // type:function size:0xD4 +getBaseItemLytIndexforInternalId__21dLytMeterItemSelect_cCFl = .text:0x800F0990; // type:function size:0x44 +isWheelBlockedByCurrentAction__21dLytMeterItemSelect_cFv = .text:0x800F09E0; // type:function size:0xBC +isInSpiralChargeTutorialMinigame__21dLytMeterItemSelect_cFv = .text:0x800F0AA0; // type:function size:0x8 +isInRollercoasterMinigame__21dLytMeterItemSelect_cFv = .text:0x800F0AB0; // type:function size:0x8 +setCurrentItemText__21dLytMeterItemSelect_cF7ITEM_ID = .text:0x800F0AC0; // type:function size:0xA8 +getName__21dLytMeterItemSelect_cCFv = .text:0x800F0B70; // type:function size:0x8 +getLyt__21dLytMeterItemSelect_cFv = .text:0x800F0B80; // type:function size:0x8 +getPane__21dLytMeterItemSelect_cFv = .text:0x800F0B90; // type:function size:0x8 build__37sFStateFct_c<21dLytMeterItemSelect_c>FRC12sStateIDIf_c = .text:0x800F0BA0; // type:function size:0x60 dispose__37sFStateFct_c<21dLytMeterItemSelect_c>FRP10sStateIf_c = .text:0x800F0C00; // type:function size:0xC build__40sFStateFct_c<24dLytMeterItemSelectBtn_c>FRC12sStateIDIf_c = .text:0x800F0C10; // type:function size:0x60 @@ -5905,143 +5905,143 @@ 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 -fn_800F35B0 = .text:0x800F35B0; // type:function size:0x4 -fn_800F35C0 = .text:0x800F35C0; // type:function size:0x34 -fn_800F3600 = .text:0x800F3600; // type:function size:0x4 -fn_800F3610 = .text:0x800F3610; // type:function size:0x60 -fn_800F3670 = .text:0x800F3670; // type:function size:0x70 -fn_800F36E0 = .text:0x800F36E0; // type:function size:0xC -fn_800F36F0 = .text:0x800F36F0; // type:function size:0x60 -fn_800F3750 = .text:0x800F3750; // type:function size:0x70 -fn_800F37C0 = .text:0x800F37C0; // type:function size:0xC -fn_800F37D0 = .text:0x800F37D0; // type:function size:0x4 -fn_800F37E0 = .text:0x800F37E0; // type:function size:0x54 -fn_800F3840 = .text:0x800F3840; // type:function size:0x4 -fn_800F3850 = .text:0x800F3850; // type:function size:0x1F0 -fn_800F3A40 = .text:0x800F3A40; // type:function size:0x58 -fn_800F3AA0 = .text:0x800F3AA0; // type:function size:0x3B4 -fn_800F3E60 = .text:0x800F3E60; // type:function size:0x84 -fn_800F3EF0 = .text:0x800F3EF0; // type:function size:0x28 -fn_800F3F20 = .text:0x800F3F20; // type:function size:0x250 -fn_800F4170 = .text:0x800F4170; // type:function size:0x18 -fn_800F4190 = .text:0x800F4190; // type:function size:0x174 -fn_800F4310 = .text:0x800F4310; // type:function size:0x8 -fn_800F4320 = .text:0x800F4320; // type:function size:0x8 -fn_800F4330 = .text:0x800F4330; // type:function size:0x8 +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 scope:local +__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 +initializeState_Wait__18dLytMeterPlusBtn_cFv = .text:0x800F35B0; // type:function size:0x4 +executeState_Wait__18dLytMeterPlusBtn_cFv = .text:0x800F35C0; // type:function size:0x34 +finalizeState_Wait__18dLytMeterPlusBtn_cFv = .text:0x800F3600; // type:function size:0x4 +initializeState_ToUse__18dLytMeterPlusBtn_cFv = .text:0x800F3610; // type:function size:0x60 +executeState_ToUse__18dLytMeterPlusBtn_cFv = .text:0x800F3670; // type:function size:0x70 +finalizeState_ToUse__18dLytMeterPlusBtn_cFv = .text:0x800F36E0; // type:function size:0xC +initializeState_ToUnuse__18dLytMeterPlusBtn_cFv = .text:0x800F36F0; // type:function size:0x60 +executeState_ToUnuse__18dLytMeterPlusBtn_cFv = .text:0x800F3750; // type:function size:0x70 +finalizeState_ToUnuse__18dLytMeterPlusBtn_cFv = .text:0x800F37C0; // type:function size:0xC +initializeState_Unuse__18dLytMeterPlusBtn_cFv = .text:0x800F37D0; // type:function size:0x4 +executeState_Unuse__18dLytMeterPlusBtn_cFv = .text:0x800F37E0; // type:function size:0x54 +finalizeState_Unuse__18dLytMeterPlusBtn_cFv = .text:0x800F3840; // type:function size:0x4 +build__18dLytMeterPlusBtn_cFPQ23d2d10ResAccIf_c = .text:0x800F3850; // type:function size:0x1F0 +remove__18dLytMeterPlusBtn_cFv = .text:0x800F3A40; // type:function size:0x58 +execute__18dLytMeterPlusBtn_cFv = .text:0x800F3AA0; // type:function size:0x3B4 +isCalling__18dLytMeterPlusBtn_cCFv = .text:0x800F3E60; // type:function size:0x84 +setCall__18dLytMeterPlusBtn_cFb = .text:0x800F3EF0; // type:function size:0x28 +hasSpecificMapMark__18dLytMeterPlusBtn_cFv = .text:0x800F3F20; // type:function size:0x250 +isMapOpen__18dLytMeterPlusBtn_cCFv = .text:0x800F4170; // type:function size:0x18 +setMessage__18dLytMeterPlusBtn_cFl = .text:0x800F4190; // type:function size:0x174 +getName__18dLytMeterPlusBtn_cCFv = .text:0x800F4310; // type:function size:0x8 +getLyt__18dLytMeterPlusBtn_cFv = .text:0x800F4320; // type:function size:0x8 +getPane__18dLytMeterPlusBtn_cFv = .text:0x800F4330; // type:function size:0x8 __sinit_\d_lyt_meter_plus_btn_cpp = .text:0x800F4340; // type:function size:0x338 scope:local __dt__33sFStateID_c<18dLytMeterPlusBtn_c>Fv = .text:0x800F4680; // type:function size:0x58 isSameName__33sFStateID_c<18dLytMeterPlusBtn_c>CFPCc = .text:0x800F46E0; // type:function size:0x88 -fn_800F4770 = .text:0x800F4770; // type:function size:0x4 -fn_800F4780 = .text:0x800F4780; // type:function size:0x8C -fn_800F4810 = .text:0x800F4810; // type:function size:0x4 -fn_800F4820 = .text:0x800F4820; // type:function size:0x4 -fn_800F4830 = .text:0x800F4830; // type:function size:0xCC -fn_800F4900 = .text:0x800F4900; // type:function size:0x4 -fn_800F4910 = .text:0x800F4910; // type:function size:0x4 -fn_800F4920 = .text:0x800F4920; // type:function size:0x98 -fn_800F49C0 = .text:0x800F49C0; // type:function size:0x4 -fn_800F49D0 = .text:0x800F49D0; // type:function size:0x4 -fn_800F49E0 = .text:0x800F49E0; // type:function size:0x84 -fn_800F4A70 = .text:0x800F4A70; // type:function size:0x4 -fn_800F4A80 = .text:0x800F4A80; // type:function size:0x6C -fn_800F4AF0 = .text:0x800F4AF0; // type:function size:0x10 -fn_800F4B00 = .text:0x800F4B00; // type:function size:0x4 -fn_800F4B10 = .text:0x800F4B10; // type:function size:0x8C -fn_800F4BA0 = .text:0x800F4BA0; // type:function size:0x4 -fn_800F4BB0 = .text:0x800F4BB0; // type:function size:0x4 -fn_800F4BC0 = .text:0x800F4BC0; // type:function size:0x9C -fn_800F4C60 = .text:0x800F4C60; // type:function size:0x4 -fn_800F4C70 = .text:0x800F4C70; // type:function size:0x4 -fn_800F4C80 = .text:0x800F4C80; // type:function size:0x98 -fn_800F4D20 = .text:0x800F4D20; // type:function size:0x4 -fn_800F4D30 = .text:0x800F4D30; // type:function size:0x4 -fn_800F4D40 = .text:0x800F4D40; // type:function size:0x84 -fn_800F4DD0 = .text:0x800F4DD0; // type:function size:0x4 -fn_800F4DE0 = .text:0x800F4DE0; // type:function size:0x48 -fn_800F4E30 = .text:0x800F4E30; // type:function size:0x10 -fn_800F4E40 = .text:0x800F4E40; // type:function size:0x4 -fn_800F4E50 = .text:0x800F4E50; // type:function size:0x8C -fn_800F4EE0 = .text:0x800F4EE0; // type:function size:0x4 -fn_800F4EF0 = .text:0x800F4EF0; // type:function size:0x4 -fn_800F4F00 = .text:0x800F4F00; // type:function size:0x9C -fn_800F4FA0 = .text:0x800F4FA0; // type:function size:0x4 -fn_800F4FB0 = .text:0x800F4FB0; // type:function size:0x4 -fn_800F4FC0 = .text:0x800F4FC0; // type:function size:0x98 -fn_800F5060 = .text:0x800F5060; // type:function size:0x4 -fn_800F5070 = .text:0x800F5070; // type:function size:0x4 -fn_800F5080 = .text:0x800F5080; // type:function size:0x84 -fn_800F5110 = .text:0x800F5110; // type:function size:0x4 -fn_800F5120 = .text:0x800F5120; // type:function size:0x48 -fn_800F5170 = .text:0x800F5170; // type:function size:0x10 -fn_800F5180 = .text:0x800F5180; // type:function size:0x4 -fn_800F5190 = .text:0x800F5190; // type:function size:0x78 -fn_800F5210 = .text:0x800F5210; // type:function size:0x4 -fn_800F5220 = .text:0x800F5220; // type:function size:0x34C -fn_800F5570 = .text:0x800F5570; // type:function size:0x1B8 -fn_800F5730 = .text:0x800F5730; // type:function size:0xC -fn_800F5740 = .text:0x800F5740; // type:function size:0x4 -fn_800F5750 = .text:0x800F5750; // type:function size:0x100 -fn_800F5850 = .text:0x800F5850; // type:function size:0x4 -fn_800F5860 = .text:0x800F5860; // type:function size:0x60 -fn_800F58C0 = .text:0x800F58C0; // type:function size:0x80 -fn_800F5940 = .text:0x800F5940; // type:function size:0x4 -fn_800F5950 = .text:0x800F5950; // type:function size:0x60 -fn_800F59B0 = .text:0x800F59B0; // type:function size:0xDC -fn_800F5A90 = .text:0x800F5A90; // type:function size:0xC -fn_800F5AA0 = .text:0x800F5AA0; // type:function size:0x60 -fn_800F5B00 = .text:0x800F5B00; // type:function size:0xC4 -fn_800F5BD0 = .text:0x800F5BD0; // type:function size:0xC -fn_800F5BE0 = .text:0x800F5BE0; // type:function size:0xC -fn_800F5BF0 = .text:0x800F5BF0; // type:function size:0x158 -fn_800F5D50 = .text:0x800F5D50; // type:function size:0x4 -fn_800F5D60 = .text:0x800F5D60; // type:function size:0x5C0 -fn_800F6320 = .text:0x800F6320; // type:function size:0x3D4 -fn_800F6700 = .text:0x800F6700; // type:function size:0x4 -fn_800F6710 = .text:0x800F6710; // type:function size:0x60 -fn_800F6770 = .text:0x800F6770; // type:function size:0x84 -fn_800F6800 = .text:0x800F6800; // type:function size:0x4 -fn_800F6810 = .text:0x800F6810; // type:function size:0x414 -fn_800F6C30 = .text:0x800F6C30; // type:function size:0xE4 -fn_800F6D20 = .text:0x800F6D20; // type:function size:0x534 -fn_800F7260 = .text:0x800F7260; // type:function size:0x8 -fn_800F7270 = .text:0x800F7270; // type:function size:0x84 -fn_800F7300 = .text:0x800F7300; // type:function size:0x1E4 -fn_800F74F0 = .text:0x800F74F0; // type:function size:0xEC -fn_800F75E0 = .text:0x800F75E0; // type:function size:0x14 -fn_800F7600 = .text:0x800F7600; // type:function size:0x158 -fn_800F7760 = .text:0x800F7760; // type:function size:0xA8 -fn_800F7810 = .text:0x800F7810; // type:function size:0x38 -fn_800F7850 = .text:0x800F7850; // type:function size:0xA8 -fn_800F7900 = .text:0x800F7900; // type:function size:0x74 -fn_800F7980 = .text:0x800F7980; // type:function size:0x54 -fn_800F79E0 = .text:0x800F79E0; // type:function size:0x8 -fn_800F79F0 = .text:0x800F79F0; // type:function size:0x8 +initializeState_Wait__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4770; // type:function size:0x4 +executeState_Wait__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4780; // type:function size:0x8C +finalizeState_Wait__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4810; // type:function size:0x4 +initializeState_On__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4820; // type:function size:0x4 +executeState_On__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4830; // type:function size:0xCC +finalizeState_On__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4900; // type:function size:0x4 +initializeState_Select__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4910; // type:function size:0x4 +executeState_Select__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4920; // type:function size:0x98 +finalizeState_Select__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F49C0; // type:function size:0x4 +initializeState_Off__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F49D0; // type:function size:0x4 +executeState_Off__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F49E0; // type:function size:0x84 +finalizeState_Off__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4A70; // type:function size:0x4 +init__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4A80; // type:function size:0x6C +execute__27dLytMeterMinusBtnMenuIcon_cFv = .text:0x800F4AF0; // type:function size:0x10 +initializeState_Wait__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4B00; // type:function size:0x4 +executeState_Wait__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4B10; // type:function size:0x8C +finalizeState_Wait__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4BA0; // type:function size:0x4 +initializeState_On__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4BB0; // type:function size:0x4 +executeState_On__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4BC0; // type:function size:0x9C +finalizeState_On__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4C60; // type:function size:0x4 +initializeState_Select__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4C70; // type:function size:0x4 +executeState_Select__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4C80; // type:function size:0x98 +finalizeState_Select__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4D20; // type:function size:0x4 +initializeState_Off__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4D30; // type:function size:0x4 +executeState_Off__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4D40; // type:function size:0x84 +finalizeState_Off__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4DD0; // type:function size:0x4 +init__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4DE0; // type:function size:0x48 +execute__24dLytMeterMinusBtnBlink_cFv = .text:0x800F4E30; // type:function size:0x10 +initializeState_Wait__23dLytMeterMinusBtnText_cFv = .text:0x800F4E40; // type:function size:0x4 +executeState_Wait__23dLytMeterMinusBtnText_cFv = .text:0x800F4E50; // type:function size:0x8C +finalizeState_Wait__23dLytMeterMinusBtnText_cFv = .text:0x800F4EE0; // type:function size:0x4 +initializeState_On__23dLytMeterMinusBtnText_cFv = .text:0x800F4EF0; // type:function size:0x4 +executeState_On__23dLytMeterMinusBtnText_cFv = .text:0x800F4F00; // type:function size:0x9C +finalizeState_On__23dLytMeterMinusBtnText_cFv = .text:0x800F4FA0; // type:function size:0x4 +initializeState_Select__23dLytMeterMinusBtnText_cFv = .text:0x800F4FB0; // type:function size:0x4 +executeState_Select__23dLytMeterMinusBtnText_cFv = .text:0x800F4FC0; // type:function size:0x98 +finalizeState_Select__23dLytMeterMinusBtnText_cFv = .text:0x800F5060; // type:function size:0x4 +initializeState_Off__23dLytMeterMinusBtnText_cFv = .text:0x800F5070; // type:function size:0x4 +executeState_Off__23dLytMeterMinusBtnText_cFv = .text:0x800F5080; // type:function size:0x84 +finalizeState_Off__23dLytMeterMinusBtnText_cFv = .text:0x800F5110; // type:function size:0x4 +init__23dLytMeterMinusBtnText_cFv = .text:0x800F5120; // type:function size:0x48 +execute__23dLytMeterMinusBtnText_cFv = .text:0x800F5170; // type:function size:0x10 +initializeState_Wait__19dLytMeterMinusBtn_cFv = .text:0x800F5180; // type:function size:0x4 +executeState_Wait__19dLytMeterMinusBtn_cFv = .text:0x800F5190; // type:function size:0x78 +finalizeState_Wait__19dLytMeterMinusBtn_cFv = .text:0x800F5210; // type:function size:0x4 +initializeState_MenuSelectingIn__19dLytMeterMinusBtn_cFv = .text:0x800F5220; // type:function size:0x34C +executeState_MenuSelectingIn__19dLytMeterMinusBtn_cFv = .text:0x800F5570; // type:function size:0x1B8 +finalizeState_MenuSelectingIn__19dLytMeterMinusBtn_cFv = .text:0x800F5730; // type:function size:0xC +initializeState_MenuSelecting__19dLytMeterMinusBtn_cFv = .text:0x800F5740; // type:function size:0x4 +executeState_MenuSelecting__19dLytMeterMinusBtn_cFv = .text:0x800F5750; // type:function size:0x100 +finalizeState_MenuSelecting__19dLytMeterMinusBtn_cFv = .text:0x800F5850; // type:function size:0x4 +initializeState_MenuSelectingOut__19dLytMeterMinusBtn_cFv = .text:0x800F5860; // type:function size:0x60 +executeState_MenuSelectingOut__19dLytMeterMinusBtn_cFv = .text:0x800F58C0; // type:function size:0x80 +finalizeState_MenuSelectingOut__19dLytMeterMinusBtn_cFv = .text:0x800F5940; // type:function size:0x4 +initializeState_ToUse__19dLytMeterMinusBtn_cFv = .text:0x800F5950; // type:function size:0x60 +executeState_ToUse__19dLytMeterMinusBtn_cFv = .text:0x800F59B0; // type:function size:0xDC +finalizeState_ToUse__19dLytMeterMinusBtn_cFv = .text:0x800F5A90; // type:function size:0xC +initializeState_ToUnuse__19dLytMeterMinusBtn_cFv = .text:0x800F5AA0; // type:function size:0x60 +executeState_ToUnuse__19dLytMeterMinusBtn_cFv = .text:0x800F5B00; // type:function size:0xC4 +finalizeState_ToUnuse__19dLytMeterMinusBtn_cFv = .text:0x800F5BD0; // type:function size:0xC +initializeState_Unuse__19dLytMeterMinusBtn_cFv = .text:0x800F5BE0; // type:function size:0xC +executeState_Unuse__19dLytMeterMinusBtn_cFv = .text:0x800F5BF0; // type:function size:0x158 +finalizeState_Unuse__19dLytMeterMinusBtn_cFv = .text:0x800F5D50; // type:function size:0x4 +initializeState_DemoMove__19dLytMeterMinusBtn_cFv = .text:0x800F5D60; // type:function size:0x5C0 +executeState_DemoMove__19dLytMeterMinusBtn_cFv = .text:0x800F6320; // type:function size:0x3D4 +finalizeState_DemoMove__19dLytMeterMinusBtn_cFv = .text:0x800F6700; // type:function size:0x4 +initializeState_DemoOut__19dLytMeterMinusBtn_cFv = .text:0x800F6710; // type:function size:0x60 +executeState_DemoOut__19dLytMeterMinusBtn_cFv = .text:0x800F6770; // type:function size:0x84 +finalizeState_DemoOut__19dLytMeterMinusBtn_cFv = .text:0x800F6800; // type:function size:0x4 +build__19dLytMeterMinusBtn_cFPQ23d2d10ResAccIf_c = .text:0x800F6810; // type:function size:0x414 +remove__19dLytMeterMinusBtn_cFv = .text:0x800F6C30; // type:function size:0xE4 +execute__19dLytMeterMinusBtn_cFv = .text:0x800F6D20; // type:function size:0x534 +getPane__19dLytMeterMinusBtn_cFv = .text:0x800F7260; // type:function size:0x8 +shouldCall__19dLytMeterMinusBtn_cCFv = .text:0x800F7270; // type:function size:0x84 +fn_800F7300__19dLytMeterMinusBtn_cFv = .text:0x800F7300; // type:function size:0x1E4 +demoRelated__19dLytMeterMinusBtn_cFl = .text:0x800F74F0; // type:function size:0xEC +fn_800F75E0__19dLytMeterMinusBtn_cCFv = .text:0x800F75E0; // type:function size:0x14 +fn_800F7600__19dLytMeterMinusBtn_cCFv = .text:0x800F7600; // type:function size:0x158 +fn_800F7760__19dLytMeterMinusBtn_cCFv = .text:0x800F7760; // type:function size:0xA8 +isUnequippable__19dLytMeterMinusBtn_cCFl = .text:0x800F7810; // type:function size:0x38 +setItemText__19dLytMeterMinusBtn_cFl = .text:0x800F7850; // type:function size:0xA8 +realizeShieldDurability__19dLytMeterMinusBtn_cFv = .text:0x800F7900; // type:function size:0x74 +isNotMedalOrExtraAmmo__19dLytMeterMinusBtn_cFl = .text:0x800F7980; // type:function size:0x54 +getName__19dLytMeterMinusBtn_cCFv = .text:0x800F79E0; // type:function size:0x8 +getLyt__19dLytMeterMinusBtn_cFv = .text:0x800F79F0; // type:function size:0x8 __sinit_\d_lyt_meter_minus_btn_cpp = .text:0x800F7A00; // type:function size:0xFD8 scope:local __dt__42sFStateID_c<27dLytMeterMinusBtnMenuIcon_c>Fv = .text:0x800F89E0; // type:function size:0x58 __dt__39sFStateID_c<24dLytMeterMinusBtnBlink_c>Fv = .text:0x800F8A40; // type:function size:0x58 @@ -6051,155 +6051,155 @@ 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 isSameName__34sFStateID_c<19dLytMeterCrossBtn_c>CFPCc = .text:0x800FAEB0; // type:function size:0x88 isSameName__39sFStateID_c<24dLytMeterCrossBtnParts_c>CFPCc = .text:0x800FAF40; // type:function size:0x88 -fn_800FAFD0 = .text:0x800FAFD0; // type:function size:0x4 -fn_800FAFE0 = .text:0x800FAFE0; // type:function size:0x8C -fn_800FB070 = .text:0x800FB070; // type:function size:0x4 -fn_800FB080 = .text:0x800FB080; // type:function size:0x4 -fn_800FB090 = .text:0x800FB090; // type:function size:0x9C -fn_800FB130 = .text:0x800FB130; // type:function size:0x4 -fn_800FB140 = .text:0x800FB140; // type:function size:0x4 -fn_800FB150 = .text:0x800FB150; // type:function size:0x98 -fn_800FB1F0 = .text:0x800FB1F0; // type:function size:0x4 -fn_800FB200 = .text:0x800FB200; // type:function size:0x4 -fn_800FB210 = .text:0x800FB210; // type:function size:0x84 -fn_800FB2A0 = .text:0x800FB2A0; // type:function size:0x4 -fn_800FB2B0 = .text:0x800FB2B0; // type:function size:0x20 -fn_800FB2D0 = .text:0x800FB2D0; // type:function size:0x10 -fn_800FB2E0 = .text:0x800FB2E0; // type:function size:0x20 -fn_800FB300 = .text:0x800FB300; // type:function size:0x4 -fn_800FB310 = .text:0x800FB310; // type:function size:0x8C -fn_800FB3A0 = .text:0x800FB3A0; // type:function size:0x4 -fn_800FB3B0 = .text:0x800FB3B0; // type:function size:0x4 -fn_800FB3C0 = .text:0x800FB3C0; // type:function size:0x9C -fn_800FB460 = .text:0x800FB460; // type:function size:0x4 -fn_800FB470 = .text:0x800FB470; // type:function size:0x4 -fn_800FB480 = .text:0x800FB480; // type:function size:0x98 -fn_800FB520 = .text:0x800FB520; // type:function size:0x4 -fn_800FB530 = .text:0x800FB530; // type:function size:0x4 -fn_800FB540 = .text:0x800FB540; // type:function size:0x84 -fn_800FB5D0 = .text:0x800FB5D0; // type:function size:0x4 -fn_800FB5E0 = .text:0x800FB5E0; // type:function size:0x20 -fn_800FB600 = .text:0x800FB600; // type:function size:0x10 -fn_800FB610 = .text:0x800FB610; // type:function size:0x4 -fn_800FB620 = .text:0x800FB620; // type:function size:0x98 -fn_800FB6C0 = .text:0x800FB6C0; // type:function size:0x4 -fn_800FB6D0 = .text:0x800FB6D0; // type:function size:0x4 -fn_800FB6E0 = .text:0x800FB6E0; // type:function size:0x84 -fn_800FB770 = .text:0x800FB770; // type:function size:0x4 -fn_800FB780 = .text:0x800FB780; // type:function size:0x4 -fn_800FB790 = .text:0x800FB790; // type:function size:0x98 -fn_800FB830 = .text:0x800FB830; // type:function size:0x4 -fn_800FB840 = .text:0x800FB840; // type:function size:0x4 -fn_800FB850 = .text:0x800FB850; // type:function size:0x84 -fn_800FB8E0 = .text:0x800FB8E0; // type:function size:0x4 -fn_800FB8F0 = .text:0x800FB8F0; // type:function size:0x20 -fn_800FB910 = .text:0x800FB910; // type:function size:0x10 -fn_800FB920 = .text:0x800FB920; // type:function size:0x4 -fn_800FB930 = .text:0x800FB930; // type:function size:0x8C -fn_800FB9C0 = .text:0x800FB9C0; // type:function size:0x4 -fn_800FB9D0 = .text:0x800FB9D0; // type:function size:0x4 -fn_800FB9E0 = .text:0x800FB9E0; // type:function size:0x9C -fn_800FBA80 = .text:0x800FBA80; // type:function size:0x4 -fn_800FBA90 = .text:0x800FBA90; // type:function size:0x4 -fn_800FBAA0 = .text:0x800FBAA0; // type:function size:0x98 -fn_800FBB40 = .text:0x800FBB40; // type:function size:0x4 -fn_800FBB50 = .text:0x800FBB50; // type:function size:0x4 -fn_800FBB60 = .text:0x800FBB60; // type:function size:0x84 -fn_800FBBF0 = .text:0x800FBBF0; // type:function size:0x4 -fn_800FBC00 = .text:0x800FBC00; // type:function size:0x20 -fn_800FBC20 = .text:0x800FBC20; // type:function size:0x10 -fn_800FBC30 = .text:0x800FBC30; // type:function size:0x4 -fn_800FBC40 = .text:0x800FBC40; // type:function size:0x60 -fn_800FBCA0 = .text:0x800FBCA0; // type:function size:0x8 -fn_800FBCB0 = .text:0x800FBCB0; // type:function size:0xA0 -fn_800FBD50 = .text:0x800FBD50; // type:function size:0x4 -fn_800FBD60 = .text:0x800FBD60; // type:function size:0x2C0 -fn_800FC020 = .text:0x800FC020; // type:function size:0x4 -fn_800FC030 = .text:0x800FC030; // type:function size:0x2C0 -fn_800FC2F0 = .text:0x800FC2F0; // type:function size:0x84 -fn_800FC380 = .text:0x800FC380; // type:function size:0xC -fn_800FC390 = .text:0x800FC390; // type:function size:0x4 -fn_800FC3A0 = .text:0x800FC3A0; // type:function size:0x28 -fn_800FC3D0 = .text:0x800FC3D0; // type:function size:0x4 -fn_800FC3E0 = .text:0x800FC3E0; // type:function size:0xC8 -fn_800FC4B0 = .text:0x800FC4B0; // type:function size:0xF8 -fn_800FC5B0 = .text:0x800FC5B0; // type:function size:0x4 -fn_800FC5C0 = .text:0x800FC5C0; // type:function size:0x60 -fn_800FC620 = .text:0x800FC620; // type:function size:0x78 -fn_800FC6A0 = .text:0x800FC6A0; // type:function size:0x4 -fn_800FC6B0 = .text:0x800FC6B0; // type:function size:0x104 -fn_800FC7C0 = .text:0x800FC7C0; // type:function size:0x14C -fn_800FC910 = .text:0x800FC910; // type:function size:0x40 -fn_800FC950 = .text:0x800FC950; // type:function size:0x134 -fn_800FCA90 = .text:0x800FCA90; // type:function size:0xA8 -fn_800FCB40 = .text:0x800FCB40; // type:function size:0x40 -fn_800FCB80 = .text:0x800FCB80; // type:function size:0xC -fn_800FCB90 = .text:0x800FCB90; // type:function size:0x10C -fn_800FCCA0 = .text:0x800FCCA0; // type:function size:0x4 -fn_800FCCB0 = .text:0x800FCCB0; // type:function size:0x2D8 -fn_800FCF90 = .text:0x800FCF90; // type:function size:0x238 -fn_800FD1D0 = .text:0x800FD1D0; // type:function size:0x4 -fn_800FD1E0 = .text:0x800FD1E0; // type:function size:0x60 -fn_800FD240 = .text:0x800FD240; // type:function size:0x84 -fn_800FD2D0 = .text:0x800FD2D0; // type:function size:0x4 -fn_800FD2E0 = .text:0x800FD2E0; // type:function size:0x474 -fn_800FD760 = .text:0x800FD760; // type:function size:0x100 -fn_800FD860 = .text:0x800FD860; // type:function size:0x8B0 -fn_800FE110 = .text:0x800FE110; // type:function size:0x104 -fn_800FE220 = .text:0x800FE220; // type:function size:0x198 -fn_800FE3C0 = .text:0x800FE3C0; // type:function size:0xC4 -fn_800FE490 = .text:0x800FE490; // type:function size:0x14 -fn_800FE4B0 = .text:0x800FE4B0; // type:function size:0x158 -fn_800FE610 = .text:0x800FE610; // type:function size:0x88 -fn_800FE6A0 = .text:0x800FE6A0; // type:function size:0x88 -fn_800FE730 = .text:0x800FE730; // type:function size:0x40 -fn_800FE770 = .text:0x800FE770; // type:function size:0xB0 -fn_800FE820 = .text:0x800FE820; // type:function size:0x174 -fn_800FE9A0 = .text:0x800FE9A0; // type:function size:0x14 -fn_800FE9C0 = .text:0x800FE9C0; // type:function size:0x14 -fn_800FE9E0 = .text:0x800FE9E0; // type:function size:0xE4 -fn_800FEAD0 = .text:0x800FEAD0; // type:function size:0x8 -fn_800FEAE0 = .text:0x800FEAE0; // type:function size:0x8 +initializeState_Wait__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FAFD0; // type:function size:0x4 +executeState_Wait__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FAFE0; // type:function size:0x8C +finalizeState_Wait__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB070; // type:function size:0x4 +initializeState_On__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB080; // type:function size:0x4 +executeState_On__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB090; // type:function size:0x9C +finalizeState_On__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB130; // type:function size:0x4 +initializeState_Select__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB140; // type:function size:0x4 +executeState_Select__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB150; // type:function size:0x98 +finalizeState_Select__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB1F0; // type:function size:0x4 +initializeState_Off__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB200; // type:function size:0x4 +executeState_Off__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB210; // type:function size:0x84 +finalizeState_Off__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB2A0; // type:function size:0x4 +init__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB2B0; // type:function size:0x20 +execute__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB2D0; // type:function size:0x10 +reset__26dLytMeterDowsingMenuIcon_cFv = .text:0x800FB2E0; // type:function size:0x20 +initializeState_Wait__23dLytMeterDowsingBlink_cFv = .text:0x800FB300; // type:function size:0x4 +executeState_Wait__23dLytMeterDowsingBlink_cFv = .text:0x800FB310; // type:function size:0x8C +finalizeState_Wait__23dLytMeterDowsingBlink_cFv = .text:0x800FB3A0; // type:function size:0x4 +initializeState_On__23dLytMeterDowsingBlink_cFv = .text:0x800FB3B0; // type:function size:0x4 +executeState_On__23dLytMeterDowsingBlink_cFv = .text:0x800FB3C0; // type:function size:0x9C +finalizeState_On__23dLytMeterDowsingBlink_cFv = .text:0x800FB460; // type:function size:0x4 +initializeState_Select__23dLytMeterDowsingBlink_cFv = .text:0x800FB470; // type:function size:0x4 +executeState_Select__23dLytMeterDowsingBlink_cFv = .text:0x800FB480; // type:function size:0x98 +finalizeState_Select__23dLytMeterDowsingBlink_cFv = .text:0x800FB520; // type:function size:0x4 +initializeState_Off__23dLytMeterDowsingBlink_cFv = .text:0x800FB530; // type:function size:0x4 +executeState_Off__23dLytMeterDowsingBlink_cFv = .text:0x800FB540; // type:function size:0x84 +finalizeState_Off__23dLytMeterDowsingBlink_cFv = .text:0x800FB5D0; // type:function size:0x4 +init__23dLytMeterDowsingBlink_cFv = .text:0x800FB5E0; // type:function size:0x20 +execute__23dLytMeterDowsingBlink_cFv = .text:0x800FB600; // type:function size:0x10 +initializeState_Wait__23dLytMeterDowsingInput_cFv = .text:0x800FB610; // type:function size:0x4 +executeState_Wait__23dLytMeterDowsingInput_cFv = .text:0x800FB620; // type:function size:0x98 +finalizeState_Wait__23dLytMeterDowsingInput_cFv = .text:0x800FB6C0; // type:function size:0x4 +initializeState_On__23dLytMeterDowsingInput_cFv = .text:0x800FB6D0; // type:function size:0x4 +executeState_On__23dLytMeterDowsingInput_cFv = .text:0x800FB6E0; // type:function size:0x84 +finalizeState_On__23dLytMeterDowsingInput_cFv = .text:0x800FB770; // type:function size:0x4 +initializeState_Select__23dLytMeterDowsingInput_cFv = .text:0x800FB780; // type:function size:0x4 +executeState_Select__23dLytMeterDowsingInput_cFv = .text:0x800FB790; // type:function size:0x98 +finalizeState_Select__23dLytMeterDowsingInput_cFv = .text:0x800FB830; // type:function size:0x4 +initializeState_Off__23dLytMeterDowsingInput_cFv = .text:0x800FB840; // type:function size:0x4 +executeState_Off__23dLytMeterDowsingInput_cFv = .text:0x800FB850; // type:function size:0x84 +finalizeState_Off__23dLytMeterDowsingInput_cFv = .text:0x800FB8E0; // type:function size:0x4 +init__23dLytMeterDowsingInput_cFv = .text:0x800FB8F0; // type:function size:0x20 +execute__23dLytMeterDowsingInput_cFv = .text:0x800FB910; // type:function size:0x10 +initializeState_Wait__22dLytMeterDowsingText_cFv = .text:0x800FB920; // type:function size:0x4 +executeState_Wait__22dLytMeterDowsingText_cFv = .text:0x800FB930; // type:function size:0x8C +finalizeState_Wait__22dLytMeterDowsingText_cFv = .text:0x800FB9C0; // type:function size:0x4 +initializeState_On__22dLytMeterDowsingText_cFv = .text:0x800FB9D0; // type:function size:0x4 +executeState_On__22dLytMeterDowsingText_cFv = .text:0x800FB9E0; // type:function size:0x9C +finalizeState_On__22dLytMeterDowsingText_cFv = .text:0x800FBA80; // type:function size:0x4 +initializeState_Select__22dLytMeterDowsingText_cFv = .text:0x800FBA90; // type:function size:0x4 +executeState_Select__22dLytMeterDowsingText_cFv = .text:0x800FBAA0; // type:function size:0x98 +finalizeState_Select__22dLytMeterDowsingText_cFv = .text:0x800FBB40; // type:function size:0x4 +initializeState_Off__22dLytMeterDowsingText_cFv = .text:0x800FBB50; // type:function size:0x4 +executeState_Off__22dLytMeterDowsingText_cFv = .text:0x800FBB60; // type:function size:0x84 +finalizeState_Off__22dLytMeterDowsingText_cFv = .text:0x800FBBF0; // type:function size:0x4 +init__22dLytMeterDowsingText_cFv = .text:0x800FBC00; // type:function size:0x20 +execute__22dLytMeterDowsingText_cFv = .text:0x800FBC20; // type:function size:0x10 +initializeState_Invisible__18dLytMeterDowsing_cFv = .text:0x800FBC30; // type:function size:0x4 +executeState_Invisible__18dLytMeterDowsing_cFv = .text:0x800FBC40; // type:function size:0x60 +getPane__18dLytMeterDowsing_cFv = .text:0x800FBCA0; // type:function size:0x8 +finalizeState_Invisible__18dLytMeterDowsing_cFv = .text:0x800FBCB0; // type:function size:0xA0 +initializeState_Wait__18dLytMeterDowsing_cFv = .text:0x800FBD50; // type:function size:0x4 +executeState_Wait__18dLytMeterDowsing_cFv = .text:0x800FBD60; // type:function size:0x2C0 +finalizeState_Wait__18dLytMeterDowsing_cFv = .text:0x800FC020; // type:function size:0x4 +initializeState_MenuSelectingIn__18dLytMeterDowsing_cFv = .text:0x800FC030; // type:function size:0x2C0 +executeState_MenuSelectingIn__18dLytMeterDowsing_cFv = .text:0x800FC2F0; // type:function size:0x84 +finalizeState_MenuSelectingIn__18dLytMeterDowsing_cFv = .text:0x800FC380; // type:function size:0xC +initializeState_MenuSelecting__18dLytMeterDowsing_cFv = .text:0x800FC390; // type:function size:0x4 +executeState_MenuSelecting__18dLytMeterDowsing_cFv = .text:0x800FC3A0; // type:function size:0x28 +finalizeState_MenuSelecting__18dLytMeterDowsing_cFv = .text:0x800FC3D0; // type:function size:0x4 +initializeState_MenuSelectingOut__18dLytMeterDowsing_cFv = .text:0x800FC3E0; // type:function size:0xC8 +executeState_MenuSelectingOut__18dLytMeterDowsing_cFv = .text:0x800FC4B0; // type:function size:0xF8 +finalizeState_MenuSelectingOut__18dLytMeterDowsing_cFv = .text:0x800FC5B0; // type:function size:0x4 +initializeState_Reset__18dLytMeterDowsing_cFv = .text:0x800FC5C0; // type:function size:0x60 +executeState_Reset__18dLytMeterDowsing_cFv = .text:0x800FC620; // type:function size:0x78 +finalizeState_Reset__18dLytMeterDowsing_cFv = .text:0x800FC6A0; // type:function size:0x4 +initializeState_ToUse__18dLytMeterDowsing_cFv = .text:0x800FC6B0; // type:function size:0x104 +executeState_ToUse__18dLytMeterDowsing_cFv = .text:0x800FC7C0; // type:function size:0x14C +finalizeState_ToUse__18dLytMeterDowsing_cFv = .text:0x800FC910; // type:function size:0x40 +initializeState_ToUnuse__18dLytMeterDowsing_cFv = .text:0x800FC950; // type:function size:0x134 +executeState_ToUnuse__18dLytMeterDowsing_cFv = .text:0x800FCA90; // type:function size:0xA8 +finalizeState_ToUnuse__18dLytMeterDowsing_cFv = .text:0x800FCB40; // type:function size:0x40 +initializeState_Unuse__18dLytMeterDowsing_cFv = .text:0x800FCB80; // type:function size:0xC +executeState_Unuse__18dLytMeterDowsing_cFv = .text:0x800FCB90; // type:function size:0x10C +finalizeState_Unuse__18dLytMeterDowsing_cFv = .text:0x800FCCA0; // type:function size:0x4 +initializeState_DemoMove__18dLytMeterDowsing_cFv = .text:0x800FCCB0; // type:function size:0x2D8 +executeState_DemoMove__18dLytMeterDowsing_cFv = .text:0x800FCF90; // type:function size:0x238 +finalizeState_DemoMove__18dLytMeterDowsing_cFv = .text:0x800FD1D0; // type:function size:0x4 +initializeState_DemoOut__18dLytMeterDowsing_cFv = .text:0x800FD1E0; // type:function size:0x60 +executeState_DemoOut__18dLytMeterDowsing_cFv = .text:0x800FD240; // type:function size:0x84 +finalizeState_DemoOut__18dLytMeterDowsing_cFv = .text:0x800FD2D0; // type:function size:0x4 +build__18dLytMeterDowsing_cFPQ23d2d10ResAccIf_c = .text:0x800FD2E0; // type:function size:0x474 +remove__18dLytMeterDowsing_cFv = .text:0x800FD760; // type:function size:0x100 +execute__18dLytMeterDowsing_cFv = .text:0x800FD860; // type:function size:0x8B0 +fn_800FE110__18dLytMeterDowsing_cFv = .text:0x800FE110; // type:function size:0x104 +fn_800FE220__18dLytMeterDowsing_cFv = .text:0x800FE220; // type:function size:0x198 +fn_800FE3C0__18dLytMeterDowsing_cFl = .text:0x800FE3C0; // type:function size:0xC4 +fn_800FE490__18dLytMeterDowsing_cCFv = .text:0x800FE490; // type:function size:0x14 +fn_800FE4B0__18dLytMeterDowsing_cCFv = .text:0x800FE4B0; // type:function size:0x158 +fn_800FE610__18dLytMeterDowsing_cFv = .text:0x800FE610; // type:function size:0x88 +convertToLytIndex__18dLytMeterDowsing_cCFl = .text:0x800FE6A0; // type:function size:0x88 +getSelectedDowsingSlot__18dLytMeterDowsing_cCFv = .text:0x800FE730; // type:function size:0x40 +setItemName__18dLytMeterDowsing_cFl = .text:0x800FE770; // type:function size:0xB0 +setMessage__18dLytMeterDowsing_cFl = .text:0x800FE820; // type:function size:0x174 +convertSlotIndexToAnm__18dLytMeterDowsing_cCFl = .text:0x800FE9A0; // type:function size:0x14 +fn_800FE9C0__18dLytMeterDowsing_cCFl = .text:0x800FE9C0; // type:function size:0x14 +shouldCall__18dLytMeterDowsing_cCFv = .text:0x800FE9E0; // type:function size:0xE4 +getName__18dLytMeterDowsing_cCFv = .text:0x800FEAD0; // type:function size:0x8 +getLyt__18dLytMeterDowsing_cFv = .text:0x800FEAE0; // type:function size:0x8 __sinit_\d_lyt_meter_dowsing_cpp = .text:0x800FEAF0; // type:function size:0x144C scope:local __dt__41sFStateID_c<26dLytMeterDowsingMenuIcon_c>Fv = .text:0x800FFF40; // type:function size:0x58 __dt__38sFStateID_c<23dLytMeterDowsingBlink_c>Fv = .text:0x800FFFA0; // type:function size:0x58 @@ -6211,47 +6211,47 @@ isSameName__37sFStateID_c<22dLytMeterDowsingText_c>CFPCc = .text:0x801001B0; // isSameName__38sFStateID_c<23dLytMeterDowsingInput_c>CFPCc = .text:0x80100240; // type:function size:0x88 isSameName__38sFStateID_c<23dLytMeterDowsingBlink_c>CFPCc = .text:0x801002D0; // type:function size:0x88 isSameName__41sFStateID_c<26dLytMeterDowsingMenuIcon_c>CFPCc = .text:0x80100360; // type:function size:0x88 -fn_801003F0 = .text:0x801003F0; // type:function size:0x4 -fn_80100400 = .text:0x80100400; // type:function size:0x8C -fn_80100490 = .text:0x80100490; // type:function size:0x4 -fn_801004A0 = .text:0x801004A0; // type:function size:0x4 -fn_801004B0 = .text:0x801004B0; // type:function size:0xA4 -fn_80100560 = .text:0x80100560; // type:function size:0x4 -fn_80100570 = .text:0x80100570; // type:function size:0x20 -fn_80100590 = .text:0x80100590; // type:function size:0x10 -fn_801005A0 = .text:0x801005A0; // type:function size:0x4 -fn_801005B0 = .text:0x801005B0; // type:function size:0x8C -fn_80100640 = .text:0x80100640; // type:function size:0x4 -fn_80100650 = .text:0x80100650; // type:function size:0x4 -fn_80100660 = .text:0x80100660; // type:function size:0x104 -fn_80100770 = .text:0x80100770; // type:function size:0x4 -fn_80100780 = .text:0x80100780; // type:function size:0x24 -fn_801007B0 = .text:0x801007B0; // type:function size:0x10 -fn_801007C0 = .text:0x801007C0; // type:function size:0x164 -fn_80100930 = .text:0x80100930; // type:function size:0x78 -fn_801009B0 = .text:0x801009B0; // type:function size:0x4 -fn_801009C0 = .text:0x801009C0; // type:function size:0x4 -fn_801009D0 = .text:0x801009D0; // type:function size:0x74 -fn_80100A50 = .text:0x80100A50; // type:function size:0x4 -fn_80100A60 = .text:0x80100A60; // type:function size:0x58 -fn_80100AC0 = .text:0x80100AC0; // type:function size:0xA8 -fn_80100B70 = .text:0x80100B70; // type:function size:0x4 -fn_80100B80 = .text:0x80100B80; // type:function size:0xB8 -fn_80100C40 = .text:0x80100C40; // type:function size:0xAC -fn_80100CF0 = .text:0x80100CF0; // type:function size:0x4 -fn_80100D00 = .text:0x80100D00; // type:function size:0x310 -fn_80101010 = .text:0x80101010; // type:function size:0x58 -fn_80101070 = .text:0x80101070; // type:function size:0x1B0 -fn_80101220 = .text:0x80101220; // type:function size:0x5C -fn_80101280 = .text:0x80101280; // type:function size:0x34 -fn_801012C0 = .text:0x801012C0; // type:function size:0xB0 -fn_80101370 = .text:0x80101370; // type:function size:0x74 -fn_801013F0 = .text:0x801013F0; // type:function size:0x5C8 -fn_801019C0 = .text:0x801019C0; // type:function size:0x24C -fn_80101C10 = .text:0x80101C10; // type:function size:0x158 -fn_80101D70 = .text:0x80101D70; // type:function size:0x8 -fn_80101D80 = .text:0x80101D80; // type:function size:0x8 -fn_80101D90 = .text:0x80101D90; // type:function size:0x8 +initializeState_Wait__20dLytMeterRupyStart_cFv = .text:0x801003F0; // type:function size:0x4 +executeState_Wait__20dLytMeterRupyStart_cFv = .text:0x80100400; // type:function size:0x8C +finalizeState_Wait__20dLytMeterRupyStart_cFv = .text:0x80100490; // type:function size:0x4 +initializeState_Start__20dLytMeterRupyStart_cFv = .text:0x801004A0; // type:function size:0x4 +executeState_Start__20dLytMeterRupyStart_cFv = .text:0x801004B0; // type:function size:0xA4 +finalizeState_Start__20dLytMeterRupyStart_cFv = .text:0x80100560; // type:function size:0x4 +init__20dLytMeterRupyStart_cFv = .text:0x80100570; // type:function size:0x20 +execute__20dLytMeterRupyStart_cFv = .text:0x80100590; // type:function size:0x10 +initializeState_Wait__20dLytMeterRupyBlink_cFv = .text:0x801005A0; // type:function size:0x4 +executeState_Wait__20dLytMeterRupyBlink_cFv = .text:0x801005B0; // type:function size:0x8C +finalizeState_Wait__20dLytMeterRupyBlink_cFv = .text:0x80100640; // type:function size:0x4 +initializeState_Flash__20dLytMeterRupyBlink_cFv = .text:0x80100650; // type:function size:0x4 +executeState_Flash__20dLytMeterRupyBlink_cFv = .text:0x80100660; // type:function size:0x104 +finalizeState_Flash__20dLytMeterRupyBlink_cFv = .text:0x80100770; // type:function size:0x4 +init__20dLytMeterRupyBlink_cFv = .text:0x80100780; // type:function size:0x24 +execute__20dLytMeterRupyBlink_cFv = .text:0x801007B0; // type:function size:0x10 +initializeState_In__15dLytMeterRupy_cFv = .text:0x801007C0; // type:function size:0x164 +executeState_In__15dLytMeterRupy_cFv = .text:0x80100930; // type:function size:0x78 +finalizeState_In__15dLytMeterRupy_cFv = .text:0x801009B0; // type:function size:0x4 +initializeState_Active__15dLytMeterRupy_cFv = .text:0x801009C0; // type:function size:0x4 +executeState_Active__15dLytMeterRupy_cFv = .text:0x801009D0; // type:function size:0x74 +finalizeState_Active__15dLytMeterRupy_cFv = .text:0x80100A50; // type:function size:0x4 +initializeState_Start__15dLytMeterRupy_cFv = .text:0x80100A60; // type:function size:0x58 +executeState_Start__15dLytMeterRupy_cFv = .text:0x80100AC0; // type:function size:0xA8 +finalizeState_Start__15dLytMeterRupy_cFv = .text:0x80100B70; // type:function size:0x4 +initializeState_Out__15dLytMeterRupy_cFv = .text:0x80100B80; // type:function size:0xB8 +executeState_Out__15dLytMeterRupy_cFv = .text:0x80100C40; // type:function size:0xAC +finalizeState_Out__15dLytMeterRupy_cFv = .text:0x80100CF0; // type:function size:0x4 +build__15dLytMeterRupy_cFPQ23d2d10ResAccIf_c = .text:0x80100D00; // type:function size:0x310 +remove__15dLytMeterRupy_cFv = .text:0x80101010; // type:function size:0x58 +execute__15dLytMeterRupy_cFv = .text:0x80101070; // type:function size:0x1B0 +hasChangeInRupees__15dLytMeterRupy_cCFv = .text:0x80101220; // type:function size:0x5C +getRupeeDifference__15dLytMeterRupy_cCFv = .text:0x80101280; // type:function size:0x34 +getLastVisibleDigitPosition__15dLytMeterRupy_cFv = .text:0x801012C0; // type:function size:0xB0 +setDigit__15dLytMeterRupy_cFll = .text:0x80101370; // type:function size:0x74 +updateDisplayedAmount__15dLytMeterRupy_cFb = .text:0x801013F0; // type:function size:0x5C8 +executeDigitJump__15dLytMeterRupy_cFv = .text:0x801019C0; // type:function size:0x24C +executeDigitBlink__15dLytMeterRupy_cFl = .text:0x80101C10; // type:function size:0x158 +getName__15dLytMeterRupy_cCFv = .text:0x80101D70; // type:function size:0x8 +getLyt__15dLytMeterRupy_cFv = .text:0x80101D80; // type:function size:0x8 +getPane__15dLytMeterRupy_cFv = .text:0x80101D90; // type:function size:0x8 __sinit_\d_lyt_meter_rupy_cpp = .text:0x80101DA0; // type:function size:0x640 scope:local __dt__35sFStateID_c<20dLytMeterRupyStart_c>Fv = .text:0x801023E0; // type:function size:0x58 __dt__35sFStateID_c<20dLytMeterRupyBlink_c>Fv = .text:0x80102440; // type:function size:0x58 @@ -6298,196 +6298,196 @@ finalizeState_Recovery__23dLytMeterGanbariGauge_cFv = .text:0x80103350; // type: initializeState_ToMax__23dLytMeterGanbariGauge_cFv = .text:0x80103360; // type:function size:0xAC executeState_ToMax__23dLytMeterGanbariGauge_cFv = .text:0x80103410; // type:function size:0x8C finalizeState_ToMax__23dLytMeterGanbariGauge_cFv = .text:0x801034A0; // type:function size:0x4 -fn_801034B0 = .text:0x801034B0; // type:function size:0x68 -fn_80103520 = .text:0x80103520; // type:function size:0x58 +isStaminaLow__23dLytMeterGanbariGauge_cFf = .text:0x801034B0; // type:function size:0x68 +isStaminaCritical__23dLytMeterGanbariGauge_cFf = .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 -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 -fn_80104860 = .text:0x80104860; // type:function size:0x58 -fn_801048C0 = .text:0x801048C0; // type:function size:0x190 +remove__23dLytMeterGanbariGauge_cFv = .text:0x801037D0; // type:function size:0x50 +execute__23dLytMeterGanbariGauge_cFv = .text:0x80103820; // type:function size:0xEF0 +fn_80104710__23dLytMeterGanbariGauge_cCFb = .text:0x80104710; // type:function size:0x4C +fn_80104760__23dLytMeterGanbariGauge_cCFv = .text:0x80104760; // type:function size:0x48 +fn_801047B0__23dLytMeterGanbariGauge_cCFv = .text:0x801047B0; // type:function size:0x60 +isCrawling__23dLytMeterGanbariGauge_cCFv = .text:0x80104810; // type:function size:0x10 +swimmingRelated__23dLytMeterGanbariGauge_cFv = .text:0x80104820; // type:function size:0x38 +displayAirInsteadOfStamina__23dLytMeterGanbariGauge_cFv = .text:0x80104860; // type:function size:0x58 +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 __sinit_\d_lyt_meter_ganbari_gauge_cpp = .text:0x80104A80; // type:function size:0x9D4 scope:local __dt__38sFStateID_c<23dLytMeterGanbariGauge_c>Fv = .text:0x80105460; // type:function size:0x58 isSameName__38sFStateID_c<23dLytMeterGanbariGauge_c>CFPCc = .text:0x801054C0; // type:function size:0x88 -fn_80105550 = .text:0x80105550; // type:function size:0x4 -fn_80105560 = .text:0x80105560; // type:function size:0x114 -fn_80105680 = .text:0x80105680; // type:function size:0x4 -fn_80105690 = .text:0x80105690; // type:function size:0x4 -fn_801056A0 = .text:0x801056A0; // type:function size:0x74 -fn_80105720 = .text:0x80105720; // type:function size:0x4 -fn_80105730 = .text:0x80105730; // type:function size:0x4 -fn_80105740 = .text:0x80105740; // type:function size:0x84 -fn_801057D0 = .text:0x801057D0; // type:function size:0x4 -fn_801057E0 = .text:0x801057E0; // type:function size:0x4 -fn_801057F0 = .text:0x801057F0; // type:function size:0x68 -fn_80105860 = .text:0x80105860; // type:function size:0x4 +initializeState_Invisible__20dLytMeterEventSkip_cFv = .text:0x80105550; // type:function size:0x4 +executeState_Invisible__20dLytMeterEventSkip_cFv = .text:0x80105560; // type:function size:0x114 +finalizeState_Invisible__20dLytMeterEventSkip_cFv = .text:0x80105680; // type:function size:0x4 +initializeState_In__20dLytMeterEventSkip_cFv = .text:0x80105690; // type:function size:0x4 +executeState_In__20dLytMeterEventSkip_cFv = .text:0x801056A0; // type:function size:0x74 +finalizeState_In__20dLytMeterEventSkip_cFv = .text:0x80105720; // type:function size:0x4 +initializeState_Visible__20dLytMeterEventSkip_cFv = .text:0x80105730; // type:function size:0x4 +executeState_Visible__20dLytMeterEventSkip_cFv = .text:0x80105740; // type:function size:0x84 +finalizeState_Visible__20dLytMeterEventSkip_cFv = .text:0x801057D0; // type:function size:0x4 +initializeState_Out__20dLytMeterEventSkip_cFv = .text:0x801057E0; // type:function size:0x4 +executeState_Out__20dLytMeterEventSkip_cFv = .text:0x801057F0; // type:function size:0x68 +finalizeState_Out__20dLytMeterEventSkip_cFv = .text:0x80105860; // type:function size:0x4 build__20dLytMeterEventSkip_cFPQ23d2d10ResAccIf_c = .text:0x80105870; // type:function size:0x140 remove__20dLytMeterEventSkip_cFv = .text:0x801059B0; // type:function size:0x50 -fn_80105A00 = .text:0x80105A00; // type:function size:0xB4 +execute__20dLytMeterEventSkip_cFv = .text:0x80105A00; // type:function size:0xB4 draw__20dLytMeterEventSkip_cFv = .text:0x80105AC0; // type:function size:0x34 -fn_80105B00 = .text:0x80105B00; // type:function size:0x40 +shouldPromptForSkip__20dLytMeterEventSkip_cCFv = .text:0x80105B00; // type:function size:0x40 __sinit_\d_lyt_meter_event_skip_cpp = .text:0x80105B40; // type:function size:0x338 scope:local __dt__35sFStateID_c<20dLytMeterEventSkip_c>Fv = .text:0x80105E80; // type:function size:0x58 isSameName__35sFStateID_c<20dLytMeterEventSkip_c>CFPCc = .text:0x80105EE0; // type:function size:0x88 -fn_80105F70 = .text:0x80105F70; // type:function size:0xFC -fn_80106070 = .text:0x80106070; // type:function size:0x58 -fn_801060D0 = .text:0x801060D0; // type:function size:0xB4 -fn_80106190 = .text:0x80106190; // type:function size:0x68 -fn_80106200 = .text:0x80106200; // type:function size:0x74 -fn_80106280 = .text:0x80106280; // type:function size:0x14C -fn_801063D0 = .text:0x801063D0; // type:function size:0xC0 -fn_80106490 = .text:0x80106490; // type:function size:0xC4 -fn_80106560 = .text:0x80106560; // type:function size:0x74 -fn_801065E0 = .text:0x801065E0; // type:function size:0xC0 -fn_801066A0 = .text:0x801066A0; // type:function size:0xBC -fn_80106760 = .text:0x80106760; // type:function size:0x48 -fn_801067B0 = .text:0x801067B0; // type:function size:0x3C -fn_801067F0 = .text:0x801067F0; // type:function size:0x54 -fn_80106850 = .text:0x80106850; // type:function size:0xC -fn_80106860 = .text:0x80106860; // type:function size:0x34 -fn_801068A0 = .text:0x801068A0; // type:function size:0x90 -fn_80106930 = .text:0x80106930; // type:function size:0xC -fn_80106940 = .text:0x80106940; // type:function size:0x44 -fn_80106990 = .text:0x80106990; // type:function size:0x5C -fn_801069F0 = .text:0x801069F0; // type:function size:0x80 -fn_80106A70 = .text:0x80106A70; // type:function size:0x8 -fn_80106A80 = .text:0x80106A80; // type:function size:0x44 -fn_80106AD0 = .text:0x80106AD0; // type:function size:0x60 -LytMeterTimer__incrementTearcount = .text:0x80106B30; // type:function size:0xF4 -fn_80106C30 = .text:0x80106C30; // type:function size:0x394 -fn_80106FD0 = .text:0x80106FD0; // type:function size:0x108 -fn_801070E0 = .text:0x801070E0; // type:function size:0x34 -fn_80107120 = .text:0x80107120; // type:function size:0xD8 -fn_80107200 = .text:0x80107200; // type:function size:0x58 -fn_80107260 = .text:0x80107260; // type:function size:0xA0 -fn_80107300 = .text:0x80107300; // type:function size:0x90 -fn_80107390 = .text:0x80107390; // type:function size:0x74 -fn_80107410 = .text:0x80107410; // type:function size:0x74 -fn_80107490 = .text:0x80107490; // type:function size:0x74 -fn_80107510 = .text:0x80107510; // type:function size:0x74 -fn_80107590 = .text:0x80107590; // type:function size:0x74 -fn_80107610 = .text:0x80107610; // type:function size:0x74 -fn_80107690 = .text:0x80107690; // type:function size:0x74 -fn_80107710 = .text:0x80107710; // type:function size:0xD0 -fn_801077E0 = .text:0x801077E0; // type:function size:0xD0 -fn_801078B0 = .text:0x801078B0; // type:function size:0x74 -fn_80107930 = .text:0x80107930; // type:function size:0x74 -fn_801079B0 = .text:0x801079B0; // type:function size:0xC0 -fn_80107A70 = .text:0x80107A70; // type:function size:0xC -fn_80107A80 = .text:0x80107A80; // type:function size:0x1C -fn_80107AA0 = .text:0x80107AA0; // type:function size:0xC -fn_80107AB0 = .text:0x80107AB0; // type:function size:0xC -fn_80107AC0 = .text:0x80107AC0; // type:function size:0xC -fn_80107AD0 = .text:0x80107AD0; // type:function size:0x48 -fn_80107B20 = .text:0x80107B20; // type:function size:0x60 -fn_80107B80 = .text:0x80107B80; // type:function size:0x204 -fn_80107D90 = .text:0x80107D90; // type:function size:0xC0 -fn_80107E50 = .text:0x80107E50; // type:function size:0xD4 -fn_80107F30 = .text:0x80107F30; // type:function size:0x54 -fn_80107F90 = .text:0x80107F90; // type:function size:0xC -fn_80107FA0 = .text:0x80107FA0; // type:function size:0xC8 -fn_80108070 = .text:0x80108070; // type:function size:0xE4 -fn_80108160 = .text:0x80108160; // type:function size:0xC -fn_80108170 = .text:0x80108170; // type:function size:0xC -fn_80108180 = .text:0x80108180; // type:function size:0x1C -fn_801081A0 = .text:0x801081A0; // type:function size:0xC -fn_801081B0 = .text:0x801081B0; // type:function size:0xC -fn_801081C0 = .text:0x801081C0; // type:function size:0xC -fn_801081D0 = .text:0x801081D0; // type:function size:0xC -fn_801081E0 = .text:0x801081E0; // type:function size:0x68 -fn_80108250 = .text:0x80108250; // type:function size:0x74 -fn_801082D0 = .text:0x801082D0; // type:function size:0xAC -fn_80108380 = .text:0x80108380; // type:function size:0x74 -fn_80108400 = .text:0x80108400; // type:function size:0xB4 -fn_801084C0 = .text:0x801084C0; // type:function size:0xC -fn_801084D0 = .text:0x801084D0; // type:function size:0xC -fn_801084E0 = .text:0x801084E0; // type:function size:0x44 -fn_80108530 = .text:0x80108530; // type:function size:0x44 -fn_80108580 = .text:0x80108580; // type:function size:0x40 -fn_801085C0 = .text:0x801085C0; // type:function size:0x44 -fn_80108610 = .text:0x80108610; // type:function size:0x44 -fn_80108660 = .text:0x80108660; // type:function size:0x44 -fn_801086B0 = .text:0x801086B0; // type:function size:0x5C -fn_80108710 = .text:0x80108710; // type:function size:0x44 -fn_80108760 = .text:0x80108760; // type:function size:0x44 -fn_801087B0 = .text:0x801087B0; // type:function size:0x44 -fn_80108800 = .text:0x80108800; // type:function size:0xB4 -fn_801088C0 = .text:0x801088C0; // type:function size:0xC8 -fn_80108990 = .text:0x80108990; // type:function size:0xEC -fn_80108A80 = .text:0x80108A80; // type:function size:0x88 -fn_80108B10 = .text:0x80108B10; // type:function size:0x5C -fn_80108B70 = .text:0x80108B70; // type:function size:0x5C -fn_80108BD0 = .text:0x80108BD0; // type:function size:0x14 -fn_80108BF0 = .text:0x80108BF0; // type:function size:0x284 -fn_80108E80 = .text:0x80108E80; // type:function size:0xC4 -fn_80108F50 = .text:0x80108F50; // type:function size:0xC4 -LytMeterTimer__stateChangeSirenEnter = .text:0x80109020; // type:function size:0x4 -LytMeterTimer__stateChangeSirenUpdate = .text:0x80109030; // type:function size:0x204 -LytMeterTimer__stateChangeSirenLeave = .text:0x80109240; // type:function size:0x4 -LytMeterTimer__stateSirenEnter = .text:0x80109250; // type:function size:0x4 -LytMeterTimer__stateSirenUpdate = .text:0x80109260; // type:function size:0xC8 -LytMeterTimer__stateSirenLeave = .text:0x80109330; // type:function size:0x4 -LytMeterTimer__stateSafeBloomEnter = .text:0x80109340; // type:function size:0x4 -LytMeterTimer__stateSafeBloomUpdate = .text:0x80109350; // type:function size:0xB8 -LytMeterTimer__stateSafeBloomLeave = .text:0x80109410; // type:function size:0x4 -LytMeterTimer__stateChangeSafeEnter = .text:0x80109420; // type:function size:0x4 -LytMeterTimer__stateChangeSafeUpdate = .text:0x80109430; // type:function size:0x118 -LytMeterTimer__stateChangeSafeLeave = .text:0x80109550; // type:function size:0x4 -LytMeterTimer__stateSafeEnter = .text:0x80109560; // type:function size:0x4 -LytMeterTimer__stateSafeUpdate = .text:0x80109570; // type:function size:0x280 -LytMeterTimer__stateSafeLeave = .text:0x801097F0; // type:function size:0x4 -LytMeterTimer__stateChangeFruitsEnter = .text:0x80109800; // type:function size:0x4 -LytMeterTimer__stateChangeFruitsUpdate = .text:0x80109810; // type:function size:0x218 -LytMeterTimer__stateChangeFruitsLeave = .text:0x80109A30; // type:function size:0x4 -LytMeterTimer__stateFruitsEnter = .text:0x80109A40; // type:function size:0xC -LytMeterTimer__stateFruitsUpdate = .text:0x80109A50; // type:function size:0x68 -LytMeterTimer__stateFruitsLeave = .text:0x80109AC0; // type:function size:0x4 +build__20LytMeterTimerPart1_cFPQ23d2d10ResAccIf_c = .text:0x80105F70; // type:function size:0xFC +remove__20LytMeterTimerPart1_cFv = .text:0x80106070; // type:function size:0x58 +execute__20LytMeterTimerPart1_cFv = .text:0x801060D0; // type:function size:0xB4 +init__20LytMeterTimerPart1_cFv = .text:0x80106190; // type:function size:0x68 +initInAnim__20LytMeterTimerPart1_cFv = .text:0x80106200; // type:function size:0x74 +initLoopAnim__20LytMeterTimerPart1_cFv = .text:0x80106280; // type:function size:0x14C +initBowlNuts__20LytMeterTimerPart1_cFv = .text:0x801063D0; // type:function size:0xC0 +resetBowlNuts__20LytMeterTimerPart1_cFv = .text:0x80106490; // type:function size:0xC4 +initOutAnim__20LytMeterTimerPart1_cFv = .text:0x80106560; // type:function size:0x74 +startInAnim__20LytMeterTimerPart1_cFv = .text:0x801065E0; // type:function size:0xC0 +realizeTrial__20LytMeterTimerPart1_cFv = .text:0x801066A0; // type:function size:0xBC +startNextFruitAnim__20LytMeterTimerPart1_cFv = .text:0x80106760; // type:function size:0x48 +startFruitAnim__20LytMeterTimerPart1_cFl = .text:0x801067B0; // type:function size:0x3C +startOutAnim__20LytMeterTimerPart1_cFv = .text:0x801067F0; // type:function size:0x54 +stopInAnim__20LytMeterTimerPart1_cFv = .text:0x80106850; // type:function size:0xC +disableCurrentFruitAnim__20LytMeterTimerPart1_cFv = .text:0x80106860; // type:function size:0x34 +stopFinishedFruit__20LytMeterTimerPart1_cFv = .text:0x801068A0; // type:function size:0x90 +stopOutAnim__20LytMeterTimerPart1_cFv = .text:0x80106930; // type:function size:0xC +isInAnimFinished__20LytMeterTimerPart1_cFv = .text:0x80106940; // type:function size:0x44 +isCurrentFruitAnimFinished__20LytMeterTimerPart1_cFv = .text:0x80106990; // type:function size:0x5C +isAnyFruitAnimFinished__20LytMeterTimerPart1_cFv = .text:0x801069F0; // type:function size:0x80 +isLastFruitAnimFinished__20LytMeterTimerPart1_cFv = .text:0x80106A70; // type:function size:0x8 +isOutAnimFinished__20LytMeterTimerPart1_cFv = .text:0x80106A80; // type:function size:0x44 +isAnyFruitAnimAtFrame__20LytMeterTimerPart1_cCFf = .text:0x80106AD0; // type:function size:0x60 +incrementTearCount__20LytMeterTimerPart1_cFv = .text:0x80106B30; // type:function size:0xF4 +initColors__20LytMeterTimerPart1_cFv = .text:0x80106C30; // type:function size:0x394 +createEffect__20LytMeterTimerPart1_cFl = .text:0x80106FD0; // type:function size:0x108 +updateDropLine__20LytMeterTimerPart1_cFPQ34nw4r3lyt4Pane = .text:0x801070E0; // type:function size:0x34 +build__20LytMeterTimerPart2_cFPQ23d2d10ResAccIf_c = .text:0x80107120; // type:function size:0xD8 +remove__20LytMeterTimerPart2_cFv = .text:0x80107200; // type:function size:0x58 +execute__20LytMeterTimerPart2_cFv = .text:0x80107260; // type:function size:0xA0 +init__20LytMeterTimerPart2_cFv = .text:0x80107300; // type:function size:0x90 +initInAnim__20LytMeterTimerPart2_cFv = .text:0x80107390; // type:function size:0x74 +initBloomAnim__20LytMeterTimerPart2_cFv = .text:0x80107410; // type:function size:0x74 +initBeforeFallAnim__20LytMeterTimerPart2_cFv = .text:0x80107490; // type:function size:0x74 +initChangeSirenAnim__20LytMeterTimerPart2_cFv = .text:0x80107510; // type:function size:0x74 +initSirenLoopAnim__20LytMeterTimerPart2_cFv = .text:0x80107590; // type:function size:0x74 +initSirenSafeAnim__20LytMeterTimerPart2_cFv = .text:0x80107610; // type:function size:0x74 +initFlowerLoopAnim__20LytMeterTimerPart2_cFv = .text:0x80107690; // type:function size:0x74 +initDyingAnims__20LytMeterTimerPart2_cFv = .text:0x80107710; // type:function size:0xD0 +initFallOutAnims__20LytMeterTimerPart2_cFv = .text:0x801077E0; // type:function size:0xD0 +initOutAnim__20LytMeterTimerPart2_cFv = .text:0x801078B0; // type:function size:0x74 +initChangeFruitAnim__20LytMeterTimerPart2_cFv = .text:0x80107930; // type:function size:0x74 +startInAnim__20LytMeterTimerPart2_cFv = .text:0x801079B0; // type:function size:0xC0 +enableBloomAnim__20LytMeterTimerPart2_cFv = .text:0x80107A70; // type:function size:0xC +enableBeforeFallAnim__20LytMeterTimerPart2_cFv = .text:0x80107A80; // type:function size:0x1C +enableChangeSirenAnim__20LytMeterTimerPart2_cFv = .text:0x80107AA0; // type:function size:0xC +enableSirenLoopAnim__20LytMeterTimerPart2_cFv = .text:0x80107AB0; // type:function size:0xC +enableSafeAnim__20LytMeterTimerPart2_cFv = .text:0x80107AC0; // type:function size:0xC +resumeFlowerLoop__20LytMeterTimerPart2_cFv = .text:0x80107AD0; // type:function size:0x48 +startFlowerLoop__20LytMeterTimerPart2_cFv = .text:0x80107B20; // type:function size:0x60 +syncPetalsTime__20LytMeterTimerPart2_cFv = .text:0x80107B80; // type:function size:0x204 +updatePetalsRate__20LytMeterTimerPart2_cFv = .text:0x80107D90; // type:function size:0xC0 +restartPetals__20LytMeterTimerPart2_cFv = .text:0x80107E50; // type:function size:0xD4 +startOutAnim__20LytMeterTimerPart2_cFv = .text:0x80107F30; // type:function size:0x54 +enableChangeFruitAnim__20LytMeterTimerPart2_cFv = .text:0x80107F90; // type:function size:0xC +syncTime__20LytMeterTimerPart2_cFv = .text:0x80107FA0; // type:function size:0xC8 +syncTimeWithSafe__20LytMeterTimerPart2_cFv = .text:0x80108070; // type:function size:0xE4 +stopInAnim__20LytMeterTimerPart2_cFv = .text:0x80108160; // type:function size:0xC +stopBloomAnim__20LytMeterTimerPart2_cFv = .text:0x80108170; // type:function size:0xC +stopBeforeFallAnim__20LytMeterTimerPart2_cFv = .text:0x80108180; // type:function size:0x1C +stopChangeSirenAnim__20LytMeterTimerPart2_cFv = .text:0x801081A0; // type:function size:0xC +stopSirenLoopAnim__20LytMeterTimerPart2_cFv = .text:0x801081B0; // type:function size:0xC +stopSirenSafeAnim__20LytMeterTimerPart2_cFv = .text:0x801081C0; // type:function size:0xC +stopFlowerLoopAnim__20LytMeterTimerPart2_cFv = .text:0x801081D0; // type:function size:0xC +resetFlowerLoopAnim__20LytMeterTimerPart2_cFv = .text:0x801081E0; // type:function size:0x68 +stopDyingAnims__20LytMeterTimerPart2_cFv = .text:0x80108250; // type:function size:0x74 +stopFinishedDyingAnims__20LytMeterTimerPart2_cFv = .text:0x801082D0; // type:function size:0xAC +stopFallOutAnims__20LytMeterTimerPart2_cFv = .text:0x80108380; // type:function size:0x74 +stopFinishedFallOutAnims__20LytMeterTimerPart2_cFv = .text:0x80108400; // type:function size:0xB4 +stopOutAnim__20LytMeterTimerPart2_cFv = .text:0x801084C0; // type:function size:0xC +stopChangeFruitAnim__20LytMeterTimerPart2_cFv = .text:0x801084D0; // type:function size:0xC +isInAnimFinished__20LytMeterTimerPart2_cFv = .text:0x801084E0; // type:function size:0x44 +isBloomAnimFinished__20LytMeterTimerPart2_cFv = .text:0x80108530; // type:function size:0x44 +isBeforeFallAnimAtStart__20LytMeterTimerPart2_cFv = .text:0x80108580; // type:function size:0x40 +isChangeSirenAnimFinished__20LytMeterTimerPart2_cFv = .text:0x801085C0; // type:function size:0x44 +isSirenSafeAnimFinished__20LytMeterTimerPart2_cFv = .text:0x80108610; // type:function size:0x44 +isFlowerLoopAnimFinished__20LytMeterTimerPart2_cFv = .text:0x80108660; // type:function size:0x44 +isPetalDyingAnimFinished__20LytMeterTimerPart2_cFv = .text:0x801086B0; // type:function size:0x5C +isFirstFallOutAnimFinished__20LytMeterTimerPart2_cFv = .text:0x80108710; // type:function size:0x44 +isOutAnimFinished__20LytMeterTimerPart2_cFv = .text:0x80108760; // type:function size:0x44 +isChangeFruitAnimFinished__20LytMeterTimerPart2_cFv = .text:0x801087B0; // type:function size:0x44 +realizeFruitsColor__20LytMeterTimerPart2_cFv = .text:0x80108800; // type:function size:0xB4 +finishDyingAnims__20LytMeterTimerPart2_cFv = .text:0x801088C0; // type:function size:0xC8 +setPetalsToStart__20LytMeterTimerPart2_cFv = .text:0x80108990; // type:function size:0xEC +realizePetalsOnOff__20LytMeterTimerPart2_cFv = .text:0x80108A80; // type:function size:0x88 +finishSingleAnim__20LytMeterTimerPart2_cFUc = .text:0x80108B10; // type:function size:0x5C +resetSingleAnim__20LytMeterTimerPart2_cFUc = .text:0x80108B70; // type:function size:0x5C +calc__20LytMeterTimerPart2_cFv = .text:0x80108BD0; // type:function size:0x14 +initColors__20LytMeterTimerPart2_cFv = .text:0x80108BF0; // type:function size:0x284 +createSingleFruitEffect__20LytMeterTimerPart2_cFv = .text:0x80108E80; // type:function size:0xC4 +createFruitCompleteEffect__20LytMeterTimerPart2_cFv = .text:0x80108F50; // type:function size:0xC4 +initializeState_ChangeSiren__16dLytMeterTimer_cFv = .text:0x80109020; // type:function size:0x4 +executeState_ChangeSiren__16dLytMeterTimer_cFv = .text:0x80109030; // type:function size:0x204 +finalizeState_ChangeSiren__16dLytMeterTimer_cFv = .text:0x80109240; // type:function size:0x4 +initializeState_Siren__16dLytMeterTimer_cFv = .text:0x80109250; // type:function size:0x4 +executeState_Siren__16dLytMeterTimer_cFv = .text:0x80109260; // type:function size:0xC8 +finalizeState_Siren__16dLytMeterTimer_cFv = .text:0x80109330; // type:function size:0x4 +initializeState_ChangeSafeBloom__16dLytMeterTimer_cFv = .text:0x80109340; // type:function size:0x4 +executeState_ChangeSafeBloom__16dLytMeterTimer_cFv = .text:0x80109350; // type:function size:0xB8 +finalizeState_ChangeSafeBloom__16dLytMeterTimer_cFv = .text:0x80109410; // type:function size:0x4 +initializeState_ChangeSafe__16dLytMeterTimer_cFv = .text:0x80109420; // type:function size:0x4 +executeState_ChangeSafe__16dLytMeterTimer_cFv = .text:0x80109430; // type:function size:0x118 +finalizeState_ChangeSafe__16dLytMeterTimer_cFv = .text:0x80109550; // type:function size:0x4 +initializeState_Safe__16dLytMeterTimer_cFv = .text:0x80109560; // type:function size:0x4 +executeState_Safe__16dLytMeterTimer_cFv = .text:0x80109570; // type:function size:0x280 +finalizeState_Safe__16dLytMeterTimer_cFv = .text:0x801097F0; // type:function size:0x4 +initializeState_ChangeFruits__16dLytMeterTimer_cFv = .text:0x80109800; // type:function size:0x4 +executeState_ChangeFruits__16dLytMeterTimer_cFv = .text:0x80109810; // type:function size:0x218 +finalizeState_ChangeFruits__16dLytMeterTimer_cFv = .text:0x80109A30; // type:function size:0x4 +initializeState_Fruits__16dLytMeterTimer_cFv = .text:0x80109A40; // type:function size:0xC +executeState_Fruits__16dLytMeterTimer_cFv = .text:0x80109A50; // type:function size:0x68 +finalizeState_Fruits__16dLytMeterTimer_cFv = .text:0x80109AC0; // type:function size:0x4 build__16dLytMeterTimer_cFv = .text:0x80109AD0; // type:function size:0xC0 remove__16dLytMeterTimer_cFv = .text:0x80109B90; // type:function size:0x14 -LytMeterTimer__update = .text:0x80109BB0; // type:function size:0x194 -fn_80109D50 = .text:0x80109D50; // type:function size:0x38 -fn_80109D90 = .text:0x80109D90; // type:function size:0x38 -fn_80109DD0 = .text:0x80109DD0; // type:function size:0x20C -fn_80109FE0 = .text:0x80109FE0; // type:function size:0x100 -fn_8010A0E0 = .text:0x8010A0E0; // type:function size:0x54 -fn_8010A140 = .text:0x8010A140; // type:function size:0x158 -fn_8010A2A0 = .text:0x8010A2A0; // type:function size:0xC8 -fn_8010A370 = .text:0x8010A370; // type:function size:0x18 -fn_8010A390 = .text:0x8010A390; // type:function size:0x100 -fn_8010A490 = .text:0x8010A490; // type:function size:0x18 -fn_8010A4B0 = .text:0x8010A4B0; // type:function size:0x48 -fn_8010A500 = .text:0x8010A500; // type:function size:0x118 -fn_8010A620 = .text:0x8010A620; // type:function size:0x70 -fn_8010A690 = .text:0x8010A690; // type:function size:0x60 -fn_8010A6F0 = .text:0x8010A6F0; // type:function size:0x80 -fn_8010A770 = .text:0x8010A770; // type:function size:0x44 -fn_8010A7C0 = .text:0x8010A7C0; // type:function size:0x5C -fn_8010A820 = .text:0x8010A820; // type:function size:0x8 -fn_8010A830 = .text:0x8010A830; // type:function size:0x8 -fn_8010A840 = .text:0x8010A840; // type:function size:0x8 -fn_8010A850 = .text:0x8010A850; // type:function size:0x8 +execute__16dLytMeterTimer_cFv = .text:0x80109BB0; // type:function size:0x194 +startIn2__16dLytMeterTimer_cFv = .text:0x80109D50; // type:function size:0x38 +startOut2__16dLytMeterTimer_cFv = .text:0x80109D90; // type:function size:0x38 +startIn__16dLytMeterTimer_cFv = .text:0x80109DD0; // type:function size:0x20C +gotoChangeSiren__16dLytMeterTimer_cFv = .text:0x80109FE0; // type:function size:0x100 +gotoSiren__16dLytMeterTimer_cFv = .text:0x8010A0E0; // type:function size:0x54 +gotoChangeSafeBloom__16dLytMeterTimer_cFv = .text:0x8010A140; // type:function size:0x158 +gotoChangeSafe__16dLytMeterTimer_cFv = .text:0x8010A2A0; // type:function size:0xC8 +gotoSafe__16dLytMeterTimer_cFv = .text:0x8010A370; // type:function size:0x18 +gotoChangeFruits6__16dLytMeterTimer_cFv = .text:0x8010A390; // type:function size:0x100 +gotoFruits__16dLytMeterTimer_cFv = .text:0x8010A490; // type:function size:0x18 +startOut__16dLytMeterTimer_cFv = .text:0x8010A4B0; // type:function size:0x48 +gotoChangeFruits3__16dLytMeterTimer_cFv = .text:0x8010A500; // type:function size:0x118 +startSafe__16dLytMeterTimer_cFv = .text:0x8010A620; // type:function size:0x70 +doPickup__16dLytMeterTimer_cFv = .text:0x8010A690; // type:function size:0x60 +isInSiren__16dLytMeterTimer_cFv = .text:0x8010A6F0; // type:function size:0x80 +getPetalForTimerMaybe__16dLytMeterTimer_cFl = .text:0x8010A770; // type:function size:0x44 +checkForPetalChangeMaybe__16dLytMeterTimer_cFv = .text:0x8010A7C0; // type:function size:0x5C +getName__20LytMeterTimerPart2_cCFv = .text:0x8010A820; // type:function size:0x8 +getPane__20LytMeterTimerPart2_cFv = .text:0x8010A830; // type:function size:0x8 +getName__20LytMeterTimerPart1_cCFv = .text:0x8010A840; // type:function size:0x8 +getPane__20LytMeterTimerPart1_cFv = .text:0x8010A850; // type:function size:0x8 __sinit_\d_lyt_meter_timer_cpp = .text:0x8010A860; // type:function size:0x56C scope:local __dt__31sFStateID_c<16dLytMeterTimer_c>Fv = .text:0x8010ADD0; // type:function size:0x58 isSameName__31sFStateID_c<16dLytMeterTimer_c>CFPCc = .text:0x8010AE30; // type:function size:0x88 -fn_8010AEC0 = .text:0x8010AEC0; // type:function size:0x1AC -fn_8010B070 = .text:0x8010B070; // type:function size:0x8 -fn_8010B080 = .text:0x8010B080; // type:function size:0x44C -fn_8010B4D0 = .text:0x8010B4D0; // type:function size:0x10 -fn_8010B4E0 = .text:0x8010B4E0; // type:function size:0x24 -fn_8010B510 = .text:0x8010B510; // type:function size:0x330 -fn_8010B840 = .text:0x8010B840; // type:function size:0x480 -fn_8010BCC0 = .text:0x8010BCC0; // type:function size:0x28 -getHealthCapacityIncludingHeartMedals2 = .text:0x8010BCF0; // type:function size:0x24 -fn_8010BD20 = .text:0x8010BD20; // type:function size:0x8 -fn_8010BD30 = .text:0x8010BD30; // type:function size:0x8 -fn_8010BD40 = .text:0x8010BD40; // type:function size:0x8 +build__16dLytMeterHeart_cFPQ23d2d10ResAccIf_c = .text:0x8010AEC0; // type:function size:0x1AC +remove__16dLytMeterHeart_cFv = .text:0x8010B070; // type:function size:0x8 +execute__16dLytMeterHeart_cFv = .text:0x8010B080; // type:function size:0x44C +getNumDisplayedHearts__16dLytMeterHeart_cCFv = .text:0x8010B4D0; // type:function size:0x10 +getDisplayedHealthCapacity__16dLytMeterHeart_cCFv = .text:0x8010B4E0; // type:function size:0x24 +realizeHeartsState__16dLytMeterHeart_cFv = .text:0x8010B510; // type:function size:0x330 +executeInternal__16dLytMeterHeart_cFv = .text:0x8010B840; // type:function size:0x480 +getCurrentHealth__16dLytMeterHeart_cCFv = .text:0x8010BCC0; // type:function size:0x28 +getCurrentHealthCapacity__16dLytMeterHeart_cCFv = .text:0x8010BCF0; // type:function size:0x24 +getName__16dLytMeterHeart_cCFv = .text:0x8010BD20; // type:function size:0x8 +getLyt__16dLytMeterHeart_cFv = .text:0x8010BD30; // type:function size:0x8 +getPane__16dLytMeterHeart_cFv = .text:0x8010BD40; // type:function size:0x8 initializeState_Normal__22dLytMeterShieldGauge_cFv = .text:0x8010BD50; // type:function size:0x4 executeState_Normal__22dLytMeterShieldGauge_cFv = .text:0x8010BD60; // type:function size:0x4 finalizeState_Normal__22dLytMeterShieldGauge_cFv = .text:0x8010BD70; // type:function size:0x4 @@ -6499,10 +6499,10 @@ executeState_ToMax__22dLytMeterShieldGauge_cFv = .text:0x8010BDC0; // type:funct finalizeState_ToMax__22dLytMeterShieldGauge_cFv = .text:0x8010BDD0; // type:function size:0x4 build__22dLytMeterShieldGauge_cFPQ23d2d10ResAccIf_c = .text:0x8010BDE0; // type:function size:0x2A0 remove__22dLytMeterShieldGauge_cFv = .text:0x8010C080; // type:function size:0x58 -fn_8010C0E0 = .text:0x8010C0E0; // type:function size:0x9C0 -fn_8010CAA0 = .text:0x8010CAA0; // type:function size:0x40 -fn_8010CAE0 = .text:0x8010CAE0; // type:function size:0x20 -fn_8010CB00 = .text:0x8010CB00; // type:function size:0x2C +execute__22dLytMeterShieldGauge_cFv = .text:0x8010C0E0; // type:function size:0x9C0 +setLevel__22dLytMeterShieldGauge_cFf = .text:0x8010CAA0; // type:function size:0x40 +getLytFrameForShield__22dLytMeterShieldGauge_cCFl = .text:0x8010CAE0; // type:function size:0x20 +calcUpdownRatio__22dLytMeterShieldGauge_cCFf = .text:0x8010CB00; // type:function size:0x2C getName__22dLytMeterShieldGauge_cCFv = .text:0x8010CB30; // type:function size:0x8 getLyt__22dLytMeterShieldGauge_cFv = .text:0x8010CB40; // type:function size:0x8 getPane__22dLytMeterShieldGauge_cFv = .text:0x8010CB50; // type:function size:0x8 @@ -6528,13 +6528,13 @@ executeState_Out__14dLytDobutton_cFv = .text:0x8010D3F0; // type:function size:0 finalizeState_Out__14dLytDobutton_cFv = .text:0x8010D480; // type:function size:0x4 init__14dLytDobutton_cFPQ23m2d10ResAccIf_c = .text:0x8010D490; // type:function size:0x1D4 remove__14dLytDobutton_cFv = .text:0x8010D670; // type:function size:0x50 -fn_8010D6C0 = .text:0x8010D6C0; // type:function size:0x80C +execute__14dLytDobutton_cFv = .text:0x8010D6C0; // type:function size:0x80C draw__14dLytDobutton_cFv = .text:0x8010DED0; // type:function size:0x28 fn_8010DF00 = .text:0x8010DF00; // type:function size:0x4CC fn_8010E3D0 = .text:0x8010E3D0; // type:function size:0x1F0 -LytDoButton__setActionTextStuff = .text:0x8010E5C0; // type:function size:0x10 -fn_8010E5D0 = .text:0x8010E5D0; // type:function size:0x8 -fn_8010E5E0 = .text:0x8010E5E0; // type:function size:0x1C +setActionTextStuffInternal__14dLytDobutton_cFllb = .text:0x8010E5C0; // type:function size:0x10 +fn_8010E5D0__14dLytDobutton_cCFv = .text:0x8010E5D0; // type:function size:0x8 +fn_8010E5E0__14dLytDobutton_cCFv = .text:0x8010E5E0; // type:function size:0x1C __sinit_\d_lyt_do_button_cpp = .text:0x8010E600; // type:function size:0x410 scope:local __dt__29sFStateID_c<14dLytDobutton_c>Fv = .text:0x8010EA10; // type:function size:0x58 isSameName__29sFStateID_c<14dLytDobutton_c>CFPCc = .text:0x8010EA70; // type:function size:0x88 @@ -6543,9 +6543,9 @@ 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_8010EE60 = .text:0x8010EE60; // type:function size:0xE8 +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 remove__16dLytCommonABtn_cFv = .text:0x8010F040; // type:function size:0x50 @@ -6736,7 +6736,7 @@ __dt__35sFStateID_c<20dLytCommonIconItem_c>Fv = .text:0x80113DF0; // type:functi isSameName__35sFStateID_c<20dLytCommonIconItem_c>CFPCc = .text:0x80113E50; // type:function size:0x88 build__20LytBirdButtonRelatedFPQ23d2d10ResAccIf_c = .text:0x80113EE0; // type:function size:0x224 remove__20LytBirdButtonRelatedFv = .text:0x80114110; // type:function size:0x58 -fn_80114170 = .text:0x80114170; // type:function size:0x10C +execute__20LytBirdButtonRelatedFv = .text:0x80114170; // type:function size:0x10C draw__20LytBirdButtonRelatedFv = .text:0x80114280; // type:function size:0x44 fn_801142D0 = .text:0x801142D0; // type:function size:0x168 fn_80114440 = .text:0x80114440; // type:function size:0x248 @@ -7404,7 +7404,7 @@ fn_8012AE70 = .text:0x8012AE70; // type:function size:0x8 LytSimpleWindow__displayText = .text:0x8012AE80; // type:function size:0x11C fn_8012AFA0 = .text:0x8012AFA0; // type:function size:0x4C fn_8012AFF0 = .text:0x8012AFF0; // type:function size:0x10 -fn_8012B000 = .text:0x8012B000; // type:function size:0x50 +fn_8012B000__18dLytSimpleWindow_cFv = .text:0x8012B000; // type:function size:0x50 fn_8012B050 = .text:0x8012B050; // type:function size:0xD4 fn_8012B130 = .text:0x8012B130; // type:function size:0xF4 fn_8012B230 = .text:0x8012B230; // type:function size:0xA4 @@ -7444,7 +7444,7 @@ isDoneClosing__17dLytAutoCaption_cCFv = .text:0x8012BF70; // type:function size: setText__17dLytAutoCaption_cFPCw = .text:0x8012BFC0; // type:function size:0x64 checkSomethingMeter__17dLytAutoCaption_cFv = .text:0x8012C030; // type:function size:0xF4 getTextBox__17dLytAutoCaption_cFv = .text:0x8012C130; // type:function size:0x8 -__sinit_\d_lyt_auto_caption_cpp = .text:0x8012C140; // type:function size:0x338 +__sinit_\d_lyt_auto_caption_cpp = .text:0x8012C140; // type:function size:0x338 scope:local __dt__32sFStateID_c<17dLytAutoCaption_c>Fv = .text:0x8012C480; // type:function size:0x58 isSameName__32sFStateID_c<17dLytAutoCaption_c>CFPCc = .text:0x8012C4E0; // type:function size:0x88 initializeState_Invisible__17dLytAutoExplain_cFv = .text:0x8012C570; // type:function size:0x4 @@ -7470,7 +7470,7 @@ isDoneClosing__17dLytAutoExplain_cCFv = .text:0x8012CB80; // type:function size: setText__17dLytAutoExplain_cFPCw = .text:0x8012CBD0; // type:function size:0x7C checkSomethingMeter__17dLytAutoExplain_cFv = .text:0x8012CC50; // type:function size:0xF4 getTextBox__17dLytAutoExplain_cFv = .text:0x8012CD50; // type:function size:0x8 -__sinit_\d_lyt_auto_explain_cpp = .text:0x8012CD60; // type:function size:0x338 +__sinit_\d_lyt_auto_explain_cpp = .text:0x8012CD60; // type:function size:0x338 scope:local __dt__32sFStateID_c<17dLytAutoExplain_c>Fv = .text:0x8012D0A0; // type:function size:0x58 isSameName__32sFStateID_c<17dLytAutoExplain_c>CFPCc = .text:0x8012D100; // type:function size:0x88 fn_8012D190 = .text:0x8012D190; // type:function size:0x68 @@ -7839,7 +7839,7 @@ fn_80139680 = .text:0x80139680; // type:function size:0x14 fn_801396A0 = .text:0x801396A0; // type:function size:0xA4 fn_80139750 = .text:0x80139750; // type:function size:0x5E8 fn_80139D40 = .text:0x80139D40; // type:function size:0x15C -fn_80139EA0 = .text:0x80139EA0; // type:function size:0x58 +fn_80139EA0__13dLytMapMain_cCFv = .text:0x80139EA0; // type:function size:0x58 fn_80139F00 = .text:0x80139F00; // type:function size:0x44 fn_80139F50 = .text:0x80139F50; // type:function size:0xE8 fn_8013A040 = .text:0x8013A040; // type:function size:0x3C @@ -8266,7 +8266,7 @@ finalizeState_Start__22dLytAreaCaptionParts_cFv = .text:0x8014B600; // type:func initializeState_Out__22dLytAreaCaptionParts_cFv = .text:0x8014B610; // type:function size:0x4 executeState_Out__22dLytAreaCaptionParts_cFv = .text:0x8014B620; // type:function size:0x98 finalizeState_Out__22dLytAreaCaptionParts_cFv = .text:0x8014B6C0; // type:function size:0x4 -fn_8014B6D0 = .text:0x8014B6D0; // type:function size:0x1CC +shouldImmediatelyDismiss__22dLytAreaCaptionParts_cCFv = .text:0x8014B6D0; // type:function size:0x1CC create__17dLytAreaCaption_cFv = .text:0x8014B8A0; // type:function size:0x74 __ct__22dLytAreaCaptionParts_cFv = .text:0x8014B920; // type:function size:0x10C __dt__35sFState_c<22dLytAreaCaptionParts_c>Fv = .text:0x8014BA30; // type:function size:0x58 @@ -8280,8 +8280,8 @@ draw__17dLytAreaCaption_cFv = .text:0x8014BE00; // type:function size:0x30 setTextIfWaiting__17dLytAreaCaption_cFPCc = .text:0x8014BE30; // type:function size:0x1C setArea__17dLytAreaCaption_cFi = .text:0x8014BE50; // type:function size:0x1C check__17dLytAreaCaption_cFv = .text:0x8014BE70; // type:function size:0x14 -set0xAAC__17dLytAreaCaption_cFUc = .text:0x8014BE90; // type:function size:0x14 -get0xAAC__17dLytAreaCaption_cFv = .text:0x8014BEB0; // type:function size:0x1C +setVisible__17dLytAreaCaption_cFb = .text:0x8014BE90; // type:function size:0x14 +getVisible__17dLytAreaCaption_cFv = .text:0x8014BEB0; // type:function size:0x1C init__17dLytAreaCaption_cFv = .text:0x8014BED0; // type:function size:0x70 deinit__17dLytAreaCaption_cFv = .text:0x8014BF40; // type:function size:0x50 doUpdate__17dLytAreaCaption_cFv = .text:0x8014BF90; // type:function size:0x50 @@ -8306,76 +8306,76 @@ initializeState__37sFStateID_c<22dLytAreaCaptionParts_c>CFR22dLytAreaCaptionPart __sinit_\d_lyt_area_caption_cpp = .text:0x8014C350; // type:function size:0x27C scope:local __dt__37sFStateID_c<22dLytAreaCaptionParts_c>Fv = .text:0x8014C5D0; // type:function size:0x58 isSameName__37sFStateID_c<22dLytAreaCaptionParts_c>CFPCc = .text:0x8014C630; // type:function size:0x88 -fn_8014C6C0 = .text:0x8014C6C0; // type:function size:0x4 -fn_8014C6D0 = .text:0x8014C6D0; // type:function size:0xC -fn_8014C6E0 = .text:0x8014C6E0; // type:function size:0x4 -fn_8014C6F0 = .text:0x8014C6F0; // type:function size:0x4 -fn_8014C700 = .text:0x8014C700; // type:function size:0x40 -fn_8014C740 = .text:0x8014C740; // type:function size:0x4 -fn_8014C750 = .text:0x8014C750; // type:function size:0x4 -fn_8014C760 = .text:0x8014C760; // type:function size:0xC -fn_8014C770 = .text:0x8014C770; // type:function size:0x4 -fn_8014C780 = .text:0x8014C780; // type:function size:0x4 -fn_8014C790 = .text:0x8014C790; // type:function size:0x40 -fn_8014C7D0 = .text:0x8014C7D0; // type:function size:0x4 -LytWipe__ctor = .text:0x8014C7E0; // type:function size:0xC0 -fn_8014C8A0 = .text:0x8014C8A0; // type:function size:0xA4 -fn_8014C950 = .text:0x8014C950; // type:function size:0xA0 -fn_8014C9F0 = .text:0x8014C9F0; // type:function size:0x6C -fn_8014CA60 = .text:0x8014CA60; // type:function size:0x58 -fn_8014CAC0 = .text:0x8014CAC0; // type:function size:0xF0 -fn_8014CBB0 = .text:0x8014CBB0; // type:function size:0x3C -fn_8014CBF0 = .text:0x8014CBF0; // type:function size:0xBC -fn_8014CCB0 = .text:0x8014CCB0; // type:function size:0x10 -fn_8014CCC0 = .text:0x8014CCC0; // type:function size:0x10 -fn_8014CCD0 = .text:0x8014CCD0; // type:function size:0x58 -fn_8014CD30 = .text:0x8014CD30; // type:function size:0x94 -fn_8014CDD0 = .text:0x8014CDD0; // type:function size:0x4C -fn_8014CE20 = .text:0x8014CE20; // type:function size:0x7C -fn_8014CEA0 = .text:0x8014CEA0; // type:function size:0x10 -fn_8014CEB0 = .text:0x8014CEB0; // type:function size:0x28 -fn_8014CEE0 = .text:0x8014CEE0; // type:function size:0xC -fn_8014CEF0 = .text:0x8014CEF0; // type:function size:0x8C -fn_8014CF80 = .text:0x8014CF80; // type:function size:0x10 -fn_8014CF90 = .text:0x8014CF90; // type:function size:0x4 -fn_8014CFA0 = .text:0x8014CFA0; // type:function size:0x4 -fn_8014CFB0 = .text:0x8014CFB0; // type:function size:0xE0 -fn_8014D090 = .text:0x8014D090; // type:function size:0x4 -fn_8014D0A0 = .text:0x8014D0A0; // type:function size:0x4 -fn_8014D0B0 = .text:0x8014D0B0; // type:function size:0x74 -fn_8014D130 = .text:0x8014D130; // type:function size:0x4 -fn_8014D140 = .text:0x8014D140; // type:function size:0x4 -fn_8014D150 = .text:0x8014D150; // type:function size:0xFC -fn_8014D250 = .text:0x8014D250; // type:function size:0x4 -LytWipe__init = .text:0x8014D260; // type:function size:0x98 -fn_8014D300 = .text:0x8014D300; // type:function size:0x44 -fn_8014D350 = .text:0x8014D350; // type:function size:0x48 -fn_8014D3A0 = .text:0x8014D3A0; // type:function size:0x10 -fn_8014D3B0 = .text:0x8014D3B0; // type:function size:0xF4 -fn_8014D4B0 = .text:0x8014D4B0; // type:function size:0x10 -fn_8014D4C0 = .text:0x8014D4C0; // type:function size:0xD8 -fn_8014D5A0 = .text:0x8014D5A0; // type:function size:0x60 -fn_8014D600 = .text:0x8014D600; // type:function size:0xC -fn_8014D610 = .text:0x8014D610; // type:function size:0x1C -fn_8014D630 = .text:0x8014D630; // type:function size:0x1C -fn_8014D650 = .text:0x8014D650; // type:function size:0x1C -fn_8014D670 = .text:0x8014D670; // type:function size:0x10 -fn_8014D680 = .text:0x8014D680; // type:function size:0x10 -fn_8014D690 = .text:0x8014D690; // type:function size:0x10 -fn_8014D6A0 = .text:0x8014D6A0; // type:function size:0x10 -fn_8014D6B0 = .text:0x8014D6B0; // type:function size:0x10 -fn_8014D6C0 = .text:0x8014D6C0; // type:function size:0x10 -fn_8014D6D0 = .text:0x8014D6D0; // type:function size:0x30 -fn_8014D700 = .text:0x8014D700; // type:function size:0x30 -fn_8014D730 = .text:0x8014D730; // type:function size:0x30 -fn_8014D760 = .text:0x8014D760; // type:function size:0x30 -fn_8014D790 = .text:0x8014D790; // type:function size:0x30 -fn_8014D7C0 = .text:0x8014D7C0; // type:function size:0x30 -LytWipe__initStates = .text:0x8014D7F0; // type:function size:0x634 -LytWipe__LytWipeMain__state_dtor = .text:0x8014DE30; // type:function size:0x58 -LytWipe__state_dtor = .text:0x8014DE90; // type:function size:0x58 -fn_8014DEF0 = .text:0x8014DEF0; // type:function size:0x88 -fn_8014DF80 = .text:0x8014DF80; // type:function size:0x88 +initializeState_ModeNone__14dLytWipeMain_cFv = .text:0x8014C6C0; // type:function size:0x4 +executeState_ModeNone__14dLytWipeMain_cFv = .text:0x8014C6D0; // type:function size:0xC +finalizeState_ModeNone__14dLytWipeMain_cFv = .text:0x8014C6E0; // type:function size:0x4 +initializeState_ModeIn__14dLytWipeMain_cFv = .text:0x8014C6F0; // type:function size:0x4 +executeState_ModeIn__14dLytWipeMain_cFv = .text:0x8014C700; // type:function size:0x40 +finalizeState_ModeIn__14dLytWipeMain_cFv = .text:0x8014C740; // type:function size:0x4 +initializeState_ModeWait__14dLytWipeMain_cFv = .text:0x8014C750; // type:function size:0x4 +executeState_ModeWait__14dLytWipeMain_cFv = .text:0x8014C760; // type:function size:0xC +finalizeState_ModeWait__14dLytWipeMain_cFv = .text:0x8014C770; // type:function size:0x4 +initializeState_ModeOut__14dLytWipeMain_cFv = .text:0x8014C780; // type:function size:0x4 +executeState_ModeOut__14dLytWipeMain_cFv = .text:0x8014C790; // type:function size:0x40 +finalizeState_ModeOut__14dLytWipeMain_cFv = .text:0x8014C7D0; // type:function size:0x4 +__ct__14dLytWipeMain_cFv = .text:0x8014C7E0; // type:function size:0xC0 +__dt__53sFStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c>Fv = .text:0x8014C8A0; // type:function size:0xA4 +__dt__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014C950; // type:function size:0xA0 +__dt__30sFStateFct_c<14dLytWipeMain_c>Fv = .text:0x8014C9F0; // type:function size:0x6C +__dt__27sFState_c<14dLytWipeMain_c>Fv = .text:0x8014CA60; // type:function size:0x58 +build__14dLytWipeMain_cFPQ23d2d10ResAccIf_c = .text:0x8014CAC0; // type:function size:0xF0 +remove__14dLytWipeMain_cFv = .text:0x8014CBB0; // type:function size:0x3C +gotoIn__14dLytWipeMain_cFv = .text:0x8014CBF0; // type:function size:0xBC +changeState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8014CCB0; // type:function size:0x10 +finalizeState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014CCC0; // type:function size:0x10 +gotoWait__14dLytWipeMain_cFv = .text:0x8014CCD0; // type:function size:0x58 +gotoOut__14dLytWipeMain_cFv = .text:0x8014CD30; // type:function size:0x94 +gotoNone__14dLytWipeMain_cFv = .text:0x8014CDD0; // type:function size:0x4C +execute__14dLytWipeMain_cFv = .text:0x8014CE20; // type:function size:0x7C +executeState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014CEA0; // type:function size:0x10 +draw__14dLytWipeMain_cFv = .text:0x8014CEB0; // type:function size:0x28 +initializeState_None__10dLytWipe_cFv = .text:0x8014CEE0; // type:function size:0xC +executeState_None__10dLytWipe_cFv = .text:0x8014CEF0; // type:function size:0x8C +changeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8014CF80; // type:function size:0x10 +finalizeState_None__10dLytWipe_cFv = .text:0x8014CF90; // type:function size:0x4 +initializeState_In__10dLytWipe_cFv = .text:0x8014CFA0; // type:function size:0x4 +executeState_In__10dLytWipe_cFv = .text:0x8014CFB0; // type:function size:0xE0 +finalizeState_In__10dLytWipe_cFv = .text:0x8014D090; // type:function size:0x4 +initializeState_Wait__10dLytWipe_cFv = .text:0x8014D0A0; // type:function size:0x4 +executeState_Wait__10dLytWipe_cFv = .text:0x8014D0B0; // type:function size:0x74 +finalizeState_Wait__10dLytWipe_cFv = .text:0x8014D130; // type:function size:0x4 +initializeState_Out__10dLytWipe_cFv = .text:0x8014D140; // type:function size:0x4 +executeState_Out__10dLytWipe_cFv = .text:0x8014D150; // type:function size:0xFC +finalizeState_Out__10dLytWipe_cFv = .text:0x8014D250; // type:function size:0x4 +build__10dLytWipe_cFv = .text:0x8014D260; // type:function size:0x98 +remove__10dLytWipe_cFv = .text:0x8014D300; // type:function size:0x44 +execute__10dLytWipe_cFv = .text:0x8014D350; // type:function size:0x48 +executeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014D3A0; // type:function size:0x10 +draw__10dLytWipe_cFv = .text:0x8014D3B0; // type:function size:0xF4 +getStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014D4B0; // type:function size:0x10 +__dt__14dLytWipeMain_cFv = .text:0x8014D4C0; // type:function size:0xD8 +build__30sFStateFct_c<14dLytWipeMain_c>FRC12sStateIDIf_c = .text:0x8014D5A0; // type:function size:0x60 +dispose__30sFStateFct_c<14dLytWipeMain_c>FRP10sStateIf_c = .text:0x8014D600; // type:function size:0xC +initialize__27sFState_c<14dLytWipeMain_c>Fv = .text:0x8014D610; // type:function size:0x1C +execute__27sFState_c<14dLytWipeMain_c>Fv = .text:0x8014D630; // type:function size:0x1C +finalize__27sFState_c<14dLytWipeMain_c>Fv = .text:0x8014D650; // type:function size:0x1C +initializeState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014D670; // type:function size:0x10 +refreshState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014D680; // type:function size:0x10 +getState__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014D690; // type:function size:0x10 +getNewStateID__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014D6A0; // type:function size:0x10 +getStateID__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014D6B0; // type:function size:0x10 +getOldStateID__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014D6C0; // type:function size:0x10 +finalizeState__29sFStateID_c<14dLytWipeMain_c>CFR14dLytWipeMain_c = .text:0x8014D6D0; // type:function size:0x30 +executeState__29sFStateID_c<14dLytWipeMain_c>CFR14dLytWipeMain_c = .text:0x8014D700; // type:function size:0x30 +initializeState__29sFStateID_c<14dLytWipeMain_c>CFR14dLytWipeMain_c = .text:0x8014D730; // type:function size:0x30 +finalizeState__25sFStateID_c<10dLytWipe_c>CFR10dLytWipe_c = .text:0x8014D760; // type:function size:0x30 +executeState__25sFStateID_c<10dLytWipe_c>CFR10dLytWipe_c = .text:0x8014D790; // type:function size:0x30 +initializeState__25sFStateID_c<10dLytWipe_c>CFR10dLytWipe_c = .text:0x8014D7C0; // type:function size:0x30 +__sinit_\d_lyt_wipe_cpp = .text:0x8014D7F0; // type:function size:0x634 scope:local +__dt__29sFStateID_c<14dLytWipeMain_c>Fv = .text:0x8014DE30; // type:function size:0x58 +__dt__25sFStateID_c<10dLytWipe_c>Fv = .text:0x8014DE90; // type:function size:0x58 +isSameName__25sFStateID_c<10dLytWipe_c>CFPCc = .text:0x8014DEF0; // type:function size:0x88 +isSameName__29sFStateID_c<14dLytWipeMain_c>CFPCc = .text:0x8014DF80; // type:function size:0x88 LytHelp__LytHelpMain__stateModeNoneEnter = .text:0x8014E010; // type:function size:0x4 LytHelp__LytHelpMain__stateModeNoneUpdate = .text:0x8014E020; // type:function size:0xC LytHelp__LytHelpMain__stateModeNoneLeave = .text:0x8014E030; // type:function size:0x4 @@ -8724,11 +8724,11 @@ fn_80158530 = .text:0x80158530; // type:function size:0x4 fn_80158540 = .text:0x80158540; // type:function size:0x80 fn_801585C0 = .text:0x801585C0; // type:function size:0x4 build__15dLytBossGauge_cFv = .text:0x801585D0; // type:function size:0x188 -fn_80158760 = .text:0x80158760; // type:function size:0x100 +execute__15dLytBossGauge_cFv = .text:0x80158760; // type:function size:0x100 draw__15dLytBossGauge_cFv = .text:0x80158860; // type:function size:0x68 remove__15dLytBossGauge_cFv = .text:0x801588D0; // type:function size:0x5C -fn_80158930 = .text:0x80158930; // type:function size:0x10 -fn_80158940 = .text:0x80158940; // type:function size:0x108 +setMode__15dLytBossGauge_cFl = .text:0x80158930; // type:function size:0x10 +fn_80158940__15dLytBossGauge_cFv = .text:0x80158940; // type:function size:0x108 __sinit_\d_lyt_boss_gauge_cpp = .text:0x80158A50; // type:function size:0x338 scope:local __dt__30sFStateID_c<15dLytBossGauge_c>Fv = .text:0x80158D90; // type:function size:0x58 isSameName__30sFStateID_c<15dLytBossGauge_c>CFPCc = .text:0x80158DF0; // type:function size:0x88 @@ -9128,16 +9128,16 @@ LytSaveMsgWindow__state_dtor = .text:0x80166880; // type:function size:0x58 fn_801668E0 = .text:0x801668E0; // type:function size:0x88 fn_80166970 = .text:0x80166970; // type:function size:0x58 fn_801669D0 = .text:0x801669D0; // type:function size:0x4 -fn_801669E0 = .text:0x801669E0; // type:function size:0x50 +hasPouchSlot__Flb = .text:0x801669E0; // type:function size:0x50 fn_80166A30 = .text:0x80166A30; // type:function size:0x5C -fn_80166A90 = .text:0x80166A90; // type:function size:0x70 -fn_80166B00 = .text:0x80166B00; // type:function size:0x8C +getPouchItemForSlot__Flb = .text:0x80166A90; // type:function size:0x70 +getPouchItemAmount__Flb = .text:0x80166B00; // type:function size:0x8C fn_80166B90 = .text:0x80166B90; // type:function size:0xBC fn_80166C50 = .text:0x80166C50; // type:function size:0x48 fn_80166CA0 = .text:0x80166CA0; // type:function size:0x48 -fn_80166CF0 = .text:0x80166CF0; // type:function size:0x84 -isPouchUsable2 = .text:0x80166D80; // type:function size:0x34 -fn_80166DC0 = .text:0x80166DC0; // type:function size:0xC8 +getPouchItemNumberColor__Flb = .text:0x80166CF0; // type:function size:0x84 +isPouchBocoburinLocked__Fv = .text:0x80166D80; // type:function size:0x34 +getShieldDurability__Flb = .text:0x80166DC0; // type:function size:0xC8 fn_80166E90 = .text:0x80166E90; // type:function size:0x3C fn_80166ED0 = .text:0x80166ED0; // type:function size:0x68 fn_80166F40 = .text:0x80166F40; // type:function size:0x7C @@ -9160,10 +9160,10 @@ fn_801676D0 = .text:0x801676D0; // type:function size:0x1C fn_801676F0 = .text:0x801676F0; // type:function size:0x24 fn_80167720 = .text:0x80167720; // type:function size:0x58 fn_80167780 = .text:0x80167780; // type:function size:0x34 -fn_801677C0 = .text:0x801677C0; // type:function size:0x30 -fn_801677F0 = .text:0x801677F0; // type:function size:0x24 +getDowsingItemIdForIndex__Fl = .text:0x801677C0; // type:function size:0x30 +dowsingSlotForIndex__Fl = .text:0x801677F0; // type:function size:0x24 fn_80167820 = .text:0x80167820; // type:function size:0x34 -getDowsingIconForPos = .text:0x80167860; // type:function size:0x5C +getLytIndexForDowsingIndex__Fl = .text:0x80167860; // type:function size:0x5C fn_801678C0 = .text:0x801678C0; // type:function size:0x2C fn_801678F0 = .text:0x801678F0; // type:function size:0x2C fn_80167920 = .text:0x80167920; // type:function size:0x24 @@ -10070,14 +10070,14 @@ fn_80189B80 = .text:0x80189B80; // type:function size:0x4 fn_80189B90 = .text:0x80189B90; // type:function size:0x27C fn_80189E10 = .text:0x80189E10; // type:function size:0xF4 fn_80189F10 = .text:0x80189F10; // type:function size:0x8C -getPouchSlotCount = .text:0x80189FA0; // type:function size:0x6C +getPouchSlotCount__Fb = .text:0x80189FA0; // type:function size:0x6C isPouchItem = .text:0x8018A010; // type:function size:0x88 isItemShield = .text:0x8018A0A0; // type:function size:0x18 -isItemExtraAmmo = .text:0x8018A0C0; // type:function size:0x18 +isItemExtraAmmo__Fl = .text:0x8018A0C0; // type:function size:0x18 fn_8018A0E0 = .text:0x8018A0E0; // type:function size:0x20 fn_8018A100 = .text:0x8018A100; // type:function size:0x20 fn_8018A120 = .text:0x8018A120; // type:function size:0x20 -isItemMedal = .text:0x8018A140; // type:function size:0x4C +isItemMedal__Fl = .text:0x8018A140; // type:function size:0x4C isItemPotion = .text:0x8018A190; // type:function size:0x7C isOtherItemInBottle = .text:0x8018A210; // type:function size:0x6C isItemAnyRevitalizingPotion = .text:0x8018A280; // type:function size:0x28 @@ -10089,8 +10089,8 @@ tryCollectPouchItemInPouch = .text:0x8018A520; // type:function size:0x60 collectPouchItem = .text:0x8018A580; // type:function size:0xD0 adventurePouchFindItemSlot = .text:0x8018A650; // type:function size:0x84 adventurePouchCountItem = .text:0x8018A6E0; // type:function size:0x74 -fn_8018A760 = .text:0x8018A760; // type:function size:0x1C -fn_8018A780 = .text:0x8018A780; // type:function size:0xAC +convertLytPouchSlot__Fl = .text:0x8018A760; // type:function size:0x1C +convertFilePouchSlot__Fl = .text:0x8018A780; // type:function size:0xAC fn_8018A830 = .text:0x8018A830; // type:function size:0x16C fn_8018A9A0 = .text:0x8018A9A0; // type:function size:0x7C changeItemPouchExtensionCounter = .text:0x8018AA20; // type:function size:0x10C @@ -10559,7 +10559,7 @@ addLayerArcn__11dStageMgr_cFPCc = .text:0x80199160; // type:function size:0x8 initUnkWithWater__11dStageMgr_cFUlPQ23d3d12UnkWithWater = .text:0x80199170; // type:function size:0x18 destroyUnkWithWater__11dStageMgr_cFUlPQ23d3d12UnkWithWater = .text:0x80199190; // type:function size:0x18 fn_801991B0 = .text:0x801991B0; // type:function size:0xA0 -fn_80199250 = .text:0x80199250; // type:function size:0x3C +fn_80199250__11dStageMgr_cFv = .text:0x80199250; // type:function size:0x3C fn_80199290 = .text:0x80199290; // type:function size:0x164 fn_80199400 = .text:0x80199400; // type:function size:0xE8 fn_801994F0 = .text:0x801994F0; // type:function size:0x4 @@ -10573,15 +10573,15 @@ StageManager__isAreaTypeNormal = .text:0x80199880; // type:function size:0x28 isAreaTypeDungeon__11dStageMgr_cCFv = .text:0x801998B0; // type:function size:0x2C StageManager__isAreaTypeBoss = .text:0x801998E0; // type:function size:0x2C StageManager__isAreaTypeSkyloft = .text:0x80199910; // type:function size:0x2C -StageManager__isAreaTypeHouse = .text:0x80199940; // type:function size:0x2C +isAreaTypeHouse__11dStageMgr_cCFv = .text:0x80199940; // type:function size:0x2C isAreaTypeSky__11dStageMgr_cCFv = .text:0x80199970; // type:function size:0x2C isAreaTypeOverworldOrSkyloft__11dStageMgr_cCFv = .text:0x801999A0; // type:function size:0x3C isAreaTypeDungeonOrBoss__11dStageMgr_cCFv = .text:0x801999E0; // type:function size:0x3C -StageManager__getSTIFmapNameId = .text:0x80199A20; // type:function size:0x20 -StageManager__getSTIFbyte4 = .text:0x80199A40; // type:function size:0x20 -fn_80199A60 = .text:0x80199A60; // type:function size:0x3C -isSTIFbyte4_5or6 = .text:0x80199AA0; // type:function size:0x3C -fn_80199AE0 = .text:0x80199AE0; // type:function size:0x3C +getMapNameId__11dStageMgr_cCFv = .text:0x80199A20; // type:function size:0x20 +getSTIFbyte4__11dStageMgr_cCFv = .text:0x80199A40; // type:function size:0x20 +isSTIFbyte4_2or3or4__11dStageMgr_cCFv = .text:0x80199A60; // type:function size:0x3C +isSTIFbyte4_5or6__11dStageMgr_cCFv = .text:0x80199AA0; // type:function size:0x3C +isSTIFbyte4_7or8or9or10or11__11dStageMgr_cCFv = .text:0x80199AE0; // type:function size:0x3C getSTIFunk1__11dStageMgr_cCFv = .text:0x80199B20; // type:function size:0x20 StageManager__getSTIFunk3 = .text:0x80199B40; // type:function size:0x1C fn_80199B60 = .text:0x80199B60; // type:function size:0xC @@ -10938,7 +10938,7 @@ fn_801B2BD0 = .text:0x801B2BD0; // type:function size:0x10 fn_801B2BE0 = .text:0x801B2BE0; // type:function size:0x40 fn_801B2C20 = .text:0x801B2C20; // type:function size:0x30 executeMinigame__10dMessage_cFv = .text:0x801B2C50; // type:function size:0xC0 -fn_801B2D10 = .text:0x801B2D10; // type:function size:0x4C +init__10dMessage_cFv = .text:0x801B2D10; // type:function size:0x4C reset__10dMessage_cFv = .text:0x801B2D60; // type:function size:0x44 getLanguageIdentifier__10dMessage_cFv = .text:0x801B2DB0; // type:function size:0x1B0 getArcNameByIndex__10dMessage_cFlb = .text:0x801B2F60; // type:function size:0x4 @@ -10973,7 +10973,7 @@ fadeIn__8dStage_cFlUs = .text:0x801B3D00; // type:function size:0xA8 fadeOut__8dStage_cFlUs = .text:0x801B3DB0; // type:function size:0xA8 forceFadeOut__8dStage_cFv = .text:0x801B3E60; // type:function size:0x40 forceFadeIn__8dStage_cFv = .text:0x801B3EA0; // type:function size:0x40 -fn_801B3EE0 = .text:0x801B3EE0; // type:function size:0x3C +fn_801B3EE0__8dStage_cFv = .text:0x801B3EE0; // type:function size:0x3C fn_801B3F20 = .text:0x801B3F20; // type:function size:0x8 fn_801B3F30 = .text:0x801B3F30; // type:function size:0x8 drawMap__8dStage_cFP6mMtx_ci = .text:0x801B3F40; // type:function size:0x90 @@ -11194,7 +11194,7 @@ isStateLayerWithSeekerStoneHintMenu = .text:0x801BB490; // type:function size:0x copySpawnNextToCurrent__9dScGame_cFv = .text:0x801BB510; // type:function size:0xBC actuallyTriggerEntrance__9dScGame_cFPCcUcUcUciiUcUsSc = .text:0x801BB5D0; // type:function size:0x104 setCamera = .text:0x801BB6E0; // type:function size:0x10 -getCamera = .text:0x801BB6F0; // type:function size:0x10 +getCamera__9dScGame_cFl = .text:0x801BB6F0; // type:function size:0x10 fn_801BB700 = .text:0x801BB700; // type:function size:0x4C fn_801BB750 = .text:0x801BB750; // type:function size:0x4C fn_801BB7A0 = .text:0x801BB7A0; // type:function size:0xC4 @@ -12385,7 +12385,7 @@ fn_80202D50 = .text:0x80202D50; // type:function size:0x8 fn_80202D60 = .text:0x80202D60; // type:function size:0x8 fn_80202D70 = .text:0x80202D70; // type:function size:0x8 fn_80202D80 = .text:0x80202D80; // type:function size:0x8 -fn_80202D90 = .text:0x80202D90; // type:function size:0x48 +fn_80202D90__7dAcPy_cFb = .text:0x80202D90; // type:function size:0x48 ActorLink__getTotalNumberOfBombs = .text:0x80202DE0; // type:function size:0x4 ActorLink__changeBombCounterAndPouch = .text:0x80202DF0; // type:function size:0x8 fn_80202E00 = .text:0x80202E00; // type:function size:0x7C @@ -12452,7 +12452,7 @@ fn_802079B0 = .text:0x802079B0; // type:function size:0x728 ActorLink__firstPersonRelate = .text:0x802080E0; // type:function size:0x118 FileManager__isSelectedSlotNotDowsable = .text:0x80208200; // type:function size:0x58 fn_80208260 = .text:0x80208260; // type:function size:0x20 -canDowseProbably = .text:0x80208280; // type:function size:0xD4 +canDowseProbably__7dAcPy_cCFv = .text:0x80208280; // type:function size:0xD4 fn_80208360 = .text:0x80208360; // type:function size:0x2F0 fn_80208650 = .text:0x80208650; // type:function size:0x290 startDowsing = .text:0x802088E0; // type:function size:0x78 @@ -13395,7 +13395,7 @@ AcItem__getItemId = .text:0x8024A2B0; // type:function size:0x8 AcItem__getTearNumber = .text:0x8024A2C0; // type:function size:0xC getFirstBitParams2 = .text:0x8024A2D0; // type:function size:0x24 getParams2Lower_shift1_0x7 = .text:0x8024A300; // type:function size:0x24 -getTrialIndex1 = .text:0x8024A330; // type:function size:0x68 +getCurrentTrial__9dAcItem_cFv = .text:0x8024A330; // type:function size:0x68 getTearSubtype = .text:0x8024A3A0; // type:function size:0x68 AcItem__GetItemGetType = .text:0x8024A410; // type:function size:0x3C AcItem__getItemListElement = .text:0x8024A450; // type:function size:0x8 @@ -13563,13 +13563,13 @@ getTotalArrowCount__9dAcItem_cFv = .text:0x80251EE0; // type:function size:0x38 changeArrowCounter = .text:0x80251F20; // type:function size:0xC AddOrRemoveArrows = .text:0x80251F30; // type:function size:0x9C AcItem__getMaxNumberOfArrows = .text:0x80251FD0; // type:function size:0x8 -getCurrentTotalArrowCapacity = .text:0x80251FE0; // type:function size:0x38 +getTotalArrowCapacity__9dAcItem_cFv = .text:0x80251FE0; // type:function size:0x38 getBombsCounter = .text:0x80252020; // type:function size:0x8 getTotalBombCount__9dAcItem_cFv = .text:0x80252030; // type:function size:0x38 changeBombCounter = .text:0x80252070; // type:function size:0xC changeBombCounterAndPouch = .text:0x80252080; // type:function size:0x9C getMaxStandardBombCapacity = .text:0x80252120; // type:function size:0x8 -getCurrentTotalBombCapacity = .text:0x80252130; // type:function size:0x38 +getTotalBombCapacity__9dAcItem_cFv = .text:0x80252130; // type:function size:0x38 getCurrentTearCount = .text:0x80252170; // type:function size:0x8 AcItem__incrementTearCount = .text:0x80252180; // type:function size:0xC getMaxTearCount = .text:0x80252190; // type:function size:0x8 @@ -13578,10 +13578,10 @@ getTotalSeedCount__9dAcItem_cFv = .text:0x802521B0; // type:function size:0x38 AcItem__changeSlingshotSeedCount = .text:0x802521F0; // type:function size:0xC addDekuSeeds = .text:0x80252200; // type:function size:0x9C AcItem__getMaxNumberOfSlingshotSeeds = .text:0x802522A0; // type:function size:0x8 -getCurrentTotalSlingshotSeedCapacity = .text:0x802522B0; // type:function size:0x38 -getKeyPieceCount = .text:0x802522F0; // type:function size:0x8 +getTotalSeedCapacity__9dAcItem_cFv = .text:0x802522B0; // type:function size:0x38 +getKeyPieceCount__9dAcItem_cFv = .text:0x802522F0; // type:function size:0x8 increaseKeyPieceCounter = .text:0x80252300; // type:function size:0xC -getSmallKeyCounter = .text:0x80252310; // type:function size:0x8 +getSmallKeyCount__9dAcItem_cFv = .text:0x80252310; // type:function size:0x8 increaseSmallKeyCounter = .text:0x80252320; // type:function size:0xC getAdditionalPouchSlotCounter = .text:0x80252330; // type:function size:0x8 addToAdditionalAdventurePouchCounter = .text:0x80252340; // type:function size:0xC @@ -15036,7 +15036,7 @@ LytSaveMgr__draw = .text:0x802855D0; // type:function size:0x28 fn_80285600 = .text:0x80285600; // type:function size:0x18 fn_80285620 = .text:0x80285620; // type:function size:0x1C fn_80285640 = .text:0x80285640; // type:function size:0x10 -fn_80285650 = .text:0x80285650; // type:function size:0x4C +fn_80285650__13dLytSaveMgr_cCFv = .text:0x80285650; // type:function size:0x4C LytSaveMgr__stateInitEnter = .text:0x802856A0; // type:function size:0x14 LytSaveMgr__stateInitUpdate = .text:0x802856C0; // type:function size:0x28 LytSaveMgr__stateInitLeave = .text:0x802856F0; // type:function size:0x4 @@ -15097,10 +15097,10 @@ fn_802879E0 = .text:0x802879E0; // type:function size:0x28 fn_80287A10 = .text:0x80287A10; // type:function size:0x30 fn_80287A40 = .text:0x80287A40; // type:function size:0x30 fn_80287A70 = .text:0x80287A70; // type:function size:0x50 -fn_80287AC0 = .text:0x80287AC0; // type:function size:0x34 -fn_80287B00 = .text:0x80287B00; // type:function size:0x18 -fn_80287B20 = .text:0x80287B20; // type:function size:0x1C -fn_80287B40 = .text:0x80287B40; // type:function size:0x18 +update__14dLytDropLine_cFPQ34nw4r3lyt4PanePQ34nw4r3lyt4PaneQ29dAcItem_c7Trial_eb = .text:0x80287AC0; // type:function size:0x34 +finishPartMaybe__14dLytDropLine_cFv = .text:0x80287B00; // type:function size:0x18 +setPane__14dLytDropLine_cFPQ34nw4r3lyt4Pane = .text:0x80287B20; // type:function size:0x1C +getActivePane__14dLytDropLine_cFv = .text:0x80287B40; // type:function size:0x18 fn_80287B60 = .text:0x80287B60; // type:function size:0x60 fn_80287BC0 = .text:0x80287BC0; // type:function size:0x50 fn_80287C10 = .text:0x80287C10; // type:function size:0x50 @@ -16808,10 +16808,10 @@ fn_802CD680 = .text:0x802CD680; // type:function size:0x6C fn_802CD6F0 = .text:0x802CD6F0; // type:function size:0xA0 fn_802CD790 = .text:0x802CD790; // type:function size:0xA4 fn_802CD840 = .text:0x802CD840; // type:function size:0x1BC -fn_802CDA00 = .text:0x802CDA00; // type:function size:0x58 -fn_802CDA60 = .text:0x802CDA60; // type:function size:0x6C -fn_802CDAD0 = .text:0x802CDAD0; // type:function size:0xA0 -fn_802CDB70 = .text:0x802CDB70; // type:function size:0xA4 +__dt__23sFState_c<10dLytWipe_c>Fv = .text:0x802CDA00; // type:function size:0x58 +__dt__26sFStateFct_c<10dLytWipe_c>Fv = .text:0x802CDA60; // type:function size:0x6C +__dt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CDAD0; // type:function size:0xA0 +__dt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CDB70; // type:function size:0xA4 fn_802CDC20 = .text:0x802CDC20; // type:function size:0x4 fn_802CDC30 = .text:0x802CDC30; // type:function size:0x40 fn_802CDC70 = .text:0x802CDC70; // type:function size:0x6C @@ -16854,8 +16854,8 @@ fn_802D0770 = .text:0x802D0770; // type:function size:0x60 fn_802D07D0 = .text:0x802D07D0; // type:function size:0xC fn_802D07E0 = .text:0x802D07E0; // type:function size:0x60 fn_802D0840 = .text:0x802D0840; // type:function size:0xC -fn_802D0850 = .text:0x802D0850; // type:function size:0x60 -fn_802D08B0 = .text:0x802D08B0; // type:function size:0xC +build__26sFStateFct_c<10dLytWipe_c>FRC12sStateIDIf_c = .text:0x802D0850; // type:function size:0x60 +dispose__26sFStateFct_c<10dLytWipe_c>FRP10sStateIf_c = .text:0x802D08B0; // type:function size:0xC fn_802D08C0 = .text:0x802D08C0; // type:function size:0x60 fn_802D0920 = .text:0x802D0920; // type:function size:0xC fn_802D0930 = .text:0x802D0930; // type:function size:0x60 @@ -16869,9 +16869,9 @@ fn_802D0A40 = .text:0x802D0A40; // type:function size:0x1C fn_802D0A60 = .text:0x802D0A60; // type:function size:0x1C fn_802D0A80 = .text:0x802D0A80; // type:function size:0x1C fn_802D0AA0 = .text:0x802D0AA0; // type:function size:0x1C -fn_802D0AC0 = .text:0x802D0AC0; // type:function size:0x1C -fn_802D0AE0 = .text:0x802D0AE0; // type:function size:0x1C -fn_802D0B00 = .text:0x802D0B00; // type:function size:0x1C +initialize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AC0; // type:function size:0x1C +execute__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AE0; // type:function size:0x1C +finalize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0B00; // type:function size:0x1C fn_802D0B20 = .text:0x802D0B20; // type:function size:0x1C fn_802D0B40 = .text:0x802D0B40; // type:function size:0x1C fn_802D0B60 = .text:0x802D0B60; // type:function size:0x1C @@ -16897,12 +16897,12 @@ fn_802D0CD0 = .text:0x802D0CD0; // type:function size:0x10 fn_802D0CE0 = .text:0x802D0CE0; // type:function size:0x10 fn_802D0CF0 = .text:0x802D0CF0; // type:function size:0x10 fn_802D0D00 = .text:0x802D0D00; // type:function size:0x10 -fn_802D0D10 = .text:0x802D0D10; // type:function size:0x10 -fn_802D0D20 = .text:0x802D0D20; // type:function size:0x10 -fn_802D0D30 = .text:0x802D0D30; // type:function size:0x10 -fn_802D0D40 = .text:0x802D0D40; // type:function size:0x10 -fn_802D0D50 = .text:0x802D0D50; // type:function size:0x10 -fn_802D0D60 = .text:0x802D0D60; // type:function size:0x10 +initializeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D10; // type:function size:0x10 +finalizeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D20; // type:function size:0x10 +refreshState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D30; // type:function size:0x10 +getState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D40; // type:function size:0x10 +getNewStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D50; // type:function size:0x10 +getOldStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D60; // type:function size:0x10 fn_802D0D70 = .text:0x802D0D70; // type:function size:0x10 fn_802D0D80 = .text:0x802D0D80; // type:function size:0x10 fn_802D0D90 = .text:0x802D0D90; // type:function size:0x10 @@ -17278,7 +17278,7 @@ targetAngleY__4cLibFRC7mVec3_cRC7mVec3_c = .text:0x802E0680; // type:function si targetAngleX__4cLibFRC7mVec3_cRC7mVec3_c = .text:0x802E06A0; // type:function size:0x68 cLib__offsetPos = .text:0x802E0710; // type:function size:0xD8 fn_802E07F0 = .text:0x802E07F0; // type:function size:0x24 -fn_802E0820 = .text:0x802E0820; // type:function size:0x34 +easeOut__4cLibFff = .text:0x802E0820; // type:function size:0x34 fn_802E0860 = .text:0x802E0860; // type:function size:0x60 insertAfter__9cListMg_cFP9cListNd_cP9cListNd_c = .text:0x802E08C0; // type:function size:0x40 remove__9cListMg_cFP9cListNd_c = .text:0x802E0900; // type:function size:0xAC @@ -20848,7 +20848,7 @@ fn_8037E230 = .text:0x8037E230; // type:function size:0xEC fn_8037E320 = .text:0x8037E320; // type:function size:0x78 fn_8037E3A0 = .text:0x8037E3A0; // type:function size:0x158 fn_8037E500 = .text:0x8037E500; // type:function size:0x58 -fn_8037E560 = .text:0x8037E560; // type:function size:0xBC +playSoundWithPitch__17SmallSoundManagerF7WZSoundf = .text:0x8037E560; // type:function size:0xBC fn_8037E620 = .text:0x8037E620; // type:function size:0xDC fn_8037E700 = .text:0x8037E700; // type:function size:0x8 fn_8037E710 = .text:0x8037E710; // type:function size:0x8 @@ -28254,7 +28254,7 @@ lbl_804E5B48 = .rodata:0x804E5B48; // type:object size:0x110 data:4byte lbl_804E5C58 = .rodata:0x804E5C58; // type:object size:0x20 lbl_804E5C78 = .rodata:0x804E5C78; // type:object size:0x260 lbl_804E5ED8 = .rodata:0x804E5ED8; // type:object size:0x20 data:4byte -lbl_804E5EF8 = .rodata:0x804E5EF8; // type:object size:0x30 +lbl_804E5EF8 = .rodata:0x804E5EF8; // type:object size:0x2C lbl_804E5F28 = .rodata:0x804E5F28; // type:object size:0x18 data:4byte lbl_804E5F40 = .rodata:0x804E5F40; // type:object size:0x260 lbl_804E61A0 = .rodata:0x804E61A0; // type:object size:0x108 data:4byte @@ -31056,19 +31056,19 @@ Timekeeper__vtable = .data:0x80511C30; // type:object size:0x20 __vt__18SpecialItemDropMgr = .data:0x80511C50; // type:object size:0xC lbl_80511C60 = .data:0x80511C60; // type:object size:0x14 lbl_80511C74 = .data:0x80511C74; // type:object size:0xC -lbl_80511C80 = .data:0x80511C80; // type:object size:0x1C -lbl_80511C9C = .data:0x80511C9C; // type:object size:0xC -lbl_80511CA8 = .data:0x80511CA8; // type:object size:0x1C -lbl_80511CC4 = .data:0x80511CC4; // type:object size:0xC -lbl_80511CD0 = .data:0x80511CD0; // type:object size:0x1C -lbl_80511CEC = .data:0x80511CEC; // type:object size:0xC -lbl_80511CF8 = .data:0x80511CF8; // type:object size:0x3C -lbl_80511D34 = .data:0x80511D34; // type:object size:0x1C -lbl_80511D50 = .data:0x80511D50; // type:object size:0x1C -lbl_80511D6C = .data:0x80511D6C; // type:object size:0x1C +lbl_80511C80 = .data:0x80511C80; // type:object size:0x1A data:string +lbl_80511C9C = .data:0x80511C9C; // type:object size:0xB data:string +lbl_80511CA8 = .data:0x80511CA8; // type:object size:0x19 data:string +lbl_80511CC4 = .data:0x80511CC4; // type:object size:0xA data:string +lbl_80511CD0 = .data:0x80511CD0; // type:object size:0x19 data:string +lbl_80511CEC = .data:0x80511CEC; // type:object size:0xA data:string +lbl_80511CF8 = .data:0x80511CF8; // type:object size:0x9 data:string +lbl_80511D34 = .data:0x80511D34; // type:object size:0x1A data:string +lbl_80511D50 = .data:0x80511D50; // type:object size:0x19 data:string +lbl_80511D6C = .data:0x80511D6C; // type:object size:0x19 data:string lbl_80511D88 = .data:0x80511D88; // type:object size:0x14 data:string jumptable_80511D9C = .data:0x80511D9C; // type:object size:0x2C scope:local -lbl_80511DC8 = .data:0x80511DC8; // type:object size:0x20 +lbl_80511DC8 = .data:0x80511DC8; // type:object size:0x1A data:string lbl_80511DE8 = .data:0x80511DE8; // type:object size:0x10 data:string lbl_80511DF8 = .data:0x80511DF8; // type:object size:0x10 data:string lbl_80511E08 = .data:0x80511E08; // type:object size:0x10 data:string @@ -31076,28 +31076,28 @@ lbl_80511E18 = .data:0x80511E18; // type:object size:0x10 data:string lbl_80511E28 = .data:0x80511E28; // type:object size:0x10 data:string lbl_80511E38 = .data:0x80511E38; // type:object size:0x10 data:string lbl_80511E48 = .data:0x80511E48; // type:object size:0x10 data:string -lbl_80511E58 = .data:0x80511E58; // type:object size:0x10 +lbl_80511E58 = .data:0x80511E58; // type:object size:0xF data:string lbl_80511E68 = .data:0x80511E68; // type:object size:0xC data:string lbl_80511E74 = .data:0x80511E74; // type:object size:0xC data:string lbl_80511E80 = .data:0x80511E80; // type:object size:0xC data:string -lbl_80511E8C = .data:0x80511E8C; // type:object size:0xC +lbl_80511E8C = .data:0x80511E8C; // type:object size:0xB data:string lbl_80511E98 = .data:0x80511E98; // type:object size:0xC data:string -lbl_80511EA4 = .data:0x80511EA4; // type:object size:0xC -lbl_80511EB0 = .data:0x80511EB0; // type:object size:0xC -lbl_80511EBC = .data:0x80511EBC; // type:object size:0x10 -lbl_80511ECC = .data:0x80511ECC; // type:object size:0x1C +lbl_80511EA4 = .data:0x80511EA4; // type:object size:0xA data:string +lbl_80511EB0 = .data:0x80511EB0; // type:object size:0xB data:string +lbl_80511EBC = .data:0x80511EBC; // type:object size:0xD data:string +lbl_80511ECC = .data:0x80511ECC; // type:object size:0x1B data:string lbl_80511EE8 = .data:0x80511EE8; // type:object size:0x20 data:string -lbl_80511F08 = .data:0x80511F08; // type:object size:0x10 +lbl_80511F08 = .data:0x80511F08; // type:object size:0xE data:string lbl_80511F18 = .data:0x80511F18; // type:object size:0x24 data:string -lbl_80511F3C = .data:0x80511F3C; // type:object size:0x10 -lbl_80511F4C = .data:0x80511F4C; // type:object size:0x110 -lbl_8051205C = .data:0x8051205C; // type:object size:0x44 -lbl_805120A0 = .data:0x805120A0; // type:object size:0x10 +lbl_80511F3C = .data:0x80511F3C; // type:object size:0xE data:string +lbl_80511F4C = .data:0x80511F4C; // type:object size:0x9 data:string +lbl_8051205C = .data:0x8051205C; // type:object size:0xF data:string +lbl_805120A0 = .data:0x805120A0; // type:object size:0x9 data:string __vt__53sFStateMgr_c<14dLytSkyGauge_c,20sStateMethodUsr_FI_c> = .data:0x805120B0; // type:object size:0x30 __vt__83sStateMgr_c<14dLytSkyGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805120E0; // type:object size:0x30 __vt__30sFStateFct_c<14dLytSkyGauge_c> = .data:0x80512110; // type:object size:0x14 __vt__27sFState_c<14dLytSkyGauge_c> = .data:0x80512128; // type:object size:0x18 -__vt__15dLytBossGauge_c = .data:0x80512140; // type:object size:0x10 +__vt__15dLytBossGauge_c = .data:0x80512140; // type:object size:0xC __vt__54sFStateMgr_c<15dLytBossGauge_c,20sStateMethodUsr_FI_c> = .data:0x80512150; // type:object size:0x30 __vt__84sStateMgr_c<15dLytBossGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512180; // type:object size:0x30 __vt__31sFStateFct_c<15dLytBossGauge_c> = .data:0x805121B0; // type:object size:0x14 @@ -31106,7 +31106,7 @@ __vt__54sFStateMgr_c<15dLytBirdGauge_c,20sStateMethodUsr_FI_c> = .data:0x805121E __vt__84sStateMgr_c<15dLytBirdGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512210; // type:object size:0x30 __vt__31sFStateFct_c<15dLytBirdGauge_c> = .data:0x80512240; // type:object size:0x14 __vt__28sFState_c<15dLytBirdGauge_c> = .data:0x80512258; // type:object size:0x18 -__vt__16dLytMeterTimer_c = .data:0x80512270; // type:object size:0x10 +__vt__16dLytMeterTimer_c = .data:0x80512270; // type:object size:0xC __vt__55sFStateMgr_c<16dLytMeterTimer_c,20sStateMethodUsr_FI_c> = .data:0x80512280; // type:object size:0x30 __vt__85sStateMgr_c<16dLytMeterTimer_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805122B0; // type:object size:0x30 __vt__32sFStateFct_c<16dLytMeterTimer_c> = .data:0x805122E0; // type:object size:0x14 @@ -31134,23 +31134,23 @@ __vt__59sFStateMgr_c<20dLytMeterKakeraKey_c,20sStateMethodUsr_FI_c> = .data:0x80 __vt__89sStateMgr_c<20dLytMeterKakeraKey_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805125B0; // type:object size:0x30 __vt__36sFStateFct_c<20dLytMeterKakeraKey_c> = .data:0x805125E0; // type:object size:0x14 __vt__33sFState_c<20dLytMeterKakeraKey_c> = .data:0x805125F8; // type:object size:0x18 -__vt__20dLytMeterContainer_c = .data:0x80512610; // type:object size:0xC -__vt__11dLytMeter_c = .data:0x8051261C; // type:object size:0xC +__vt__11dLytMeter_c = .data:0x80512610; // type:object size:0xC +__vt__15dLytMeterMain_c = .data:0x8051261C; // type:object size:0xC __vt__55sFStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c> = .data:0x80512628; // type:object size:0x30 __vt__85sStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512658; // type:object size:0x30 __vt__32sFStateFct_c<16dLytMeterParts_c> = .data:0x80512688; // type:object size:0x14 __vt__29sFState_c<16dLytMeterParts_c> = .data:0x805126A0; // type:object size:0x18 -__vt__18dLytMeter2Button_c = .data:0x805126B8; // type:object size:0x38 +__vt__18dLytMeter2Button_c = .data:0x805126B8; // type:object size:0x34 __vt__57sFStateMgr_c<18dLytMeter2Button_c,20sStateMethodUsr_FI_c> = .data:0x805126F0; // type:object size:0x30 __vt__87sStateMgr_c<18dLytMeter2Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512720; // type:object size:0x30 __vt__34sFStateFct_c<18dLytMeter2Button_c> = .data:0x80512750; // type:object size:0x14 __vt__31sFState_c<18dLytMeter2Button_c> = .data:0x80512768; // type:object size:0x18 -__vt__18dLytMeter1Button_c = .data:0x80512780; // type:object size:0x38 +__vt__18dLytMeter1Button_c = .data:0x80512780; // type:object size:0x34 __vt__57sFStateMgr_c<18dLytMeter1Button_c,20sStateMethodUsr_FI_c> = .data:0x805127B8; // type:object size:0x30 __vt__87sStateMgr_c<18dLytMeter1Button_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805127E8; // type:object size:0x30 __vt__34sFStateFct_c<18dLytMeter1Button_c> = .data:0x80512818; // type:object size:0x14 __vt__31sFState_c<18dLytMeter1Button_c> = .data:0x80512830; // type:object size:0x18 -__vt__20dLytMeterEventSkip_c = .data:0x80512848; // type:object size:0x10 +__vt__20dLytMeterEventSkip_c = .data:0x80512848; // type:object size:0xC __vt__59sFStateMgr_c<20dLytMeterEventSkip_c,20sStateMethodUsr_FI_c> = .data:0x80512858; // type:object size:0x30 __vt__89sStateMgr_c<20dLytMeterEventSkip_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512888; // type:object size:0x30 __vt__36sFStateFct_c<20dLytMeterEventSkip_c> = .data:0x805128B8; // type:object size:0x14 @@ -31207,7 +31207,7 @@ __vt__62sFStateMgr_c<23dLytMeterDowsingBlink_c,20sStateMethodUsr_FI_c> = .data:0 __vt__92sStateMgr_c<23dLytMeterDowsingBlink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80512FD8; // type:object size:0x30 __vt__39sFStateFct_c<23dLytMeterDowsingBlink_c> = .data:0x80513008; // type:object size:0x14 __vt__36sFState_c<23dLytMeterDowsingBlink_c> = .data:0x80513020; // type:object size:0x18 -__vt__26dLytMeterDowsingMenuIcon_c = .data:0x80513038; // type:object size:0x10 +__vt__26dLytMeterDowsingMenuIcon_c = .data:0x80513038; // type:object size:0xC __vt__65sFStateMgr_c<26dLytMeterDowsingMenuIcon_c,20sStateMethodUsr_FI_c> = .data:0x80513048; // type:object size:0x30 __vt__95sStateMgr_c<26dLytMeterDowsingMenuIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80513078; // type:object size:0x30 __vt__42sFStateFct_c<26dLytMeterDowsingMenuIcon_c> = .data:0x805130A8; // type:object size:0x14 @@ -31224,7 +31224,7 @@ __vt__63sFStateMgr_c<24dLytMeterMinusBtnBlink_c,20sStateMethodUsr_FI_c> = .data: __vt__93sStateMgr_c<24dLytMeterMinusBtnBlink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80513228; // type:object size:0x30 __vt__40sFStateFct_c<24dLytMeterMinusBtnBlink_c> = .data:0x80513258; // type:object size:0x14 __vt__37sFState_c<24dLytMeterMinusBtnBlink_c> = .data:0x80513270; // type:object size:0x18 -__vt__27dLytMeterMinusBtnMenuIcon_c = .data:0x80513288; // type:object size:0x10 +__vt__27dLytMeterMinusBtnMenuIcon_c = .data:0x80513288; // type:object size:0xC __vt__66sFStateMgr_c<27dLytMeterMinusBtnMenuIcon_c,20sStateMethodUsr_FI_c> = .data:0x80513298; // type:object size:0x30 __vt__96sStateMgr_c<27dLytMeterMinusBtnMenuIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805132C8; // type:object size:0x30 __vt__43sFStateFct_c<27dLytMeterMinusBtnMenuIcon_c> = .data:0x805132F8; // type:object size:0x14 @@ -31252,7 +31252,7 @@ __vt__61sFStateMgr_c<22dLytMeterShieldGauge_c,20sStateMethodUsr_FI_c> = .data:0x __vt__91sStateMgr_c<22dLytMeterShieldGauge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805135E0; // type:object size:0x30 __vt__38sFStateFct_c<22dLytMeterShieldGauge_c> = .data:0x80513610; // type:object size:0x14 __vt__35sFState_c<22dLytMeterShieldGauge_c> = .data:0x80513628; // type:object size:0x18 -__vt__14dLytDobutton_c = .data:0x80513640; // type:object size:0x10 +__vt__14dLytDobutton_c = .data:0x80513640; // type:object size:0xC __vt__53sFStateMgr_c<14dLytDobutton_c,20sStateMethodUsr_FI_c> = .data:0x80513650; // type:object size:0x30 __vt__83sStateMgr_c<14dLytDobutton_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80513680; // type:object size:0x30 __vt__30sFStateFct_c<14dLytDobutton_c> = .data:0x805136B0; // type:object size:0x14 @@ -31265,65 +31265,65 @@ __vt__31sFStateID_c<16dLytMeterParts_c> = .data:0x80513AC4; // type:object size: __vt__33sFStateID_c<18dLytMeter2Button_c> = .data:0x80513AF8; // type:object size:0x34 __vt__33sFStateID_c<18dLytMeter1Button_c> = .data:0x80513B2C; // type:object size:0x34 lbl_80513B60 = .data:0x80513B60; // type:object size:0x10 -lbl_80513B70 = .data:0x80513B70; // type:object size:0x1C -lbl_80513B8C = .data:0x80513B8C; // type:object size:0xC -lbl_80513B98 = .data:0x80513B98; // type:object size:0x1C -lbl_80513BB4 = .data:0x80513BB4; // type:object size:0xC -lbl_80513BC0 = .data:0x80513BC0; // type:object size:0x1C -lbl_80513BDC = .data:0x80513BDC; // type:object size:0xC -lbl_80513BE8 = .data:0x80513BE8; // type:object size:0xC -lbl_80513BF4 = .data:0x80513BF4; // type:object size:0xC -lbl_80513C00 = .data:0x80513C00; // type:object size:0xC -lbl_80513C0C = .data:0x80513C0C; // type:object size:0xC +lbl_80513B70 = .data:0x80513B70; // type:object size:0x1A data:string +lbl_80513B8C = .data:0x80513B8C; // type:object size:0xB data:string +lbl_80513B98 = .data:0x80513B98; // type:object size:0x19 data:string +lbl_80513BB4 = .data:0x80513BB4; // type:object size:0xA data:string +lbl_80513BC0 = .data:0x80513BC0; // type:object size:0x19 data:string +lbl_80513BDC = .data:0x80513BDC; // type:object size:0xA data:string +lbl_80513BE8 = .data:0x80513BE8; // type:object size:0x9 data:string +lbl_80513BF4 = .data:0x80513BF4; // type:object size:0xA data:string +lbl_80513C00 = .data:0x80513C00; // type:object size:0xB data:string +lbl_80513C0C = .data:0x80513C0C; // type:object size:0x9 data:string lbl_80513C18 = .data:0x80513C18; // type:object size:0x14 data:string jumptable_80513C2C = .data:0x80513C2C; // type:object size:0xA4 scope:local -lbl_80513CD0 = .data:0x80513CD0; // type:object size:0x10 -lbl_80513CE0 = .data:0x80513CE0; // type:object size:0x10 -__vt__15dLytMeterABtn_c = .data:0x80513CF0; // type:object size:0x210 -__vt__30sFStateID_c<15dLytMeterABtn_c> = .data:0x80513F00; // type:object size:0x38 -lbl_80513F38 = .data:0x80513F38; // type:object size:0x18 -lbl_80513F50 = .data:0x80513F50; // type:object size:0xC -lbl_80513F5C = .data:0x80513F5C; // type:object size:0x18 -lbl_80513F74 = .data:0x80513F74; // type:object size:0xC -lbl_80513F80 = .data:0x80513F80; // type:object size:0x18 -lbl_80513F98 = .data:0x80513F98; // type:object size:0x10 +lbl_80513CD0 = .data:0x80513CD0; // type:object size:0xE data:string +lbl_80513CE0 = .data:0x80513CE0; // type:object size:0xD data:string +__vt__15dLytMeterABtn_c = .data:0x80513CF0; // type:object size:0x34 +__vt__30sFStateID_c<15dLytMeterABtn_c> = .data:0x80513F00; // type:object size:0x34 +lbl_80513F38 = .data:0x80513F38; // type:object size:0x16 data:string +lbl_80513F50 = .data:0x80513F50; // type:object size:0xB data:string +lbl_80513F5C = .data:0x80513F5C; // type:object size:0x15 data:string +lbl_80513F74 = .data:0x80513F74; // type:object size:0xA data:string +lbl_80513F80 = .data:0x80513F80; // type:object size:0x15 data:string +lbl_80513F98 = .data:0x80513F98; // type:object size:0xA data:string lbl_80513FA8 = .data:0x80513FA8; // type:object size:0x10 data:string -lbl_80513FB8 = .data:0x80513FB8; // type:object size:0xC -lbl_80513FC4 = .data:0x80513FC4; // type:object size:0xC -lbl_80513FD0 = .data:0x80513FD0; // type:object size:0x10 +lbl_80513FB8 = .data:0x80513FB8; // type:object size:0xA data:string +lbl_80513FC4 = .data:0x80513FC4; // type:object size:0xB data:string +lbl_80513FD0 = .data:0x80513FD0; // type:object size:0x9 data:string lbl_80513FE0 = .data:0x80513FE0; // type:object size:0x10 data:string -lbl_80513FF0 = .data:0x80513FF0; // type:object size:0x10 -lbl_80514000 = .data:0x80514000; // type:object size:0x10 -__vt__15dLytMeterZBtn_c = .data:0x80514010; // type:object size:0x140 +lbl_80513FF0 = .data:0x80513FF0; // type:object size:0xE data:string +lbl_80514000 = .data:0x80514000; // type:object size:0xD data:string +__vt__15dLytMeterZBtn_c = .data:0x80514010; // type:object size:0x34 __vt__30sFStateID_c<15dLytMeterZBtn_c> = .data:0x80514150; // type:object size:0x34 -lbl_80514188 = .data:0x80514188; // type:object size:0x18 -lbl_805141A0 = .data:0x805141A0; // type:object size:0xC -lbl_805141AC = .data:0x805141AC; // type:object size:0x1C -lbl_805141C8 = .data:0x805141C8; // type:object size:0x10 -lbl_805141D8 = .data:0x805141D8; // type:object size:0x1C -lbl_805141F4 = .data:0x805141F4; // type:object size:0x10 -lbl_80514204 = .data:0x80514204; // type:object size:0x1C -lbl_80514220 = .data:0x80514220; // type:object size:0x10 -lbl_80514230 = .data:0x80514230; // type:object size:0x1C -lbl_8051424C = .data:0x8051424C; // type:object size:0x10 -lbl_8051425C = .data:0x8051425C; // type:object size:0x1C -lbl_80514278 = .data:0x80514278; // type:object size:0x10 +lbl_80514188 = .data:0x80514188; // type:object size:0x16 data:string +lbl_805141A0 = .data:0x805141A0; // type:object size:0xB data:string +lbl_805141AC = .data:0x805141AC; // type:object size:0x1B data:string +lbl_805141C8 = .data:0x805141C8; // type:object size:0xD data:string +lbl_805141D8 = .data:0x805141D8; // type:object size:0x1B data:string +lbl_805141F4 = .data:0x805141F4; // type:object size:0xD data:string +lbl_80514204 = .data:0x80514204; // type:object size:0x1B data:string +lbl_80514220 = .data:0x80514220; // type:object size:0xD data:string +lbl_80514230 = .data:0x80514230; // type:object size:0x1B data:string +lbl_8051424C = .data:0x8051424C; // type:object size:0xD data:string +lbl_8051425C = .data:0x8051425C; // type:object size:0x1B data:string +lbl_80514278 = .data:0x80514278; // type:object size:0xD data:string lbl_80514288 = .data:0x80514288; // type:object size:0x18 data:string -lbl_805142A0 = .data:0x805142A0; // type:object size:0xC -lbl_805142AC = .data:0x805142AC; // type:object size:0x4C +lbl_805142A0 = .data:0x805142A0; // type:object size:0xA data:string +lbl_805142AC = .data:0x805142AC; // type:object size:0x17 data:string lbl_805142F8 = .data:0x805142F8; // type:object size:0x14 data:string -lbl_8051430C = .data:0x8051430C; // type:object size:0x18 -lbl_80514324 = .data:0x80514324; // type:object size:0x1C -lbl_80514340 = .data:0x80514340; // type:object size:0x10 -lbl_80514350 = .data:0x80514350; // type:object size:0x18 -lbl_80514368 = .data:0x80514368; // type:object size:0x1C -lbl_80514384 = .data:0x80514384; // type:object size:0x34 -lbl_805143B8 = .data:0x805143B8; // type:object size:0x18 -lbl_805143D0 = .data:0x805143D0; // type:object size:0x18 -lbl_805143E8 = .data:0x805143E8; // type:object size:0x1C -lbl_80514404 = .data:0x80514404; // type:object size:0x10 -lbl_80514414 = .data:0x80514414; // type:object size:0x18 -lbl_8051442C = .data:0x8051442C; // type:object size:0x3E4 +lbl_8051430C = .data:0x8051430C; // type:object size:0x15 data:string +lbl_80514324 = .data:0x80514324; // type:object size:0x19 data:string +lbl_80514340 = .data:0x80514340; // type:object size:0xD data:string +lbl_80514350 = .data:0x80514350; // type:object size:0x16 data:string +lbl_80514368 = .data:0x80514368; // type:object size:0x1A data:string +lbl_80514384 = .data:0x80514384; // type:object size:0xE data:string +lbl_805143B8 = .data:0x805143B8; // type:object size:0x15 data:string +lbl_805143D0 = .data:0x805143D0; // type:object size:0x16 data:string +lbl_805143E8 = .data:0x805143E8; // type:object size:0x1B data:string +lbl_80514404 = .data:0x80514404; // type:object size:0xE data:string +lbl_80514414 = .data:0x80514414; // type:object size:0x17 data:string +lbl_8051442C = .data:0x8051442C; // type:object size:0x1B data:string __vt__34sFStateID_c<19dLytMeterSmallKey_c> = .data:0x80514810; // type:object size:0x34 __vt__33sFStateID_c<18dLytMeterBossKey_c> = .data:0x80514844; // type:object size:0x34 __vt__35sFStateID_c<20dLytMeterKakeraKey_c> = .data:0x80514878; // type:object size:0x34 @@ -31358,198 +31358,198 @@ lbl_80514A48 = .data:0x80514A48; // type:object size:0x17 data:string lbl_80514A60 = .data:0x80514A60; // type:object size:0xF data:string __vt__31sFStateID_c<16dLytMeterDrink_c> = .data:0x80514CF4; // type:object size:0x34 __vt__36sFStateID_c<21dLytMeterDrinkParts_c> = .data:0x80514D28; // type:object size:0x34 -lbl_80514D60 = .data:0x80514D60; // type:object size:0x10 -lbl_80514D70 = .data:0x80514D70; // type:object size:0x14 +lbl_80514D60 = .data:0x80514D60; // type:object size:0xF data:string +lbl_80514D70 = .data:0x80514D70; // type:object size:0x13 data:string __vt__20dLytMeterRemoconBg_c = .data:0x80514D84; // type:object size:0x34 __vt__35sFStateID_c<20dLytMeterRemoconBg_c> = .data:0x80514EDC; // type:object size:0x34 -lbl_80514F10 = .data:0x80514F10; // type:object size:0x18 -lbl_80514F28 = .data:0x80514F28; // type:object size:0xC -lbl_80514F34 = .data:0x80514F34; // type:object size:0x1C +lbl_80514F10 = .data:0x80514F10; // type:object size:0x15 data:string +lbl_80514F28 = .data:0x80514F28; // type:object size:0xB data:string +lbl_80514F34 = .data:0x80514F34; // type:object size:0x16 data:string lbl_80514F50 = .data:0x80514F50; // type:object size:0x10 data:string lbl_80514F60 = .data:0x80514F60; // type:object size:0x14 data:string -lbl_80514F74 = .data:0x80514F74; // type:object size:0xC -lbl_80514F80 = .data:0x80514F80; // type:object size:0xC -lbl_80514F8C = .data:0x80514F8C; // type:object size:0x10 -lbl_80514F9C = .data:0x80514F9C; // type:object size:0x10 -lbl_80514FAC = .data:0x80514FAC; // type:object size:0xC -lbl_80514FB8 = .data:0x80514FB8; // type:object size:0x10 -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 +lbl_80514F74 = .data:0x80514F74; // type:object size:0xA data:string +lbl_80514F80 = .data:0x80514F80; // type:object size:0xB data:string +lbl_80514F8C = .data:0x80514F8C; // type:object size:0xE data:string +lbl_80514F9C = .data:0x80514F9C; // type:object size:0xF data:string +lbl_80514FAC = .data:0x80514FAC; // type:object size:0x9 data:string +lbl_80514FB8 = .data:0x80514FB8; // type:object size:0xF data:string +lbl_80514FC8 = .data:0x80514FC8; // type:object size:0xE data:string +lbl_80514FD8 = .data:0x80514FD8; // type:object size:0xD data:string +__vt__21dLytMeterNunchakuBg_c = .data:0x80514FE8; // type:object size:0x34 __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:0x10 -lbl_805153B8 = .data:0x805153B8; // type:object size:0x10 -lbl_805153C8 = .data:0x805153C8; // type:object size:0x10 +lbl_805153A8 = .data:0x805153A8; // type:object size:0xF data:string +lbl_805153B8 = .data:0x805153B8; // type:object size:0xF data:string +lbl_805153C8 = .data:0x805153C8; // type:object size:0xA data:string lbl_805153D8 = .data:0x805153D8; // type:object size:0x10 data:string lbl_805153E8 = .data:0x805153E8; // type:object size:0xC data:string -lbl_805153F4 = .data:0x805153F4; // type:object size:0xC -lbl_80515400 = .data:0x80515400; // type:object size:0xC -lbl_8051540C = .data:0x8051540C; // type:object size:0xC -lbl_80515418 = .data:0x80515418; // type:object size:0xC -lbl_80515424 = .data:0x80515424; // type:object size:0xC -lbl_80515430 = .data:0x80515430; // type:object size:0xC -lbl_8051543C = .data:0x8051543C; // type:object size:0xC -lbl_80515448 = .data:0x80515448; // type:object size:0xC -lbl_80515454 = .data:0x80515454; // type:object size:0xC -lbl_80515460 = .data:0x80515460; // type:object size:0xC -lbl_8051546C = .data:0x8051546C; // type:object size:0xC -lbl_80515478 = .data:0x80515478; // type:object size:0x50 -lbl_805154C8 = .data:0x805154C8; // type:object size:0x18 -lbl_805154E0 = .data:0x805154E0; // type:object size:0xC -lbl_805154EC = .data:0x805154EC; // type:object size:0x1C -lbl_80515508 = .data:0x80515508; // type:object size:0xC -lbl_80515514 = .data:0x80515514; // type:object size:0xC -lbl_80515520 = .data:0x80515520; // type:object size:0xC -lbl_8051552C = .data:0x8051552C; // type:object size:0xC -lbl_80515538 = .data:0x80515538; // type:object size:0xC -lbl_80515544 = .data:0x80515544; // type:object size:0xC -lbl_80515550 = .data:0x80515550; // type:object size:0xC -lbl_8051555C = .data:0x8051555C; // type:object size:0xC -lbl_80515568 = .data:0x80515568; // type:object size:0xC -lbl_80515574 = .data:0x80515574; // type:object size:0xC -lbl_80515580 = .data:0x80515580; // type:object size:0x20 +lbl_805153F4 = .data:0x805153F4; // type:object size:0xA data:string +lbl_80515400 = .data:0x80515400; // type:object size:0xB data:string +lbl_8051540C = .data:0x8051540C; // type:object size:0x9 data:string +lbl_80515418 = .data:0x80515418; // type:object size:0xB data:string +lbl_80515424 = .data:0x80515424; // type:object size:0xB data:string +lbl_80515430 = .data:0x80515430; // type:object size:0xB data:string +lbl_8051543C = .data:0x8051543C; // type:object size:0xB data:string +lbl_80515448 = .data:0x80515448; // type:object size:0xB data:string +lbl_80515454 = .data:0x80515454; // type:object size:0xB data:string +lbl_80515460 = .data:0x80515460; // type:object size:0xB data:string +lbl_8051546C = .data:0x8051546C; // type:object size:0xB data:string +lbl_80515478 = .data:0x80515478; // type:object size:0xB data:string +lbl_805154C8 = .data:0x805154C8; // type:object size:0x17 data:string +lbl_805154E0 = .data:0x805154E0; // type:object size:0xB data:string +lbl_805154EC = .data:0x805154EC; // type:object size:0x1A data:string +lbl_80515508 = .data:0x80515508; // type:object size:0xB data:string +lbl_80515514 = .data:0x80515514; // type:object size:0xB data:string +lbl_80515520 = .data:0x80515520; // type:object size:0xB data:string +lbl_8051552C = .data:0x8051552C; // type:object size:0xB data:string +lbl_80515538 = .data:0x80515538; // type:object size:0xB data:string +lbl_80515544 = .data:0x80515544; // type:object size:0xB data:string +lbl_80515550 = .data:0x80515550; // type:object size:0xB data:string +lbl_8051555C = .data:0x8051555C; // type:object size:0xB data:string +lbl_80515568 = .data:0x80515568; // type:object size:0xA data:string +lbl_80515574 = .data:0x80515574; // type:object size:0xA data:string +lbl_80515580 = .data:0x80515580; // type:object size:0x19 data:string lbl_805155A0 = .data:0x805155A0; // type:object size:0x20 data:string -lbl_805155C0 = .data:0x805155C0; // type:object size:0x14 -lbl_805155D4 = .data:0x805155D4; // type:object size:0x24 +lbl_805155C0 = .data:0x805155C0; // type:object size:0x11 data:string +lbl_805155D4 = .data:0x805155D4; // type:object size:0x1F data:string lbl_805155F8 = .data:0x805155F8; // type:object size:0x10 data:string -lbl_80515608 = .data:0x80515608; // type:object size:0x20 -lbl_80515628 = .data:0x80515628; // type:object size:0x10 -lbl_80515638 = .data:0x80515638; // type:object size:0x1C +lbl_80515608 = .data:0x80515608; // type:object size:0x1E data:string +lbl_80515628 = .data:0x80515628; // type:object size:0xF data:string +lbl_80515638 = .data:0x80515638; // type:object size:0x1B data:string lbl_80515654 = .data:0x80515654; // type:object size:0xC data:string lbl_80515660 = .data:0x80515660; // type:object size:0x1C data:string -lbl_8051567C = .data:0x8051567C; // type:object size:0x14 +lbl_8051567C = .data:0x8051567C; // type:object size:0xD data:string lbl_80515690 = .data:0x80515690; // type:object size:0x18 data:string -lbl_805156A8 = .data:0x805156A8; // type:object size:0x1C -lbl_805156C4 = .data:0x805156C4; // type:object size:0x20 -lbl_805156E4 = .data:0x805156E4; // type:object size:0x10 -lbl_805156F4 = .data:0x805156F4; // type:object size:0x1C +lbl_805156A8 = .data:0x805156A8; // type:object size:0x1A data:string +lbl_805156C4 = .data:0x805156C4; // type:object size:0x1E data:string +lbl_805156E4 = .data:0x805156E4; // type:object size:0xF data:string +lbl_805156F4 = .data:0x805156F4; // type:object size:0x1B data:string lbl_80515710 = .data:0x80515710; // type:object size:0xC data:string -lbl_8051571C = .data:0x8051571C; // type:object size:0x1C -lbl_80515738 = .data:0x80515738; // type:object size:0xC -lbl_80515744 = .data:0x80515744; // type:object size:0x1C -lbl_80515760 = .data:0x80515760; // type:object size:0xC -lbl_8051576C = .data:0x8051576C; // type:object size:0x1C -lbl_80515788 = .data:0x80515788; // type:object size:0xC -lbl_80515794 = .data:0x80515794; // type:object size:0xC -lbl_805157A0 = .data:0x805157A0; // type:object size:0xC -lbl_805157AC = .data:0x805157AC; // type:object size:0xC +lbl_8051571C = .data:0x8051571C; // type:object size:0x19 data:string +lbl_80515738 = .data:0x80515738; // type:object size:0xA data:string +lbl_80515744 = .data:0x80515744; // type:object size:0x19 data:string +lbl_80515760 = .data:0x80515760; // type:object size:0xA data:string +lbl_8051576C = .data:0x8051576C; // type:object size:0x1A data:string +lbl_80515788 = .data:0x80515788; // type:object size:0xB data:string +lbl_80515794 = .data:0x80515794; // type:object size:0xB data:string +lbl_805157A0 = .data:0x805157A0; // type:object size:0xB data:string +lbl_805157AC = .data:0x805157AC; // type:object size:0xB data:string lbl_805157B8 = .data:0x805157B8; // type:object size:0xC data:string -lbl_805157C4 = .data:0x805157C4; // type:object size:0x10 -lbl_805157D4 = .data:0x805157D4; // type:object size:0x10 -lbl_805157E4 = .data:0x805157E4; // type:object size:0x10 -lbl_805157F4 = .data:0x805157F4; // type:object size:0xC -lbl_80515800 = .data:0x80515800; // type:object size:0xC -lbl_8051580C = .data:0x8051580C; // type:object size:0x10 -lbl_8051581C = .data:0x8051581C; // type:object size:0x10 -lbl_8051582C = .data:0x8051582C; // type:object size:0xC -lbl_80515838 = .data:0x80515838; // type:object size:0x38 -lbl_80515870 = .data:0x80515870; // type:object size:0xC -lbl_8051587C = .data:0x8051587C; // type:object size:0xC -lbl_80515888 = .data:0x80515888; // type:object size:0xC -lbl_80515894 = .data:0x80515894; // type:object size:0x1C -lbl_805158B0 = .data:0x805158B0; // type:object size:0x20 +lbl_805157C4 = .data:0x805157C4; // type:object size:0xD data:string +lbl_805157D4 = .data:0x805157D4; // type:object size:0xD data:string +lbl_805157E4 = .data:0x805157E4; // type:object size:0xD data:string +lbl_805157F4 = .data:0x805157F4; // type:object size:0xA data:string +lbl_80515800 = .data:0x80515800; // type:object size:0xB data:string +lbl_8051580C = .data:0x8051580C; // type:object size:0xE data:string +lbl_8051581C = .data:0x8051581C; // type:object size:0xF data:string +lbl_8051582C = .data:0x8051582C; // type:object size:0xA data:string +lbl_80515838 = .data:0x80515838; // type:object size:0xB data:string +lbl_80515870 = .data:0x80515870; // type:object size:0x9 data:string +lbl_8051587C = .data:0x8051587C; // type:object size:0x9 data:string +lbl_80515888 = .data:0x80515888; // type:object size:0x9 data:string +lbl_80515894 = .data:0x80515894; // type:object size:0x9 data:string +lbl_805158B0 = .data:0x805158B0; // type:object size:0x9 data:string lbl_805158D0 = .data:0x805158D0; // type:object size:0x10 data:string lbl_805158E0 = .data:0x805158E0; // type:object size:0x20 lbl_80515900 = .data:0x80515900; // type:object size:0x20 -lbl_80515920 = .data:0x80515920; // type:object size:0x10 -lbl_80515930 = .data:0x80515930; // type:object size:0x10 -lbl_80515940 = .data:0x80515940; // type:object size:0x10 -__vt__21dLytMeterItemSelect_c = .data:0x80515950; // type:object size:0x38 +lbl_80515920 = .data:0x80515920; // type:object size:0xE data:string +lbl_80515930 = .data:0x80515930; // type:object size:0xD data:string +lbl_80515940 = .data:0x80515940; // type:object size:0xF data:string +__vt__21dLytMeterItemSelect_c = .data:0x80515950; // type:object size:0x34 __vt__60sFStateMgr_c<21dLytMeterItemSelect_c,20sStateMethodUsr_FI_c> = .data:0x80515988; // type:object size:0x30 __vt__90sStateMgr_c<21dLytMeterItemSelect_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805159B8; // type:object size:0x30 -__vt__37sFStateFct_c<21dLytMeterItemSelect_c> = .data:0x805159E8; // type:object size:0x18 +__vt__37sFStateFct_c<21dLytMeterItemSelect_c> = .data:0x805159E8; // type:object size:0x14 __vt__34sFState_c<21dLytMeterItemSelect_c> = .data:0x80515A00; // type:object size:0x18 __vt__63sFStateMgr_c<24dLytMeterItemSelectBtn_c,20sStateMethodUsr_FI_c> = .data:0x80515A18; // type:object size:0x30 __vt__93sStateMgr_c<24dLytMeterItemSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80515A48; // type:object size:0x30 -__vt__40sFStateFct_c<24dLytMeterItemSelectBtn_c> = .data:0x80515A78; // type:object size:0x18 +__vt__40sFStateFct_c<24dLytMeterItemSelectBtn_c> = .data:0x80515A78; // type:object size:0x14 __vt__37sFState_c<24dLytMeterItemSelectBtn_c> = .data:0x80515A90; // type:object size:0x18 __vt__64sFStateMgr_c<25dLytMeterItemSelectText_c,20sStateMethodUsr_FI_c> = .data:0x80515AA8; // type:object size:0x30 __vt__94sStateMgr_c<25dLytMeterItemSelectText_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80515AD8; // type:object size:0x30 -__vt__41sFStateFct_c<25dLytMeterItemSelectText_c> = .data:0x80515B08; // type:object size:0x18 +__vt__41sFStateFct_c<25dLytMeterItemSelectText_c> = .data:0x80515B08; // type:object size:0x14 __vt__38sFState_c<25dLytMeterItemSelectText_c> = .data:0x80515B20; // type:object size:0x18 __vt__65sFStateMgr_c<26dLytMeterItemSelectBlink_c,20sStateMethodUsr_FI_c> = .data:0x80515B38; // type:object size:0x30 __vt__95sStateMgr_c<26dLytMeterItemSelectBlink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80515B68; // type:object size:0x30 -__vt__42sFStateFct_c<26dLytMeterItemSelectBlink_c> = .data:0x80515B98; // type:object size:0x18 +__vt__42sFStateFct_c<26dLytMeterItemSelectBlink_c> = .data:0x80515B98; // type:object size:0x14 __vt__39sFState_c<26dLytMeterItemSelectBlink_c> = .data:0x80515BB0; // type:object size:0x18 __vt__64sFStateMgr_c<25dLytMeterItemSelectIcon_c,20sStateMethodUsr_FI_c> = .data:0x80515BC8; // type:object size:0x30 __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 -lbl_80516A28 = .data:0x80516A28; // type:object size:0x1C -lbl_80516A44 = .data:0x80516A44; // type:object size:0xC -lbl_80516A50 = .data:0x80516A50; // type:object size:0x1C -lbl_80516A6C = .data:0x80516A6C; // type:object size:0xC -lbl_80516A78 = .data:0x80516A78; // type:object size:0x1C -lbl_80516A94 = .data:0x80516A94; // type:object size:0xC -lbl_80516AA0 = .data:0x80516AA0; // type:object size:0xC +__vt__41sFStateFct_c<25dLytMeterItemSelectIcon_c> = .data:0x80515C28; // type:object size:0x14 +__vt__38sFState_c<25dLytMeterItemSelectIcon_c> = .data:0x80515C40; // type:object size:0x18 +__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:0x1A data:string +lbl_80516A44 = .data:0x80516A44; // type:object size:0xB data:string +lbl_80516A50 = .data:0x80516A50; // type:object size:0x19 data:string +lbl_80516A6C = .data:0x80516A6C; // type:object size:0xA data:string +lbl_80516A78 = .data:0x80516A78; // type:object size:0x19 data:string +lbl_80516A94 = .data:0x80516A94; // type:object size:0xA data:string +lbl_80516AA0 = .data:0x80516AA0; // type:object size:0x9 data:string lbl_80516AAC = .data:0x80516AAC; // type:object size:0xC data:string -lbl_80516AB8 = .data:0x80516AB8; // type:object size:0x10 -lbl_80516AC8 = .data:0x80516AC8; // type:object size:0xC +lbl_80516AB8 = .data:0x80516AB8; // type:object size:0xD data:string +lbl_80516AC8 = .data:0x80516AC8; // type:object size:0x9 data:string lbl_80516AD4 = .data:0x80516AD4; // type:object size:0x14 data:string -lbl_80516AE8 = .data:0x80516AE8; // type:object size:0x10 -lbl_80516AF8 = .data:0x80516AF8; // type:object size:0x10 -__vt__18dLytMeterPlusBtn_c = .data:0x80516B08; // type:object size:0x154 +lbl_80516AE8 = .data:0x80516AE8; // type:object size:0xE data:string +lbl_80516AF8 = .data:0x80516AF8; // type:object size:0xD data:string +__vt__18dLytMeterPlusBtn_c = .data:0x80516B08; // type:object size:0x34 __vt__33sFStateID_c<18dLytMeterPlusBtn_c> = .data:0x80516C5C; // type:object size:0x34 -lbl_80516C90 = .data:0x80516C90; // type:object size:0x10 -lbl_80516CA0 = .data:0x80516CA0; // type:object size:0x10 -lbl_80516CB0 = .data:0x80516CB0; // type:object size:0xC -lbl_80516CBC = .data:0x80516CBC; // type:object size:0xC -lbl_80516CC8 = .data:0x80516CC8; // type:object size:0xC -lbl_80516CD4 = .data:0x80516CD4; // type:object size:0xC -lbl_80516CE0 = .data:0x80516CE0; // type:object size:0xC -lbl_80516CEC = .data:0x80516CEC; // type:object size:0xC -lbl_80516CF8 = .data:0x80516CF8; // type:object size:0xC -lbl_80516D04 = .data:0x80516D04; // type:object size:0xC -lbl_80516D10 = .data:0x80516D10; // type:object size:0xC -lbl_80516D1C = .data:0x80516D1C; // type:object size:0xC -lbl_80516D28 = .data:0x80516D28; // type:object size:0xC -lbl_80516D34 = .data:0x80516D34; // type:object size:0xC -lbl_80516D40 = .data:0x80516D40; // type:object size:0xC -lbl_80516D4C = .data:0x80516D4C; // type:object size:0xC -lbl_80516D58 = .data:0x80516D58; // type:object size:0xC -lbl_80516D64 = .data:0x80516D64; // type:object size:0xC -lbl_80516D70 = .data:0x80516D70; // type:object size:0xC +lbl_80516C90 = .data:0x80516C90; // type:object size:0xF data:string +lbl_80516CA0 = .data:0x80516CA0; // type:object size:0xF data:string +lbl_80516CB0 = .data:0x80516CB0; // type:object size:0xA data:string +lbl_80516CBC = .data:0x80516CBC; // type:object size:0xB data:string +lbl_80516CC8 = .data:0x80516CC8; // type:object size:0xB data:string +lbl_80516CD4 = .data:0x80516CD4; // type:object size:0xB data:string +lbl_80516CE0 = .data:0x80516CE0; // type:object size:0xB data:string +lbl_80516CEC = .data:0x80516CEC; // type:object size:0xB data:string +lbl_80516CF8 = .data:0x80516CF8; // type:object size:0xB data:string +lbl_80516D04 = .data:0x80516D04; // type:object size:0xB data:string +lbl_80516D10 = .data:0x80516D10; // type:object size:0xB data:string +lbl_80516D1C = .data:0x80516D1C; // type:object size:0xB data:string +lbl_80516D28 = .data:0x80516D28; // type:object size:0xB data:string +lbl_80516D34 = .data:0x80516D34; // type:object size:0xB data:string +lbl_80516D40 = .data:0x80516D40; // type:object size:0xB data:string +lbl_80516D4C = .data:0x80516D4C; // type:object size:0xB data:string +lbl_80516D58 = .data:0x80516D58; // type:object size:0xB data:string +lbl_80516D64 = .data:0x80516D64; // type:object size:0xB data:string +lbl_80516D70 = .data:0x80516D70; // type:object size:0xB data:string lbl_80516D7C = .data:0x80516D7C; // type:object size:0xC data:string lbl_80516D88 = .data:0x80516D88; // type:object size:0x70 data:4byte -lbl_80516DF8 = .data:0x80516DF8; // type:object size:0x18 -lbl_80516E10 = .data:0x80516E10; // type:object size:0xC -lbl_80516E1C = .data:0x80516E1C; // type:object size:0x1C -lbl_80516E38 = .data:0x80516E38; // type:object size:0xC -lbl_80516E44 = .data:0x80516E44; // type:object size:0xC -lbl_80516E50 = .data:0x80516E50; // type:object size:0xC -lbl_80516E5C = .data:0x80516E5C; // type:object size:0xC -lbl_80516E68 = .data:0x80516E68; // type:object size:0xC -lbl_80516E74 = .data:0x80516E74; // type:object size:0xC -lbl_80516E80 = .data:0x80516E80; // type:object size:0xC -lbl_80516E8C = .data:0x80516E8C; // type:object size:0xC -lbl_80516E98 = .data:0x80516E98; // type:object size:0xC -lbl_80516EA4 = .data:0x80516EA4; // type:object size:0xC +lbl_80516DF8 = .data:0x80516DF8; // type:object size:0x17 data:string +lbl_80516E10 = .data:0x80516E10; // type:object size:0xB data:string +lbl_80516E1C = .data:0x80516E1C; // type:object size:0x1A data:string +lbl_80516E38 = .data:0x80516E38; // type:object size:0xB data:string +lbl_80516E44 = .data:0x80516E44; // type:object size:0xB data:string +lbl_80516E50 = .data:0x80516E50; // type:object size:0xB data:string +lbl_80516E5C = .data:0x80516E5C; // type:object size:0xB data:string +lbl_80516E68 = .data:0x80516E68; // type:object size:0xB data:string +lbl_80516E74 = .data:0x80516E74; // type:object size:0xB data:string +lbl_80516E80 = .data:0x80516E80; // type:object size:0xB data:string +lbl_80516E8C = .data:0x80516E8C; // type:object size:0xB data:string +lbl_80516E98 = .data:0x80516E98; // type:object size:0xA data:string +lbl_80516EA4 = .data:0x80516EA4; // type:object size:0xA data:string lbl_80516EB0 = .data:0x80516EB0; // type:object size:0x20 data:string -lbl_80516ED0 = .data:0x80516ED0; // type:object size:0x14 -lbl_80516EE4 = .data:0x80516EE4; // type:object size:0x24 +lbl_80516ED0 = .data:0x80516ED0; // type:object size:0x11 data:string +lbl_80516EE4 = .data:0x80516EE4; // type:object size:0x1F data:string lbl_80516F08 = .data:0x80516F08; // type:object size:0x10 data:string -lbl_80516F18 = .data:0x80516F18; // type:object size:0x1C -lbl_80516F34 = .data:0x80516F34; // type:object size:0x20 -lbl_80516F54 = .data:0x80516F54; // type:object size:0x10 -lbl_80516F64 = .data:0x80516F64; // type:object size:0x1C +lbl_80516F18 = .data:0x80516F18; // type:object size:0x19 data:string +lbl_80516F34 = .data:0x80516F34; // type:object size:0x1E data:string +lbl_80516F54 = .data:0x80516F54; // type:object size:0xF data:string +lbl_80516F64 = .data:0x80516F64; // type:object size:0x1A data:string lbl_80516F80 = .data:0x80516F80; // type:object size:0xC data:string lbl_80516F8C = .data:0x80516F8C; // type:object size:0xC data:string lbl_80516F98 = .data:0x80516F98; // type:object size:0xC data:string @@ -31558,344 +31558,344 @@ lbl_80516FB0 = .data:0x80516FB0; // type:object size:0xC data:string lbl_80516FBC = .data:0x80516FBC; // type:object size:0xC data:string lbl_80516FC8 = .data:0x80516FC8; // type:object size:0xC data:string lbl_80516FD4 = .data:0x80516FD4; // type:object size:0xC data:string -lbl_80516FE0 = .data:0x80516FE0; // type:object size:0x1C +lbl_80516FE0 = .data:0x80516FE0; // type:object size:0x1B data:string lbl_80516FFC = .data:0x80516FFC; // type:object size:0xC data:string -lbl_80517008 = .data:0x80517008; // type:object size:0x1C -lbl_80517024 = .data:0x80517024; // type:object size:0xC -lbl_80517030 = .data:0x80517030; // type:object size:0x1C -lbl_8051704C = .data:0x8051704C; // type:object size:0xC -lbl_80517058 = .data:0x80517058; // type:object size:0x10 -lbl_80517068 = .data:0x80517068; // type:object size:0x10 -lbl_80517078 = .data:0x80517078; // type:object size:0xC -lbl_80517084 = .data:0x80517084; // type:object size:0xC -lbl_80517090 = .data:0x80517090; // type:object size:0xC +lbl_80517008 = .data:0x80517008; // type:object size:0x1A data:string +lbl_80517024 = .data:0x80517024; // type:object size:0xB data:string +lbl_80517030 = .data:0x80517030; // type:object size:0x19 data:string +lbl_8051704C = .data:0x8051704C; // type:object size:0xA data:string +lbl_80517058 = .data:0x80517058; // type:object size:0xE data:string +lbl_80517068 = .data:0x80517068; // type:object size:0xF data:string +lbl_80517078 = .data:0x80517078; // type:object size:0x9 data:string +lbl_80517084 = .data:0x80517084; // type:object size:0x9 data:string +lbl_80517090 = .data:0x80517090; // type:object size:0x9 data:string lbl_8051709C = .data:0x8051709C; // type:object size:0x14 data:string -lbl_805170B0 = .data:0x805170B0; // type:object size:0x10 -__vt__19dLytMeterMinusBtn_c = .data:0x805170C0; // type:object size:0x688 +lbl_805170B0 = .data:0x805170B0; // type:object size:0xF data:string +__vt__19dLytMeterMinusBtn_c = .data:0x805170C0; // type:object size:0x34 __vt__38sFStateID_c<23dLytMeterMinusBtnText_c> = .data:0x80517748; // type:object size:0x34 __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 -lbl_80517CF0 = .data:0x80517CF0; // type:object size:0x10 -lbl_80517D00 = .data:0x80517D00; // type:object size:0xC -lbl_80517D0C = .data:0x80517D0C; // type:object size:0xC -lbl_80517D18 = .data:0x80517D18; // type:object size:0xC -lbl_80517D24 = .data:0x80517D24; // type:object size:0xC -lbl_80517D30 = .data:0x80517D30; // type:object size:0xC -lbl_80517D3C = .data:0x80517D3C; // type:object size:0xC -lbl_80517D48 = .data:0x80517D48; // type:object size:0xC -lbl_80517D54 = .data:0x80517D54; // type:object size:0xC -lbl_80517D60 = .data:0x80517D60; // type:object size:0xC -lbl_80517D6C = .data:0x80517D6C; // type:object size:0xC -lbl_80517D78 = .data:0x80517D78; // type:object size:0xC -lbl_80517D84 = .data:0x80517D84; // type:object size:0x64 -lbl_80517DE8 = .data:0x80517DE8; // type:object size:0x14 -lbl_80517DFC = .data:0x80517DFC; // type:object size:0xC -lbl_80517E08 = .data:0x80517E08; // type:object size:0x18 -lbl_80517E20 = .data:0x80517E20; // type:object size:0xC -lbl_80517E2C = .data:0x80517E2C; // type:object size:0xC -lbl_80517E38 = .data:0x80517E38; // type:object size:0xC -lbl_80517E44 = .data:0x80517E44; // type:object size:0xC -lbl_80517E50 = .data:0x80517E50; // type:object size:0xC -lbl_80517E5C = .data:0x80517E5C; // type:object size:0xC -lbl_80517E68 = .data:0x80517E68; // type:object size:0xC -lbl_80517E74 = .data:0x80517E74; // type:object size:0xC -lbl_80517E80 = .data:0x80517E80; // type:object size:0xC -lbl_80517E8C = .data:0x80517E8C; // type:object size:0xC +lbl_80517CE0 = .data:0x80517CE0; // type:object size:0xF data:string +lbl_80517CF0 = .data:0x80517CF0; // type:object size:0xF data:string +lbl_80517D00 = .data:0x80517D00; // type:object size:0xA data:string +lbl_80517D0C = .data:0x80517D0C; // type:object size:0xB data:string +lbl_80517D18 = .data:0x80517D18; // type:object size:0xB data:string +lbl_80517D24 = .data:0x80517D24; // type:object size:0xB data:string +lbl_80517D30 = .data:0x80517D30; // type:object size:0xB data:string +lbl_80517D3C = .data:0x80517D3C; // type:object size:0xB data:string +lbl_80517D48 = .data:0x80517D48; // type:object size:0xB data:string +lbl_80517D54 = .data:0x80517D54; // type:object size:0xB data:string +lbl_80517D60 = .data:0x80517D60; // type:object size:0xB data:string +lbl_80517D6C = .data:0x80517D6C; // type:object size:0xB data:string +lbl_80517D78 = .data:0x80517D78; // type:object size:0xB data:string +lbl_80517D84 = .data:0x80517D84; // type:object size:0xB data:string +lbl_80517DE8 = .data:0x80517DE8; // type:object size:0x13 data:string +lbl_80517DFC = .data:0x80517DFC; // type:object size:0xB data:string +lbl_80517E08 = .data:0x80517E08; // type:object size:0x16 data:string +lbl_80517E20 = .data:0x80517E20; // type:object size:0xB data:string +lbl_80517E2C = .data:0x80517E2C; // type:object size:0xB data:string +lbl_80517E38 = .data:0x80517E38; // type:object size:0xB data:string +lbl_80517E44 = .data:0x80517E44; // type:object size:0xB data:string +lbl_80517E50 = .data:0x80517E50; // type:object size:0xB data:string +lbl_80517E5C = .data:0x80517E5C; // type:object size:0xB data:string +lbl_80517E68 = .data:0x80517E68; // type:object size:0xB data:string +lbl_80517E74 = .data:0x80517E74; // type:object size:0xB data:string +lbl_80517E80 = .data:0x80517E80; // type:object size:0xA data:string +lbl_80517E8C = .data:0x80517E8C; // type:object size:0xA data:string lbl_80517E98 = .data:0x80517E98; // type:object size:0x1C data:string -lbl_80517EB4 = .data:0x80517EB4; // type:object size:0x14 -lbl_80517EC8 = .data:0x80517EC8; // type:object size:0x20 +lbl_80517EB4 = .data:0x80517EB4; // type:object size:0x11 data:string +lbl_80517EC8 = .data:0x80517EC8; // type:object size:0x1B data:string lbl_80517EE8 = .data:0x80517EE8; // type:object size:0x10 data:string -lbl_80517EF8 = .data:0x80517EF8; // type:object size:0x18 -lbl_80517F10 = .data:0x80517F10; // type:object size:0x1C -lbl_80517F2C = .data:0x80517F2C; // type:object size:0x10 -lbl_80517F3C = .data:0x80517F3C; // type:object size:0x18 +lbl_80517EF8 = .data:0x80517EF8; // type:object size:0x15 data:string +lbl_80517F10 = .data:0x80517F10; // type:object size:0x1A data:string +lbl_80517F2C = .data:0x80517F2C; // type:object size:0xF data:string +lbl_80517F3C = .data:0x80517F3C; // type:object size:0x17 data:string lbl_80517F54 = .data:0x80517F54; // type:object size:0xC data:string -lbl_80517F60 = .data:0x80517F60; // type:object size:0x18 -lbl_80517F78 = .data:0x80517F78; // type:object size:0x18 -lbl_80517F90 = .data:0x80517F90; // type:object size:0xC -lbl_80517F9C = .data:0x80517F9C; // type:object size:0xC -lbl_80517FA8 = .data:0x80517FA8; // type:object size:0x18 -lbl_80517FC0 = .data:0x80517FC0; // type:object size:0xC -lbl_80517FCC = .data:0x80517FCC; // type:object size:0x18 -lbl_80517FE4 = .data:0x80517FE4; // type:object size:0xC -lbl_80517FF0 = .data:0x80517FF0; // type:object size:0x18 -lbl_80518008 = .data:0x80518008; // type:object size:0xC -lbl_80518014 = .data:0x80518014; // type:object size:0x18 -lbl_8051802C = .data:0x8051802C; // type:object size:0xC -lbl_80518038 = .data:0x80518038; // type:object size:0x10 -lbl_80518048 = .data:0x80518048; // type:object size:0x10 -lbl_80518058 = .data:0x80518058; // type:object size:0x10 -lbl_80518068 = .data:0x80518068; // type:object size:0x20 -lbl_80518088 = .data:0x80518088; // type:object size:0xC -lbl_80518094 = .data:0x80518094; // type:object size:0xC -lbl_805180A0 = .data:0x805180A0; // type:object size:0x18 -lbl_805180B8 = .data:0x805180B8; // type:object size:0x20 +lbl_80517F60 = .data:0x80517F60; // type:object size:0x16 data:string +lbl_80517F78 = .data:0x80517F78; // type:object size:0x16 data:string +lbl_80517F90 = .data:0x80517F90; // type:object size:0xB data:string +lbl_80517F9C = .data:0x80517F9C; // type:object size:0xB data:string +lbl_80517FA8 = .data:0x80517FA8; // type:object size:0x15 data:string +lbl_80517FC0 = .data:0x80517FC0; // type:object size:0xA data:string +lbl_80517FCC = .data:0x80517FCC; // type:object size:0x15 data:string +lbl_80517FE4 = .data:0x80517FE4; // type:object size:0xA data:string +lbl_80517FF0 = .data:0x80517FF0; // type:object size:0x15 data:string +lbl_80518008 = .data:0x80518008; // type:object size:0xA data:string +lbl_80518014 = .data:0x80518014; // type:object size:0x15 data:string +lbl_8051802C = .data:0x8051802C; // type:object size:0xA data:string +lbl_80518038 = .data:0x80518038; // type:object size:0xE data:string +lbl_80518048 = .data:0x80518048; // type:object size:0xF data:string +lbl_80518058 = .data:0x80518058; // type:object size:0xD data:string +lbl_80518068 = .data:0x80518068; // type:object size:0xE data:string +lbl_80518088 = .data:0x80518088; // type:object size:0x9 data:string +lbl_80518094 = .data:0x80518094; // type:object size:0x9 data:string +lbl_805180A0 = .data:0x805180A0; // type:object size:0x9 data:string +lbl_805180B8 = .data:0x805180B8; // type:object size:0x9 data:string lbl_805180D8 = .data:0x805180D8; // type:object size:0xC data:string -lbl_805180E4 = .data:0x805180E4; // type:object size:0x10 +lbl_805180E4 = .data:0x805180E4; // type:object size:0xE data:string lbl_805180F4 = .data:0x805180F4; // type:object size:0x14 data:string -lbl_80518108 = .data:0x80518108; // type:object size:0x10 -lbl_80518118 = .data:0x80518118; // type:object size:0x10 -__vt__18dLytMeterDowsing_c = .data:0x80518128; // type:object size:0x830 +lbl_80518108 = .data:0x80518108; // type:object size:0xE data:string +lbl_80518118 = .data:0x80518118; // type:object size:0xD data:string +__vt__18dLytMeterDowsing_c = .data:0x80518128; // type:object size:0x34 __vt__37sFStateID_c<22dLytMeterDowsingText_c> = .data:0x80518958; // type:object size:0x34 __vt__38sFStateID_c<23dLytMeterDowsingInput_c> = .data:0x8051898C; // type:object size:0x34 __vt__38sFStateID_c<23dLytMeterDowsingBlink_c> = .data:0x805189C0; // type:object size:0x34 __vt__41sFStateID_c<26dLytMeterDowsingMenuIcon_c> = .data:0x805189F4; // type:object size:0x34 __vt__33sFStateID_c<18dLytMeterDowsing_c> = .data:0x80518A28; // type:object size:0x34 -lbl_80518A60 = .data:0x80518A60; // type:object size:0x14 -lbl_80518A74 = .data:0x80518A74; // type:object size:0xC -lbl_80518A80 = .data:0x80518A80; // type:object size:0x1C -lbl_80518A9C = .data:0x80518A9C; // type:object size:0x10 -lbl_80518AAC = .data:0x80518AAC; // type:object size:0x14 -lbl_80518AC0 = .data:0x80518AC0; // type:object size:0xC +lbl_80518A60 = .data:0x80518A60; // type:object size:0x11 data:string +lbl_80518A74 = .data:0x80518A74; // type:object size:0xB data:string +lbl_80518A80 = .data:0x80518A80; // type:object size:0x19 data:string +lbl_80518A9C = .data:0x80518A9C; // type:object size:0xD data:string +lbl_80518AAC = .data:0x80518AAC; // type:object size:0x13 data:string +lbl_80518AC0 = .data:0x80518AC0; // type:object size:0xA data:string lbl_80518ACC = .data:0x80518ACC; // type:object size:0x14 data:string -lbl_80518AE0 = .data:0x80518AE0; // type:object size:0xC -lbl_80518AEC = .data:0x80518AEC; // type:object size:0x18 +lbl_80518AE0 = .data:0x80518AE0; // type:object size:0xB data:string +lbl_80518AEC = .data:0x80518AEC; // type:object size:0x15 data:string lbl_80518B04 = .data:0x80518B04; // type:object size:0xC data:string lbl_80518B10 = .data:0x80518B10; // type:object size:0xC data:string lbl_80518B1C = .data:0x80518B1C; // type:object size:0xC data:string lbl_80518B28 = .data:0x80518B28; // type:object size:0xC data:string -lbl_80518B34 = .data:0x80518B34; // type:object size:0x14 -lbl_80518B48 = .data:0x80518B48; // type:object size:0xC -lbl_80518B54 = .data:0x80518B54; // type:object size:0x1C -lbl_80518B70 = .data:0x80518B70; // type:object size:0x14 +lbl_80518B34 = .data:0x80518B34; // type:object size:0x13 data:string +lbl_80518B48 = .data:0x80518B48; // type:object size:0xA data:string +lbl_80518B54 = .data:0x80518B54; // type:object size:0x1A data:string +lbl_80518B70 = .data:0x80518B70; // type:object size:0x13 data:string lbl_80518B84 = .data:0x80518B84; // type:object size:0x14 data:string -lbl_80518B98 = .data:0x80518B98; // type:object size:0x14 -lbl_80518BAC = .data:0x80518BAC; // type:object size:0xC -lbl_80518BB8 = .data:0x80518BB8; // type:object size:0xC -lbl_80518BC4 = .data:0x80518BC4; // type:object size:0xC -lbl_80518BD0 = .data:0x80518BD0; // type:object size:0x10 +lbl_80518B98 = .data:0x80518B98; // type:object size:0x12 data:string +lbl_80518BAC = .data:0x80518BAC; // type:object size:0xB data:string +lbl_80518BB8 = .data:0x80518BB8; // type:object size:0xB data:string +lbl_80518BC4 = .data:0x80518BC4; // type:object size:0xB data:string +lbl_80518BD0 = .data:0x80518BD0; // type:object size:0xB data:string lbl_80518BE0 = .data:0x80518BE0; // type:object size:0x10 data:4byte -lbl_80518BF0 = .data:0x80518BF0; // type:object size:0x10 -__vt__15dLytMeterRupy_c = .data:0x80518C00; // type:object size:0x260 +lbl_80518BF0 = .data:0x80518BF0; // type:object size:0xE data:string +__vt__15dLytMeterRupy_c = .data:0x80518C00; // type:object size:0x34 __vt__30sFStateID_c<15dLytMeterRupy_c> = .data:0x80518E60; // type:object size:0x34 __vt__35sFStateID_c<20dLytMeterRupyBlink_c> = .data:0x80518E94; // type:object size:0x34 __vt__35sFStateID_c<20dLytMeterRupyStart_c> = .data:0x80518EC8; // type:object size:0x34 -lbl_80518F00 = .data:0x80518F00; // type:object size:0x14 -lbl_80518F14 = .data:0x80518F14; // type:object size:0xC +lbl_80518F00 = .data:0x80518F00; // type:object size:0x11 data:string +lbl_80518F14 = .data:0x80518F14; // type:object size:0xB data:string lbl_80518F20 = .data:0x80518F20; // type:object size:0x14 data:string -lbl_80518F34 = .data:0x80518F34; // type:object size:0xC +lbl_80518F34 = .data:0x80518F34; // type:object size:0xB data:string lbl_80518F40 = .data:0x80518F40; // type:object size:0x1C data:string -lbl_80518F5C = .data:0x80518F5C; // type:object size:0x10 -lbl_80518F6C = .data:0x80518F6C; // type:object size:0x10 -lbl_80518F7C = .data:0x80518F7C; // type:object size:0x1C -lbl_80518F98 = .data:0x80518F98; // type:object size:0x1C -lbl_80518FB4 = .data:0x80518FB4; // type:object size:0x14 +lbl_80518F5C = .data:0x80518F5C; // type:object size:0xD data:string +lbl_80518F6C = .data:0x80518F6C; // type:object size:0xD data:string +lbl_80518F7C = .data:0x80518F7C; // type:object size:0x19 data:string +lbl_80518F98 = .data:0x80518F98; // type:object size:0x1A data:string +lbl_80518FB4 = .data:0x80518FB4; // type:object size:0x11 data:string lbl_80518FC8 = .data:0x80518FC8; // type:object size:0x14 data:string -lbl_80518FDC = .data:0x80518FDC; // type:object size:0xC +lbl_80518FDC = .data:0x80518FDC; // type:object size:0xB data:string lbl_80518FE8 = .data:0x80518FE8; // type:object size:0x14 data:string -lbl_80518FFC = .data:0x80518FFC; // type:object size:0xC -lbl_80519008 = .data:0x80519008; // type:object size:0x18 -lbl_80519020 = .data:0x80519020; // type:object size:0x10 -lbl_80519030 = .data:0x80519030; // type:object size:0x18 -lbl_80519048 = .data:0x80519048; // type:object size:0x10 +lbl_80518FFC = .data:0x80518FFC; // type:object size:0xB data:string +lbl_80519008 = .data:0x80519008; // type:object size:0x17 data:string +lbl_80519020 = .data:0x80519020; // type:object size:0xE data:string +lbl_80519030 = .data:0x80519030; // type:object size:0x16 data:string +lbl_80519048 = .data:0x80519048; // type:object size:0xD data:string lbl_80519058 = .data:0x80519058; // type:object size:0x14 data:string lbl_8051906C = .data:0x8051906C; // type:object size:0xC data:string lbl_80519078 = .data:0x80519078; // type:object size:0x18 data:string lbl_80519090 = .data:0x80519090; // type:object size:0xC data:string lbl_8051909C = .data:0x8051909C; // type:object size:0x14 data:string lbl_805190B0 = .data:0x805190B0; // type:object size:0x14 data:string -lbl_805190C4 = .data:0x805190C4; // type:object size:0xC -lbl_805190D0 = .data:0x805190D0; // type:object size:0x18 +lbl_805190C4 = .data:0x805190C4; // type:object size:0xB data:string +lbl_805190D0 = .data:0x805190D0; // type:object size:0x12 data:string 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 -lbl_80519578 = .data:0x80519578; // type:object size:0x14 -lbl_8051958C = .data:0x8051958C; // type:object size:0xC -lbl_80519598 = .data:0x80519598; // type:object size:0x14 -lbl_805195AC = .data:0x805195AC; // type:object size:0x10 -lbl_805195BC = .data:0x805195BC; // type:object size:0x10 -lbl_805195CC = .data:0x805195CC; // type:object size:0x10 -lbl_805195DC = .data:0x805195DC; // type:object size:0x134 +lbl_80519100 = .data:0x80519100; // type:object size:0xE data:string +__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:0x11 data:string +lbl_8051958C = .data:0x8051958C; // type:object size:0xB data:string +lbl_80519598 = .data:0x80519598; // type:object size:0x12 data:string +lbl_805195AC = .data:0x805195AC; // type:object size:0xE data:string +lbl_805195BC = .data:0x805195BC; // type:object size:0xF data:string +lbl_805195CC = .data:0x805195CC; // type:object size:0xE data:string +lbl_805195DC = .data:0x805195DC; // type:object size:0x9 data:string __vt__35sFStateID_c<20dLytMeterEventSkip_c> = .data:0x80519710; // type:object size:0x34 -lbl_80519748 = .data:0x80519748; // type:object size:0x14 -lbl_8051975C = .data:0x8051975C; // type:object size:0xC -lbl_80519768 = .data:0x80519768; // type:object size:0x1C +lbl_80519748 = .data:0x80519748; // type:object size:0x12 data:string +lbl_8051975C = .data:0x8051975C; // type:object size:0xB data:string +lbl_80519768 = .data:0x80519768; // type:object size:0x1B data:string lbl_80519784 = .data:0x80519784; // type:object size:0x14 data:string -lbl_80519798 = .data:0x80519798; // type:object size:0x10 -lbl_805197A8 = .data:0x805197A8; // type:object size:0x18 -lbl_805197C0 = .data:0x805197C0; // type:object size:0x18 -lbl_805197D8 = .data:0x805197D8; // type:object size:0x18 -lbl_805197F0 = .data:0x805197F0; // type:object size:0x10 -lbl_80519800 = .data:0x80519800; // type:object size:0x18 -lbl_80519818 = .data:0x80519818; // type:object size:0xC -lbl_80519824 = .data:0x80519824; // type:object size:0xC -lbl_80519830 = .data:0x80519830; // type:object size:0xC -lbl_8051983C = .data:0x8051983C; // type:object size:0xC -lbl_80519848 = .data:0x80519848; // type:object size:0xC -lbl_80519854 = .data:0x80519854; // type:object size:0xC -lbl_80519860 = .data:0x80519860; // type:object size:0xC -lbl_8051986C = .data:0x8051986C; // type:object size:0xC -lbl_80519878 = .data:0x80519878; // type:object size:0xC -lbl_80519884 = .data:0x80519884; // type:object size:0xC -lbl_80519890 = .data:0x80519890; // type:object size:0xC -lbl_8051989C = .data:0x8051989C; // type:object size:0xC -lbl_805198A8 = .data:0x805198A8; // type:object size:0xC -lbl_805198B4 = .data:0x805198B4; // type:object size:0xC -lbl_805198C0 = .data:0x805198C0; // type:object size:0xC -lbl_805198CC = .data:0x805198CC; // type:object size:0x14 -lbl_805198E0 = .data:0x805198E0; // type:object size:0x10 -lbl_805198F0 = .data:0x805198F0; // type:object size:0x10 -lbl_80519900 = .data:0x80519900; // type:object size:0x10 -lbl_80519910 = .data:0x80519910; // type:object size:0x10 -lbl_80519920 = .data:0x80519920; // type:object size:0x10 -lbl_80519930 = .data:0x80519930; // type:object size:0x10 -lbl_80519940 = .data:0x80519940; // type:object size:0x10 -lbl_80519950 = .data:0x80519950; // type:object size:0x10 -lbl_80519960 = .data:0x80519960; // type:object size:0x10 -lbl_80519970 = .data:0x80519970; // type:object size:0x10 -lbl_80519980 = .data:0x80519980; // type:object size:0x10 -lbl_80519990 = .data:0x80519990; // type:object size:0x10 -lbl_805199A0 = .data:0x805199A0; // type:object size:0x10 -lbl_805199B0 = .data:0x805199B0; // type:object size:0x10 -lbl_805199C0 = .data:0x805199C0; // type:object size:0x10 +lbl_80519798 = .data:0x80519798; // type:object size:0xD data:string +lbl_805197A8 = .data:0x805197A8; // type:object size:0x15 data:string +lbl_805197C0 = .data:0x805197C0; // type:object size:0x15 data:string +lbl_805197D8 = .data:0x805197D8; // type:object size:0x15 data:string +lbl_805197F0 = .data:0x805197F0; // type:object size:0xE data:string +lbl_80519800 = .data:0x80519800; // type:object size:0x17 data:string +lbl_80519818 = .data:0x80519818; // type:object size:0x9 data:string +lbl_80519824 = .data:0x80519824; // type:object size:0x9 data:string +lbl_80519830 = .data:0x80519830; // type:object size:0x9 data:string +lbl_8051983C = .data:0x8051983C; // type:object size:0x9 data:string +lbl_80519848 = .data:0x80519848; // type:object size:0x9 data:string +lbl_80519854 = .data:0x80519854; // type:object size:0x9 data:string +lbl_80519860 = .data:0x80519860; // type:object size:0x9 data:string +lbl_8051986C = .data:0x8051986C; // type:object size:0x9 data:string +lbl_80519878 = .data:0x80519878; // type:object size:0x9 data:string +lbl_80519884 = .data:0x80519884; // type:object size:0x9 data:string +lbl_80519890 = .data:0x80519890; // type:object size:0x9 data:string +lbl_8051989C = .data:0x8051989C; // type:object size:0x9 data:string +lbl_805198A8 = .data:0x805198A8; // type:object size:0x9 data:string +lbl_805198B4 = .data:0x805198B4; // type:object size:0x9 data:string +lbl_805198C0 = .data:0x805198C0; // type:object size:0x9 data:string +lbl_805198CC = .data:0x805198CC; // type:object size:0x13 data:string +lbl_805198E0 = .data:0x805198E0; // type:object size:0xD data:string +lbl_805198F0 = .data:0x805198F0; // type:object size:0xD data:string +lbl_80519900 = .data:0x80519900; // type:object size:0xD data:string +lbl_80519910 = .data:0x80519910; // type:object size:0xD data:string +lbl_80519920 = .data:0x80519920; // type:object size:0xD data:string +lbl_80519930 = .data:0x80519930; // type:object size:0xD data:string +lbl_80519940 = .data:0x80519940; // type:object size:0xD data:string +lbl_80519950 = .data:0x80519950; // type:object size:0xD data:string +lbl_80519960 = .data:0x80519960; // type:object size:0xD data:string +lbl_80519970 = .data:0x80519970; // type:object size:0xD data:string +lbl_80519980 = .data:0x80519980; // type:object size:0xD data:string +lbl_80519990 = .data:0x80519990; // type:object size:0xD data:string +lbl_805199A0 = .data:0x805199A0; // type:object size:0xD data:string +lbl_805199B0 = .data:0x805199B0; // type:object size:0xD data:string +lbl_805199C0 = .data:0x805199C0; // type:object size:0xD data:string lbl_805199D0 = .data:0x805199D0; // type:object size:0x3C data:4byte -lbl_80519A0C = .data:0x80519A0C; // type:object size:0x10 -lbl_80519A1C = .data:0x80519A1C; // type:object size:0x14 -lbl_80519A30 = .data:0x80519A30; // type:object size:0x1C -lbl_80519A4C = .data:0x80519A4C; // type:object size:0x18 -lbl_80519A64 = .data:0x80519A64; // type:object size:0xC -lbl_80519A70 = .data:0x80519A70; // type:object size:0xC -lbl_80519A7C = .data:0x80519A7C; // type:object size:0xC -lbl_80519A88 = .data:0x80519A88; // type:object size:0xC -lbl_80519A94 = .data:0x80519A94; // type:object size:0xC -lbl_80519AA0 = .data:0x80519AA0; // type:object size:0xC -lbl_80519AAC = .data:0x80519AAC; // type:object size:0xC -lbl_80519AB8 = .data:0x80519AB8; // type:object size:0xC -lbl_80519AC4 = .data:0x80519AC4; // type:object size:0xC -lbl_80519AD0 = .data:0x80519AD0; // type:object size:0x18 -lbl_80519AE8 = .data:0x80519AE8; // type:object size:0x1C -lbl_80519B04 = .data:0x80519B04; // type:object size:0x10 -lbl_80519B14 = .data:0x80519B14; // type:object size:0x1C -lbl_80519B30 = .data:0x80519B30; // type:object size:0x20 +lbl_80519A0C = .data:0x80519A0C; // type:object size:0xF data:string +lbl_80519A1C = .data:0x80519A1C; // type:object size:0x12 data:string +lbl_80519A30 = .data:0x80519A30; // type:object size:0x1B data:string +lbl_80519A4C = .data:0x80519A4C; // type:object size:0x15 data:string +lbl_80519A64 = .data:0x80519A64; // type:object size:0xA data:string +lbl_80519A70 = .data:0x80519A70; // type:object size:0xA data:string +lbl_80519A7C = .data:0x80519A7C; // type:object size:0xA data:string +lbl_80519A88 = .data:0x80519A88; // type:object size:0xA data:string +lbl_80519A94 = .data:0x80519A94; // type:object size:0xA data:string +lbl_80519AA0 = .data:0x80519AA0; // type:object size:0xA data:string +lbl_80519AAC = .data:0x80519AAC; // type:object size:0xA data:string +lbl_80519AB8 = .data:0x80519AB8; // type:object size:0xA data:string +lbl_80519AC4 = .data:0x80519AC4; // type:object size:0xA data:string +lbl_80519AD0 = .data:0x80519AD0; // type:object size:0x17 data:string +lbl_80519AE8 = .data:0x80519AE8; // type:object size:0x1B data:string +lbl_80519B04 = .data:0x80519B04; // type:object size:0xF data:string +lbl_80519B14 = .data:0x80519B14; // type:object size:0x1B data:string +lbl_80519B30 = .data:0x80519B30; // type:object size:0x1A data:string lbl_80519B50 = .data:0x80519B50; // type:object size:0x10 data:string -lbl_80519B60 = .data:0x80519B60; // type:object size:0x18 -lbl_80519B78 = .data:0x80519B78; // type:object size:0xC -lbl_80519B84 = .data:0x80519B84; // type:object size:0x1C +lbl_80519B60 = .data:0x80519B60; // type:object size:0x15 data:string +lbl_80519B78 = .data:0x80519B78; // type:object size:0xB data:string +lbl_80519B84 = .data:0x80519B84; // type:object size:0x1A data:string lbl_80519BA0 = .data:0x80519BA0; // type:object size:0x10 data:string -lbl_80519BB0 = .data:0x80519BB0; // type:object size:0x1C +lbl_80519BB0 = .data:0x80519BB0; // type:object size:0x1B data:string lbl_80519BCC = .data:0x80519BCC; // type:object size:0xC data:string -lbl_80519BD8 = .data:0x80519BD8; // type:object size:0x1C -lbl_80519BF4 = .data:0x80519BF4; // type:object size:0x10 -lbl_80519C04 = .data:0x80519C04; // type:object size:0x1C -lbl_80519C20 = .data:0x80519C20; // type:object size:0x18 +lbl_80519BD8 = .data:0x80519BD8; // type:object size:0x19 data:string +lbl_80519BF4 = .data:0x80519BF4; // type:object size:0xF data:string +lbl_80519C04 = .data:0x80519C04; // type:object size:0x1A data:string +lbl_80519C20 = .data:0x80519C20; // type:object size:0x14 data:string lbl_80519C38 = .data:0x80519C38; // type:object size:0x10 data:string -lbl_80519C48 = .data:0x80519C48; // type:object size:0x14 -lbl_80519C5C = .data:0x80519C5C; // type:object size:0x10 -lbl_80519C6C = .data:0x80519C6C; // type:object size:0x10 +lbl_80519C48 = .data:0x80519C48; // type:object size:0x13 data:string +lbl_80519C5C = .data:0x80519C5C; // type:object size:0xF data:string +lbl_80519C6C = .data:0x80519C6C; // type:object size:0xF data:string lbl_80519C7C = .data:0x80519C7C; // type:object size:0xC data:string -lbl_80519C88 = .data:0x80519C88; // type:object size:0x10 +lbl_80519C88 = .data:0x80519C88; // type:object size:0xD data:string lbl_80519C98 = .data:0x80519C98; // type:object size:0x10 data:string -lbl_80519CA8 = .data:0x80519CA8; // type:object size:0x10 +lbl_80519CA8 = .data:0x80519CA8; // type:object size:0xF data:string __vt__20LytMeterTimerPart2_c = .data:0x80519CB8; // type:object size:0x34 -__vt__20LytMeterTimerPart1_c = .data:0x80519CEC; // type:object size:0x23C +__vt__20LytMeterTimerPart1_c = .data:0x80519CEC; // type:object size:0x34 __vt__31sFStateID_c<16dLytMeterTimer_c> = .data:0x80519F28; // type:object size:0x34 -lbl_80519F60 = .data:0x80519F60; // type:object size:0x18 -lbl_80519F78 = .data:0x80519F78; // type:object size:0xC -lbl_80519F84 = .data:0x80519F84; // type:object size:0xC -lbl_80519F90 = .data:0x80519F90; // type:object size:0xC -lbl_80519F9C = .data:0x80519F9C; // type:object size:0xC -lbl_80519FA8 = .data:0x80519FA8; // type:object size:0xC -lbl_80519FB4 = .data:0x80519FB4; // type:object size:0xC -lbl_80519FC0 = .data:0x80519FC0; // type:object size:0xC -lbl_80519FCC = .data:0x80519FCC; // type:object size:0xC -lbl_80519FD8 = .data:0x80519FD8; // type:object size:0xC -lbl_80519FE4 = .data:0x80519FE4; // type:object size:0xC -lbl_80519FF0 = .data:0x80519FF0; // type:object size:0xC -lbl_80519FFC = .data:0x80519FFC; // type:object size:0xC -lbl_8051A008 = .data:0x8051A008; // type:object size:0xC -lbl_8051A014 = .data:0x8051A014; // type:object size:0xC -lbl_8051A020 = .data:0x8051A020; // type:object size:0xC -lbl_8051A02C = .data:0x8051A02C; // type:object size:0xC -lbl_8051A038 = .data:0x8051A038; // type:object size:0xC -lbl_8051A044 = .data:0x8051A044; // type:object size:0xC -lbl_8051A050 = .data:0x8051A050; // type:object size:0xC -lbl_8051A05C = .data:0x8051A05C; // type:object size:0xC +lbl_80519F60 = .data:0x80519F60; // type:object size:0x17 data:string +lbl_80519F78 = .data:0x80519F78; // type:object size:0xB data:string +lbl_80519F84 = .data:0x80519F84; // type:object size:0xB data:string +lbl_80519F90 = .data:0x80519F90; // type:object size:0xB data:string +lbl_80519F9C = .data:0x80519F9C; // type:object size:0xB data:string +lbl_80519FA8 = .data:0x80519FA8; // type:object size:0xB data:string +lbl_80519FB4 = .data:0x80519FB4; // type:object size:0xB data:string +lbl_80519FC0 = .data:0x80519FC0; // type:object size:0xB data:string +lbl_80519FCC = .data:0x80519FCC; // type:object size:0xB data:string +lbl_80519FD8 = .data:0x80519FD8; // type:object size:0xB data:string +lbl_80519FE4 = .data:0x80519FE4; // type:object size:0xB data:string +lbl_80519FF0 = .data:0x80519FF0; // type:object size:0xB data:string +lbl_80519FFC = .data:0x80519FFC; // type:object size:0xB data:string +lbl_8051A008 = .data:0x8051A008; // type:object size:0xB data:string +lbl_8051A014 = .data:0x8051A014; // type:object size:0xB data:string +lbl_8051A020 = .data:0x8051A020; // type:object size:0xB data:string +lbl_8051A02C = .data:0x8051A02C; // type:object size:0xB data:string +lbl_8051A038 = .data:0x8051A038; // type:object size:0xB data:string +lbl_8051A044 = .data:0x8051A044; // type:object size:0xB data:string +lbl_8051A050 = .data:0x8051A050; // type:object size:0xB data:string +lbl_8051A05C = .data:0x8051A05C; // type:object size:0xB data:string lbl_8051A068 = .data:0x8051A068; // type:object size:0x1C data:string -lbl_8051A084 = .data:0x8051A084; // type:object size:0x14 +lbl_8051A084 = .data:0x8051A084; // type:object size:0xF data:string lbl_8051A098 = .data:0x8051A098; // type:object size:0x18 data:string -lbl_8051A0B0 = .data:0x8051A0B0; // type:object size:0x10 +lbl_8051A0B0 = .data:0x8051A0B0; // type:object size:0xB data:string lbl_8051A0C0 = .data:0x8051A0C0; // type:object size:0x18 data:string -lbl_8051A0D8 = .data:0x8051A0D8; // type:object size:0xC -lbl_8051A0E4 = .data:0x8051A0E4; // type:object size:0x1C -lbl_8051A100 = .data:0x8051A100; // type:object size:0x10 -lbl_8051A110 = .data:0x8051A110; // type:object size:0x18 -lbl_8051A128 = .data:0x8051A128; // type:object size:0xC -lbl_8051A134 = .data:0x8051A134; // type:object size:0x1C +lbl_8051A0D8 = .data:0x8051A0D8; // type:object size:0xB data:string +lbl_8051A0E4 = .data:0x8051A0E4; // type:object size:0x1B data:string +lbl_8051A100 = .data:0x8051A100; // type:object size:0xE data:string +lbl_8051A110 = .data:0x8051A110; // type:object size:0x17 data:string +lbl_8051A128 = .data:0x8051A128; // type:object size:0xA data:string +lbl_8051A134 = .data:0x8051A134; // type:object size:0x19 data:string lbl_8051A150 = .data:0x8051A150; // type:object size:0xC data:string -lbl_8051A15C = .data:0x8051A15C; // type:object size:0xC -lbl_8051A168 = .data:0x8051A168; // type:object size:0xC -lbl_8051A174 = .data:0x8051A174; // type:object size:0xC -lbl_8051A180 = .data:0x8051A180; // type:object size:0xC -lbl_8051A18C = .data:0x8051A18C; // type:object size:0xC -lbl_8051A198 = .data:0x8051A198; // type:object size:0xC -lbl_8051A1A4 = .data:0x8051A1A4; // type:object size:0xC -lbl_8051A1B0 = .data:0x8051A1B0; // type:object size:0xC -lbl_8051A1BC = .data:0x8051A1BC; // type:object size:0xC -lbl_8051A1C8 = .data:0x8051A1C8; // type:object size:0xC -lbl_8051A1D4 = .data:0x8051A1D4; // type:object size:0xC -lbl_8051A1E0 = .data:0x8051A1E0; // type:object size:0xC -lbl_8051A1EC = .data:0x8051A1EC; // type:object size:0xC -lbl_8051A1F8 = .data:0x8051A1F8; // type:object size:0xC -lbl_8051A204 = .data:0x8051A204; // type:object size:0xC -lbl_8051A210 = .data:0x8051A210; // type:object size:0xC -lbl_8051A21C = .data:0x8051A21C; // type:object size:0xC -lbl_8051A228 = .data:0x8051A228; // type:object size:0xC -lbl_8051A234 = .data:0x8051A234; // type:object size:0xC -lbl_8051A240 = .data:0x8051A240; // type:object size:0x98 -lbl_8051A2D8 = .data:0x8051A2D8; // type:object size:0x10 -__vt__16dLytMeterHeart_c = .data:0x8051A2E8; // type:object size:0x38 -lbl_8051A320 = .data:0x8051A320; // type:object size:0x18 -lbl_8051A338 = .data:0x8051A338; // type:object size:0xC -lbl_8051A344 = .data:0x8051A344; // type:object size:0x18 -lbl_8051A35C = .data:0x8051A35C; // type:object size:0xC -lbl_8051A368 = .data:0x8051A368; // type:object size:0x20 +lbl_8051A15C = .data:0x8051A15C; // type:object size:0xB data:string +lbl_8051A168 = .data:0x8051A168; // type:object size:0xB data:string +lbl_8051A174 = .data:0x8051A174; // type:object size:0xB data:string +lbl_8051A180 = .data:0x8051A180; // type:object size:0xB data:string +lbl_8051A18C = .data:0x8051A18C; // type:object size:0xB data:string +lbl_8051A198 = .data:0x8051A198; // type:object size:0xB data:string +lbl_8051A1A4 = .data:0x8051A1A4; // type:object size:0xB data:string +lbl_8051A1B0 = .data:0x8051A1B0; // type:object size:0xB data:string +lbl_8051A1BC = .data:0x8051A1BC; // type:object size:0xB data:string +lbl_8051A1C8 = .data:0x8051A1C8; // type:object size:0xB data:string +lbl_8051A1D4 = .data:0x8051A1D4; // type:object size:0xB data:string +lbl_8051A1E0 = .data:0x8051A1E0; // type:object size:0xB data:string +lbl_8051A1EC = .data:0x8051A1EC; // type:object size:0xB data:string +lbl_8051A1F8 = .data:0x8051A1F8; // type:object size:0xB data:string +lbl_8051A204 = .data:0x8051A204; // type:object size:0xB data:string +lbl_8051A210 = .data:0x8051A210; // type:object size:0xB data:string +lbl_8051A21C = .data:0x8051A21C; // type:object size:0xB data:string +lbl_8051A228 = .data:0x8051A228; // type:object size:0xB data:string +lbl_8051A234 = .data:0x8051A234; // type:object size:0xB data:string +lbl_8051A240 = .data:0x8051A240; // type:object size:0xB data:string +lbl_8051A2D8 = .data:0x8051A2D8; // type:object size:0xE data:string +__vt__16dLytMeterHeart_c = .data:0x8051A2E8; // type:object size:0x34 +lbl_8051A320 = .data:0x8051A320; // type:object size:0x16 data:string +lbl_8051A338 = .data:0x8051A338; // type:object size:0xB data:string +lbl_8051A344 = .data:0x8051A344; // type:object size:0x16 data:string +lbl_8051A35C = .data:0x8051A35C; // type:object size:0xB data:string +lbl_8051A368 = .data:0x8051A368; // type:object size:0x1D data:string lbl_8051A388 = .data:0x8051A388; // type:object size:0xC data:string -lbl_8051A394 = .data:0x8051A394; // type:object size:0x1C +lbl_8051A394 = .data:0x8051A394; // type:object size:0x1B data:string lbl_8051A3B0 = .data:0x8051A3B0; // type:object size:0x10 data:string -lbl_8051A3C0 = .data:0x8051A3C0; // type:object size:0x1C +lbl_8051A3C0 = .data:0x8051A3C0; // type:object size:0x1A data:string lbl_8051A3DC = .data:0x8051A3DC; // type:object size:0xC data:string -lbl_8051A3E8 = .data:0x8051A3E8; // type:object size:0x18 -lbl_8051A400 = .data:0x8051A400; // type:object size:0xC -lbl_8051A40C = .data:0x8051A40C; // type:object size:0x18 -lbl_8051A424 = .data:0x8051A424; // type:object size:0xC -lbl_8051A430 = .data:0x8051A430; // type:object size:0x10 +lbl_8051A3E8 = .data:0x8051A3E8; // type:object size:0x16 data:string +lbl_8051A400 = .data:0x8051A400; // type:object size:0xB data:string +lbl_8051A40C = .data:0x8051A40C; // type:object size:0x15 data:string +lbl_8051A424 = .data:0x8051A424; // type:object size:0xA data:string +lbl_8051A430 = .data:0x8051A430; // type:object size:0xA data:string lbl_8051A440 = .data:0x8051A440; // type:object size:0x10 data:string -lbl_8051A450 = .data:0x8051A450; // type:object size:0xC +lbl_8051A450 = .data:0x8051A450; // type:object size:0xB data:string __vt__22dLytMeterShieldGauge_c = .data:0x8051A45C; // type:object size:0x34 -__vt__37sFStateID_c<22dLytMeterShieldGauge_c> = .data:0x8051A570; // type:object size:0x38 +__vt__37sFStateID_c<22dLytMeterShieldGauge_c> = .data:0x8051A570; // type:object size:0x34 lbl_8051A5A8 = .data:0x8051A5A8; // type:object size:0x18 lbl_8051A5C0 = .data:0x8051A5C0; // type:object size:0xC lbl_8051A5CC = .data:0x8051A5CC; // type:object size:0x20 @@ -32308,27 +32308,27 @@ lbl_8051E2FC = .data:0x8051E2FC; // type:object size:0x3C lbl_8051E338 = .data:0x8051E338; // type:object size:0x1D8 lbl_8051E510 = .data:0x8051E510; // type:object size:0x38 lbl_8051E548 = .data:0x8051E548; // type:object size:0x18 data:string -lbl_8051E560 = .data:0x8051E560; // type:object size:0xC -lbl_8051E56C = .data:0x8051E56C; // type:object size:0x1C -lbl_8051E588 = .data:0x8051E588; // type:object size:0x1C -lbl_8051E5A4 = .data:0x8051E5A4; // type:object size:0xC -lbl_8051E5B0 = .data:0x8051E5B0; // type:object size:0x20 -lbl_8051E5D0 = .data:0x8051E5D0; // type:object size:0x10 -lbl_8051E5E0 = .data:0x8051E5E0; // type:object size:0x10 -lbl_8051E5F0 = .data:0x8051E5F0; // type:object size:0x10 -lbl_8051E600 = .data:0x8051E600; // type:object size:0x10 -lbl_8051E610 = .data:0x8051E610; // type:object size:0x18 +lbl_8051E560 = .data:0x8051E560; // type:object size:0xB data:string +lbl_8051E56C = .data:0x8051E56C; // type:object size:0x19 data:string +lbl_8051E588 = .data:0x8051E588; // type:object size:0x1A data:string +lbl_8051E5A4 = .data:0x8051E5A4; // type:object size:0xA data:string +lbl_8051E5B0 = .data:0x8051E5B0; // type:object size:0x1E data:string +lbl_8051E5D0 = .data:0x8051E5D0; // type:object size:0xE data:string +lbl_8051E5E0 = .data:0x8051E5E0; // type:object size:0xE data:string +lbl_8051E5F0 = .data:0x8051E5F0; // type:object size:0xD data:string +lbl_8051E600 = .data:0x8051E600; // type:object size:0xE data:string +lbl_8051E610 = .data:0x8051E610; // type:object size:0x15 data:string __vt__17dLytAutoCaption_c = .data:0x8051E628; // type:object size:0x44 __vt__32sFStateID_c<17dLytAutoCaption_c> = .data:0x8051E78C; // type:object size:0x34 lbl_8051E7C0 = .data:0x8051E7C0; // type:object size:0x18 data:string -lbl_8051E7D8 = .data:0x8051E7D8; // type:object size:0xC -lbl_8051E7E4 = .data:0x8051E7E4; // type:object size:0x1C -lbl_8051E800 = .data:0x8051E800; // type:object size:0x1C -lbl_8051E81C = .data:0x8051E81C; // type:object size:0xC -lbl_8051E828 = .data:0x8051E828; // type:object size:0x10 -lbl_8051E838 = .data:0x8051E838; // type:object size:0x10 -lbl_8051E848 = .data:0x8051E848; // type:object size:0x10 -lbl_8051E858 = .data:0x8051E858; // type:object size:0x18 +lbl_8051E7D8 = .data:0x8051E7D8; // type:object size:0xB data:string +lbl_8051E7E4 = .data:0x8051E7E4; // type:object size:0x19 data:string +lbl_8051E800 = .data:0x8051E800; // type:object size:0x1A data:string +lbl_8051E81C = .data:0x8051E81C; // type:object size:0xA data:string +lbl_8051E828 = .data:0x8051E828; // type:object size:0xE data:string +lbl_8051E838 = .data:0x8051E838; // type:object size:0xD data:string +lbl_8051E848 = .data:0x8051E848; // type:object size:0xE data:string +lbl_8051E858 = .data:0x8051E858; // type:object size:0x15 data:string __vt__17dLytAutoExplain_c = .data:0x8051E870; // type:object size:0x44 __vt__32sFStateID_c<17dLytAutoExplain_c> = .data:0x8051E9D4; // type:object size:0x34 lbl_8051EA08 = .data:0x8051EA08; // type:object size:0xA0 data:4byte @@ -32791,38 +32791,38 @@ __vt__26sFState_c<13dLytBattery_c> = .data:0x80522928; // type:object size:0x18 @8279 = .data:0x80522A90; // type:object size:0x1C scope:local data:string @8280 = .data:0x80522AAC; // type:object size:0x1B scope:local data:string __vt__28sFStateID_c<13dLytBattery_c> = .data:0x80522AC8; // type:object size:0x34 scope:weak -lbl_80522B00 = .data:0x80522B00; // type:object size:0x1C +lbl_80522B00 = .data:0x80522B00; // type:object size:0x1B data:string lbl_80522B1C = .data:0x80522B1C; // type:object size:0xC data:string -lbl_80522B28 = .data:0x80522B28; // type:object size:0x1C -lbl_80522B44 = .data:0x80522B44; // type:object size:0xC -lbl_80522B50 = .data:0x80522B50; // type:object size:0x20 -lbl_80522B70 = .data:0x80522B70; // type:object size:0x10 -lbl_80522B80 = .data:0x80522B80; // type:object size:0x1C -lbl_80522B9C = .data:0x80522B9C; // type:object size:0x1C -lbl_80522BB8 = .data:0x80522BB8; // type:object size:0x20 -lbl_80522BD8 = .data:0x80522BD8; // type:object size:0x1C -lbl_80522BF4 = .data:0x80522BF4; // type:object size:0xC -lbl_80522C00 = .data:0x80522C00; // type:object size:0x10 -lbl_80522C10 = .data:0x80522C10; // type:object size:0x10 -lbl_80522C20 = .data:0x80522C20; // type:object size:0x58 -lbl_80522C78 = .data:0x80522C78; // type:object size:0xC -lbl_80522C84 = .data:0x80522C84; // type:object size:0xC +lbl_80522B28 = .data:0x80522B28; // type:object size:0x1A data:string +lbl_80522B44 = .data:0x80522B44; // type:object size:0xA data:string +lbl_80522B50 = .data:0x80522B50; // type:object size:0x1E data:string +lbl_80522B70 = .data:0x80522B70; // type:object size:0xE data:string +lbl_80522B80 = .data:0x80522B80; // type:object size:0x1B data:string +lbl_80522B9C = .data:0x80522B9C; // type:object size:0x1A data:string +lbl_80522BB8 = .data:0x80522BB8; // type:object size:0x1E data:string +lbl_80522BD8 = .data:0x80522BD8; // type:object size:0x19 data:string +lbl_80522BF4 = .data:0x80522BF4; // type:object size:0xB data:string +lbl_80522C00 = .data:0x80522C00; // type:object size:0xD data:string +lbl_80522C10 = .data:0x80522C10; // type:object size:0xE data:string +lbl_80522C20 = .data:0x80522C20; // type:object size:0xE data:string +lbl_80522C78 = .data:0x80522C78; // type:object size:0xB data:string +lbl_80522C84 = .data:0x80522C84; // type:object size:0x9 data:string lbl_80522C90 = .data:0x80522C90; // type:object size:0x30 lbl_80522CC0 = .data:0x80522CC0; // type:object size:0x30 -lbl_80522CF0 = .data:0x80522CF0; // type:object size:0x18 -lbl_80522D08 = .data:0x80522D08; // type:object size:0x140 -lbl_80522E48 = .data:0x80522E48; // type:object size:0x38 +lbl_80522CF0 = .data:0x80522CF0; // type:object size:0x14 +lbl_80522D08 = .data:0x80522D08; // type:object size:0x18 +lbl_80522E48 = .data:0x80522E48; // type:object size:0x34 lbl_80522E80 = .data:0x80522E80; // type:object size:0x14 data:string -lbl_80522E94 = .data:0x80522E94; // type:object size:0xC -lbl_80522EA0 = .data:0x80522EA0; // type:object size:0x10 -lbl_80522EB0 = .data:0x80522EB0; // type:object size:0xC -lbl_80522EBC = .data:0x80522EBC; // type:object size:0xC -lbl_80522EC8 = .data:0x80522EC8; // type:object size:0x30 -lbl_80522EF8 = .data:0x80522EF8; // type:object size:0x30 -lbl_80522F28 = .data:0x80522F28; // type:object size:0x18 -lbl_80522F40 = .data:0x80522F40; // type:object size:0x240 -lbl_80523180 = .data:0x80523180; // type:object size:0x34 -lbl_805231B4 = .data:0x805231B4; // type:object size:0x34 +lbl_80522E94 = .data:0x80522E94; // type:object size:0xB data:string +lbl_80522EA0 = .data:0x80522EA0; // type:object size:0xE data:string +lbl_80522EB0 = .data:0x80522EB0; // type:object size:0x9 data:string +__vt__14dLytWipeMain_c = .data:0x80522EBC; // type:object size:0xC +__vt__53sFStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c> = .data:0x80522EC8; // type:object size:0x30 +__vt__83sStateMgr_c<14dLytWipeMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80522EF8; // type:object size:0x30 +__vt__30sFStateFct_c<14dLytWipeMain_c> = .data:0x80522F28; // type:object size:0x14 +__vt__27sFState_c<14dLytWipeMain_c> = .data:0x80522F40; // type:object size:0x18 +__vt__25sFStateID_c<10dLytWipe_c> = .data:0x80523180; // type:object size:0x34 +__vt__29sFStateID_c<14dLytWipeMain_c> = .data:0x805231B4; // type:object size:0x34 lbl_805231E8 = .data:0x805231E8; // type:object size:0x18 lbl_80523200 = .data:0x80523200; // type:object size:0x18 lbl_80523218 = .data:0x80523218; // type:object size:0x1C @@ -33339,7 +33339,6 @@ __vt__56sFStateMgr_c<17dLytCommonArrow_c,20sStateMethodUsr_FI_c> = .data:0x80527 __vt__86sStateMgr_c<17dLytCommonArrow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80527418; // type:object size:0x30 scope:weak __vt__33sFStateFct_c<17dLytCommonArrow_c> = .data:0x80527448; // type:object size:0x14 scope:weak __vt__30sFState_c<17dLytCommonArrow_c> = .data:0x80527460; // type:object size:0x18 scope:weak -__vt__17dCursorHitCheck_c = .data:0x80527478; // type:object size:0x10 scope:weak @8395 = .data:0x805274B4; // type:object size:0xC scope:local @8396 = .data:0x805274C0; // type:object size:0xC scope:local @8397 = .data:0x805274CC; // type:object size:0xC scope:local @@ -35754,10 +35753,10 @@ lbl_805405C0 = .data:0x805405C0; // type:object size:0x30 lbl_805405F0 = .data:0x805405F0; // type:object size:0x30 lbl_80540620 = .data:0x80540620; // type:object size:0x18 lbl_80540638 = .data:0x80540638; // type:object size:0x18 -lbl_80540650 = .data:0x80540650; // type:object size:0x30 -lbl_80540680 = .data:0x80540680; // type:object size:0x30 -lbl_805406B0 = .data:0x805406B0; // type:object size:0x18 -lbl_805406C8 = .data:0x805406C8; // type:object size:0x18 +__vt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c> = .data:0x80540650; // type:object size:0x30 +__vt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540680; // type:object size:0x30 +__vt__26sFStateFct_c<10dLytWipe_c> = .data:0x805406B0; // type:object size:0x18 +__vt__23sFState_c<10dLytWipe_c> = .data:0x805406C8; // type:object size:0x18 lbl_805406E0 = .data:0x805406E0; // type:object size:0x30 lbl_80540710 = .data:0x80540710; // type:object size:0x30 lbl_80540740 = .data:0x80540740; // type:object size:0x18 @@ -38115,72 +38114,72 @@ lbl_80572310 = .sdata:0x80572310; // type:object size:0x8 lbl_80572318 = .sdata:0x80572318; // type:object size:0x4 data:4byte lbl_8057231C = .sdata:0x8057231C; // type:object size:0x4 data:4byte lbl_80572320 = .sdata:0x80572320; // type:object size:0x4 data:4byte -lbl_80572324 = .sdata:0x80572324; // type:object size:0x8 -lbl_8057232C = .sdata:0x8057232C; // type:object size:0x4 -lbl_80572330 = .sdata:0x80572330; // type:object size:0x8 -lbl_80572338 = .sdata:0x80572338; // type:object size:0x8 -lbl_80572340 = .sdata:0x80572340; // type:object size:0x8 -lbl_80572348 = .sdata:0x80572348; // type:object size:0x8 -lbl_80572350 = .sdata:0x80572350; // type:object size:0x8 -lbl_80572358 = .sdata:0x80572358; // type:object size:0x8 -lbl_80572360 = .sdata:0x80572360; // type:object size:0x8 -lbl_80572368 = .sdata:0x80572368; // type:object size:0x8 -lbl_80572370 = .sdata:0x80572370; // type:object size:0x8 -lbl_80572378 = .sdata:0x80572378; // type:object size:0x8 -lbl_80572380 = .sdata:0x80572380; // type:object size:0x8 data:4byte +lbl_80572324 = .sdata:0x80572324; // type:object size:0x6 data:string +lbl_8057232C = .sdata:0x8057232C; // type:object size:0x1 +lbl_80572330 = .sdata:0x80572330; // type:object size:0x5 data:string +lbl_80572338 = .sdata:0x80572338; // type:object size:0x5 data:string +lbl_80572340 = .sdata:0x80572340; // type:object size:0x5 data:string +lbl_80572348 = .sdata:0x80572348; // type:object size:0x5 data:string +lbl_80572350 = .sdata:0x80572350; // type:object size:0x7 data:string +lbl_80572358 = .sdata:0x80572358; // type:object size:0x7 data:string +lbl_80572360 = .sdata:0x80572360; // type:object size:0x5 data:string +lbl_80572368 = .sdata:0x80572368; // type:object size:0x5 data:string +lbl_80572370 = .sdata:0x80572370; // type:object size:0x7 data:string +lbl_80572378 = .sdata:0x80572378; // type:object size:0x5 data:string +lbl_80572380 = .sdata:0x80572380; // type:object size:0x4 data:4byte lbl_80572388 = .sdata:0x80572388; // type:object size:0x8 data:4byte -lbl_80572390 = .sdata:0x80572390; // type:object size:0x8 data:4byte -lbl_80572398 = .sdata:0x80572398; // type:object size:0x8 data:4byte +lbl_80572390 = .sdata:0x80572390; // type:object size:0x4 data:4byte +lbl_80572398 = .sdata:0x80572398; // type:object size:0x4 data:4byte lbl_805723A0 = .sdata:0x805723A0; // type:object size:0x8 data:4byte lbl_805723A8 = .sdata:0x805723A8; // type:object size:0x4 data:4byte -lbl_805723AC = .sdata:0x805723AC; // type:object size:0xC -lbl_805723B8 = .sdata:0x805723B8; // type:object size:0x8 data:4byte -lbl_805723C0 = .sdata:0x805723C0; // type:object size:0x8 data:4byte +lbl_805723AC = .sdata:0x805723AC; // type:object size:0x5 data:string +lbl_805723B8 = .sdata:0x805723B8; // type:object size:0x4 data:4byte +lbl_805723C0 = .sdata:0x805723C0; // type:object size:0x4 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_805723D0 = .sdata:0x805723D0; // type:object size:0x4 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:0x8 -lbl_805723FC = .sdata:0x805723FC; // type:object size:0x4 -lbl_80572400 = .sdata:0x80572400; // type:object size:0x8 data:4byte +lbl_805723F4 = .sdata:0x805723F4; // type:object size:0x6 data:wstring +lbl_805723FC = .sdata:0x805723FC; // type:object size:0x2 +lbl_80572400 = .sdata:0x80572400; // type:object size:0x4 data:4byte lbl_80572408 = .sdata:0x80572408; // type:object size:0x8 data:4byte -lbl_80572410 = .sdata:0x80572410; // type:object size:0x8 data:4byte +lbl_80572410 = .sdata:0x80572410; // type:object size:0x4 data:4byte lbl_80572418 = .sdata:0x80572418; // type:object size:0x4 data:4byte -lbl_8057241C = .sdata:0x8057241C; // type:object size:0x8 -lbl_80572424 = .sdata:0x80572424; // type:object size:0x8 -lbl_8057242C = .sdata:0x8057242C; // type:object size:0x8 -lbl_80572434 = .sdata:0x80572434; // type:object size:0x8 -lbl_8057243C = .sdata:0x8057243C; // type:object size:0x8 -lbl_80572444 = .sdata:0x80572444; // type:object size:0x8 -lbl_8057244C = .sdata:0x8057244C; // type:object size:0x8 -lbl_80572454 = .sdata:0x80572454; // type:object size:0xC +lbl_8057241C = .sdata:0x8057241C; // type:object size:0x7 data:string +lbl_80572424 = .sdata:0x80572424; // type:object size:0x7 data:string +lbl_8057242C = .sdata:0x8057242C; // type:object size:0x7 data:string +lbl_80572434 = .sdata:0x80572434; // type:object size:0x7 data:string +lbl_8057243C = .sdata:0x8057243C; // type:object size:0x7 data:string +lbl_80572444 = .sdata:0x80572444; // type:object size:0x7 data:string +lbl_8057244C = .sdata:0x8057244C; // type:object size:0x7 data:string +lbl_80572454 = .sdata:0x80572454; // type:object size:0x7 data:string lbl_80572460 = .sdata:0x80572460; // type:object size:0x8 data:4byte 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:0x8 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_805724A8 = .sdata:0x805724A8; // type:object size:0x8 -lbl_805724B0 = .sdata:0x805724B0; // type:object size:0x8 -lbl_805724B8 = .sdata:0x805724B8; // type:object size:0x8 -lbl_805724C0 = .sdata:0x805724C0; // type:object size:0x8 -lbl_805724C8 = .sdata:0x805724C8; // type:object size:0x8 -lbl_805724D0 = .sdata:0x805724D0; // type:object size:0x8 -lbl_805724D8 = .sdata:0x805724D8; // type:object size:0x8 -lbl_805724E0 = .sdata:0x805724E0; // type:object size:0x8 -lbl_805724E8 = .sdata:0x805724E8; // type:object size:0x8 data:4byte -lbl_805724F0 = .sdata:0x805724F0; // type:object size:0x8 -lbl_805724F8 = .sdata:0x805724F8; // type:object size:0x8 +lbl_80572478 = .sdata:0x80572478; // type:object size:0x4 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:0x7 data:string +lbl_805724B0 = .sdata:0x805724B0; // type:object size:0x7 data:string +lbl_805724B8 = .sdata:0x805724B8; // type:object size:0x7 data:string +lbl_805724C0 = .sdata:0x805724C0; // type:object size:0x7 data:string +lbl_805724C8 = .sdata:0x805724C8; // type:object size:0x7 data:string +lbl_805724D0 = .sdata:0x805724D0; // type:object size:0x7 data:string +lbl_805724D8 = .sdata:0x805724D8; // type:object size:0x7 data:string +lbl_805724E0 = .sdata:0x805724E0; // type:object size:0x7 data:string +lbl_805724E8 = .sdata:0x805724E8; // type:object size:0x4 data:4byte +lbl_805724F0 = .sdata:0x805724F0; // type:object size:0x5 data:string +lbl_805724F8 = .sdata:0x805724F8; // type:object size:0x6 data:string lbl_80572500 = .sdata:0x80572500; // type:object size:0x8 data:4byte -lbl_80572508 = .sdata:0x80572508; // type:object size:0x8 -lbl_80572510 = .sdata:0x80572510; // type:object size:0x8 data:4byte -lbl_80572518 = .sdata:0x80572518; // type:object size:0x8 +lbl_80572508 = .sdata:0x80572508; // type:object size:0x5 data:string +lbl_80572510 = .sdata:0x80572510; // type:object size:0x4 data:4byte +lbl_80572518 = .sdata:0x80572518; // type:object size:0x5 data:string lbl_80572520 = .sdata:0x80572520; // type:object size:0x8 data:string lbl_80572528 = .sdata:0x80572528; // type:object size:0x8 data:4byte lbl_80572530 = .sdata:0x80572530; // type:object size:0x8 data:4byte @@ -38218,9 +38217,9 @@ lbl_80572618 = .sdata:0x80572618; // type:object size:0x8 data:4byte lbl_80572620 = .sdata:0x80572620; // type:object size:0x8 data:4byte lbl_80572628 = .sdata:0x80572628; // type:object size:0x8 data:4byte lbl_80572630 = .sdata:0x80572630; // type:object size:0x8 -lbl_80572638 = .sdata:0x80572638; // type:object size:0x8 data:4byte +lbl_80572638 = .sdata:0x80572638; // type:object size:0x4 data:4byte lbl_80572640 = .sdata:0x80572640; // type:object size:0x8 data:4byte -lbl_80572648 = .sdata:0x80572648; // type:object size:0x8 data:4byte +lbl_80572648 = .sdata:0x80572648; // type:object size:0x4 data:4byte lbl_80572650 = .sdata:0x80572650; // type:object size:0x8 data:4byte lbl_80572658 = .sdata:0x80572658; // type:object size:0x4 data:4byte lbl_8057265C = .sdata:0x8057265C; // type:object size:0x4 data:4byte @@ -38293,9 +38292,9 @@ lbl_80572854 = .sdata:0x80572854; // type:object size:0x8 lbl_8057285C = .sdata:0x8057285C; // type:object size:0xC lbl_80572868 = .sdata:0x80572868; // type:object size:0x4 data:4byte @8144 = .sdata:0x80572870; // type:object size:0x1 scope:local data:string -lbl_80572878 = .sdata:0x80572878; // type:object size:0x4 -lbl_8057287C = .sdata:0x8057287C; // type:object size:0x4 -lbl_80572880 = .sdata:0x80572880; // type:object size:0x8 +lbl_80572878 = .sdata:0x80572878; // type:object size:0x1 +lbl_8057287C = .sdata:0x8057287C; // type:object size:0x1 +lbl_80572880 = .sdata:0x80572880; // type:object size:0x1 lbl_80572888 = .sdata:0x80572888; // type:object size:0x8 data:string lbl_80572890 = .sdata:0x80572890; // type:object size:0x8 lbl_80572898 = .sdata:0x80572898; // type:object size:0x8 @@ -40094,28 +40093,28 @@ lbl_80575428 = .sbss:0x80575428; // type:object size:0x8 data:byte 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__11dLytMeter_c = .sbss:0x80575448; // 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 -DO_FINISH_TRIAL_TEAR_ANIM = .sbss:0x80575461; // type:object size:0x1 data:byte -LytMeterTimer__FINISHED = .sbss:0x80575462; // type:object size:0x6 data:byte +sDoExit__16dLytMeterTimer_c = .sbss:0x80575460; // type:object size:0x1 data:byte +sDoFinishAnim__16dLytMeterTimer_c = .sbss:0x80575461; // type:object size:0x1 data:byte +sFinished__16dLytMeterTimer_c = .sbss:0x80575462; // type:object size:0x1 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 CURRENT_ACTOR_EVENT_FLOW_MANAGER = .sbss:0x80575490; // type:object size:0x8 data:4byte -LYT_SIMPLE_WINDOW = .sbss:0x80575498; // type:object size:0x8 data:4byte +sInstance__18dLytSimpleWindow_c = .sbss:0x80575498; // type:object size:0x8 data:4byte lbl_805754A0 = .sbss:0x805754A0; // type:object size:0x8 data:4byte sMapFaderColor = .sbss:0x805754A8; // type:object size:0x4 data:byte lbl_805754AC = .sbss:0x805754AC; // type:object size:0x1 data:byte sInstance__9dLytMap_c = .sbss:0x805754B0; // type:object size:0x8 data:4byte sInstance__13dLytBattery_c = .sbss:0x805754B8; // type:object size:0x8 data:4byte sInstance__17dLytAreaCaption_c = .sbss:0x805754C0; // type:object size:0x8 data:4byte -LytWipe = .sbss:0x805754C8; // type:object size:0x8 data:4byte +sInstance__10dLytWipe_c = .sbss:0x805754C8; // type:object size:0x4 data:4byte LYT_HELP_PTR = .sbss:0x805754D0; // type:object size:0x8 data:4byte lbl_805754D8 = .sbss:0x805754D8; // type:object size:0x8 data:4byte sInstance__15dLytBirdGauge_c = .sbss:0x805754E0; // type:object size:0x4 data:4byte @@ -40187,7 +40186,7 @@ sInstance__19GoddessChestCounter = .sbss:0x805756A8; // type:object size:0x8 dat sInstance__9dScBoot_c = .sbss:0x805756B0; // type:object size:0x4 data:4byte lbl_805756B4 = .sbss:0x805756B4; // type:object size:0x4 data:4byte TITLE_SCREEN_CHANGE = .sbss:0x805756B8; // type:object size:0x4 data:4byte -SIREN_TAG = .sbss:0x805756BC; // type:object size:0x4 data:4byte +sInstance__10dTgSiren_c = .sbss:0x805756BC; // type:object size:0x4 data:4byte WEATHER_TAG = .sbss:0x805756C0; // type:object size:0x8 data:4byte StreamTList = .sbss:0x805756C8; // type:object size:0x8 data:4byte SandStreamTList = .sbss:0x805756D0; // type:object size:0x8 data:4byte @@ -40260,7 +40259,7 @@ sDoSomethingWithFileAOnTransition__9dScGame_c = .sbss:0x8057579F; // type:object sPreventClearingSomeFlag__9dScGame_c = .sbss:0x805757A0; // type:object size:0x1 data:byte sInstance__9dCsBase_c = .sbss:0x805757A8; // type:object size:0x8 data:4byte C_GAME = .sbss:0x805757B0; // type:object size:0x8 data:4byte -LINK_PTR2 = .sbss:0x805757B8; // type:object size:0x4 data:4byte +LINK2__7dAcPy_c = .sbss:0x805757B8; // type:object size:0x4 data:4byte lbl_805757BC = .sbss:0x805757BC; // type:object size:0x1 data:byte lbl_805757C0 = .sbss:0x805757C0; // type:object size:0x4 data:float lbl_805757C4 = .sbss:0x805757C4; // type:object size:0x2 data:2byte @@ -40388,8 +40387,8 @@ lbl_80575934 = .sbss:0x80575934; // type:object size:0x4 data:4byte lbl_80575938 = .sbss:0x80575938; // type:object size:0x4 data:float lbl_8057593C = .sbss:0x8057593C; // type:object size:0x4 data:float LYT_PAUSE_DISP = .sbss:0x80575940; // type:object size:0x8 data:4byte -lbl_80575948 = .sbss:0x80575948; // type:object size:0x8 data:4byte -LYT_SAVE_MGR = .sbss:0x80575950; // type:object size:0x8 data:4byte +sInstance__14dLytGameOver_c = .sbss:0x80575948; // type:object size:0x8 data:4byte +sInstance__13dLytSaveMgr_c = .sbss:0x80575950; // type:object size:0x8 data:4byte lbl_80575958 = .sbss:0x80575958; // type:object size:0x1 data:byte lbl_80575959 = .sbss:0x80575959; // type:object size:0x1 data:byte lbl_8057595C = .sbss:0x8057595C; // type:object size:0x4 data:4byte @@ -48612,7 +48611,7 @@ sFlags__15ItemflagManager = .bss:0x805A9BD8; // type:object size:0x80 sDungeonFlags__18DungeonflagManager = .bss:0x805A9C58; // type:object size:0x10 sSkipFlags__15SkipflagManager = .bss:0x805A9C68; // type:object size:0x20 lbl_805A9C88 = .bss:0x805A9C88; // type:object size:0x10 data:4byte -lbl_805A9C98 = .bss:0x805A9C98; // type:object size:0x10 +lbl_805A9C98 = .bss:0x805A9C98; // type:object size:0xC sConf = .bss:0x805A9CA8; // type:object size:0x1E8 scope:local StateID_Wait__18dLytMeter1Button_c = .bss:0x805A9EA0; // type:object size:0x30 data:4byte StateID_ToUse__18dLytMeter1Button_c = .bss:0x805A9EE0; // type:object size:0x30 data:4byte @@ -48626,31 +48625,31 @@ StateID_Invisible__16dLytMeterParts_c = .bss:0x805AA0A0; // type:object size:0x3 StateID_In__16dLytMeterParts_c = .bss:0x805AA0E0; // type:object size:0x30 data:4byte StateID_Visible__16dLytMeterParts_c = .bss:0x805AA120; // type:object size:0x30 data:4byte StateID_Out__16dLytMeterParts_c = .bss:0x805AA160; // type:object size:0x30 data:4byte -lbl_805AA190 = .bss:0x805AA190; // type:object size:0x10 -StateID_InvisibleWait__15dLytMeterABtn_c = .bss:0x805AA1A0; // type:object size:0x40 data:4byte -StateID_In__15dLytMeterABtn_c = .bss:0x805AA1E0; // type:object size:0x80 data:4byte -StateID_Wait__15dLytMeterABtn_c = .bss:0x805AA260; // type:object size:0x40 data:4byte -LytMeterABtn__STATE_ON = .bss:0x805AA2A0; // type:object size:0x40 data:4byte -LytMeterABtn__STATE_ACTIVE = .bss:0x805AA2E0; // type:object size:0x40 data:4byte +lbl_805AA190 = .bss:0x805AA190; // type:object size:0xC +StateID_InvisibleWait__15dLytMeterABtn_c = .bss:0x805AA1A0; // type:object size:0x30 data:4byte +StateID_In__15dLytMeterABtn_c = .bss:0x805AA1E0; // type:object size:0x30 data:4byte +StateID_Wait__15dLytMeterABtn_c = .bss:0x805AA260; // type:object size:0x30 data:4byte +LytMeterABtn__STATE_ON = .bss:0x805AA2A0; // type:object size:0x30 data:4byte +LytMeterABtn__STATE_ACTIVE = .bss:0x805AA2E0; // type:object size:0x30 data:4byte LytMeterABtn__STATE_OFF = .bss:0x805AA320; // type:object size:0x30 data:4byte -lbl_805AA350 = .bss:0x805AA350; // type:object size:0x10 -LytMeterZBtn__STATE_WAIT = .bss:0x805AA360; // type:object size:0x40 data:4byte -LytMeterZBtn__STATE_ON = .bss:0x805AA3A0; // type:object size:0x40 data:4byte -LytMeterZBtn__STATE_ACTIVE = .bss:0x805AA3E0; // type:object size:0x40 data:4byte +lbl_805AA350 = .bss:0x805AA350; // type:object size:0xC +LytMeterZBtn__STATE_WAIT = .bss:0x805AA360; // type:object size:0x30 data:4byte +LytMeterZBtn__STATE_ON = .bss:0x805AA3A0; // type:object size:0x30 data:4byte +LytMeterZBtn__STATE_ACTIVE = .bss:0x805AA3E0; // type:object size:0x30 data:4byte LytMeterZBtn__STATE_OFF = .bss:0x805AA420; // type:object size:0x30 data:4byte -lbl_805AA450 = .bss:0x805AA450; // type:object size:0x10 -LytMeterKakeraKey__STATE_WAIT = .bss:0x805AA460; // type:object size:0x40 data:4byte -LytMeterKakeraKey__STATE_ON = .bss:0x805AA4A0; // type:object size:0x40 data:4byte -lbl_805AA4E0 = .bss:0x805AA4E0; // type:object size:0x40 data:4byte -LytMeterKakeraKey__STATE_ACTIVE = .bss:0x805AA520; // type:object size:0x40 data:4byte -LytMeterKakeraKey__STATE_OFF = .bss:0x805AA560; // type:object size:0x40 data:4byte -LytMeterBossKey__STATE_WAIT = .bss:0x805AA5A0; // type:object size:0x40 data:4byte -LytMeterBossKey__STATE_ON = .bss:0x805AA5E0; // type:object size:0x40 data:4byte -LytMeterBossKey__STATE_ACTIVE = .bss:0x805AA620; // type:object size:0x40 data:4byte -LytMeterBossKey__STATE_OFF = .bss:0x805AA660; // type:object size:0x40 data:4byte -LytMeterSmallKey__STATE_WAIT = .bss:0x805AA6A0; // type:object size:0x40 data:4byte -LytMeterSmallKey__STATE_ON = .bss:0x805AA6E0; // type:object size:0x40 data:4byte -LytMeterSmallKey__STATE_ACTIVE = .bss:0x805AA720; // type:object size:0x40 data:4byte +lbl_805AA450 = .bss:0x805AA450; // type:object size:0xC +LytMeterKakeraKey__STATE_WAIT = .bss:0x805AA460; // type:object size:0x30 data:4byte +LytMeterKakeraKey__STATE_ON = .bss:0x805AA4A0; // type:object size:0x30 data:4byte +lbl_805AA4E0 = .bss:0x805AA4E0; // type:object size:0x30 data:4byte +LytMeterKakeraKey__STATE_ACTIVE = .bss:0x805AA520; // type:object size:0x30 data:4byte +LytMeterKakeraKey__STATE_OFF = .bss:0x805AA560; // type:object size:0x30 data:4byte +LytMeterBossKey__STATE_WAIT = .bss:0x805AA5A0; // type:object size:0x30 data:4byte +LytMeterBossKey__STATE_ON = .bss:0x805AA5E0; // type:object size:0x30 data:4byte +LytMeterBossKey__STATE_ACTIVE = .bss:0x805AA620; // type:object size:0x30 data:4byte +LytMeterBossKey__STATE_OFF = .bss:0x805AA660; // type:object size:0x30 data:4byte +LytMeterSmallKey__STATE_WAIT = .bss:0x805AA6A0; // type:object size:0x30 data:4byte +LytMeterSmallKey__STATE_ON = .bss:0x805AA6E0; // type:object size:0x30 data:4byte +LytMeterSmallKey__STATE_ACTIVE = .bss:0x805AA720; // type:object size:0x30 data:4byte LytMeterSmallKey__STATE_OFF = .bss:0x805AA760; // type:object size:0x30 data:4byte lbl_805AA790 = .bss:0x805AA790; // type:object size:0xC scope:local StateID_Invisible__21dLytMeterDrinkParts_c = .bss:0x805AA7A0; // type:object size:0x30 data:4byte @@ -48662,139 +48661,139 @@ StateID_In__16dLytMeterDrink_c = .bss:0x805AA8E0; // type:object size:0x30 data: StateID_Wait__16dLytMeterDrink_c = .bss:0x805AA920; // type:object size:0x30 data:4byte StateID_Move__16dLytMeterDrink_c = .bss:0x805AA960; // type:object size:0x30 data:4byte StateID_Out__16dLytMeterDrink_c = .bss:0x805AA9A0; // type:object size:0x30 data:4byte -lbl_805AA9D0 = .bss:0x805AA9D0; // type:object size:0x10 -LytMeterRemoconBg__STATE_WAIT = .bss:0x805AA9E0; // type:object size:0xF0 data:4byte -lbl_805AAAD0 = .bss:0x805AAAD0; // type:object size:0x10 -LytMeterNunchakuBg__STATE_WAIT = .bss:0x805AAAE0; // type:object size:0x40 data:4byte -LytMeterNunchakuBg__STATE_ON = .bss:0x805AAB20; // type:object size:0x40 data:4byte -LytMeterNunchakuBg__STATE_ACTIVE = .bss:0x805AAB60; // type:object size:0x40 data:4byte +lbl_805AA9D0 = .bss:0x805AA9D0; // type:object size:0xC +LytMeterRemoconBg__STATE_WAIT = .bss:0x805AA9E0; // type:object size:0x30 data:4byte +lbl_805AAAD0 = .bss:0x805AAAD0; // type:object size:0xC +LytMeterNunchakuBg__STATE_WAIT = .bss:0x805AAAE0; // type:object size:0x30 data:4byte +LytMeterNunchakuBg__STATE_ON = .bss:0x805AAB20; // type:object size:0x30 data:4byte +LytMeterNunchakuBg__STATE_ACTIVE = .bss:0x805AAB60; // type:object size:0x30 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:0x10 -LytMeterItemSelectIcon__STATE_WAIT = .bss:0x805AACE0; // type:object size:0x40 data:4byte -LytMeterItemSelectIcon__STATE_ON = .bss:0x805AAD20; // type:object size:0x40 data:4byte -LytMeterItemSelectIcon__STATE_SELECT = .bss:0x805AAD60; // type:object size:0x40 data:4byte -LytMeterItemSelectIcon__STATE_OFF = .bss:0x805AADA0; // type:object size:0x40 data:4byte -LytMeterItemSelectBlink__STATE_WAIT = .bss:0x805AADE0; // type:object size:0x40 data:4byte -LytMeterItemSelectBlink__STATE_ON = .bss:0x805AAE20; // type:object size:0x40 data:4byte -LytMeterItemSelectBlink__STATE_SELECT = .bss:0x805AAE60; // type:object size:0x40 data:4byte -LytMeterItemSelectBlink__STATE_OFF = .bss:0x805AAEA0; // type:object size:0x40 data:4byte -LytMeterItemSelectText__STATE_WAIT = .bss:0x805AAEE0; // type:object size:0x40 data:4byte -LytMeterItemSelectText__STATE_ON = .bss:0x805AAF20; // type:object size:0x40 data:4byte -LytMeterItemSelectText__STATE_SELECT = .bss:0x805AAF60; // type:object size:0x40 data:4byte -LytMeterItemSelectText__STATE_OFF = .bss:0x805AAFA0; // type:object size:0x40 data:4byte -LytMeterItemSelectBtn__STATE_INVISIBLE = .bss:0x805AAFE0; // type:object size:0x40 data:4byte -LytMeterItemSelectBtn__STATE_ON = .bss:0x805AB020; // type:object size:0x40 data:4byte -LytMeterItemSelectBtn__STATE_VISIBLE = .bss:0x805AB060; // type:object size:0x40 data:4byte -LytMeterItemSelectBtn__STATE_OFF = .bss:0x805AB0A0; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_INIT_WAIT = .bss:0x805AB0E0; // type:object size:0x40 data:4byte -LytMeterItemSelect__LytMeterItemSelect__STATE_WAIT = .bss:0x805AB120; // type:object size:0x80 data:4byte -LytMeterItemSelect__STATE_SELECT = .bss:0x805AB1A0; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_SET_IN = .bss:0x805AB1E0; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_SET_SPECIAL_ITEM_IN = .bss:0x805AB220; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_SET = .bss:0x805AB260; // type:object size:0x80 data:4byte -LytMeterItemSelect__STATE_SET_NONE = .bss:0x805AB2E0; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_SELECT_OUT = .bss:0x805AB320; // type:object size:0x80 data:4byte -LytMeterItemSelect__STATE_RESET = .bss:0x805AB3A0; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_RESET_OUT = .bss:0x805AB3E0; // type:object size:0xC0 data:4byte -LytMeterItemSelect__STATE_UNUSE = .bss:0x805AB4A0; // type:object size:0x80 data:4byte -LytMeterItemSelect__STATE_DEMO_OUT_0 = .bss:0x805AB520; // type:object size:0x40 data:4byte -LytMeterItemSelect__STATE_DEMO_OUT_1 = .bss:0x805AB560; // type:object size:0x80 data:4byte -LytMeterItemSelect__STATE_FRAME_OFF_MOVE = .bss:0x805AB5E0; // type:object size:0x40 data:4byte +lbl_805AACD0 = .bss:0x805AACD0; // type:object size:0xC +LytMeterItemSelectIcon__STATE_WAIT = .bss:0x805AACE0; // type:object size:0x30 data:4byte +LytMeterItemSelectIcon__STATE_ON = .bss:0x805AAD20; // type:object size:0x30 data:4byte +LytMeterItemSelectIcon__STATE_SELECT = .bss:0x805AAD60; // type:object size:0x30 data:4byte +LytMeterItemSelectIcon__STATE_OFF = .bss:0x805AADA0; // type:object size:0x30 data:4byte +LytMeterItemSelectBlink__STATE_WAIT = .bss:0x805AADE0; // type:object size:0x30 data:4byte +LytMeterItemSelectBlink__STATE_ON = .bss:0x805AAE20; // type:object size:0x30 data:4byte +LytMeterItemSelectBlink__STATE_SELECT = .bss:0x805AAE60; // type:object size:0x30 data:4byte +LytMeterItemSelectBlink__STATE_OFF = .bss:0x805AAEA0; // type:object size:0x30 data:4byte +LytMeterItemSelectText__STATE_WAIT = .bss:0x805AAEE0; // type:object size:0x30 data:4byte +LytMeterItemSelectText__STATE_ON = .bss:0x805AAF20; // type:object size:0x30 data:4byte +LytMeterItemSelectText__STATE_SELECT = .bss:0x805AAF60; // type:object size:0x30 data:4byte +LytMeterItemSelectText__STATE_OFF = .bss:0x805AAFA0; // type:object size:0x30 data:4byte +LytMeterItemSelectBtn__STATE_INVISIBLE = .bss:0x805AAFE0; // type:object size:0x30 data:4byte +LytMeterItemSelectBtn__STATE_ON = .bss:0x805AB020; // type:object size:0x30 data:4byte +LytMeterItemSelectBtn__STATE_VISIBLE = .bss:0x805AB060; // type:object size:0x30 data:4byte +LytMeterItemSelectBtn__STATE_OFF = .bss:0x805AB0A0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_INIT_WAIT = .bss:0x805AB0E0; // type:object size:0x30 data:4byte +LytMeterItemSelect__LytMeterItemSelect__STATE_WAIT = .bss:0x805AB120; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SELECT = .bss:0x805AB1A0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SET_IN = .bss:0x805AB1E0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SET_SPECIAL_ITEM_IN = .bss:0x805AB220; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SET = .bss:0x805AB260; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SET_NONE = .bss:0x805AB2E0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_SELECT_OUT = .bss:0x805AB320; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_RESET = .bss:0x805AB3A0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_RESET_OUT = .bss:0x805AB3E0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_UNUSE = .bss:0x805AB4A0; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_DEMO_OUT_0 = .bss:0x805AB520; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_DEMO_OUT_1 = .bss:0x805AB560; // type:object size:0x30 data:4byte +LytMeterItemSelect__STATE_FRAME_OFF_MOVE = .bss:0x805AB5E0; // type:object size:0x30 data:4byte LytMeterItemSelect__STATE_FRAME_OFF_OUT = .bss:0x805AB620; // type:object size:0x30 data:4byte -lbl_805AB650 = .bss:0x805AB650; // type:object size:0x10 -LytMeterPlusBtn__STATE_WAIT = .bss:0x805AB660; // type:object size:0x40 data:4byte -LytMeterPlusBtn__STATE_TO_USE = .bss:0x805AB6A0; // type:object size:0x40 data:4byte -LytMeterPlusBtn__STATE_TO_UNUSE = .bss:0x805AB6E0; // type:object size:0x40 data:4byte +lbl_805AB650 = .bss:0x805AB650; // type:object size:0xC +LytMeterPlusBtn__STATE_WAIT = .bss:0x805AB660; // type:object size:0x30 data:4byte +LytMeterPlusBtn__STATE_TO_USE = .bss:0x805AB6A0; // type:object size:0x30 data:4byte +LytMeterPlusBtn__STATE_TO_UNUSE = .bss:0x805AB6E0; // type:object size:0x30 data:4byte LytMeterPlusBtn__STATE_UNUSE = .bss:0x805AB720; // type:object size:0x30 data:4byte -lbl_805AB750 = .bss:0x805AB750; // type:object size:0x10 -LytMeterMinusBtnMenuIcon__STATE_WAIT = .bss:0x805AB760; // type:object size:0x40 data:4byte -LytMeterMinusBtnMenuIcon__STATE_ON = .bss:0x805AB7A0; // type:object size:0x40 data:4byte -LytMeterMinusBtnMenuIcon__STATE_SELECT = .bss:0x805AB7E0; // type:object size:0x40 data:4byte -LytMeterMinusBtnMenuIcon__STATE_OFF = .bss:0x805AB820; // type:object size:0x40 data:4byte -LtyMeterMinusBtnBlink__STATE_WAIT = .bss:0x805AB860; // type:object size:0x40 data:4byte -LtyMeterMinusBtnBlink__STATE_ON = .bss:0x805AB8A0; // type:object size:0x40 data:4byte -LtyMeterMinusBtnBlink__STATE_SELECT = .bss:0x805AB8E0; // type:object size:0x40 data:4byte -LtyMeterMinusBtnBlink__STATE_OFF = .bss:0x805AB920; // type:object size:0x40 data:4byte -LtyMeterMinusBtnText__STATE_WAIT = .bss:0x805AB960; // type:object size:0x40 data:4byte -LtyMeterMinusBtnText__STATE_ON = .bss:0x805AB9A0; // type:object size:0x40 data:4byte -LtyMeterMinusBtnText__STATE_SELECT = .bss:0x805AB9E0; // type:object size:0x40 data:4byte -LtyMeterMinusBtnText__STATE_OFF = .bss:0x805ABA20; // type:object size:0x40 data:4byte -LtyMeterMinusBtn__STATE_WAIT = .bss:0x805ABA60; // type:object size:0x40 data:4byte -LtyMeterMinusBtn__STATE_MENU_SELECTING_IN = .bss:0x805ABAA0; // type:object size:0x40 data:4byte -LtyMeterMinusBtn__STATE_MENU_SELECTING = .bss:0x805ABAE0; // type:object size:0x40 data:4byte -LtyMeterMinusBtn__STATE_MENU_SELECTING_OUT = .bss:0x805ABB20; // type:object size:0xC0 data:4byte -LtyMeterMinusBtn__STATE_UNUSE = .bss:0x805ABBE0; // type:object size:0x80 data:4byte +lbl_805AB750 = .bss:0x805AB750; // type:object size:0xC +LytMeterMinusBtnMenuIcon__STATE_WAIT = .bss:0x805AB760; // type:object size:0x30 data:4byte +LytMeterMinusBtnMenuIcon__STATE_ON = .bss:0x805AB7A0; // type:object size:0x30 data:4byte +LytMeterMinusBtnMenuIcon__STATE_SELECT = .bss:0x805AB7E0; // type:object size:0x30 data:4byte +LytMeterMinusBtnMenuIcon__STATE_OFF = .bss:0x805AB820; // type:object size:0x30 data:4byte +LtyMeterMinusBtnBlink__STATE_WAIT = .bss:0x805AB860; // type:object size:0x30 data:4byte +LtyMeterMinusBtnBlink__STATE_ON = .bss:0x805AB8A0; // type:object size:0x30 data:4byte +LtyMeterMinusBtnBlink__STATE_SELECT = .bss:0x805AB8E0; // type:object size:0x30 data:4byte +LtyMeterMinusBtnBlink__STATE_OFF = .bss:0x805AB920; // type:object size:0x30 data:4byte +LtyMeterMinusBtnText__STATE_WAIT = .bss:0x805AB960; // type:object size:0x30 data:4byte +LtyMeterMinusBtnText__STATE_ON = .bss:0x805AB9A0; // type:object size:0x30 data:4byte +LtyMeterMinusBtnText__STATE_SELECT = .bss:0x805AB9E0; // type:object size:0x30 data:4byte +LtyMeterMinusBtnText__STATE_OFF = .bss:0x805ABA20; // type:object size:0x30 data:4byte +LtyMeterMinusBtn__STATE_WAIT = .bss:0x805ABA60; // type:object size:0x30 data:4byte +LtyMeterMinusBtn__STATE_MENU_SELECTING_IN = .bss:0x805ABAA0; // type:object size:0x30 data:4byte +LtyMeterMinusBtn__STATE_MENU_SELECTING = .bss:0x805ABAE0; // type:object size:0x30 data:4byte +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 -LytMeterDowsingMenuIcon__STATE_ON = .bss:0x805ABEE0; // type:object size:0x40 data:4byte -LytMeterDowsingMenuIcon__STATE_SELECT = .bss:0x805ABF20; // type:object size:0x40 data:4byte -LytMeterDowsingMenuIcon__STATE_OFF = .bss:0x805ABF60; // type:object size:0x40 data:4byte -LytMeterDowsingBlink__STATE_WAIT = .bss:0x805ABFA0; // type:object size:0x40 data:4byte -LytMeterDowsingBlink__STATE_ON = .bss:0x805ABFE0; // type:object size:0x40 data:4byte -LytMeterDowsingBlink__STATE_SELECT = .bss:0x805AC020; // type:object size:0x40 data:4byte -LytMeterDowsingBlink__STATE_OFF = .bss:0x805AC060; // type:object size:0x40 data:4byte -LytMeterDowsingInput__STATE_WAIT = .bss:0x805AC0A0; // type:object size:0x40 data:4byte -LytMeterDowsingInput__STATE_ON = .bss:0x805AC0E0; // type:object size:0x40 data:4byte -LytMeterDowsingInput__STATE_SELECT = .bss:0x805AC120; // type:object size:0x40 data:4byte -LytMeterDowsingInput__STATE_OFF = .bss:0x805AC160; // type:object size:0x40 data:4byte -LytMeterDowsingText__STATE_WAIT = .bss:0x805AC1A0; // type:object size:0x40 data:4byte -LytMeterDowsingText__STATE_ON = .bss:0x805AC1E0; // type:object size:0x40 data:4byte -LytMeterDowsingText__STATE_SELECT = .bss:0x805AC220; // type:object size:0x40 data:4byte -LytMeterDowsingText__STATE_OFF = .bss:0x805AC260; // type:object size:0x40 data:4byte -LytMeterDowsing__STATE_INVISIBLE = .bss:0x805AC2A0; // type:object size:0x40 data:4byte -LytMeterDowsing__STATE_WAIT = .bss:0x805AC2E0; // type:object size:0x80 data:4byte -LytMeterDowsing__STATE_MENU_SELECTING = .bss:0x805AC360; // type:object size:0x40 data:4byte -LytMeterDowsing__STATE_MENU_SELECTING_OUT = .bss:0x805AC3A0; // type:object size:0x80 data:4byte -LytMeterDowsing__STATE_TO_USE = .bss:0x805AC420; // type:object size:0x80 data:4byte -LytMeterDowsing__STATE_UNUSE = .bss:0x805AC4A0; // type:object size:0x40 data:4byte -LytMeterDowsing__STATE_DEMO_MOVE = .bss:0x805AC4E0; // type:object size:0x40 data:4byte +lbl_805ABE90 = .bss:0x805ABE90; // type:object size:0xC +LytMeterDowsingMenuIcon__STATE_WAIT = .bss:0x805ABEA0; // type:object size:0x30 data:4byte +LytMeterDowsingMenuIcon__STATE_ON = .bss:0x805ABEE0; // type:object size:0x30 data:4byte +LytMeterDowsingMenuIcon__STATE_SELECT = .bss:0x805ABF20; // type:object size:0x30 data:4byte +LytMeterDowsingMenuIcon__STATE_OFF = .bss:0x805ABF60; // type:object size:0x30 data:4byte +LytMeterDowsingBlink__STATE_WAIT = .bss:0x805ABFA0; // type:object size:0x30 data:4byte +LytMeterDowsingBlink__STATE_ON = .bss:0x805ABFE0; // type:object size:0x30 data:4byte +LytMeterDowsingBlink__STATE_SELECT = .bss:0x805AC020; // type:object size:0x30 data:4byte +LytMeterDowsingBlink__STATE_OFF = .bss:0x805AC060; // type:object size:0x30 data:4byte +LytMeterDowsingInput__STATE_WAIT = .bss:0x805AC0A0; // type:object size:0x30 data:4byte +LytMeterDowsingInput__STATE_ON = .bss:0x805AC0E0; // type:object size:0x30 data:4byte +LytMeterDowsingInput__STATE_SELECT = .bss:0x805AC120; // type:object size:0x30 data:4byte +LytMeterDowsingInput__STATE_OFF = .bss:0x805AC160; // type:object size:0x30 data:4byte +LytMeterDowsingText__STATE_WAIT = .bss:0x805AC1A0; // type:object size:0x30 data:4byte +LytMeterDowsingText__STATE_ON = .bss:0x805AC1E0; // type:object size:0x30 data:4byte +LytMeterDowsingText__STATE_SELECT = .bss:0x805AC220; // type:object size:0x30 data:4byte +LytMeterDowsingText__STATE_OFF = .bss:0x805AC260; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_INVISIBLE = .bss:0x805AC2A0; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_WAIT = .bss:0x805AC2E0; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_MENU_SELECTING = .bss:0x805AC360; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_MENU_SELECTING_OUT = .bss:0x805AC3A0; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_TO_USE = .bss:0x805AC420; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_UNUSE = .bss:0x805AC4A0; // type:object size:0x30 data:4byte +LytMeterDowsing__STATE_DEMO_MOVE = .bss:0x805AC4E0; // type:object size:0x30 data:4byte LytMeterDowsing__STATE_DEMO_OUT = .bss:0x805AC520; // type:object size:0x30 data:4byte -lbl_805AC550 = .bss:0x805AC550; // type:object size:0x10 -LytMeterRupyStart__STATE_WAIT = .bss:0x805AC560; // type:object size:0x40 data:4byte -LytMeterRupyStart__STATE_START = .bss:0x805AC5A0; // type:object size:0x40 data:4byte -LytMeterRupyBlink__WAIT = .bss:0x805AC5E0; // type:object size:0x40 data:4byte -LytMeterRupyBlink__STATE_FLASH = .bss:0x805AC620; // type:object size:0x40 data:4byte -LytMeterRupy__STATE_IN = .bss:0x805AC660; // type:object size:0x40 data:4byte -LytMeterRupy__STATE_ACTIVE = .bss:0x805AC6A0; // type:object size:0x40 data:4byte -LytMeterRupy__STATE_START = .bss:0x805AC6E0; // type:object size:0x40 data:4byte +lbl_805AC550 = .bss:0x805AC550; // type:object size:0xC +LytMeterRupyStart__STATE_WAIT = .bss:0x805AC560; // type:object size:0x30 data:4byte +LytMeterRupyStart__STATE_START = .bss:0x805AC5A0; // type:object size:0x30 data:4byte +LytMeterRupyBlink__WAIT = .bss:0x805AC5E0; // type:object size:0x30 data:4byte +LytMeterRupyBlink__STATE_FLASH = .bss:0x805AC620; // type:object size:0x30 data:4byte +LytMeterRupy__STATE_IN = .bss:0x805AC660; // type:object size:0x30 data:4byte +LytMeterRupy__STATE_ACTIVE = .bss:0x805AC6A0; // type:object size:0x30 data:4byte +LytMeterRupy__STATE_START = .bss:0x805AC6E0; // type:object size:0x30 data:4byte LytMeterRupy__STATE_OUT = .bss:0x805AC720; // type:object size:0x30 data:4byte -lbl_805AC750 = .bss:0x805AC750; // type:object size:0x10 -LytMeterGanbariGauge__STATE_INVISIBLE_WAIT = .bss:0x805AC760; // type:object size:0x80 data:4byte -LytMeterGanbariGauge__STATE_WAIT = .bss:0x805AC7E0; // type:object size:0x80 data:4byte -LytMeterGanbariGauge__STATE_OUT = .bss:0x805AC860; // type:object size:0x80 data:4byte -LytMeterGanbariGauge__STATE_FULL = .bss:0x805AC8E0; // type:object size:0x40 data:4byte -LytMeterGanbariGauge__STATE_FULL_GUTS_USE = .bss:0x805AC920; // type:object size:0x40 data:4byte -LytMeterGanbariGauge__STATE_NORMAL = .bss:0x805AC960; // type:object size:0x40 data:4byte -LytMeterGanbariGauge__STATE_CAUTION = .bss:0x805AC9A0; // type:object size:0x40 data:4byte -LytMeterGanbariGauge__STATE_TO_MIN = .bss:0x805AC9E0; // type:object size:0x40 data:4byte -lbl_805ACA20 = .bss:0x805ACA20; // type:object size:0x40 data:4byte +lbl_805AC750 = .bss:0x805AC750; // type:object size:0xC +LytMeterGanbariGauge__STATE_INVISIBLE_WAIT = .bss:0x805AC760; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_WAIT = .bss:0x805AC7E0; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_OUT = .bss:0x805AC860; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_FULL = .bss:0x805AC8E0; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_FULL_GUTS_USE = .bss:0x805AC920; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_NORMAL = .bss:0x805AC960; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_CAUTION = .bss:0x805AC9A0; // type:object size:0x30 data:4byte +LytMeterGanbariGauge__STATE_TO_MIN = .bss:0x805AC9E0; // type:object size:0x30 data:4byte +lbl_805ACA20 = .bss:0x805ACA20; // type:object size:0x30 data:4byte LytMeterGanbariGauge__STATE_TO_MAX = .bss:0x805ACA60; // type:object size:0x30 data:4byte -lbl_805ACA90 = .bss:0x805ACA90; // type:object size:0x10 -LytMeterEventSkip__STATE_INVISIBLE = .bss:0x805ACAA0; // type:object size:0x40 data:4byte -LytMeterEventSkip__STATE_IN = .bss:0x805ACAE0; // type:object size:0x40 data:4byte -LytMeterEventSkip__STATE_VISIBLE = .bss:0x805ACB20; // type:object size:0x40 data:4byte +lbl_805ACA90 = .bss:0x805ACA90; // type:object size:0xC +LytMeterEventSkip__STATE_INVISIBLE = .bss:0x805ACAA0; // type:object size:0x30 data:4byte +LytMeterEventSkip__STATE_IN = .bss:0x805ACAE0; // type:object size:0x30 data:4byte +LytMeterEventSkip__STATE_VISIBLE = .bss:0x805ACB20; // type:object size:0x30 data:4byte LytMeterEventSkip__STATE_OUT = .bss:0x805ACB60; // type:object size:0x30 data:4byte -lbl_805ACB90 = .bss:0x805ACB90; // type:object size:0x50 -LytMeterTimer__STATE_SIREN = .bss:0x805ACBE0; // type:object size:0x80 data:4byte -LytMeterTimer__STATE_CHANGE_SAFE = .bss:0x805ACC60; // type:object size:0x40 data:4byte -LytMeterTimer__STATE_SAFE = .bss:0x805ACCA0; // type:object size:0x80 data:4byte +lbl_805ACB90 = .bss:0x805ACB90; // type:object size:0xC +LytMeterTimer__STATE_SIREN = .bss:0x805ACBE0; // type:object size:0x30 data:4byte +LytMeterTimer__STATE_CHANGE_SAFE = .bss:0x805ACC60; // type:object size:0x30 data:4byte +LytMeterTimer__STATE_SAFE = .bss:0x805ACCA0; // type:object size:0x30 data:4byte LytMeterTimer__STATE_FRUITS = .bss:0x805ACD20; // type:object size:0x30 data:4byte -lbl_805ACD50 = .bss:0x805ACD50; // type:object size:0x10 -LytMeterShieldGauge__STATE_NORMAL = .bss:0x805ACD60; // type:object size:0xB0 data:4byte +lbl_805ACD50 = .bss:0x805ACD50; // type:object size:0xC +LytMeterShieldGauge__STATE_NORMAL = .bss:0x805ACD60; // type:object size:0x30 data:4byte lbl_805ACE10 = .bss:0x805ACE10; // type:object size:0x10 lbl_805ACE20 = .bss:0x805ACE20; // type:object size:0x28 LytDoButton__STATE_INVISIBLE_WAIT = .bss:0x805ACE48; // type:object size:0x40 data:4byte @@ -48988,18 +48987,18 @@ StateID_On__13dLytBattery_c = .bss:0x805B09C0; // type:object size:0x30 data:4by StateID_None__13dLytBattery_c = .bss:0x805B0A00; // type:object size:0x30 data:4byte @7518 = .bss:0x805B0A30; // type:object size:0xC scope:local StateID_Out__13dLytBattery_c = .bss:0x805B0A40; // type:object size:0x30 data:4byte -lbl_805B0A70 = .bss:0x805B0A70; // type:object size:0x10 +lbl_805B0A70 = .bss:0x805B0A70; // type:object size:0xC StateID_Wait__22dLytAreaCaptionParts_c = .bss:0x805B0A80; // type:object size:0x30 data:4byte StateID_Start__22dLytAreaCaptionParts_c = .bss:0x805B0AC0; // type:object size:0x30 data:4byte StateID_Out__22dLytAreaCaptionParts_c = .bss:0x805B0B00; // type:object size:0x30 data:4byte -lbl_805B0B30 = .bss:0x805B0B30; // type:object size:0x10 -LytWipe__LytWipeMain__STATE_MODE_NONE = .bss:0x805B0B40; // type:object size:0x40 data:4byte -LytWipe__LytWipeMain__STATE_MODE_IN = .bss:0x805B0B80; // type:object size:0x40 data:4byte -LytWipe__LytWipeMain__STATE_MODE_WAIT = .bss:0x805B0BC0; // type:object size:0x40 data:4byte -LytWipe__LytWipeMain__STATE_MODE_OUT = .bss:0x805B0C00; // type:object size:0x40 data:4byte -LytWipe__STATE_NONE = .bss:0x805B0C40; // type:object size:0x40 data:4byte -LytWipe__STATE_IN = .bss:0x805B0C80; // type:object size:0x40 data:4byte -LytWipe__STATE_WAIT = .bss:0x805B0CC0; // type:object size:0x40 data:4byte +lbl_805B0B30 = .bss:0x805B0B30; // type:object size:0xC +LytWipe__LytWipeMain__STATE_MODE_NONE = .bss:0x805B0B40; // type:object size:0x30 data:4byte +LytWipe__LytWipeMain__STATE_MODE_IN = .bss:0x805B0B80; // type:object size:0x30 data:4byte +LytWipe__LytWipeMain__STATE_MODE_WAIT = .bss:0x805B0BC0; // type:object size:0x30 data:4byte +LytWipe__LytWipeMain__STATE_MODE_OUT = .bss:0x805B0C00; // type:object size:0x30 data:4byte +LytWipe__STATE_NONE = .bss:0x805B0C40; // type:object size:0x30 data:4byte +LytWipe__STATE_IN = .bss:0x805B0C80; // type:object size:0x30 data:4byte +LytWipe__STATE_WAIT = .bss:0x805B0CC0; // type:object size:0x30 data:4byte LytWipe__STATE_OUT = .bss:0x805B0D00; // type:object size:0x30 data:4byte lbl_805B0D30 = .bss:0x805B0D30; // type:object size:0x10 LytHelp__LytHelpMain__STATE_MODE_NONE = .bss:0x805B0D40; // type:object size:0x40 data:4byte @@ -49463,7 +49462,7 @@ lbl_805B7D60 = .bss:0x805B7D60; // type:object size:0x10 data:4byte lbl_805B7D70 = .bss:0x805B7D70; // type:object size:0x60 data:4byte lbl_805B7DD0 = .bss:0x805B7DD0; // type:object size:0x10 lbl_805B7DE0 = .bss:0x805B7DE0; // type:object size:0x20 -LytControlGame__StateID_Normal = .bss:0x805B7E00; // type:object size:0x40 data:4byte +StateID_Normal__17dLytControlGame_c = .bss:0x805B7E00; // type:object size:0x40 data:4byte LytControlGame__StateID_Pause_SetRes = .bss:0x805B7E40; // type:object size:0x40 data:4byte LytControlGame__StateID_Pause_SyncRes = .bss:0x805B7E80; // type:object size:0x40 data:4byte LytControlGame__StateID_Pause = .bss:0x805B7EC0; // type:object size:0x40 data:4byte diff --git a/configure.py b/configure.py index 633c8566..f066e933 100644 --- a/configure.py +++ b/configure.py @@ -384,27 +384,28 @@ config.libs = [ Object(Matching, "d/d_textunk.cpp"), Object(NonMatching, "d/d_textwindow_unk.cpp"), Object(NonMatching, "d/d_tag_processor.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter.cpp"), Object(NonMatching, "d/lyt/meter/d_lyt_meter_unk.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_a_btn.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_z_btn.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_key.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_a_btn.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_z_btn.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_key.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_drink.cpp"), - Object(NonMatching, "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(NonMatching, "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"), - Object(NonMatching, "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"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_event_skip.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_timer.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_heart.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_shield_gauge.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_remocon_bg.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_nun_stk.cpp"), + 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(Matching, "d/lyt/meter/d_lyt_meter_cross_btn.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_dowsing.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_rupy.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_event_skip.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_timer.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_heart.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_shield_gauge.cpp"), Object(NonMatching, "d/lyt/d_lyt_do_button.cpp"), + Object(NonMatching, "d/lyt/d_lyt_do_button_related.cpp"), Object(Matching, "d/lyt/d_lyt_common_a_btn.cpp"), Object(Matching, "d/lyt/d_lyt_common_icon_material.cpp"), Object(Matching, "d/lyt/d_lyt_common_icon_item.cpp"), @@ -419,14 +420,14 @@ config.libs = [ Object(Matching, "d/lyt/msg_window/d_lyt_msg_window_stone.cpp"), Object(Matching, "d/lyt/msg_window/d_lyt_msg_window_demo.cpp"), Object(NonMatching, "d/lyt/d_lyt_simple_window.cpp"), - Object(NonMatching, "d/lyt/d_lyt_auto_caption.cpp"), - Object(NonMatching, "d/lyt/d_lyt_auto_explain.cpp"), + Object(Matching, "d/lyt/d_lyt_auto_caption.cpp"), + Object(Matching, "d/lyt/d_lyt_auto_explain.cpp"), Object(NonMatching, "d/lyt/d_lyt_map_capture.cpp"), Object(NonMatching, "d/lyt/d_lyt_map.cpp"), Object(Matching, "d/lyt/d_lyt_note.cpp"), Object(Matching, "d/lyt/d_lyt_battery.cpp"), - Object(NonMatching, "d/lyt/d_lyt_area_caption.cpp"), - Object(NonMatching, "d/lyt/d_lyt_wipe.cpp"), + Object(Matching, "d/lyt/d_lyt_area_caption.cpp"), + Object(Matching, "d/lyt/d_lyt_wipe.cpp"), Object(NonMatching, "d/lyt/d_lyt_help.cpp"), Object(Matching, "d/lyt/d_lyt_bird_gauge.cpp"), Object(Matching, "d/lyt/d_lyt_sky_gauge.cpp"), diff --git a/include/c/c_lib.h b/include/c/c_lib.h index ab903f08..1862235e 100644 --- a/include/c/c_lib.h +++ b/include/c/c_lib.h @@ -10,6 +10,9 @@ s32 targetAngleY(const mVec3_c &target, const mVec3_c &source); s32 targetAngleX(const mVec3_c &target, const mVec3_c &source); f32 addCalcPosXZ(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep, f32 minStep); +// made up name +f32 easeOut(f32 value, f32 exponent); + } // namespace cLib #endif 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_bird.h b/include/d/a/d_a_bird.h index af91133f..42db16b8 100644 --- a/include/d/a/d_a_bird.h +++ b/include/d/a/d_a_bird.h @@ -26,8 +26,14 @@ public: STATE_FUNC_DECLARE(dBird_c, MiniGameEnd); STATE_FUNC_DECLARE(dBird_c, MiniGameLevelUpDemo); + s16 getNumDashes() const { + return mNumDashes; + } + private: /* 0x??? */ STATE_MGR_DECLARE(dBird_c); + u8 _0x36C[0xF8E - 0x36C]; + /* 0xF8E */ s16 mNumDashes; }; #endif diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index 35e71c7b..bb3181bc 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -51,9 +51,16 @@ public: void getItemFromBWheelItem(); bool isStateWait(); - static int getTotalBombCount(); - static int getTotalArrowCount(); - static int getTotalSeedCount(); + static s32 getTotalBombCount(); + static s32 getTotalArrowCount(); + static s32 getTotalSeedCount(); + + static s32 getTotalBombCapacity(); + static s32 getTotalSeedCapacity(); + static s32 getTotalArrowCapacity(); + + static u32 getKeyPieceCount(); + static u32 getSmallKeyCount(); static bool isRupee(ITEM_ID item); static bool isKeyPiece(ITEM_ID item); @@ -63,7 +70,17 @@ public: static void itemGetEventStart(dAcBase_c *); static void itemGetEventEnd(dAcBase_c *); - static void healLink(u32 amount, bool); + enum Trial_e { + TRIAL_SKYLOFT, + TRIAL_FARON, + TRIAL_ELDIN, + TRIAL_LANAYRU, + TRIAL_NONE, + }; + + static Trial_e getCurrentTrial(); + + static void healLink(u32 amount, bool); // move to dAcPy_c private: /* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index 79bee679..70950f06 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -109,7 +109,7 @@ enum ITEM_ID { /* 0x066 */ ITEM_TREASURE_MEDAL = 102, /* 0x067 */ ITEM_POTION_MEDAL = 103, /* 0x068 */ ITEM_CURSED_MEDAL = 104, - /* 0x069 */ ITEM_SCATTERSHOT = 105, + /* 0x069 */ ITEM_MIGHTY_SCATTERSHOT = 105, /* 0x06A */ ITEM_UNK_106 = 106, /* 0x06B */ ITEM_UNK_107 = 107, /* 0x06C */ ITEM_MEDIUM_WALLET = 108, diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index d1e16f3e..32297c77 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -3,12 +3,15 @@ #include "common.h" #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" #include "m/m_vec.h" #include "nw4r/g3d/res/g3d_resfile.h" +#include "toBeSorted/file_manager.h" class dAcPy_c : public dAcObjBase_c { // See Below for some info @@ -54,6 +57,13 @@ public: FLG0_HANGING_ITEM | FLG0_HANGING_LEDGE | FLG0_UNK_0x10 | FLG0_IN_AIR, }; + enum dAcPy_RidingActor { + RIDING_NONE = 0, + RIDING_TRUCK_MINECART = 1, + RIDING_LOFTWING = 2, + RIDING_BOAT = 3, + }; + dAcPy_c(); virtual ~dAcPy_c(); @@ -61,6 +71,7 @@ public: void setPosYRot(const mVec3_c &pos, mAng rot, UNKWORD, UNKWORD, UNKWORD); // argument is always false in existing code, true doesn't seem to make a difference void bonk(bool unk = false); + bool fn_80202D90(bool); /* vt 0x080 */ virtual UNKWORD IfCurrentActionToActor(dAcBase_c *ac, UNKWORD); /* vt 0x084 */ virtual void vt_0x084(dAcBase_c *ac, UNKWORD); @@ -142,7 +153,7 @@ public: /* vt 0x1B4 */ virtual void isByte0x434eEqual7(); /* vt 0x1B8 */ virtual void canHandleGameOver(); /* vt 0x1BC */ virtual void vt_0x1BC(); - /* vt 0x1C0 */ virtual void vt_0x1C0(); + /* vt 0x1C0 */ virtual void *vt_0x1C0() const; /* vt 0x1C4 */ virtual void getActorInActorRef1(); /* vt 0x1C8 */ virtual void doesActorRef1Exist(); /* vt 0x1CC */ virtual void unlinkActorRef1(); @@ -182,7 +193,7 @@ public: /* vt 0x254 */ virtual void isAttackingUnderground(); /* vt 0x258 */ virtual void vt_0x258(); /* vt 0x25C */ virtual void vt_0x25C(); - /* vt 0x260 */ virtual void vt_0x260(); + /* vt 0x260 */ virtual f32 vt_0x260() const; /* vt 0x264 */ virtual void getGroosenatorIfIn(); /* vt 0x268 */ virtual void setActorRef11(); /* vt 0x26C */ virtual void doesGameOver(); @@ -230,9 +241,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; @@ -242,6 +257,18 @@ 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; + /* 0x5E0 */ u8 _0x5E0[0x4564 - 0x5E0]; + /* 0x4564 */ f32 field_0x4564; + + f32 getField_0x4564() const { + return field_0x4564; + } + + f32 getAnmMatClrFrame() const { + return mAnmMatClr.getFrame(0); + } inline bool checkFlags0x340(u32 mask) const { return (someFlags_0x340 & mask) != 0; @@ -263,6 +290,14 @@ public: return mCurrentAction == action; } + bool isSittingOrUnk0xAE() const { + return mCurrentAction == 0xAD || mCurrentAction == 0xAE; + } + + inline bool checkSwordAndMoreStates(u32 mask) const { + return (mSwordAndMoreStates & mask) != 0; + } + inline bool checkActionFlags(u32 mask) const { return (mActionFlags & mask) != 0; } @@ -270,13 +305,45 @@ public: return (mActionFlagsCont & mask) != 0; } + inline u8 getRidingActorType() const { + return mRidingActorType; + } + + inline bool hasvt_0x1C0() const { + return vt_0x1C0() != nullptr; + } + + inline bool isAffectedByStaminaPotion() const { + return FileManager::GetInstance()->hasStaminaPotionNormal() && getRidingActorType() != RIDING_BOAT; + } + + inline bool isAffectedByStaminaPotionPlus() const { + return FileManager::GetInstance()->hasStaminaPotionPlus() && getRidingActorType() != RIDING_BOAT; + } + static nw4r::g3d::ResFile getItemResFile(const char *name, mAllocator_c &allocator); static const dAcPy_c *GetLink() { return LINK; } + static dAcPy_c *GetLink2() { + return LINK2; + } + static dAcPy_c *LINK; + static dAcPy_c *LINK2; + + static s32 getCurrentBowType(); + static s32 getCurrentSlingshotType(); + static s32 getCurrentBeetleType(); + static s32 getCurrentBugNetType(); + + static bool isItemRestrictedByBokoBase(ITEM_ID item); + + static u32 getCurrentHealthCapacity(); + + bool canDowseProbably() const; }; #endif diff --git a/include/d/d_bzs_types.h b/include/d/d_bzs_types.h index bf0a06f5..cf5264b4 100644 --- a/include/d/d_bzs_types.h +++ b/include/d/d_bzs_types.h @@ -189,7 +189,7 @@ struct STIF { /* 0x0F */ u8 field_0x0F; /* 0x10 */ u8 field_0x10; /* 0x11 */ u8 field_0x11; - /* 0x12 */ u8 mapNameId; + /* 0x12 */ s8 mapNameId; /* 0x13 */ u8 field_0x13; }; diff --git a/include/d/d_camera.h b/include/d/d_camera.h new file mode 100644 index 00000000..baf6246c --- /dev/null +++ b/include/d/d_camera.h @@ -0,0 +1,30 @@ +#ifndef D_CAMERA_H +#define D_CAMERA_H + +#include "d/d_base.h" +#include "m/m_vec.h" + +extern "C" bool fn_80081FE0(void *, const char *); + +class dCamera_c : public dBase_c { +public: + bool isCurrentTrend(const char *name) const { + return fn_80081FE0(field_0xD98, name); + } + + void *getField_0xD98() const { + return field_0xD98; + } + + const mVec3_c &getPositionMaybe() const { + return mPositionMaybe; + } + +private: + /* 0x068 */ u8 _0x068[0x6C - 0x068]; + /* 0x06C */ mVec3_c mPositionMaybe; + /* 0x078 */ u8 _0x078[0xD98 - 0x078]; + /* 0xD98 */ void *field_0xD98; +}; + +#endif diff --git a/include/d/d_message.h b/include/d/d_message.h index cd075bb0..aa86ffbe 100644 --- a/include/d/d_message.h +++ b/include/d/d_message.h @@ -30,12 +30,29 @@ public: return sTagProcessor; } + void init(); void reset(); + bool getField_0x328() const { + return field_0x328; + } + bool getField_0x329() const { return field_0x329; } + s32 getField_0x2FC() const { + return field_0x2FC; + } + + void setField_0x2FC(s32 val) { + field_0x2FC = val; + } + + s32 getField_0x32C() const { + return field_0x32C; + } + void setField_0x329(bool v) { field_0x329 = v; } @@ -102,12 +119,15 @@ private: /* 0x2FC */ s32 field_0x2FC; - /* 0x300 */ u8 _0x300[0x329 - 0x300]; + /* 0x300 */ u8 _0x300[0x328 - 0x300]; + /* 0x328 */ bool field_0x328; /* 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; diff --git a/include/d/d_pad.h b/include/d/d_pad.h index 5175dbca..53a9955a 100644 --- a/include/d/d_pad.h +++ b/include/d/d_pad.h @@ -6,7 +6,16 @@ public: static bool checkButtonAPressed(); static bool checkButtonBPressed(); static bool checkButtonZPressed(); + static bool checkButtonCPressed(); + static bool checkButtonMinusPressed(); static bool checkButtonPlusPressed(); + static bool checkButton1Pressed(); + static bool checkButton2Pressed(); + + static bool checkButtonDpadUpPressed(); + static bool checkButtonDpadDownPressed(); + static bool checkButtonDpadLeftPressed(); + static bool checkButtonDpadRightPressed(); static bool checkButtonAHeld(); static bool checkButtonZHeld(); diff --git a/include/d/d_pouch.h b/include/d/d_pouch.h new file mode 100644 index 00000000..a65d0097 --- /dev/null +++ b/include/d/d_pouch.h @@ -0,0 +1,12 @@ +#ifndef D_POUCH_H +#define D_POUCH_H + +#include "common.h" + +u32 convertFilePouchSlot(s32 fileSlot); +s32 convertLytPouchSlot(s32 fileSlot); +s32 getPouchSlotCount(bool unk); +bool isItemExtraAmmo(s32 item); +bool isItemMedal(s32 item); + +#endif diff --git a/include/d/d_sc_game.h b/include/d/d_sc_game.h index 49f4cca3..33bd09d6 100644 --- a/include/d/d_sc_game.h +++ b/include/d/d_sc_game.h @@ -6,6 +6,7 @@ #include "d/d_dylink.h" #include "d/d_fader.h" #include "d/d_scene.h" +#include "d/d_camera.h" #include "egg/gfx/eggScreen.h" #include "f/f_profile_name.h" #include "m/m2d.h" @@ -148,6 +149,7 @@ public: return sInstance; } + bool setReloadTrigger(fProfile::PROFILE_NAME_e reloadTrigger); void setRespawnInfo(const mVec3_c &linkPos, const mAng3_c &linkRot, bool unk); void setSpawnInfo(u8 roomid, const mVec3_c &pos, mAng rot); @@ -190,6 +192,13 @@ public: sReloaderType = type; } + static dCamera_c *getCamera(s32 idx); + static void setCamera(s32 idx, dCamera_c *); + + bool isFaderSettled() const { + return mFader.isSettled(); + } + protected: static u32 sUpdateFrameCount; static u8 sCurrentLayer; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 23b01ee1..b7901d05 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -8,6 +8,7 @@ #include "egg/gfx/eggPostEffectBlur.h" #include "egg/gfx/eggScreenEffectBlur.h" #include "m/m_allocator.h" +#include "m/m_fader_base.h" #include "m/m_mtx.h" #include "m/m_vec.h" #include "s/s_FPhase.h" @@ -128,10 +129,20 @@ public: return sInstance; } + bool isFadedOut() const { + return mFader.isStatus(mFaderBase_c::FADED_OUT); + } + + bool isFadedIn() const { + return mFader.isStatus(mFaderBase_c::FADED_IN); + } + u8 getCurrRoomId() const { return curr_room_id; } + bool fn_801B3EE0(); + private: dRoom_c *createRoom(int roomid, bool flag0x40); void createLytSeekerStone(); diff --git a/include/d/d_stage_mgr.h b/include/d/d_stage_mgr.h index 31ccd40b..cc7d16a3 100644 --- a/include/d/d_stage_mgr.h +++ b/include/d/d_stage_mgr.h @@ -49,11 +49,26 @@ public: public: bool isAreaTypeDungeon() const; bool isAreaTypeSky() const; + bool isAreaTypeHouse() const; bool isAreaTypeDungeonOrBoss() const; bool isAreaTypeOverworldOrSkyloft() const; s32 getSTIFunk1() const; + s32 getSTIFbyte4() const; + bool isSTIFbyte4_2or3or4() const; + bool isSTIFbyte4_5or6() const; + bool isSTIFbyte4_7or8or9or10or11() const; + bool isSTIFbyte4_1() const { + return getSTIFbyte4() == 1; + } + bool isSTIFbyte4_0() const { + return getSTIFbyte4() == 0; + } + s32 getAreaType() const; + s32 getMapNameId() const; + + bool fn_80199250(); static dStageMgr_c *GetInstance() { return sInstance; @@ -121,6 +136,14 @@ public: return &mFader; } + bool isFaderSettled() const { + return mFader.isSettled(); + } + + bool isInLastBoss() const { + return mIsInLastBoss; + } + private: static void lastExecuteCallback(); @@ -165,6 +188,12 @@ private: /* 0x88A0 */ u32 field_0x88A0; /* 0x88A4 */ SizedString<16> mDemoName; + /* 0x88B4 */ u8 _0x88B4[0x88BC - 0x88B4]; /* 0x88BC */ bool field_0x88BC; + /* 0x88BD */ u8 field_0x88BD; + /* 0x88BE */ u8 field_0x88BE; + /* 0x88BF */ u8 field_0x88BF; + /* 0x88C0 */ u8 field_0x88C0; + /* 0x88C1 */ bool mIsInLastBoss; }; #endif diff --git a/include/d/flag/sceneflag_manager.h b/include/d/flag/sceneflag_manager.h index b65c21df..dbb36b92 100644 --- a/include/d/flag/sceneflag_manager.h +++ b/include/d/flag/sceneflag_manager.h @@ -51,7 +51,7 @@ public: return checkUncommittedTempOrSceneflag(flag); } u16 checkFlag(u16 roomId, u16 flag); - bool checkSceneflagGlobal(u16 sceneIdx, u16 flag); + u16 checkSceneflagGlobal(u16 sceneIdx, u16 flag); u16 checkTempOrSceneflag(u16 flag); u16 checkUncommittedFlag(u16 roomId, u16 flag); void setZoneflag(u16 roomId, u16 flag); diff --git a/include/d/lyt/d2d.h b/include/d/lyt/d2d.h index d7a7bc8d..c4e3e533 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(); @@ -258,6 +258,10 @@ struct AnmGroupBase_c { mpFrameCtrl->setFlags(FLAG_NO_LOOP); } + inline void setForwardLoop() { + mpFrameCtrl->setFlags(0); + } + inline void setToStart() { m2d::FrameCtrl_c &ctrl = *mpFrameCtrl; ctrl.setCurrFrame(ctrl.getStartFrame()); @@ -288,6 +292,12 @@ struct AnmGroupBase_c { return mpFrameCtrl->getNextFrame(); } +#ifdef NEED_DIRECT_FRAMECTRL_ACCESS + m2d::FrameCtrl_c *getFrameCtrl() { + return mpFrameCtrl; + } +#endif + private: /* 0x04 */ void *field_0x04; /* 0x08 */ m2d::FrameCtrl_c *mpFrameCtrl; diff --git a/include/d/lyt/d_lyt_area_caption.h b/include/d/lyt/d_lyt_area_caption.h index 41e9f541..8f71818d 100644 --- a/include/d/lyt/d_lyt_area_caption.h +++ b/include/d/lyt/d_lyt_area_caption.h @@ -3,7 +3,6 @@ #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytAreaCaptionParts_c { public: @@ -23,13 +22,15 @@ public: STATE_FUNC_DECLARE(dLytAreaCaptionParts_c, Out); private: + bool shouldImmediatelyDismiss() const; + /* 0x000 */ UI_STATE_MGR_DECLARE(dLytAreaCaptionParts_c); /* 0x040 */ d2d::ResAccIf_c mResAcc; /* 0x0EB */ d2d::dLytSub mLyt; /* 0x110 */ d2d::AnmGroup_c mAnmGroups[4]; /* 0x540 */ dTextBox_c *mTextBoxes[3]; - /* 0x54C */ u8 field_0x54C; - /* 0x54D */ u8 field_0x54D; + /* 0x54C */ bool field_0x54C; + /* 0x54D */ bool field_0x54D; /* 0x54E */ u8 mFirst; /* 0x54F */ bool mAnmCtrlInUse[4]; }; @@ -46,8 +47,8 @@ public: static void setArea(int id); static void check(); - static void set0xAAC(u8 arg); - static u8 get0xAAC(); + static void setVisible(bool arg); + static bool getVisible(); private: dLytAreaCaption_c() { @@ -63,10 +64,10 @@ private: void doSetTextIfWaiting(const char *); void doSetArea(int id); void doCheck(); - dLytAreaCaptionParts_c mParts[2]; - s32 mPartToDraw; - u8 field_0xAAC; + /* 0x000 */ dLytAreaCaptionParts_c mParts[2]; + /* 0xAA8 */ s32 mPartToDraw; + /* 0xAAC */ bool mVisible; }; #endif diff --git a/include/d/lyt/d_lyt_bird_gauge.h b/include/d/lyt/d_lyt_bird_gauge.h index e05fc963..dea08876 100644 --- a/include/d/lyt/d_lyt_bird_gauge.h +++ b/include/d/lyt/d_lyt_bird_gauge.h @@ -71,6 +71,22 @@ public: void hide(); + void setNumDashes(s32 num) { + mGameStateDashes = num; + } + + void setField_0x690(bool val) { + field_0x690 = val; + } + + bool getField_0x692() const { + return field_0x692; + } + + bool getField_0x693() const { + return field_0x693; + } + private: static dLytBirdGauge_c *sInstance; @@ -80,6 +96,8 @@ private: STATE_FUNC_DECLARE(dLytBirdGauge_c, Recovery); STATE_FUNC_DECLARE(dLytBirdGauge_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytBirdGauge_c); + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytBirdGauge_c); /* 0x008 */ d2d::ResAccIf_c mResAcc; /* 0x3B4 */ dLytBirdGaugeMain_c mMain; diff --git a/include/d/lyt/d_lyt_boss_gauge.h b/include/d/lyt/d_lyt_boss_gauge.h index b1dd6cde..c663454d 100644 --- a/include/d/lyt/d_lyt_boss_gauge.h +++ b/include/d/lyt/d_lyt_boss_gauge.h @@ -3,7 +3,6 @@ #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytBossGauge_c { public: @@ -12,18 +11,32 @@ public: bool build(); bool remove(); + bool execute(); bool draw(); + void setMode(s32 mode); + + void fn_80158940(); + + void setField_0x545(bool value) { + field_0x545 = value; + } + private: STATE_FUNC_DECLARE(dLytBossGauge_c, None); STATE_FUNC_DECLARE(dLytBossGauge_c, In); STATE_FUNC_DECLARE(dLytBossGauge_c, Move); STATE_FUNC_DECLARE(dLytBossGauge_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytBossGauge_c); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytBossGauge_c); /* 0x040 */ d2d::ResAccIf_c mResAcc; /* 0x3B0 */ d2d::dLytSub mLyt; /* 0x444 */ d2d::AnmGroup_c mAnmGroups[4]; + /* 0x544 */ u8 field_0x544; + /* 0x545 */ bool field_0x545; + /* 0x546 */ u8 _0x546[0x550 - 0x546]; }; #endif diff --git a/include/d/lyt/d_lyt_common_icon_item.h b/include/d/lyt/d_lyt_common_icon_item.h index 12b03864..4f6ad8c2 100644 --- a/include/d/lyt/d_lyt_common_icon_item.h +++ b/include/d/lyt/d_lyt_common_icon_item.h @@ -8,27 +8,19 @@ #include "nw4r/lyt/lyt_bounding.h" #include "s/s_State.hpp" -class dLytCommonIconItemPartBase_c { -public: - virtual ~dLytCommonIconItemPartBase_c() {} - virtual nw4r::lyt::Pane *getPane() = 0; - virtual d2d::LytBase_c *getLyt() = 0; - virtual const char *getName() const = 0; -}; - /** B-Wheel item */ -class dLytCommonIconItemPart1_c : public dLytCommonIconItemPartBase_c { +class dLytCommonIconItemPart1_c { public: dLytCommonIconItemPart1_c() : mItem(0), mColor(0), field_0x2B4(false), mHasNumber(false), mSize(false), mBocoburinLocked(false) {} virtual ~dLytCommonIconItemPart1_c() {} - virtual nw4r::lyt::Pane *getPane() override { + virtual nw4r::lyt::Pane *getPane() { return mLyt.getLayout()->GetRootPane(); } - virtual d2d::LytBase_c *getLyt() override { + virtual d2d::LytBase_c *getLyt() { return &mLyt; } - virtual const char *getName() const override { + virtual const char *getName() const { return mLyt.getName(); } @@ -82,7 +74,7 @@ private: }; /** Pouch item */ -class dLytCommonIconItemPart2_c : public dLytCommonIconItemPartBase_c { +class dLytCommonIconItemPart2_c { public: dLytCommonIconItemPart2_c() : mItem(0), @@ -94,13 +86,13 @@ public: mOnOff(true), mDurability(0.0f) {} virtual ~dLytCommonIconItemPart2_c() {} - virtual nw4r::lyt::Pane *getPane() override { + virtual nw4r::lyt::Pane *getPane() { return mLyt.getLayout()->GetRootPane(); } - virtual d2d::LytBase_c *getLyt() override { + virtual d2d::LytBase_c *getLyt() { return &mLyt; } - virtual const char *getName() const override { + virtual const char *getName() const { return mLyt.getName(); } @@ -162,17 +154,17 @@ private: }; /** Dowsing "item" */ -class dLytCommonIconItemPart3_c : public dLytCommonIconItemPartBase_c { +class dLytCommonIconItemPart3_c { public: dLytCommonIconItemPart3_c() : mItem(0), mSize(false), mBocoburinLocked(false) {} virtual ~dLytCommonIconItemPart3_c() {} - virtual nw4r::lyt::Pane *getPane() override { + virtual nw4r::lyt::Pane *getPane() { return mLyt.getLayout()->GetRootPane(); } - virtual d2d::LytBase_c *getLyt() override { + virtual d2d::LytBase_c *getLyt() { return &mLyt; } - virtual const char *getName() const override { + virtual const char *getName() const { return mLyt.getName(); } @@ -208,11 +200,16 @@ private: /** * A common item component used in various UI screens like the item check, scrap shop, - * pause menu wheels, B item preview in the top right HUD corner. - * NOT used for the HUD wheels. + * pause menu wheels, HUD wheels, B item preview in the top right HUD corner. */ class dLytCommonIconItem_c : public d2d::dSubPane { public: + enum Variant_e { + B_WHEEL, + POUCH, + DOWSING, + }; + dLytCommonIconItem_c() : mStateMgr(*this, sStateID::null), mPart(3) {} ~dLytCommonIconItem_c() {} @@ -276,6 +273,9 @@ private: STATE_FUNC_DECLARE(dLytCommonIconItem_c, Wait); STATE_FUNC_DECLARE(dLytCommonIconItem_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytCommonIconItem_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dLytCommonIconItem_c); + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytCommonIconItem_c); /* 0x044 */ u8 mPart; /* 0x048 */ dLytCommonIconItemPart1_c mPart1; diff --git a/include/d/lyt/d_lyt_common_icon_item_maps.h b/include/d/lyt/d_lyt_common_icon_item_maps.h index 53708090..52456d34 100644 --- a/include/d/lyt/d_lyt_common_icon_item_maps.h +++ b/include/d/lyt/d_lyt_common_icon_item_maps.h @@ -34,6 +34,7 @@ #define LYT_CMN_ItemBigBugnet (15) // [14] uc_netB_00.tpl #define LYT_CMN_ItemBoatCannon (16) // [ 7] uc_boatCannon_00.tpl #define LYT_CMN_ItemHarp (17) // [ 0] tr_tategoto_00.tpl +#define LYT_CMN_ItemInvalid (18) // ------------------------- // Pouch Items #define LYT_CMN_PouchPotionHealyh (0) // [12] uc_bottleKusuriA_00.tpl @@ -112,5 +113,6 @@ #define LYT_CMN_DowsingZelda (19) // [13] tr_dauzTarget_19.tpl #define LYT_CMN_DowsingTrialGate (20) // [14] tr_dauzTarget_20.tpl #define LYT_CMN_DowsingNewPlantSpecies (21) // [15] tr_dauzTarget_21.tpl +#define LYT_CMN_DowsingInvalid (22) // ------------------------- #endif diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h index 5802522f..f8af08fc 100644 --- a/include/d/lyt/d_lyt_control_game.h +++ b/include/d/lyt/d_lyt_control_game.h @@ -2,6 +2,7 @@ #define D_LYT_CONTROL_GAME_H #include "d/d_base.h" +#include "s/s_State.hpp" class dLytControlGame_c : public dBase_c { public: @@ -17,7 +18,22 @@ public: return sInstance; } + STATE_FUNC_DECLARE(dLytControlGame_c, Normal); + STATE_FUNC_DECLARE(dLytControlGame_c, Pause_SetRes); + STATE_FUNC_DECLARE(dLytControlGame_c, Pause_SyncRes); + STATE_FUNC_DECLARE(dLytControlGame_c, Pause); + STATE_FUNC_DECLARE(dLytControlGame_c, Pause_DelRes); + STATE_FUNC_DECLARE(dLytControlGame_c, Map_SetRes); + STATE_FUNC_DECLARE(dLytControlGame_c, Map_SyncRes); + STATE_FUNC_DECLARE(dLytControlGame_c, Map); + STATE_FUNC_DECLARE(dLytControlGame_c, Map_DelRes); + + bool isStateNormal() const { + return *mStateMgr.getStateID() == StateID_Normal; + } + private: + /* 0x00068 */ UI_STATE_MGR_DECLARE(dLytControlGame_c); static dLytControlGame_c *sInstance; }; diff --git a/include/d/lyt/d_lyt_do_button.h b/include/d/lyt/d_lyt_do_button.h index 349230a0..b2313ab1 100644 --- a/include/d/lyt/d_lyt_do_button.h +++ b/include/d/lyt/d_lyt_do_button.h @@ -1,9 +1,9 @@ #ifndef D_LYT_DO_BUTTON_H #define D_LYT_DO_BUTTON_H +#include "common.h" #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytDobutton_c { public: @@ -16,17 +16,74 @@ public: bool init(m2d::ResAccIf_c *resAcc); bool remove(); + bool execute(); bool draw(); + static dLytDobutton_c *GetInstance() { + return sInstance; + } + + static s32 getField0x47C() { + if (sInstance != nullptr) { + return sInstance->field_0x47C; + } else { + return 0x5E; + } + } + + static s32 getField0x480() { + if (sInstance != nullptr) { + return sInstance->field_0x480; + } else { + return 0x29; + } + } + + static s32 getNextActionToShow() { + if (sInstance != nullptr) { + return sInstance->mNextDoActionToShow; + } else { + return 0x29; + } + } + + static s32 getFn0x8010E5E0() { + if (sInstance != nullptr) { + return sInstance->fn_8010E5E0(); + } else { + return 0x29; + } + } + + static s32 getFn0x8010E5D0() { + if (sInstance != nullptr) { + return sInstance->fn_8010E5D0(); + } else { + return 0x5E; + } + } + + static void setActionTextStuff(s32 p1, s32 p2, bool p3) { + if (sInstance != nullptr) { + sInstance->setActionTextStuffInternal(p1, p2, p3); + } + } + +private: + void setActionTextStuffInternal(s32, s32, bool); + s32 fn_8010E5D0() const; + s32 fn_8010E5E0() const; + static dLytDobutton_c *sInstance; -private: STATE_FUNC_DECLARE(dLytDobutton_c, InvisibleWait); STATE_FUNC_DECLARE(dLytDobutton_c, InvisibleTimeCnt); STATE_FUNC_DECLARE(dLytDobutton_c, In); STATE_FUNC_DECLARE(dLytDobutton_c, Wait); STATE_FUNC_DECLARE(dLytDobutton_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytDobutton_c); + UI_STATE_MGR_DECLARE(dLytDobutton_c); /* 0x040 */ d2d::dLytSub mLyt; /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[12]; diff --git a/include/d/lyt/d_lyt_drop_line.h b/include/d/lyt/d_lyt_drop_line.h new file mode 100644 index 00000000..173b2b7c --- /dev/null +++ b/include/d/lyt/d_lyt_drop_line.h @@ -0,0 +1,30 @@ +#ifndef D_LYT_DROP_LINE_H +#define D_LYT_DROP_LINE_H + +#include "common.h" +#include "d/a/d_a_item.h" +#include "nw4r/lyt/lyt_pane.h" + +class dLytDropLine_c { +public: + dLytDropLine_c() { + sInstance = this; + } + virtual ~dLytDropLine_c() { + sInstance = nullptr; + } + + static dLytDropLine_c *GetInstance() { + return sInstance; + } + + static nw4r::lyt::Pane *getActivePane(); + static nw4r::lyt::Pane *setPane(nw4r::lyt::Pane *pane); + static nw4r::lyt::Pane *update(nw4r::lyt::Pane *pane, nw4r::lyt::Pane *otherPane, dAcItem_c::Trial_e, bool); + static bool finishPartMaybe(); + +private: + static dLytDropLine_c *sInstance; +}; + +#endif diff --git a/include/d/lyt/d_lyt_game_over.h b/include/d/lyt/d_lyt_game_over.h new file mode 100644 index 00000000..391f0740 --- /dev/null +++ b/include/d/lyt/d_lyt_game_over.h @@ -0,0 +1,19 @@ +#ifndef D_LYT_GAME_OVER_H +#define D_LYT_GAME_OVER_H + +#include "d/d_base.h" + +class dLytGameOver_c : public dBase_c { +public: + dLytGameOver_c(); + virtual ~dLytGameOver_c(); + + static dLytGameOver_c *GetInstance() { + return sInstance; + } + +private: + static dLytGameOver_c *sInstance; +}; + +#endif diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h index ddf80e66..02f01563 100644 --- a/include/d/lyt/d_lyt_map.h +++ b/include/d/lyt/d_lyt_map.h @@ -267,6 +267,7 @@ private: }; class dLytMapMain_c : public m2d::Base_c { + friend class dLytMap_c; public: dLytMapMain_c(); virtual ~dLytMapMain_c(); @@ -276,6 +277,7 @@ public: void build(); bool isOpenMaybe() const; + bool fn_80139EA0() const; STATE_FUNC_DECLARE(dLytMapMain_c, Invisible); STATE_FUNC_DECLARE(dLytMapMain_c, RenderingWait); @@ -338,10 +340,16 @@ private: /* 0x8904 */ mVec3_c field_0x8904; /* 0x8910 */ mVec3_c field_0x8910; /* 0x891C */ mVec3_c field_0x891C; - // ??? + + /* 0x8928 */ u8 _0x8928[0x8930 - 0x8928]; + /* 0x8930 */ mVec3_c field_0x8930; /* 0x893C */ mVec3_c field_0x893C; - // ??? + + /* 0x8948 */ u8 idkfixmelater[0x4BC0]; + /* 0x8C94 */ s32 field_0x8C94; + + // ... /* 0x8CC4 */ mVec3_c field_0x8CC4; /* 0x8CD0 */ mVec3_c field_0x8CD0; @@ -391,8 +399,24 @@ public: return mMapMain.isOpenMaybe(); } + bool getFn_80139EA0() const { + return mMapMain.fn_80139EA0(); + } + void build(); + static bool isValid(s32 val) { + if (val >= 2 && val < 7) { + return true; + } + return false; + } + + bool unkMeterCheck() const { + s32 val = mMapMain.field_0x8C94; + return isValid(val) && ((1 << (val - 2)) & 0x1D); + } + private: /* 0x0004 */ d2d::ResAccIf_c mResAcc; /* 0x0374 */ dLytMapMain_c mMapMain; diff --git a/include/d/lyt/d_lyt_meter_configuration.h b/include/d/lyt/d_lyt_meter_configuration.h index ef9b8a65..87c29f01 100644 --- a/include/d/lyt/d_lyt_meter_configuration.h +++ b/include/d/lyt/d_lyt_meter_configuration.h @@ -8,9 +8,134 @@ public: dLytMeterConfiguration_c(); virtual ~dLytMeterConfiguration_c(); + static const dLytMeterConfiguration_c *GetInstance() { + return sInstance; + } + + f32 getField_0x1CC() const { + return field_0x1CC; + } + + f32 getField_0x1D0() const { + return field_0x1D0; + } + + f32 getField_0x1C4() const { + return field_0x1C4; + } + + s32 getField_0x1C8() const { + return field_0x1C8; + } + + s32 getField_0x1D8() const { + return field_0x1D8; + } + + s32 getField_0x1DC() const { + return field_0x1DC; + } + + s32 getField_0x1E0() const { + return field_0x1E0; + } + + s32 getField_0x1E4() const { + return field_0x1E4; + } + 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_save_mgr.h b/include/d/lyt/d_lyt_save_mgr.h new file mode 100644 index 00000000..df9ae319 --- /dev/null +++ b/include/d/lyt/d_lyt_save_mgr.h @@ -0,0 +1,17 @@ +#ifndef D_LYT_SAVE_MGR_H +#define D_LYT_SAVE_MGR_H + +class dLytSaveMgr_c { +public: + + static dLytSaveMgr_c* GetInstance() { + return sInstance; + } + + bool fn_80285650() const; + +private: + static dLytSaveMgr_c *sInstance; +}; + +#endif diff --git a/include/d/lyt/d_lyt_sky_gauge.h b/include/d/lyt/d_lyt_sky_gauge.h index fb9b6b63..1c7fa35a 100644 --- a/include/d/lyt/d_lyt_sky_gauge.h +++ b/include/d/lyt/d_lyt_sky_gauge.h @@ -68,6 +68,12 @@ public: void setHeight(f32 height); static dLytSkyGauge_c *sInstance; + void setWantsIn() { + mWantsIn = true; + } + void setWantsOut() { + mWantsOut = true; + } private: STATE_FUNC_DECLARE(dLytSkyGauge_c, None); @@ -75,6 +81,8 @@ private: STATE_FUNC_DECLARE(dLytSkyGauge_c, Move); STATE_FUNC_DECLARE(dLytSkyGauge_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytSkyGauge_c); + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytSkyGauge_c); /* 0x008 */ d2d::ResAccIf_c mResAcc; /* 0x3B4 */ dLytSkyGaugeMain_c mMain; diff --git a/include/d/lyt/d_lyt_unknowns.h b/include/d/lyt/d_lyt_unknowns.h index 7dc2ebf1..7df0a225 100644 --- a/include/d/lyt/d_lyt_unknowns.h +++ b/include/d/lyt/d_lyt_unknowns.h @@ -7,14 +7,99 @@ class LytDoButtonRelated { public: LytDoButtonRelated(); - virtual ~LytDoButtonRelated(); + virtual ~LytDoButtonRelated() { + sInstance = nullptr; + } bool build(d2d::ResAccIf_c *resAcc); bool remove(); - static LytDoButtonRelated *sInstance; + static LytDoButtonRelated *GetInstance() { + return sInstance; + } + enum Action_e { + DO_DASH = 0x5F, + + DO_0x74 = 0x74, + + DO_RETURN = 0x7F, + DO_STOP = 0x84, + DO_ITEMS = 0x85, + DO_DONE = 0x87, + DO_READY_CANNON = 0x8F, + DO_STOW_CANNON = 0x90, + DO_SAILCLOTH = 0x91, + DO_NONE = 0x98, + }; + + enum DoButton_e { + DO_BUTTON_A = 0, + DO_BUTTON_B = 1, + DO_BUTTON_C = 2, + DO_BUTTON_Z = 3, + DO_BUTTON_NUN_STK = 4, + 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, + }; + + static void set(DoButton_e button, Action_e value) { + if (sInstance != nullptr) { + LytDoButtonRelated *b = sInstance; + b->field_0x04[button] = value; + b->field_0x34[button] = true; + } + } + + static void reset(DoButton_e button, Action_e value) { + LytDoButtonRelated *b = sInstance; + if (b != nullptr) { + b->field_0x04[button] = value; + b->field_0x34[button] = false; + } + } + + static Action_e get(DoButton_e button) { + if (sInstance != nullptr) { + return sInstance->field_0x04[button]; + } else { + return DO_NONE; + } + } + + static bool getHas(DoButton_e button) { + if (sInstance != nullptr) { + return sInstance->field_0x34[button]; + } else { + return false; + } + } + + + static Action_e get0x08() { + if (sInstance != nullptr) { + return sInstance->field_0x04[1]; + } else { + return DO_NONE; + } + } + + static Action_e convertDoButton(s32); + + static void fn_8010EC10(Action_e, bool); + static void fn_8010ED50(Action_e, bool); + private: - u8 field_0x04[0x40 - 0x04]; + + static LytDoButtonRelated *sInstance; + /* 0x04 */ Action_e field_0x04[12]; + /* 0x34 */ bool field_0x34[12]; }; // size 0x27C @@ -28,6 +113,7 @@ public: } bool build(d2d::ResAccIf_c *resAcc); bool remove(); + bool execute(); bool draw(); static LytBirdButtonRelated *sInstance; diff --git a/include/d/lyt/d_lyt_util_items.h b/include/d/lyt/d_lyt_util_items.h new file mode 100644 index 00000000..65b800b8 --- /dev/null +++ b/include/d/lyt/d_lyt_util_items.h @@ -0,0 +1,19 @@ +#ifndef D_LYT_UTIL_ITEMS_H +#define D_LYT_UTIL_ITEMS_H + +#include "common.h" +#include "toBeSorted/dowsing_target.h" + +bool isPouchBocoburinLocked(); + +u8 getPouchItemForSlot(s32 slot, bool unk); +bool hasPouchSlot(s32 slot, bool unk); +s32 getPouchItemAmount(s32 slot, bool unk); +u8 getPouchItemNumberColor(s32 slot, bool unk); +f32 getShieldDurability(s32 slot, bool unk); + +DowsingTarget::DowsingSlot dowsingSlotForIndex(s32 index); +s32 getLytIndexForDowsingIndex(s32 index); +u16 getDowsingItemIdForIndex(s32 index); + +#endif diff --git a/include/d/lyt/d_lyt_wipe.h b/include/d/lyt/d_lyt_wipe.h new file mode 100644 index 00000000..ec9b5677 --- /dev/null +++ b/include/d/lyt/d_lyt_wipe.h @@ -0,0 +1,74 @@ +#ifndef D_LYT_WIPE_H +#define D_LYT_WIPE_H + +#include "common.h" +#include "d/lyt/d2d.h" +#include "s/s_State.hpp" + +class dLytWipeMain_c { +public: + dLytWipeMain_c(); + virtual ~dLytWipeMain_c() {} + + bool build(d2d::ResAccIf_c *resAcc); + bool remove(); + bool execute(); + bool draw(); + + void gotoIn(); + void gotoWait(); + void gotoOut(); + void gotoNone(); + + bool isStateEndReached() const { + return mStateEndReached; + } + +private: + STATE_FUNC_DECLARE(dLytWipeMain_c, ModeNone); + STATE_FUNC_DECLARE(dLytWipeMain_c, ModeIn); + STATE_FUNC_DECLARE(dLytWipeMain_c, ModeWait); + STATE_FUNC_DECLARE(dLytWipeMain_c, ModeOut); + + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytWipeMain_c); + + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytWipeMain_c); + /* 0x040 */ d2d::LytBase_c mLyt; + /* 0x0D0 */ d2d::AnmGroup_c mAnm[1]; + /* 0x110 */ bool mStateEndReached; + /* 0x111 */ u8 _0x111[0x132 - 0x111]; + /* 0x132 */ bool mIsIn; +}; + +class dLytWipe_c { +public: + dLytWipe_c() : mStateMgr(*this, sStateID::null) {} + + bool build(); + bool remove(); + bool execute(); + bool draw(); + +private: + static dLytWipe_c *sInstance; + + STATE_FUNC_DECLARE(dLytWipe_c, None); + STATE_FUNC_DECLARE(dLytWipe_c, In); + STATE_FUNC_DECLARE(dLytWipe_c, Wait); + STATE_FUNC_DECLARE(dLytWipe_c, Out); + + /* 0x000 */ UI_STATE_MGR_DECLARE(dLytWipe_c); + /* 0x03C */ d2d::ResAccIf_c mResAcc; + /* 0x3AC */ dLytWipeMain_c mMain; + + /* 0x4E0 */ u8 _0x4E0[0x59C - 0x4E0]; + + /* 0x59C */ bool mWantsIn; + /* 0x59D */ bool mWantsOut; + /* 0x59E */ bool mIsSettled; + /* 0x59F */ bool mVisible; + /* 0x5A0 */ s32 mTransitionStage; + /* 0x5A4 */ s32 mFadeDelay; +}; + +#endif diff --git a/include/d/lyt/d_textbox.h b/include/d/lyt/d_textbox.h index 88b9c703..e92c39a8 100644 --- a/include/d/lyt/d_textbox.h +++ b/include/d/lyt/d_textbox.h @@ -1,6 +1,7 @@ #ifndef D_LYT_TEXTBOX_H #define D_LYT_TEXTBOX_H +#include "common.h" #include "d/lyt/d2d.h" #include "libms/msgfile.h" #include "nw4r/lyt/lyt_drawInfo.h" @@ -47,8 +48,11 @@ public: return mMyScale; } - void fn_800E0A60(const char *area, ...) { - // TODO + void setMessageWithGlobalTextProcessor2(const char *message, void *unk, ...) { + va_list l; + va_start(l, str); + setMessageWithGlobalTextProcessorV(message, nullptr, unk, l); + va_end(l); } void setTextWithGlobalTextProcessor(const wchar_t *str); @@ -58,9 +62,8 @@ public: void setTextWithTextProcessor(const wchar_t *str, dTagProcessor_c *tagProcessor, void *, ...); s32 calcTextLines(const wchar_t *src, dTagProcessor_c *tagProcessor); - void setMessageWithGlobalTextProcessorAndMsbtInfo( - MsbtInfo *info, const char *labelId, wchar_t *destBuf, u32 maxLen - ); + void + setMessageWithGlobalTextProcessorAndMsbtInfo(MsbtInfo *info, const char *labelId, wchar_t *destBuf, u32 maxLen); void loadTextFormatVars(); void setupGX() const; diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 73d3d6e5..de76952a 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -1,8 +1,11 @@ #ifndef D_LYT_METER_H #define D_LYT_METER_H -// TODO sort includes for vtable order + // clang-format off +#include "common.h" + #include "d/lyt/d2d.h" +#include "d/d_cursor_hit_check.h" #include "d/lyt/d_lyt_do_button.h" #include "d/lyt/meter/d_lyt_meter_shield_gauge.h" #include "d/lyt/d_lyt_common_icon_item.h" @@ -20,122 +23,115 @@ #include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h" #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_key.h" +#include "d/lyt/meter/d_lyt_meter_parts.h" #include "d/lyt/d_lyt_unknowns.h" -#include "d/lyt/meter/d_lyt_meter_drink.h" -#include "d/lyt/meter/d_lyt_meter_timer.h" -#include "d/lyt/d_lyt_bird_gauge.h" -#include "d/lyt/d_lyt_boss_gauge.h" -#include "d/lyt/d_lyt_sky_gauge.h" - +#include "m/m_vec.h" // clang-format on -class dLytMeter_c { +class dLytMeter1Button_c; +class dLytMeter2Button_c; +class dLytMeterTimer_c; +class LytMeterTimerPart1_c; +class LytMeterTimerPart2_c; +class dLytMeterKakeraKey_c; +class dLytMeterBossKey_c; +class dLytMeterSmallKey_c; +class dLytMeterDrink_c; +class dLytSkyGauge_c; +class dLytBirdGauge_c; +class dLytBossGauge_c; + +// apart from dLytMeterParts_c the names here are made up + +enum MeterFlag_e { + METER_BTN_CROSS_UP = 0x1, + METER_BTN_CROSS_DOWN = 0x2, + METER_BTN_CROSS_LEFT = 0x4, + METER_BTN_CROSS_RIGHT = 0x8, + METER_BTN_B = 0x10, + METER_BTN_PLUS = 0x20, + METER_BTN_MINUS = 0x40, + METER_BTN_1 = 0x80, + METER_BTN_2 = 0x100, + METER_BTN_NUN_STK = 0x200, + METER_BTN_C = 0x400, + METER_BTN_Z = 0x800, + METER_BTN_0x1000 = 0x1000, + + + METER_BTN_CROSS = METER_BTN_CROSS_UP | METER_BTN_CROSS_DOWN | METER_BTN_CROSS_LEFT | METER_BTN_CROSS_RIGHT, +}; + +class dLytMeterMain_c { + friend class dLytMeter_c; + public: - dLytMeter_c(); - virtual ~dLytMeter_c() {} + dLytMeterMain_c(); + virtual ~dLytMeterMain_c() {} bool build(d2d::ResAccIf_c *resAcc); bool remove(); bool draw(); + bool isNotSilentRealmOrLoftwing(); + + bool fn_800C9F70(); + bool fn_800C9FE0(); + bool fn_800CA040(); + + bool fn_800D5350(); + bool fn_800D5380(u8); + void fn_800D5290(); + bool fn_800D5590(); + void fn_800D5630(); + bool fn_800D5650(); + bool fn_800D5680(); + bool fn_800D56B0(); + void checkPaneVisibility(); + bool execute(); + bool isSilentRealm(); + bool fn_800D53D0(); + bool fn_800D5420(); + + void setUiMode(u16 value) const; + u8 getUiMode(); + + bool getItemSelectNotHiddenByAreaCaption() const { + return mPanesNotHiddenByAreaCaption[0]; + } + + bool getMinusBtnNotHiddenByAreaCaption() const { + return mPanesNotHiddenByAreaCaption[1]; + } + + bool getDowsingNotHiddenByAreaCaption() const { + return mPanesNotHiddenByAreaCaption[8]; + } + + void setGanbariGaugeHiddenByAreaCaption(bool visible) { + mPanesNotHiddenByAreaCaption[15] = visible; + } + + bool getField_0x1377E() const { + return field_0x1377E; + } + + bool getField_0x1377F() const { + return field_0x1377F; + } + + dLytMeterNunStk_c *getNunStk() { + return &mNunStk; + } + +private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ d2d::LytBase_c mLyt; /* 0x00404 */ d2d::AnmGroup_c mAnmGroups[34]; - u8 field_0x00C84[0x00C8C - 0x00C84]; + /* 0x00C84 */ u8 _0x00C84[0x00C8C - 0x00C84]; /* 0x00C8C */ dLytMeterGanbariGauge_c mGanbariGauge; /* 0x011E8 */ dLytMeterRupy_c mRupy; /* 0x01A98 */ dLytMeterItemSelect_c mItemSelect; @@ -165,51 +161,266 @@ public: /* 0x130F4 */ d2d::SubPaneList mMeters; /* 0x13100 */ d2d::SubPaneListNode mNodes[16]; - /* 0x13200 */ u8 field_0x13200[0x13204 - 0x13200]; + /* 0x13200 */ u8 _0x13200[0x13204 - 0x13200]; /* 0x13204 */ dLytMeterParts_c mParts[16]; - /* 0x136C4 */ mVec3_c mPosArray1[2]; - /* 0x136DC */ mVec3_c mPosArray2[7]; - /* 0x13730 */ mVec3_c mPos1; - /* 0x1373C */ mVec3_c mPos2; - /* 0x13748 */ u8 field_0x13748[0x13750 - 0x13748]; + /* 0x136C4 */ mVec3_c mShieldPositions[2]; + /* 0x136DC */ mVec3_c mRupyPositions[7]; + /* 0x13730 */ mVec3_c mShieldPos; + /* 0x1373C */ mVec3_c mRupyPos; + /* 0x13748 */ s32 field_0x13748; + /* 0x1374C */ s32 field_0x1374C; /* 0x13750 */ s32 field_0x13750; - /* 0x13754 */ u8 field_0x13754[0x137B4 - 0x13754]; + /* 0x13754 */ s32 field_0x13754; + /* 0x13758 */ s32 mShieldPosIndex; + /* 0x1375C */ s32 mRupyPosIndex; + /* 0x13760 */ s32 mRupyPosInterpFrame; + /* 0x13764 */ s32 mShieldPosInterpFrame; + /* 0x13768 */ s32 mOldShieldPosIndex; + /* 0x1376C */ s32 mOldRupyPosIndex; + /* 0x13770 */ u8 field_0x13770; + /* 0x13771 */ bool field_0x13771; + /* 0x13772 */ bool field_0x13772; + /* 0x13773 */ bool field_0x13773; + /* 0x13774 */ bool field_0x13774; + /* 0x13775 */ bool field_0x13775; + /* 0x13776 */ bool mTimerVisible; + /* 0x13777 */ bool mBirdGaugeVisible; + /* 0x13778 */ bool mSkyGaugeVisible; + /* 0x13779 */ bool mBossGaugeVisible; + /* 0x1377A */ bool mKakeraKeyVisible; + /* 0x1377B */ bool mBossKeyVisible; + /* 0x1377C */ bool mSmallKeyVisible; + /* 0x1377D */ bool mDrinkVisible; + /* 0x1377E */ bool field_0x1377E; + /* 0x1377F */ bool field_0x1377F; + /* 0x13780 */ bool field_0x13780; + /* 0x13781 */ bool field_0x13781; + /* 0x13782 */ bool mPanesVisible[16]; + /* 0x13792 */ bool mPanesNotHiddenByAreaCaption[16]; + /* 0x137A2 */ bool mPanesForceShown[16]; + /* 0x137B2 */ bool field_0x137B2; /* 0x137B4 */ mVec3_c mPos3; - /* 0x13B38 */ u32 field_0x13B38; + /* 0x137C0 */ u32 field_0x137C0; }; -// made up name -class dLytMeterContainer_c { +class dLytMeter_c { public: - dLytMeterContainer_c(); - virtual ~dLytMeterContainer_c() { + dLytMeter_c(); + virtual ~dLytMeter_c() { sInstance = nullptr; } bool build(); bool remove(); + bool execute(); bool draw(); - // FIXME This goes to doButton!!! - bool isButtonFlag(u32 flag) { - return (mMeter.field_0x13B38 & flag) == flag; + bool fn_800D5670(); + bool fn_800D56F0(); + bool fn_800D97A0(); + /** Running out of good names for this function, but this allows + the area caption to temporarily hide the main HUD. */ + void setAreaCaptionOverrideVisibility(bool visible); + void fn_800D9710(); + void fn_800D9730(u8 val); + void fn_800D9780(bool val); + static void fn_800D97E0(u8); + static void setVisible(bool); + + static void setStaminaWheelPercent(f32 percent); + void setStaminaWheelPercentInternal(f32 percent); + + static dLytMeter_c *GetInstance() { + return sInstance; } - static dLytMeterContainer_c *GetInstance() { - return sInstance; + static dLytMeterMain_c *GetMain() { + return &sInstance->mMain; + } + + // Not all of these inlines exist on dLytMeterMain_c + // because accessing via GetMeter->get... causes + // different instructions sometimes + + s32 getMeterField_0x13750() const { + return mMain.field_0x13750; + } + + u8 getMeterField_0x13770() const { + return mMain.field_0x13770; + } + + bool getMeterField_0x13774() const { + return mMain.field_0x13774; + } + + bool getMeterField_0x1377F() const { + return mMain.field_0x1377F; + } + + bool checkAllFlags(u32 mask) const { + return (mFlags & mask) == mask; + } + + void clearFlags(u32 mask) { + mFlags = mFlags & ~mask; + } + + void setFlags(u32 mask) { + mFlags = mFlags | mask; + } + + void resetFlags() { + mFlags = 0xFFFFFFFF; + } + + static s32 getCrossBtn0x7BF8() { + if (sInstance != nullptr) { + return sInstance->mMain.mCrossBtn.getField_0x620(); + } else { + return 6; + } + } + + static bool getItemSelect0x75A2() { + if (sInstance != nullptr) { + return sInstance->mMain.mItemSelect.getField_0x57A2(); + } else { + return 0; + } + } + + static void setRupyField_0x8A9(u8 val) { + if (sInstance != nullptr) { + sInstance->mMain.mRupy.setField_0x8A9(val); + } + } + + static void setRupyField_0x8AA(u8 val) { + if (sInstance != nullptr) { + sInstance->mMain.mRupy.setField_0x8AA(val); + } + } + + static void setRupyField_0x8AC(u8 val) { + if (sInstance != nullptr) { + sInstance->mMain.mRupy.setField_0x8AC(val); + } + } + + static u8 getRupyField_0x8AC() { + if (sInstance != nullptr) { + return sInstance->mMain.mRupy.getField_0x8AC(); + } else { + return 0; + } + } + + static s32 getHeartField_0x78C() { + if (sInstance != nullptr) { + return sInstance->mMain.mHeart.getField_0x78C(); + } else { + return 0; + } + } + + static void setField_0x13B61(u8 val) { + if (sInstance != nullptr) { + sInstance->field_0x13B61 = val; + } + } + + static void setField_0x13B63(u8 val) { + if (sInstance != nullptr) { + sInstance->field_0x13B63 = val; + } + } + + static u8 getField_0x13B63() { + if (sInstance != nullptr) { + return sInstance->field_0x13B63; + } else { + return 0; + } + } + + static void setField_0x13B64(u8 val) { + if (sInstance != nullptr) { + sInstance->field_0x13B64 = val; + } + } + + static u8 getField_0x13B66() { + if (sInstance != nullptr) { + return sInstance->field_0x13B66; + } else { + return 0; + } + } + + static u8 getDowsing0x550A() { + if (sInstance != nullptr) { + return sInstance->mMain.mDowsing.getField_0x550A(); + } else { + return 0; + } + } + + static bool getfn_800C9FE0() { + if (sInstance != nullptr) { + return sInstance->mMain.fn_800C9FE0(); + } else { + return false; + } + } + + static bool getfn_800D97A0() { + if (sInstance != nullptr) { + return sInstance->fn_800D97A0(); + } else { + return false; + } + } + + static bool getMinusBtnFn800F7600() { + if (sInstance != nullptr) { + return sInstance->mMain.mMinusBtn.fn_800F7600(); + } else { + return false; + } + } + + static bool getDowsingFn800FE4B0() { + if (sInstance != nullptr) { + return sInstance->mMain.mDowsing.fn_800FE4B0(); + } else { + return false; + } } private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip; - /* 0x00378 */ dLytMeter_c mMeter; + /* 0x00378 */ dLytMeterMain_c mMain; /* 0x13B3C */ dLytDobutton_c *mpDoButton; /* 0x13B40 */ LytDoButtonRelated *mpDoButtonRelated; /* 0x13B44 */ LytBirdButtonRelated *mpBirdRelated; /* 0x13B48 */ bool mVisible; + /* 0x13B49 */ u8 _0x13B49[0x13B50 - 0x13B49]; + /* 0x13B50 */ s32 mFlags; + /* 0x13B54 */ s32 field_0x13B54; + /* 0x13B58 */ s32 field_0x13B58; + /* 0x13B5C */ s32 field_0x13B5C; + /* 0x13B60 */ bool field_0x13B60; + /* 0x13B61 */ bool field_0x13B61; + /* 0x13B62 */ bool field_0x13B62; + /* 0x13B63 */ bool field_0x13B63; + /* 0x13B64 */ bool field_0x13B64; + /* 0x13B65 */ bool field_0x13B65; + /* 0x13B66 */ bool field_0x13B66; - static dLytMeterContainer_c *sInstance; + static dLytMeter_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..9a16a66d 100644 --- a/include/d/lyt/meter/d_lyt_meter_a_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_a_btn.h @@ -3,7 +3,6 @@ #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterABtn_c : public d2d::dSubPane { public: @@ -17,7 +16,7 @@ public: virtual d2d::LytBase_c *getLyt() override { return &mLyt; } - virtual const char *getName() const { + virtual const char *getName() const override { return mLyt.getName(); } @@ -26,8 +25,13 @@ public: mpContainerAnmGroup1 = g1; mpContainerAnmGroup2 = g2; } + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + private: - void fn_800E0870(u32); + void setMessage(s32 id); STATE_FUNC_DECLARE(dLytMeterABtn_c, InvisibleWait); STATE_FUNC_DECLARE(dLytMeterABtn_c, In); @@ -37,24 +41,26 @@ private: STATE_FUNC_DECLARE(dLytMeterABtn_c, Active); STATE_FUNC_DECLARE(dLytMeterABtn_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterABtn_c); - d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterABtn_c); + + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytMeterABtn_c); + /* 0x044 */ d2d::dLytSub mLyt; + /* 0x0D8 */ d2d::AnmGroup_c mAnm[3]; /* 0x198 */ d2d::AnmGroup_c *mpContainerAnmGroup1; /* 0x19C */ d2d::AnmGroup_c *mpContainerAnmGroup2; /* 0x1A0 */ nw4r::lyt::Pane *mpPane; - /* 0x1A4 */ void *field_0x1A4; + /* 0x1A4 */ nw4r::lyt::Pane *mpOwnerPane; /* 0x1A8 */ dTextBox_c *mpTextBoxes[2]; - /* 0x1B0 */ dWindow_c *mpWindow; - /* 0x1B4 */ dTextBox_c *mpSizeBox; - /* 0x1B8 */ u32 field_0x1B8; - /* 0x1BC */ u32 field_0x1BC; - /* 0x1C0 */ u32 field_0x1C0; - /* 0x1C4 */ u32 field_0x1C4; + /* 0x1B0 */ dWindow_c *mpWindow[1]; + /* 0x1B4 */ dTextBox_c *mpSizeBox[1]; + /* 0x1B8 */ s32 field_0x1B8; + /* 0x1BC */ s32 field_0x1BC; + /* 0x1C0 */ BOOL field_0x1C0; + /* 0x1C4 */ s32 field_0x1C4; /* 0x1C8 */ u8 field_0x1C8; /* 0x1C9 */ u8 field_0x1C9; /* 0x1CA */ u8 field_0x1CA; - /* 0x1CB */ u8 field_0x1CB; + /* 0x1CB */ bool mOldTextState; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_cross_btn.h b/include/d/lyt/meter/d_lyt_meter_cross_btn.h index bb1d2099..571de597 100644 --- a/include/d/lyt/meter/d_lyt_meter_cross_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_cross_btn.h @@ -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); - - UI_STATE_MGR_DECLARE(dLytMeterCrossBtnParts_c); - u32 padding[17]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterCrossBtnParts_c); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterCrossBtnParts_c); + + /* 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,23 +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); - UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c); - 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]; - /* 0x??? */ u8 padding[0x78A0 - 0x7880]; + /* 0x620 */ s32 field_0x620; + /* 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 diff --git a/include/d/lyt/meter/d_lyt_meter_dowsing.h b/include/d/lyt/meter/d_lyt_meter_dowsing.h index e5a76743..17659593 100644 --- a/include/d/lyt/meter/d_lyt_meter_dowsing.h +++ b/include/d/lyt/meter/d_lyt_meter_dowsing.h @@ -3,23 +3,39 @@ #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_common_icon_item.h" +#include "d/lyt/d_textbox.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterDowsingMenuIcon_c { public: dLytMeterDowsingMenuIcon_c() : mStateMgr(*this, sStateID::null) {} virtual ~dLytMeterDowsingMenuIcon_c() {} + void init(); + void execute(); + void reset(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Wait); STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, On); STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Select); STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterDowsingMenuIcon_c); - u32 field_0x40; - u32 field_0x44; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingMenuIcon_c); + + /* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingMenuIcon_c); + + /* 0x40 */ d2d::AnmGroup_c *mpAnm; + /* 0x44 */ u32 mShouldBeSelect; }; class dLytMeterDowsingBlink_c { @@ -27,15 +43,29 @@ public: dLytMeterDowsingBlink_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterDowsingBlink_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Wait); STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, On); STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Select); STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterDowsingBlink_c); - u32 field_0x40; - u32 field_0x44; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingBlink_c); + + /* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingBlink_c); + + /* 0x40 */ d2d::AnmGroup_c *mpAnm; + /* 0x44 */ u32 mShouldBeSelect; }; class dLytMeterDowsingInput_c { @@ -43,15 +73,29 @@ public: dLytMeterDowsingInput_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterDowsingInput_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Wait); STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, On); STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Select); STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterDowsingInput_c); - u32 field_0x40; - u32 field_0x44; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingInput_c); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingInput_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 mShouldBeSelect; }; class dLytMeterDowsingText_c { @@ -59,15 +103,29 @@ public: dLytMeterDowsingText_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterDowsingText_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Wait); STATE_FUNC_DECLARE(dLytMeterDowsingText_c, On); STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Select); STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterDowsingText_c); - u32 field_0x40; - u32 field_0x44; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsingText_c); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterDowsingText_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 mShouldBeSelect; }; class dLytMeterDowsing_c : public d2d::dSubPane { @@ -76,13 +134,50 @@ 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 ~dLytMeterDowsing_c() {} + bool shouldCall() const; + bool fn_800FE3C0(s32 arg); + bool fn_800FE490() const; + bool fn_800FE4B0() const; + bool fn_800FE610(); + + u8 getField_0x550A() const { + return field_0x550A; + } + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + + void setField_0x54E0(s32 value) { + field_0x54E0 = value; + } + private: + void setItemName(s32 id); + void setMessage(s32 id); + u8 getSelectedDowsingSlot() const; + void fn_800FE110(); + void fn_800FE220(); + s32 convertToLytIndex(s32 slot) const; + s32 convertSlotIndexToAnm(s32 slot) const; + s32 fn_800FE9C0(s32) const; + + nw4r::lyt::Pane *getPaneByIndex(s32 idx) const { + return mpPanes[idx]; + } + STATE_FUNC_DECLARE(dLytMeterDowsing_c, Invisible); STATE_FUNC_DECLARE(dLytMeterDowsing_c, Wait); STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelectingIn); @@ -95,21 +190,48 @@ private: STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoMove); STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoOut); - /* 0x008 */ dLytMeterDowsingMenuIcon_c mIcon[8]; - /* 0x248 */ dLytMeterDowsingBlink_c mBlink; - /* 0x28C */ dLytMeterDowsingInput_c mInput; - /* 0x2D0 */ dLytMeterDowsingText_c mText[2]; - /* 0x358 */ UI_STATE_MGR_DECLARE(dLytMeterDowsing_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterDowsing_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDowsing_c); - /* 0x490 */ d2d::dLytSub mLyt; + /* 0x0008 */ dLytMeterDowsingMenuIcon_c mIcon[8]; + /* 0x0248 */ dLytMeterDowsingBlink_c mBlink; + /* 0x028C */ dLytMeterDowsingInput_c mInput; + /* 0x02D0 */ dLytMeterDowsingText_c mText[2]; + /* 0x0358 */ UI_STATE_MGR_DECLARE(dLytMeterDowsing_c); - /* 0x428 */ d2d::AnmGroup_c mAnmGroups[29]; - /* 0xB68 */ u8 field_0xB68[0xBEC - 0xB68]; - /* 0xBEC */ dLytCommonIconItem_c mItemIcons[9]; + /* 0x0490 */ d2d::dLytSub mLyt; - /* 0x5434 */ d2d::SubPaneList mNodeList; - /* 0x5440 */ d2d::SubPaneListNode mNodes[9]; - /* 0x??? */ u8 padding[0x11E34 - 0x11DF8]; + /* 0x0428 */ d2d::AnmGroup_c mAnm[29]; + /* 0x0B68 */ nw4r::lyt::Pane *mpPanes[22]; + /* 0x0BC0 */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x0BC4 */ dWindow_c *mpWindows[3]; + /* 0x0BD0 */ dTextBox_c *mpSizeBoxes[3]; + /* 0x0BDC */ dTextBox_c *mpTextBoxes[4]; + /* 0x0BEC */ dLytCommonIconItem_c mItemIcons[9]; + + /* 0x5434 */ d2d::SubPaneList mSubpaneList; + /* 0x5440 */ d2d::SubPaneListNode mSubpanes[9]; + /* 0x54D0 */ f32 mArrowRotation; + /* 0x54D4 */ f32 mArrowLength; + /* 0x54D8 */ s32 field_0x54D8; + /* 0x54D8 */ s32 field_0x54DC; + /* 0x54E0 */ s32 field_0x54E0; + /* 0x54E4 */ s32 field_0x54E4; + /* 0x54E8 */ s32 field_0x54E8; + /* 0x54EC */ s32 field_0x54EC; + /* 0x54F0 */ s32 field_0x54F0; + /* 0x54F4 */ s32 field_0x54F4; + /* 0x54F8 */ u32 field_0x54F8; + /* 0x54FC */ s32 mDemoFrame; + /* 0x5500 */ s32 field_0x5500; + /* 0x5504 */ u8 field_0x5504; + /* 0x5505 */ u8 field_0x5505; + /* 0x5506 */ u8 field_0x5506; + /* 0x5507 */ u8 field_0x5507; + /* 0x5508 */ u8 field_0x5508; + /* 0x5509 */ u8 field_0x5509; + /* 0x550A */ u8 field_0x550A; + /* 0x550B */ u8 field_0x550B; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_drink.h b/include/d/lyt/meter/d_lyt_meter_drink.h index 43d8a7db..7ba0fe9f 100644 --- a/include/d/lyt/meter/d_lyt_meter_drink.h +++ b/include/d/lyt/meter/d_lyt_meter_drink.h @@ -6,7 +6,6 @@ #include "m/m_vec.h" #include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" // Size 0x54 class dLytMeterDrinkParts_c { @@ -46,6 +45,8 @@ private: STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, Visible); STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDrinkParts_c); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterDrinkParts_c); /* 0x03C */ d2d::AnmGroup_c *mAnmGroups[3]; /* 0x048 */ s32 field_0x48; @@ -71,6 +72,14 @@ public: bool draw(); bool execute(); + void setShouldBeVisible(bool v) { + field_0x6F4 = v; + } + + void setField_0x6E0(const mVec3_c &v) { + field_0x6E0 = v; + } + private: bool fn_800E5C40(int); int getPartForDrinkType(dLytMeterDrinkParts_c::DrinkType_e ty) const; @@ -82,6 +91,8 @@ private: STATE_FUNC_DECLARE(dLytMeterDrink_c, Move); STATE_FUNC_DECLARE(dLytMeterDrink_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterDrink_c); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterDrink_c); /* 0x040 */ d2d::dLytSub mLyt; /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[20]; diff --git a/include/d/lyt/meter/d_lyt_meter_event_skip.h b/include/d/lyt/meter/d_lyt_meter_event_skip.h index 464fd068..b806d48c 100644 --- a/include/d/lyt/meter/d_lyt_meter_event_skip.h +++ b/include/d/lyt/meter/d_lyt_meter_event_skip.h @@ -2,28 +2,36 @@ #define D_LYT_METER_EVENT_SKIP_H #include "d/lyt/d2d.h" +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -// size 0x164 class dLytMeterEventSkip_c { public: dLytMeterEventSkip_c() : mStateMgr(*this, sStateID::null) {} virtual ~dLytMeterEventSkip_c() {} bool build(d2d::ResAccIf_c *resAcc); bool remove(); + bool execute(); bool draw(); private: + bool shouldPromptForSkip() const; + STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Invisible); STATE_FUNC_DECLARE(dLytMeterEventSkip_c, In); STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Visible); STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Out); - UI_STATE_MGR_DECLARE(dLytMeterEventSkip_c); - d2d::LytBase_c mLyt; - /* 0x0D0 */ d2d::AnmGroup_c mAnmGroups[2]; - /* 0x150 */ u8 field_0x150[0x164 - 0x150]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterEventSkip_c); + + /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMeterEventSkip_c); + /* 0x03C */ d2d::LytBase_c mLyt; + /* 0x0D0 */ d2d::AnmGroup_c mAnm[2]; + /* 0x150 */ dTextBox_c *mpTextBoxes[2]; + /* 0x158 */ dWindow_c *mpWindow; + /* 0x15C */ dTextBox_c *mpSizeBox; + /* 0x160 */ bool mVisible; }; #endif 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..03a5726a 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,54 @@ #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() {} + + bool fn_80104760() const; + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + + void setStaminaPercent(f32 value) { + mStaminaPercent = value; + } + + void setField_0x539(bool v) { + field_0x539 = v; + } + private: + void realizeAnimState(); + static bool isStaminaLow(f32); + static bool isStaminaCritical(f32); + bool fn_80104710(bool) const; + bool isCrawling() const; + static bool swimmingRelated(); + bool fn_801047B0() const; + bool displayAirInsteadOfStamina(); + STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, InvisibleWait); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, In); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Wait); @@ -31,13 +63,38 @@ private: STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Recovery); STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, ToMax); - STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr1; - STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr2; + void changeState(const sStateIDIf_c &value) { + mStateMgrMain.changeState(value); + } + + 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 *mpOwnerPane; + /* 0x518 */ f32 mStaminaPercent; + /* 0x51C */ f32 field_0x51C; + /* 0x520 */ u8 _0x520[0x524 - 0x520]; + /* 0x524 */ mVec3_c field_0x524; + /* 0x530 */ u8 field_0x530; + /* 0x534 */ s32 field_0x534; + /* 0x538 */ u8 field_0x538; + /* 0x539 */ u8 field_0x539; + /* 0x53C */ s32 mOutWaitTimer; + /* 0x540 */ s32 field_0x540; + /* 0x544 */ s32 field_0x544; + /* 0x548 */ s32 field_0x548; + /* 0x54C */ f32 field_0x54C; + /* 0x550 */ f32 field_0x550; + + /* 0x554 */ f32 field_0x554; + u8 field_0x558; + u8 field_0x559; + bool field_0x55A; + u8 field_0x55B; }; +STATIC_ASSERT(sizeof(dLytMeterGanbariGauge_c) == 0x55C); #endif diff --git a/include/d/lyt/meter/d_lyt_meter_heart.h b/include/d/lyt/meter/d_lyt_meter_heart.h index 9fa52725..bd16388b 100644 --- a/include/d/lyt/meter/d_lyt_meter_heart.h +++ b/include/d/lyt/meter/d_lyt_meter_heart.h @@ -2,6 +2,7 @@ #define D_LYT_METER_HEART_H #include "d/lyt/d2d.h" +#include "nw4r/lyt/lyt_pane.h" class dLytMeterHeart_c : public d2d::dSubPane { public: @@ -9,16 +10,51 @@ 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 ~dLytMeterHeart_c() {} -private: + + s32 getField_0x78C() const { + return field_0x78C; + } - d2d::dLytSub mLyt; - /* 0xD8 */ d2d::AnmGroup_c mAnm[26]; - /* 0x??? */ u8 padding[0x12DA4 - 0x12D24]; + u8 getCurrentHealthCapacity() const; + +private: + u8 getCurrentHealth() const; + void realizeHeartsState(); + void executeInternal(); + s32 getNumDisplayedHearts() const; + s32 getDisplayedHealthCapacity() const; + + /* 0x008 */ d2d::dLytSub mLyt; + /* 0x09C */ d2d::AnmGroup_c mAnm[26]; + /* 0x71C */ nw4r::lyt::Pane *mpHeartPanes[20]; + /* 0x76C */ nw4r::lyt::Pane *mpAlphaPane; + /* 0x770 */ nw4r::lyt::Pane *mpMainPane; + /* 0x774 */ s32 mCurrentHealth; + /* 0x778 */ s32 mCurrentHealthCapacity; + /* 0x77C */ s32 mStoredHealth; + /* 0x780 */ s32 mStoredHealthCapacity; + /* 0x784 */ s32 mHealthCapacityIncreaseDelayTimer; + /* 0x788 */ s32 mEffectHeartIdx; + /* 0x78C */ s32 field_0x78C; + /* 0x790 */ s32 field_0x790; + /* 0x794 */ u8 field_0x794; + /* 0x795 */ u8 field_0x795; + /* 0x796 */ u8 field_0x796; + /* 0x797 */ bool field_0x797; + /* 0x798 */ bool mIsLoop; + /* 0x799 */ bool mIsDanger; + /* 0x79A */ u8 field_0x79A; }; #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..b076302a 100644 --- a/include/d/lyt/meter/d_lyt_meter_item_select.h +++ b/include/d/lyt/meter/d_lyt_meter_item_select.h @@ -1,53 +1,154 @@ #ifndef D_LYT_METER_ITEM_SELECT_H #define D_LYT_METER_ITEM_SELECT_H +#include "d/a/d_a_itembase.h" #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; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + +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 mShouldBeSelect; }; 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; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + +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 mShouldBeSelect; }; 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; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + +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 mShouldBeSelect; }; 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 setVisible(bool bVisible, bool bInstant); + void setVisible(bool bVisible); + void setVisible2(bool bVisible); + void execute(); + + bool isSettled() const; + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + u8 getField_0x57() const { + return field_0x57; + } + + void setField_0x57(u8 val) { + field_0x57 = val; + } + + bool getShouldBeVisible() const { + return mShouldBeVisible; + } + + bool getInstant() const { + return mInstant; + } + + void setOwnerPane(nw4r::lyt::Pane *p) { + mpPane2 = p; + } + +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 */ d2d::dLytSub *mpLyt; + /* 0x40 */ d2d::AnmGroup_c *mpAnm; + /* 0x44 */ nw4r::lyt::Pane *mpPane1; + /* 0x48 */ nw4r::lyt::Pane *mpPane2; + /* 0x4C */ s32 mDelay; + /* 0x50 */ s32 mIdx; + /* 0x54 */ bool mShouldBeVisible; + /* 0x55 */ bool mInstant; + /* 0x56 */ u8 field_0x56; + /* 0x57 */ u8 field_0x57; }; class dLytMeterItemSelect_c : public d2d::dSubPane { @@ -56,12 +157,84 @@ 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 ~dLytMeterItemSelect_c() {} + + static bool isInSpiralChargeTutorialMinigame(); + static bool isInRollercoasterMinigame(); + + // This enum might be used externally too? + enum InternalItem_e { + I_BOMB_BAG, + I_BOW, + I_SAILCLOTH, + I_CLAWSHOTS, + I_BEETLE, + I_SLINGSHOT, + I_GUST_BELLOWS, + I_BUG_NET, + I_WHIP, + I_BOAT_CANNON, + I_HARP, + + I_INVALID, // 11 + }; + + void fn_800EF580(); + void fn_800EF6B0(u8); + void setOwnerPane(nw4r::lyt::Pane *p); + void fn_800EF710(u8); + void fn_800EF720(InternalItem_e item); + void fn_800EF7A0(bool, s32); + bool fn_800EFDF0(bool b) const; + bool fn_800F02F0() const; + bool fn_800F0220(s32 arg); + + bool getField_0x57A2() const { + return field_0x57A2; + } + + u8 getField_0x5794() const { + return field_0x5794; + } + private: + void setBtnItem(s32 internalItem); + void realizeSelectedWheelItem(); + void fn_800EF8C0(bool); + bool isWheelBlockedByCurrentAction(); + void setBtnText(s32); + bool fn_800F01B0(s32) const; + bool fn_800F01E0(s32) const; + bool isSlotBocoburinLocked(s32); + void fn_800F0310(); + bool fn_800F0030() const; + s32 fn_800F0170(s32) const; + u8 getInternalBaseItemForSlot(s32) const; + + bool isWheelIndexLocked(s32 idx); + + void realizeWheelItems(); + + void realizeWheelNumberForLytIndex(s32 iconIdx, s32 lytItemIdx); + void realizeBtnNumberForLytIndex(s32 iconIdx, bool); + void realizeWheelNumberVForLytIndex(s32 iconIdx, s32 lytItemIdx); + + void setCurrentItemText(ITEM_ID item); + static ITEM_ID getBaseItemForBWheelSlot(s32 idx); + ITEM_ID baseItemIdToCurrentVariant(ITEM_ID baseItem) const; + s32 baseItemLytIndexToCurrentVariant(s32 lytIndex) const; + s32 getBaseItemLytIndexforInternalId(s32 idx) const; + STATE_FUNC_DECLARE(dLytMeterItemSelect_c, InitWait); STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Wait); STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SelectIn); @@ -85,35 +258,79 @@ 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 *mpOwnerPane; + /* 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 */ InternalItem_e field_0x574C; + /* 0x5750 */ InternalItem_e field_0x5750; + /* 0x5754 */ s32 field_0x5754; + /* 0x5758 */ s32 field_0x5758; + /* 0x575C */ s32 field_0x575C; + /* 0x5760 */ s32 mDemoMoveTimer; + /* 0x5764 */ s32 field_0x5764; + /* 0x5768 */ s32 field_0x5768; + /* 0x576C */ s32 mLastDoButtonRelatedAction; + /* 0x5770 */ s32 field_0x5770; + /* 0x5774 */ s32 field_0x5774; + /* 0x5778 */ f32 mArrowRotation; + /* 0x577C */ f32 mArrowLength; + /* 0x5780 */ f32 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 mStoredBowVariant; + /* 0x579C */ u8 mStoredSlingshotVariant; + /* 0x579C */ u8 mStoredBeetleVariant; + /* 0x579C */ u8 mStoredBugNetVariant; + /* 0x57A0 */ u8 field_0x57A0; + /* 0x57A1 */ u8 field_0x57A1; + /* 0x57A2 */ bool field_0x57A2; + /* 0x57A3 */ bool field_0x57A3[8]; + /* 0x57AB */ bool mIsBocoburinLocked[8]; + /* 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_key.h b/include/d/lyt/meter/d_lyt_meter_key.h index a46a48b9..43885d4e 100644 --- a/include/d/lyt/meter/d_lyt_meter_key.h +++ b/include/d/lyt/meter/d_lyt_meter_key.h @@ -1,9 +1,11 @@ #ifndef D_LYT_METER_KEY_H #define D_LYT_METER_KEY_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 dLytMeterKakeraKey_c { public: @@ -12,8 +14,15 @@ public: bool build(d2d::ResAccIf_c *); bool remove(); + bool execute(); bool draw(); + void setPosition(s32 position); + + void setShouldBeVisible(bool v) { + mShouldBeVisible = v; + } + private: STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Wait); STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, On); @@ -21,11 +30,20 @@ private: STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Active); STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Off); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterKakeraKey_c); + /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMeterKakeraKey_c); /* 0x03C */ d2d::dLytSub mLyt; - /* 0x0D0 */ d2d::AnmGroup_c mAnmGroups[8]; - /* 0x2D0 */ u32 field_0x2D0; - /* 0x2D4 */ mVec3_c mVecs[2]; + /* 0x0D0 */ d2d::AnmGroup_c mAnm[8]; + /* 0x2D0 */ nw4r::lyt::Pane *mpPane; + /* 0x2D4 */ mVec3_c mPanePositions[2]; + /* 0x2EC */ mVec3_c mPosition; + /* 0x2F8 */ u32 mSavedKeyPieceCount; + /* 0x2FC */ s32 mNextKeyPieceCount; + /* 0x300 */ s32 mPosititionIndex; + /* 0x304 */ s32 mOldPosititionIndex; + /* 0x308 */ s32 mMovementFrame; + /* 0x30C */ u8 mShouldBeVisible; }; class dLytMeterBossKey_c { @@ -33,24 +51,42 @@ public: dLytMeterBossKey_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterBossKey_c() {} - virtual void BossKey0x8() {} - virtual void BossKey0xC() {} + virtual d2d::LytBase_c *getLyt() { + return &mLyt; + } + virtual const char *getName() const { + return mLyt.getName(); + } bool build(d2d::ResAccIf_c *); bool remove(); + bool execute(); bool draw(); + void setPosition(s32 position); + + void setShouldBeVisible(bool v) { + mShouldBeVisible = v; + } + private: STATE_FUNC_DECLARE(dLytMeterBossKey_c, Wait); STATE_FUNC_DECLARE(dLytMeterBossKey_c, On); STATE_FUNC_DECLARE(dLytMeterBossKey_c, Active); STATE_FUNC_DECLARE(dLytMeterBossKey_c, Off); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterBossKey_c); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterBossKey_c); /* 0x040 */ d2d::dLytSub mLyt; - /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[5]; - /* 0x214 */ u32 field_0x2D0; - /* 0x218 */ mVec3_c mVecs[4]; + /* 0x0D4 */ d2d::AnmGroup_c mAnm[5]; + /* 0x214 */ nw4r::lyt::Pane *mpPane; + /* 0x218 */ mVec3_c mPanePositions[4]; + /* 0x248 */ mVec3_c mPosition; + /* 0x254 */ s32 mPosititionIndex; + /* 0x258 */ s32 mOldPosititionIndex; + /* 0x25C */ s32 mMovementFrame; + /* 0x260 */ u8 mShouldBeVisible; }; class dLytMeterSmallKey_c { @@ -58,24 +94,43 @@ public: dLytMeterSmallKey_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterSmallKey_c() {} - virtual void SmallKey0x8() {} - virtual void SmallKey0xC() {} + virtual d2d::LytBase_c *getLyt() { + return &mLyt; + } + virtual const char *getName() const { + return mLyt.getName(); + } bool build(d2d::ResAccIf_c *); bool remove(); + bool execute(); bool draw(); + void setPosition(s32 position); + + void setShouldBeVisible(bool v) { + mShouldBeVisible = v; + } + private: STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Wait); STATE_FUNC_DECLARE(dLytMeterSmallKey_c, On); STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Active); STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Off); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterSmallKey_c); + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterSmallKey_c); /* 0x040 */ d2d::dLytSub mLyt; - /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[5]; - /* 0x214 */ u32 field_0x2D0; - /* 0x218 */ mVec3_c mVecs[4]; + /* 0x0D4 */ d2d::AnmGroup_c mAnm[5]; + /* 0x214 */ nw4r::lyt::Pane *mpPane; + /* 0x218 */ mVec3_c mPanePositions[4]; + /* 0x248 */ mVec3_c mPosition; + /* 0x254 */ s32 mSavedSmallKeyCount; + /* 0x258 */ s32 mPosititionIndex; + /* 0x25C */ s32 mOldPosititionIndex; + /* 0x260 */ s32 mMovementFrame; + /* 0x264 */ u8 mShouldBeVisible; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_minus_btn.h b/include/d/lyt/meter/d_lyt_meter_minus_btn.h index 94889bb9..7478aea3 100644 --- a/include/d/lyt/meter/d_lyt_meter_minus_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_minus_btn.h @@ -3,8 +3,10 @@ #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_common_icon_item.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" // At 0x8, [8], size 0x48 @@ -13,16 +15,29 @@ public: dLytMeterMinusBtnMenuIcon_c() : mStateMgr(*this, sStateID::null) {} virtual ~dLytMeterMinusBtnMenuIcon_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Wait); STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, On); STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Select); STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterMinusBtnMenuIcon_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtnMenuIcon_c); - u32 padding2; - u32 padding3; + /* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterMinusBtnMenuIcon_c); + + /* 0x40 */ d2d::AnmGroup_c *mpAnm; + /* 0x44 */ u32 mShouldBeSelect; }; // At 0x248, standalone @@ -31,16 +46,29 @@ public: dLytMeterMinusBtnBlink_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterMinusBtnBlink_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Wait); STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, On); STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Select); STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterMinusBtnBlink_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtnBlink_c); - u32 padding; - u32 padding2; + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterMinusBtnBlink_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 mShouldBeSelect; }; // At 0x28C, [2], size 0x44 @@ -49,16 +77,29 @@ public: dLytMeterMinusBtnText_c() : mStateMgr(*this, sStateID::null) {} ~dLytMeterMinusBtnText_c() {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anim) { + mpAnm = anim; + } + + void setShouldBeSelect(u32 v) { + mShouldBeSelect = v; + } + private: STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Wait); STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, On); STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Select); STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterMinusBtnText_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtnText_c); - u32 padding; - u32 padding2; + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterMinusBtnText_c); + + /* 0x3C */ d2d::AnmGroup_c *mpAnm; + /* 0x40 */ u32 mShouldBeSelect; }; class dLytMeterMinusBtn_c : public d2d::dSubPane { @@ -67,13 +108,44 @@ 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 ~dLytMeterMinusBtn_c() {} + bool demoRelated(s32 arg); + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + + void setField_0x4E80(s32 value) { + field_0x4E80 = value; + } + + bool fn_800F75E0() const; + bool fn_800F7600() const; + private: + bool shouldCall() const; + void fn_800F7300(); + bool fn_800F7760() const; + void realizeShieldDurability(); + bool isUnequippable(s32 num) const; + void setItemText(s32 item); + bool isNotMedalOrExtraAmmo(s32 item); + + nw4r::lyt::Pane *getPaneByIndex(s32 idx) const { + return mpPanes[idx]; + } + STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, Wait); STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, MenuSelectingIn); STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, MenuSelecting); @@ -84,33 +156,41 @@ private: STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoMove); STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoOut); - dLytMeterMinusBtnMenuIcon_c mIcon[8]; - dLytMeterMinusBtnBlink_c mBlink; - dLytMeterMinusBtnText_c mText[2]; - UI_STATE_MGR_DECLARE(dLytMeterMinusBtn_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterMinusBtn_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterMinusBtn_c); - /* 0x490 */ d2d::dLytSub mLyt; - - /* 0x524 */ d2d::AnmGroup_c mAnmGroups[33]; - - // What is here? - u8 padding2[0xE30 - 0xDA4]; - - /* 0xE34 */ dLytCommonIconItem_c mItemIcons[8]; - - d2d::SubPaneList mNodeList; - d2d::SubPaneListNode mNodes[8]; - EffectsStruct mEffects[4]; - - 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[0x13730 - 0x136D8]; + /* 0x0008 */ dLytMeterMinusBtnMenuIcon_c mIcon[8]; + /* 0x0244 */ dLytMeterMinusBtnBlink_c mBlink; + /* 0x028C */ dLytMeterMinusBtnText_c mText[2]; + /* 0x0314 */ UI_STATE_MGR_DECLARE(dLytMeterMinusBtn_c); + /* 0x0350 */ d2d::dLytSub mLyt; + /* 0x03E4 */ d2d::AnmGroup_c mAnm[33]; + /* 0x0C24 */ nw4r::lyt::Pane *mpPanes[28]; + /* 0x0C94 */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x0C98 */ dWindow_c *mpWindows[2]; + /* 0x0CA0 */ dTextBox_c *mpSizeBoxes[2]; + /* 0x0CA8 */ dTextBox_c *mpTextBoxes[2]; + /* 0x0CB0 */ dLytCommonIconItem_c mItemIcons[8]; + /* 0x4CF0 */ d2d::SubPaneList mSubpaneList; + /* 0x4CFC */ d2d::SubPaneListNode mSubpanes[8]; + /* 0x4D7C */ EffectsStruct mEffects[4]; + /* 0x4E4C */ mAng3_c mEffectsRot[4]; + /* 0x4E64 */ s32 mSlotForEffect[4]; + /* 0x4E74 */ f32 mArrowRotation; + /* 0x4E78 */ f32 mArrowLength; + /* 0x4E7C */ s32 field_0x4E7C; + /* 0x4E80 */ s32 field_0x4E80; + /* 0x4E84 */ s32 field_0x4E84; + /* 0x4E88 */ s32 field_0x4E88; + /* 0x4E8C */ s32 field_0x4E8C; + /* 0x4E90 */ s32 mDemoFrame; + /* 0x4E94 */ s32 mSlotToDemo; + /* 0x4E98 */ s32 field_0x4E98[8]; + /* 0x4EB8 */ u8 field_0x4EB8; + /* 0x4EB9 */ u8 field_0x4EB9; + /* 0x4EBA */ u8 field_0x4EBA; + /* 0x4EBB */ u8 field_0x4EBB[8]; + /* 0x4EC3 */ u8 field_0x4EC3; }; #endif 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..825b7153 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,52 @@ 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() {} + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + 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]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterNunStk_c); + + /* 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 mDisplayedAction; + /* 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..86a280d9 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,48 @@ 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() {} + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + 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]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterNunchakuBg_c); + + /* 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/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..06c330f2 --- /dev/null +++ b/include/d/lyt/meter/d_lyt_meter_parts.h @@ -0,0 +1,119 @@ +#ifndef D_LYT_METER_PARTS_H +#define D_LYT_METER_PARTS_H + +#include "d/lyt/d2d.h" +#include "nw4r/lyt/lyt_pane.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(); + } + + bool shouldCall() const; + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + +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 mAnm[3]; + /* 0x198 */ dWindow_c *mpWindow[1]; + /* 0x19C */ dTextBox_c *mpSizeBox[1]; + /* 0x1A0 */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x1A4 */ s32 mUnuseDelay; + /* 0x1A8 */ s32 mCallCount; + /* 0x1AC */ bool mShouldCall; + /* 0x1AD */ bool mHasInitedCall; +}; + +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(); + } + + bool shouldCall() const; + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + +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 mAnm[3]; + /* 0x198 */ dWindow_c *mpWindow[1]; + /* 0x19C */ dTextBox_c *mpSizeBox[1]; + /* 0x1A0 */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x1A4 */ s32 mUnuseDelay; + /* 0x1A8 */ s32 mCallCount; + /* 0x1AC */ bool mShouldCall; + /* 0x1AD */ bool mHasInitedCall; +}; + +class dLytMeterParts_c { +public: + dLytMeterParts_c() : mStateMgr(*this, sStateID::null) {} + + void build(s32 index); + void execute(); + + void setAnmGroups(d2d::AnmGroup_c *inAnm, d2d::AnmGroup_c *outAnm) { + mpAnmIn = inAnm; + mpAnmOut = outAnm; + } + + void setShouldBeVisible(bool val) { + mShouldBeVisible = val; + } + +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); + + /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMeterParts_c); + /* 0x3C */ d2d::AnmGroup_c *mpAnmIn; + /* 0x40 */ d2d::AnmGroup_c *mpAnmOut; + /* 0x44 */ s32 mIndex; + /* 0x48 */ bool mShouldBeVisible; +}; + +#endif diff --git a/include/d/lyt/meter/d_lyt_meter_plus_btn.h b/include/d/lyt/meter/d_lyt_meter_plus_btn.h index c149383e..ccbe9781 100644 --- a/include/d/lyt/meter/d_lyt_meter_plus_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_plus_btn.h @@ -2,8 +2,9 @@ #define D_LYT_METER_PLUS_BTN_H #include "d/lyt/d2d.h" +#include "d/lyt/d_textbox.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterPlusBtn_c : public d2d::dSubPane { public: @@ -11,21 +12,57 @@ 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 ~dLytMeterPlusBtn_c() {} + + bool isCalling() const; + void setCall(bool shouldCall); + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + + bool getField_0x1C0() const { + return field_0x1C0; + } + private: + void setMessage(s32 id); + bool isMapOpen() const; + static bool hasSpecificMapMark(); + STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, Wait); STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, ToUse); STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, ToUnuse); STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, Unuse); - /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c); - /* 0x040 */ d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3]; - /* 0x??? */ u8 padding[0x7A64 - 0x7A38]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterPlusBtn_c); + + /* 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; + /* 0x1A0 */ dTextBox_c *mpTextBoxes[2]; + /* 0x1A8 */ dWindow_c *mpWindow[1]; + /* 0x1AC */ dTextBox_c *mpSizeBox[1]; + /* 0x1B0 */ s32 field_0x1B0; + /* 0x1B4 */ s32 field_0x1B4; + /* 0x1B8 */ s32 mCallCount; + /* 0x1BC */ s32 field_0x1BC; + /* 0x1C0 */ bool field_0x1C0; + /* 0x1C1 */ bool field_0x1C1; + /* 0x1C2 */ bool mShouldCall; + /* 0x1C3 */ bool field_0x1C3; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_remocon_bg.h b/include/d/lyt/meter/d_lyt_meter_remocon_bg.h index dc9993da..b3900cde 100644 --- a/include/d/lyt/meter/d_lyt_meter_remocon_bg.h +++ b/include/d/lyt/meter/d_lyt_meter_remocon_bg.h @@ -3,7 +3,6 @@ #include "d/lyt/d2d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterRemoconBg_c : public d2d::dSubPane { public: @@ -11,9 +10,15 @@ 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 ~dLytMeterRemoconBg_c() {} @@ -23,9 +28,11 @@ private: STATE_FUNC_DECLARE(dLytMeterRemoconBg_c, Active); STATE_FUNC_DECLARE(dLytMeterRemoconBg_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterRemoconBg_c); - d2d::dLytSub mLyt; - /* 0xD8 */ nw4r::lyt::Pane *mpPane; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRemoconBg_c); + + /* 0x08 */ UI_STATE_MGR_DECLARE(dLytMeterRemoconBg_c); + /* 0x44 */ d2d::dLytSub mLyt; + /* 0xD8 */ nw4r::lyt::Pane *mpPane[1]; /* 0xDC */ u32 field_0xDC; /* 0xE0 */ u32 field_0xE0; /* 0xE4 */ u32 field_0xE4; diff --git a/include/d/lyt/meter/d_lyt_meter_rupy.h b/include/d/lyt/meter/d_lyt_meter_rupy.h index 80b960a2..cacdbc88 100644 --- a/include/d/lyt/meter/d_lyt_meter_rupy.h +++ b/include/d/lyt/meter/d_lyt_meter_rupy.h @@ -2,33 +2,71 @@ #define D_LYT_METER_RUPY_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 dLytMeterRupyStart_c { public: dLytMeterRupyStart_c() : mStateMgr(*this, sStateID::null) {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anm) { + mpAnm = anm; + } + + void setShouldStart(bool b) { + mShouldStart = b; + } + + bool isStarting() const { + return mShouldStart; + } + private: STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Wait); STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Start); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupyStart_c); + UI_STATE_MGR_DECLARE(dLytMeterRupyStart_c); - u8 field_0x3C[0x8]; + d2d::AnmGroup_c *mpAnm; + bool mShouldStart; }; class dLytMeterRupyBlink_c { public: dLytMeterRupyBlink_c() : mStateMgr(*this, sStateID::null) {} + void init(); + void execute(); + + void setAnm(d2d::AnmGroup_c *anm) { + mpAnm = anm; + } + + void doFlash() { + mShouldFlash = true; + } + + void cancelFlash() { + mImmediatelyCancelFlash = true; + } + private: STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Wait); STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Flash); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupyBlink_c); + UI_STATE_MGR_DECLARE(dLytMeterRupyBlink_c); - u8 field_0x3C[0x8]; + d2d::AnmGroup_c *mpAnm; + bool mShouldFlash; + bool mImmediatelyCancelFlash; }; class dLytMeterRupy_c : public d2d::dSubPane { @@ -37,25 +75,81 @@ 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 ~dLytMeterRupy_c() {} + + mVec3_c getLastVisibleDigitPosition(); + + void setField_0x8A9(u8 val) { + field_0x8A9 = val; + } + + u8 getField_0x8A9() const { + return field_0x8A9; + } + + void setField_0x8AA(u8 val) { + field_0x8AA = val; + } + + u8 getField_0x8AC() const { + return field_0x8AC; + } + + void setField_0x8AC(u8 val) { + field_0x8AC = val; + } + + void setSize(u8 size) { + mSize = size; + } + private: + bool updateDisplayedAmount(bool suppressSound); + bool hasChangeInRupees() const; + s32 getRupeeDifference() const; + void setDigit(s32 index, s32 digit); + void executeDigitJump(); + void executeDigitBlink(s32 amount); + STATE_FUNC_DECLARE(dLytMeterRupy_c, In); STATE_FUNC_DECLARE(dLytMeterRupy_c, Active); STATE_FUNC_DECLARE(dLytMeterRupy_c, Start); STATE_FUNC_DECLARE(dLytMeterRupy_c, Out); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterRupy_c); + UI_STATE_MGR_DECLARE(dLytMeterRupy_c); /* 0x044 */ d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[22]; + /* 0x0D8 */ d2d::AnmGroup_c mAnm[22]; /* 0x658 */ dLytMeterRupyStart_c mStartParts[4]; /* 0x768 */ dLytMeterRupyBlink_c mBlinkParts[4]; - /* 0x??? */ u8 padding[0x1A98 - 0x1A60]; + /* 0x878 */ nw4r::lyt::Pane *mpPanes[4]; + /* 0x888 */ s32 mNumDisplayedDigits; + /* 0x88C */ s32 mDisplayedRupeeCount; + /* 0x890 */ s32 field_0x890; + /* 0x894 */ s32 mBlinkDelay; + /* 0x898 */ s32 mRupeeColor; + /* 0x89C */ u8 mSize; + /* 0x89D */ u8 mDisplayedDigits[4]; + /* 0x8A1 */ u8 mPrevDigits[4]; + /* 0x8A5 */ u8 mJumpState[4]; + /* 0x8A9 */ u8 field_0x8A9; + /* 0x8AA */ u8 field_0x8AA; + /* 0x8AB */ u8 field_0x8AB; + /* 0x8AC */ u8 field_0x8AC; + /* 0x8AD */ u8 field_0x8AD; + /* 0x8AE */ u8 field_0x8AE; }; - #endif diff --git a/include/d/lyt/meter/d_lyt_meter_shield_gauge.h b/include/d/lyt/meter/d_lyt_meter_shield_gauge.h index 55e87c8f..50c95115 100644 --- a/include/d/lyt/meter/d_lyt_meter_shield_gauge.h +++ b/include/d/lyt/meter/d_lyt_meter_shield_gauge.h @@ -2,8 +2,8 @@ #define D_LYT_METER_SHIELD_GAUGE_H #include "d/lyt/d2d.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dLytMeterShieldGauge_c : public d2d::dSubPane { public: @@ -11,25 +11,75 @@ 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 ~dLytMeterShieldGauge_c() {} void setContainerGroup(d2d::AnmGroup_c *g) { mpContainerAnmGroup = g; } + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + + f32 getGaugePercentMaybe() const { + return field_0x2E0; + } + + void setfield_0x318(s32 v) { + field_0x318 = v; + } + + u8 getField_0x31D() const { + return field_0x31D; + } + private: + s32 getLytFrameForShield(s32) const; + void setLevel(f32 level); + f32 calcUpdownRatio(f32) const; + STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, Normal); STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, Use); STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, ToMax); - UI_STATE_MGR_DECLARE(dLytMeterShieldGauge_c); - d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[8]; - /* 0x??? */ d2d::AnmGroup_c *mpContainerAnmGroup; - /* 0x??? */ u8 padding[0x130C4 - 0x13080]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterShieldGauge_c); + + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytMeterShieldGauge_c); + /* 0x044 */ d2d::dLytSub mLyt; + /* 0x0D8 */ d2d::AnmGroup_c mAnm[8]; + /* 0x2D8 */ d2d::AnmGroup_c *mpContainerAnmGroup; + /* 0x2DC */ nw4r::lyt::Pane *mpOwnerPane; + /* 0x2E0 */ f32 field_0x2E0; + /* 0x2E4 */ f32 field_0x2E4; + /* 0x2E8 */ f32 field_0x2E8; + /* 0x2EC */ f32 field_0x2EC; + /* 0x2F0 */ f32 field_0x2F0; + /* 0x2F4 */ f32 field_0x2F4; + /* 0x2F8 */ f32 field_0x2F8; + /* 0x2FC */ s32 field_0x2FC; + /* 0x300 */ f32 field_0x300; + /* 0x304 */ f32 field_0x304; + /* 0x308 */ s32 field_0x308; + /* 0x30C */ u8 field_0x30C; + /* 0x30D */ u8 field_0x30D; + /* 0x30E */ u8 field_0x30E; + /* 0x310 */ s32 field_0x310; + /* 0x314 */ s32 field_0x314; + /* 0x318 */ s32 field_0x318; + /* 0x31C */ u8 field_0x31C; + /* 0x31D */ u8 field_0x31D; + /* 0x31E */ u8 field_0x31E; + /* 0x31F */ u8 field_0x31F; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_timer.h b/include/d/lyt/meter/d_lyt_meter_timer.h index 3630de19..4f10edd8 100644 --- a/include/d/lyt/meter/d_lyt_meter_timer.h +++ b/include/d/lyt/meter/d_lyt_meter_timer.h @@ -1,69 +1,274 @@ #ifndef D_LYT_METER_TIMER_H #define D_LYT_METER_TIMER_H +#include "common.h" +#include "d/a/d_a_item.h" #include "d/lyt/d2d.h" #include "m/m_color.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" - class LytMeterTimerPart1_c : public d2d::dSubPane { public: - LytMeterTimerPart1_c() { + LytMeterTimerPart1_c() + : mActualTearCount(0), mDisplayedTearCount(0), field_0x760(0), mTrial(dAcItem_c::TRIAL_NONE), field_0x780(0) { sInstance = this; } 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 ~LytMeterTimerPart1_c() { sInstance = nullptr; } - static LytMeterTimerPart1_c *sInstance; + static LytMeterTimerPart1_c *GetInstance() { + return sInstance; + } + + void init(); + void startInAnim(); + void realizeTrial(); + + void startOutAnim(); + void stopInAnim(); + void stopFinishedFruit(); + void stopOutAnim(); + bool isInAnimFinished(); + bool isCurrentFruitAnimFinished(); + bool isAnyFruitAnimFinished(); + bool isLastFruitAnimFinished(); + bool isOutAnimFinished(); + void startFruitAnim(s32 index); + void resetBowlNuts(); + void updateDropLine(nw4r::lyt::Pane *pane); + + void createEffect(s32 fruitIndex); + bool incrementTearCount(); + bool isAnyFruitAnimAtFrame(f32 f) const; + + s32 getActualTearCount() const { + return mActualTearCount; + } + + s32 getDisplayedTearCount() const { + return mDisplayedTearCount; + } + + s32 getField0x780() const { + return field_0x780; + } + + void setField0x780(s32 val) { + field_0x780 = val; + } + private: + void initLoopAnim(); + void initBowlNuts(); + void initOutAnim(); + void initColors(); + void initInAnim(); + void startNextFruitAnim(); + void disableCurrentFruitAnim(); + + static LytMeterTimerPart1_c *sInstance; + /* 0x008 */ d2d::dLytSub mLyt; - /* 0x09C */ d2d::AnmGroup_c mAnmGroups[26]; - /* 0x71C */ u8 field_0x71C[0x768 - 0x71C]; + /* 0x09C */ d2d::AnmGroup_c mAnm[26]; + /* 0x71C */ s32 mActualTearCount; + /* 0x720 */ s32 mDisplayedTearCount; + /* 0x724 */ nw4r::lyt::Pane *mpPanes[15]; + /* 0x760 */ s32 field_0x760; + /* 0x764 */ dAcItem_c::Trial_e mTrial; /* 0x768 */ mColor mColors1[3]; /* 0x774 */ mColor mColors2[3]; + /* 0x780 */ s32 field_0x780; }; class LytMeterTimerPart2_c : public d2d::dSubPane { public: - LytMeterTimerPart2_c() { + LytMeterTimerPart2_c(): mNumPetals(0), mTrial(dAcItem_c::TRIAL_NONE), mVisible(true), mFlowerLoopFrame(0.0f) { sInstance = this; } 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 ~LytMeterTimerPart2_c() { sInstance = nullptr; } - static LytMeterTimerPart2_c *sInstance; + static LytMeterTimerPart2_c *GetInstance() { + return sInstance; + } + + void setNumPetals(s32 num) { + mNumPetals = num; + } + + s32 getNumPetals() const { + return mNumPetals; + } + + nw4r::lyt::Pane *i_getPane() const { + return mpPane; + } + + void setVisible(bool bVisible) { + mVisible = bVisible; + } + + void calc(); + + void init(); + void initDyingAnims(); + void initFallOutAnims(); + void realizePetalsOnOff(); + void syncPetalsTime(); + void updatePetalsRate(); + void restartPetals(); + void finishSingleAnim(u8 idx); + void resetSingleAnim(u8 idx); + + void startInAnim(); + void startOutAnim(); + void stopInAnim(); + void stopBloomAnim(); + void stopBeforeFallAnim(); + void stopChangeSirenAnim(); + void stopSirenLoopAnim(); + void stopSirenSafeAnim(); + void stopFlowerLoopAnim(); + + void resetFlowerLoopAnim(); + void stopDyingAnims(); + void stopFinishedDyingAnims(); + void stopFallOutAnims(); + void stopFinishedFallOutAnims(); + void stopOutAnim(); + void stopChangeFruitAnim(); + bool isInAnimFinished(); + bool isBloomAnimFinished(); + bool isBeforeFallAnimAtStart(); + bool isChangeSirenAnimFinished(); + bool isSirenSafeAnimFinished(); + bool isFlowerLoopAnimFinished(); + bool isOutAnimFinished(); + bool isChangeFruitAnimFinished(); + void realizeFruitsColor(); + void finishDyingAnims(); + void setPetalsToStart(); + + void enableChangeFruitAnim(); + + void enableBloomAnim(); + void enableBeforeFallAnim(); + void enableChangeSirenAnim(); + void enableSirenLoopAnim(); + void enableSafeAnim(); + void resumeFlowerLoop(); + void startFlowerLoop(); + void syncTime(); + void syncTimeWithSafe(); + /** Played when the finish animation is played and each tear hits the flower */ + void createSingleFruitEffect(); + /** Played when the whole fruit is finished */ + void createFruitCompleteEffect(); + + void initBeforeFallAnim(); + + bool isPetalDyingAnimFinished(); + bool isFirstFallOutAnimFinished(); + void initChangeSirenAnim(); + private: + void initBloomAnim(); + void initSirenLoopAnim(); + void initSirenSafeAnim(); + void initFlowerLoopAnim(); + void initOutAnim(); + void initInAnim(); + void initChangeFruitAnim(); + void initColors(); + + static LytMeterTimerPart2_c *sInstance; + /* 0x008 */ d2d::dLytSub mLyt; - /* 0x09C */ d2d::AnmGroup_c mAnmGroups[30]; - /* 0x81C */ u8 field_0x81C[0x828 - 0x81C]; + /* 0x09C */ d2d::AnmGroup_c mAnm[30]; + /* 0x81C */ s32 mNumPetals; + /* 0x820 */ nw4r::lyt::Pane *mpPane; + /* 0x824 */ dAcItem_c::Trial_e mTrial; /* 0x828 */ mColor mColors1[2]; /* 0x830 */ mColor mColors2[2]; + /* 0x838 */ u8 mVisible; + /* 0x83C */ f32 mFlowerLoopFrame; }; class dLytMeterTimer_c { public: - dLytMeterTimer_c() : mStateMgr(*this, sStateID::null) {} + dLytMeterTimer_c() + : mStateMgr(*this, sStateID::null), + mpPart1(nullptr), + mpPart2(nullptr), + field_0x48(0), + field_0x49(0), + mActualTime(0), + mLastTime(0), + field_0x54(0), + field_0x55(0), + field_0x56(8), + field_0x57(8), + field_0x58(0), + field_0x59(0), + field_0x5C(0), + field_0x60(0) {} virtual ~dLytMeterTimer_c() {} bool build(); bool remove(); + bool execute(); + bool startIn2(); + bool startOut2(); + + bool getField_0x54() const { + return field_0x54; + } + private: + void startIn(); + void gotoChangeSiren(); + void gotoSiren(); + void gotoChangeSafeBloom(); + void gotoChangeSafe(); + void gotoSafe(); + void gotoChangeFruits6(); + void gotoFruits(); + void startOut(); + void gotoChangeFruits3(); + void startSafe(); + void doPickup(); + bool isInSiren(); + s32 getPetalForTimerMaybe(s32 time); + bool checkForPetalChangeMaybe(); + STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSiren); STATE_FUNC_DECLARE(dLytMeterTimer_c, Siren); STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSafeBloom); @@ -72,7 +277,28 @@ private: STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeFruits); STATE_FUNC_DECLARE(dLytMeterTimer_c, Fruits); - UI_STATE_MGR_DECLARE(dLytMeterTimer_c); + static bool sDoExit; + static bool sDoFinishAnim; + static bool sFinished; + + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterTimer_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterTimer_c); + + /* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterTimer_c); + /* 0x40 */ LytMeterTimerPart1_c *mpPart1; + /* 0x44 */ LytMeterTimerPart2_c *mpPart2; + /* 0x48 */ u8 field_0x48; + /* 0x49 */ u8 field_0x49; + /* 0x4C */ s32 mActualTime; + /* 0x50 */ s32 mLastTime; + /* 0x54 */ bool field_0x54; + /* 0x55 */ u8 field_0x55; + /* 0x56 */ u8 field_0x56; + /* 0x57 */ u8 field_0x57; + /* 0x58 */ u8 field_0x58; + /* 0x59 */ u8 field_0x59; + /* 0x5C */ s32 field_0x5C; + /* 0x60 */ s32 field_0x60; }; #endif diff --git a/include/d/lyt/meter/d_lyt_meter_z_btn.h b/include/d/lyt/meter/d_lyt_meter_z_btn.h index 81de20e1..826ffa25 100644 --- a/include/d/lyt/meter/d_lyt_meter_z_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_z_btn.h @@ -1,9 +1,12 @@ #ifndef D_LYT_METER_Z_BTN_H #define D_LYT_METER_Z_BTN_H +#include "common.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" class dLytMeterZBtn_c : public d2d::dSubPane { public: @@ -11,21 +14,50 @@ 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 ~dLytMeterZBtn_c() {} + + bool isCalling() const; + + void setOwnerPane(nw4r::lyt::Pane *pane) { + mpOwnerPane = pane; + } + private: + void setMessage(s32 id); + STATE_FUNC_DECLARE(dLytMeterZBtn_c, Wait); STATE_FUNC_DECLARE(dLytMeterZBtn_c, On); STATE_FUNC_DECLARE(dLytMeterZBtn_c, Active); STATE_FUNC_DECLARE(dLytMeterZBtn_c, Off); - UI_STATE_MGR_DECLARE(dLytMeterZBtn_c); - d2d::dLytSub mLyt; - /* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3]; - /* 0x??? */ u8 padding[0x121C8 - 0x12198]; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterZBtn_c); + + /* 0x008 */ UI_STATE_MGR_DECLARE(dLytMeterZBtn_c); + /* 0x04C */ 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/include/d/lyt/msg_window/d_lyt_msg_window.h b/include/d/lyt/msg_window/d_lyt_msg_window.h index ad6be3c2..7c8ad633 100644 --- a/include/d/lyt/msg_window/d_lyt_msg_window.h +++ b/include/d/lyt/msg_window/d_lyt_msg_window.h @@ -50,6 +50,14 @@ public: const char *fn_80117390(bool) const; + // This function appears to be related to a compiler quirk. + // 0x800D7B40 is in d_lyt_meter, but calling a static method + // on an instance via dLytMsgWindow_c::getInstance()->fn_800D7B40() + // causes the method to be emitted there. + static u16 fn_800D7B40() { + return sInstance->mEntryPointToTrigger; + } + private: bool setTextToDisplay(const wchar_t *text); void createSubMsgManager(u8 type); diff --git a/include/d/lyt/msg_window/d_lyt_simple_window.h b/include/d/lyt/msg_window/d_lyt_simple_window.h new file mode 100644 index 00000000..2356fd83 --- /dev/null +++ b/include/d/lyt/msg_window/d_lyt_simple_window.h @@ -0,0 +1,19 @@ +#ifndef D_LYT_SIMPLE_WINDOW_H +#define D_LYT_SIMPLE_WINDOW_H + +class dLytSimpleWindow_c { +public: + dLytSimpleWindow_c() {} + virtual ~dLytSimpleWindow_c() {} + + static dLytSimpleWindow_c *getInstance() { + return sInstance; + } + + bool fn_8012B000(); + +private: + static dLytSimpleWindow_c *sInstance; +}; + +#endif diff --git a/include/d/t/d_t_map_mark.h b/include/d/t/d_t_map_mark.h index 217bfcf5..36ae10c7 100644 --- a/include/d/t/d_t_map_mark.h +++ b/include/d/t/d_t_map_mark.h @@ -1,14 +1,27 @@ #ifndef D_T_MAP_MARK_H #define D_T_MAP_MARK_H -#include "d/a/d_a_base.h" +#include "d/t/d_tg.h" -class dTgMapMark_c : public dAcBase_c { +class dTgMapMark_c : public dTg_c { public: dTgMapMark_c() {} virtual ~dTgMapMark_c() {} -private: + /* 0x0FC */ u16 mTriggerStoryFlag; + /* 0x0FE */ u16 rotz_shift8_0xff; + /* 0x100 */ u8 shift4_0x8; + /* 0x101 */ u8 shift23_0x8; + /* 0x102 */ u8 shift0_0x3; + /* 0x103 */ u8 shift2_0x3; + /* 0x104 */ u8 shift4_0x3f; + /* 0x105 */ u8 rotz_shift0_0xff; + /* 0x108 */ s32 rotz_shift0_0xf; + /* 0x10C */ bool field_0x10C; + /* 0x10D */ bool field_0x10D; + /* 0x10E */ bool field_0x10E; + /* 0x10F */ u8 rotz_shift10_0x3; + /* 0x110 */ u8 rotz_shift12_0x3; }; #endif diff --git a/include/d/t/d_t_siren.h b/include/d/t/d_t_siren.h index 935e3217..9fe12a74 100644 --- a/include/d/t/d_t_siren.h +++ b/include/d/t/d_t_siren.h @@ -3,6 +3,7 @@ #include "common.h" #include "d/t/d_tg.h" +#include "toBeSorted/timekeeper.h" class dTgSiren_c : public dTg_c { public: @@ -16,10 +17,20 @@ public: return sInstance->outOfTime(); } + static s32 getTime() { + if (sInstance == nullptr) { + return -1; + } + return sInstance->mTimekeeper.getTime(); + } + private: bool outOfTime() const; static dTgSiren_c *sInstance; + + /* 0x0FC */ u8 _0x0FC[0x2C0 - 0x0FC]; + /* 0x2C0 */ Timekeeper mTimekeeper; }; #endif diff --git a/include/m/m2d.h b/include/m/m2d.h index 3f839d91..c996b43b 100644 --- a/include/m/m2d.h +++ b/include/m/m2d.h @@ -114,7 +114,15 @@ public: return mEndFrame; } +// There's at least 1 file where the obvious way of writing +// it seems to require accessing some members directly, without +// inlines. I want to discourage direct access though, so +// putting the ability behind an explicit define. We don't +// know either way whether inlines are used at all or +// whether stuff even is private. +#ifndef NEED_DIRECT_FRAMECTRL_ACCESS private: +#endif inline bool notLooping() const { return (mFlags & FLAG_NO_LOOP) != 0; } diff --git a/include/m/m_angle.h b/include/m/m_angle.h index 06648b08..84e722b9 100644 --- a/include/m/m_angle.h +++ b/include/m/m_angle.h @@ -140,6 +140,10 @@ public: z = fz; } + void setR(const s32 &f) { + x = y = z = f; + } + mAng x, y, z; static mAng3_c Zero; diff --git a/include/m/m_vec.h b/include/m/m_vec.h index 0ec12fd4..e538d058 100644 --- a/include/m/m_vec.h +++ b/include/m/m_vec.h @@ -262,6 +262,10 @@ public: mVec2_c(const mVec2_c &other) { set(other.x, other.y); } + + mVec2_c(f32 fx, f32 fy) { + set(fx, fy); + } }; #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/include/s/s_State.hpp b/include/s/s_State.hpp index 23dbc2f8..40e15303 100644 --- a/include/s/s_State.hpp +++ b/include/s/s_State.hpp @@ -2,8 +2,8 @@ #define S_STATE_H #include "s/s_FStateMgr.hpp" -#include "s/s_StateMethodUsr_FI.hpp" #include "s/s_FStateVirtualID.hpp" +#include "s/s_StateMethodUsr_FI.hpp" // Note: Ported from https://github.com/NSMBW-Community/NSMBW-Decomp/tree/master/include/dol/sLib // See include/s/README.txt for changes made @@ -34,6 +34,16 @@ #define STATE_MGR(class_name) sFStateMgr_c +#define STATE_MGR_DEFINE_UTIL_CHANGESTATE(class_name) \ + void changeState(const sStateIDIf_c &value) { \ + mStateMgr.changeState(value); \ + } + +#define STATE_MGR_DEFINE_UTIL_ISSTATE(class_name) \ + bool isState(const sFStateID_c &value) const { \ + return *mStateMgr.getStateID() == value; \ + } + // TODO this is probably not the whole solution. // The problems with this approach are: // * You can't define the same state name for multiple files in the same TU due to baseID_ symbol clash. diff --git a/include/toBeSorted/attention.h b/include/toBeSorted/attention.h index 00832210..69a9044b 100644 --- a/include/toBeSorted/attention.h +++ b/include/toBeSorted/attention.h @@ -213,12 +213,13 @@ public: void addReadTarget(dAcObjBase_c &actor, u32 flags, f32 field_0x14, f32 ignored, f32 field_0x20, f32 field_0x24); void addReadTarget2(dAcObjBase_c &actor, u32 flags, f32 field_0x14, f32 field_0x20, f32 field_0x24); + bool checkLink2() const; + private: bool isInNormalGameState() const; bool checkZButtonPressed() const; bool checkZButtonHeld() const; bool checkLink1() const; - bool checkLink2() const; bool switchTarget(s32 target); bool playTargetAnim(s32 target); diff --git a/include/toBeSorted/counters/goddess_chest_counter.h b/include/toBeSorted/counters/goddess_chest_counter.h index e1c62403..e34eda56 100644 --- a/include/toBeSorted/counters/goddess_chest_counter.h +++ b/include/toBeSorted/counters/goddess_chest_counter.h @@ -8,9 +8,9 @@ public: GoddessChestCounter() : Counter(0x43F) {} virtual ~GoddessChestCounter() {}; - virtual u16 getCommittedValue() override; - virtual u16 getMax() override; - virtual u16 getUncommittedValue() override; + virtual u16 getCommittedValue() const override; + virtual u16 getMax() const override; + virtual u16 getUncommittedValue() const override; virtual void setValue(u16 num) override; static GoddessChestCounter sInstance; diff --git a/include/toBeSorted/dowsing_target.h b/include/toBeSorted/dowsing_target.h index c9d40026..d988e86c 100644 --- a/include/toBeSorted/dowsing_target.h +++ b/include/toBeSorted/dowsing_target.h @@ -65,8 +65,8 @@ public: static void init(); static void execute(); - static u8 getTopDowsingIcon(); - static u8 getLeftDowsingIcon(); + static s32 getTopDowsingIcon(); + static s32 getLeftDowsingIcon(); }; #endif diff --git a/include/toBeSorted/effects_struct.h b/include/toBeSorted/effects_struct.h index 740718eb..71afbb31 100644 --- a/include/toBeSorted/effects_struct.h +++ b/include/toBeSorted/effects_struct.h @@ -24,12 +24,19 @@ public: void remove(bool); void fn_80027320(u8); + void fn_800271E0(mVec3_c *pos, mAng3_c *rot, mVec3_c *scale); void fn_80029920(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *); void fn_80029980(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *); void fn_800299F0(u16 effect, mMtx_c *mtx, void *, void *); void fn_80029A10(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *); + void fn_80029A70(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *); void setMtx(const mMtx_c &); + static void fn_800298C0(u16 effect, mVec3_c *pos, void*, void*, void*, void*); + + void fn_80026ED0(); + void fn_80026F10(); + bool checkField0x00() const { return field_0x00 != 0; } diff --git a/include/toBeSorted/event_manager.h b/include/toBeSorted/event_manager.h index 9c524aec..c248e8b8 100644 --- a/include/toBeSorted/event_manager.h +++ b/include/toBeSorted/event_manager.h @@ -17,6 +17,7 @@ public: static void changeOwnEvent(dAcBase_c *actor1, dAcBase_c *actor2, Event *event, UNKWORD); static bool alsoSetAsCurrentEvent(dAcBase_c *actor, Event *event, void *unknown); static dAcObjBase_c *fn_800A08F0(fBase_c::GROUP_TYPE_e); + static bool canSkipCurrentEvent(); static EventManager *sInstance; @@ -40,6 +41,8 @@ public: return strequals(getCurrentEventName(), name); } + static bool eventRelatedStateFlags_shift0x11_1(); + // Something like isActorInEvent maybe? static bool FUN_800a0570(dAcBase_c *actor); static bool FUN_800a0ba0(); diff --git a/include/toBeSorted/file_manager.h b/include/toBeSorted/file_manager.h index ca69b908..fee3b36a 100644 --- a/include/toBeSorted/file_manager.h +++ b/include/toBeSorted/file_manager.h @@ -149,17 +149,17 @@ public: /* 8000B6A0 */ u8 getShieldPouchSlot(); /* 8000B6F0 */ void setAirPotionTimer(u16 time); - /* 8000B720 */ u16 getAirPotionTimer(); + /* 8000B720 */ u16 getAirPotionTimer() const; /* 8000B770 */ void setAirPotionPlusTimer(u16 time); - /* 8000B7A0 */ u16 getAirPotionPlusTimer(); + /* 8000B7A0 */ u16 getAirPotionPlusTimer() const; /* 8000B7F0 */ void setStaminaPotionTimer(u16 time); - /* 8000B820 */ u16 getStaminaPotionTimer(); + /* 8000B820 */ u16 getStaminaPotionTimer() const; /* 8000B870 */ void setStaminaPotionPlusTimer(u16 time); - /* 8000B8A0 */ u16 getStaminaPotionPlusTimer(); + /* 8000B8A0 */ u16 getStaminaPotionPlusTimer() const; /* 8000B8F0 */ void setGuardianPotionTimer(u16 time); - /* 8000B920 */ u16 getGuardianPotionTimer(); + /* 8000B920 */ u16 getGuardianPotionTimer() const; /* 8000B970 */ void setGuardianPotionPlusTimer(u16 time); - /* 8000B9A0 */ u16 getGuardianPotionPlusTimer(); + /* 8000B9A0 */ u16 getGuardianPotionPlusTimer() const; /* 8000B9F0 */ void setDowsingSlotIdx(u8 idx); /* 8000BA20 */ u8 getDowsingSlotIdx(); @@ -285,6 +285,30 @@ public: return sInstance; } + bool hasGuardianPotionPlus() const { + return getGuardianPotionPlusTimer() != 0; + } + + bool hasGuardianPotionNormal() const { + return getGuardianPotionTimer() != 0; + } + + bool hasAirPotionPlus() const { + return getAirPotionPlusTimer() != 0; + } + + bool hasAirPotionNormal() const { + return getAirPotionTimer() != 0; + } + + bool hasStaminaPotionPlus() const { + return getStaminaPotionPlusTimer() != 0; + } + + bool hasStaminaPotionNormal() const { + return getStaminaPotionTimer() != 0; + } + private: static FileManager *sInstance; }; diff --git a/include/toBeSorted/minigame_mgr.h b/include/toBeSorted/minigame_mgr.h index e83c7364..a74ddbeb 100644 --- a/include/toBeSorted/minigame_mgr.h +++ b/include/toBeSorted/minigame_mgr.h @@ -19,6 +19,7 @@ public: HARP_PLAYING, }; static bool isInMinigameState(Minigame game); + static bool isInAnyMinigame(); static void create(); static void destroy(); diff --git a/include/toBeSorted/small_sound_mgr.h b/include/toBeSorted/small_sound_mgr.h index 9c56dab9..06978ad1 100644 --- a/include/toBeSorted/small_sound_mgr.h +++ b/include/toBeSorted/small_sound_mgr.h @@ -6472,6 +6472,7 @@ enum WZSound { class SmallSoundManager { public: void playSound(WZSound id); + void playSoundWithPitch(WZSound id, f32 pitch); void playButtonPressSoundWhenAdvancingTextBoxes(f32); static SmallSoundManager *GetInstance() { diff --git a/include/toBeSorted/timekeeper.h b/include/toBeSorted/timekeeper.h new file mode 100644 index 00000000..1bf6d842 --- /dev/null +++ b/include/toBeSorted/timekeeper.h @@ -0,0 +1,11 @@ +#ifndef TIMEKEEPER_H +#define TIMEKEEPER_H + +#include "common.h" + +class Timekeeper { +public: + s32 getTime() const; +}; + +#endif diff --git a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp index b0c93221..ae522bae 100644 --- a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp +++ b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp @@ -171,8 +171,8 @@ int dAcODungeonShip_c::doDelete() { return SUCCEEDED; } -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_682_; -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_683_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_682_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_683_; int dAcODungeonShip_c::actorExecute() { field_0x850++; diff --git a/src/REL/d/a/obj/d_a_obj_tower_gearD101.cpp b/src/REL/d/a/obj/d_a_obj_tower_gearD101.cpp index c5e741e2..cbf4a29c 100644 --- a/src/REL/d/a/obj/d_a_obj_tower_gearD101.cpp +++ b/src/REL/d/a/obj/d_a_obj_tower_gearD101.cpp @@ -126,7 +126,7 @@ void dAcOTowerGearD101_c::initTransform() { mMdl.setLocalMtx(field_0x3C4); } -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_585_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_585_; void dAcOTowerGearD101_c::playVisualEffect() { mEffects.fn_80029A10(PARTICLE_RESOURCE_ID_MAPPING_585_, &field_0x3F4, &rotation, nullptr, nullptr, nullptr); } diff --git a/src/REL/d/a/obj/d_a_obj_tower_hand_D101.cpp b/src/REL/d/a/obj/d_a_obj_tower_hand_D101.cpp index 5a1a4190..910dd1e4 100644 --- a/src/REL/d/a/obj/d_a_obj_tower_hand_D101.cpp +++ b/src/REL/d/a/obj/d_a_obj_tower_hand_D101.cpp @@ -593,7 +593,7 @@ void dAcOTowerHandD101_c::executeState_RemainOpen() { } void dAcOTowerHandD101_c::finalizeState_RemainOpen() {} -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_573; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_573; void dAcOTowerHandD101_c::initializeState_Close() { mMdl.getAnm().setPlayState(m3d::PLAY_MODE_1); mMdl.setRate(getCloseRate()); diff --git a/src/REL/d/a/obj/d_a_obj_tubo.cpp b/src/REL/d/a/obj/d_a_obj_tubo.cpp index ad83d657..14a0f3ff 100644 --- a/src/REL/d/a/obj/d_a_obj_tubo.cpp +++ b/src/REL/d/a/obj/d_a_obj_tubo.cpp @@ -449,7 +449,7 @@ void dAcOtubo_c::finalizeState_Rebirth() { extern "C" void fn_80027510(void *, bool); extern "C" void fn_80027560(void *, bool, int); extern "C" void *fn_800298B0(u16, mVec3_c *, mVec3_c *, u32, u32, u32, u32, u32); -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_109_, PARTICLE_RESOURCE_ID_MAPPING_209_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_109_, PARTICLE_RESOURCE_ID_MAPPING_209_; extern "C" void *ENVIRONMENT; extern "C" void fn_80022BE0(void *, const mVec3_c &); diff --git a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp index b5f99107..e3b37f65 100644 --- a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp +++ b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp @@ -259,7 +259,7 @@ bool dAcOTumbleWeed_c::checkInvalidGround() const { code == POLY_ATTR_SAND_DEEP_SLOW; } -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_743_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_743_; extern "C" void fn_800298B0(u16, mVec3_c *, mAng3_c *, u32, u32, u32, u32, u32); void dAcOTumbleWeed_c::doBreak() { diff --git a/src/d/a/obj/d_a_obj_tbox.cpp b/src/d/a/obj/d_a_obj_tbox.cpp index b85de5cd..81d3923e 100644 --- a/src/d/a/obj/d_a_obj_tbox.cpp +++ b/src/d/a/obj/d_a_obj_tbox.cpp @@ -1933,8 +1933,8 @@ void dAcTbox_c::executeState_LoadArchive() { void dAcTbox_c::finalizeState_LoadArchive() {} extern "C" void fn_800298B0(u16 effectIndex, mVec3_c *, mAng3_c *, mVec3_c *, void *, void *, void *, void *); -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_209_; -extern "C" bool isPouchItem(u16); +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_209_; +extern "C" const bool isPouchItem(u16); extern "C" u8 adventurePouchFindItemSlot(ITEM_ID item); extern "C" u16 findItemInItemCheck(ITEM_ID item); extern "C" dAcItem_c *giveItem3(u16 item, s32); diff --git a/src/d/a/obj/d_a_obj_water_spout.cpp b/src/d/a/obj/d_a_obj_water_spout.cpp index 78c223e0..a7e05ec3 100644 --- a/src/d/a/obj/d_a_obj_water_spout.cpp +++ b/src/d/a/obj/d_a_obj_water_spout.cpp @@ -60,7 +60,7 @@ int dAcOwaterSpout_c::draw() { } extern "C" void fn_800298B0(u16, mVec3_c *, mVec3_c *, mVec3_c *, u32, u32, u32, u32); -extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_213_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_213_; void dAcOwaterSpout_c::initializeState_Wait() { if (params == 1) { diff --git a/src/d/flag/sceneflag_manager.inc b/src/d/flag/sceneflag_manager.inc index 8eb180f4..ccec3d82 100644 --- a/src/d/flag/sceneflag_manager.inc +++ b/src/d/flag/sceneflag_manager.inc @@ -138,7 +138,7 @@ u16 SceneflagManager::checkFlag(u16 roomId, u16 flag) { return checkTempOrSceneflag(flag); } } -bool SceneflagManager::checkSceneflagGlobal(u16 sceneIdx, u16 flag) { +u16 SceneflagManager::checkSceneflagGlobal(u16 sceneIdx, u16 flag) { u16 *pData = FileManager::GetInstance()->getSceneFlagsConst(); return mFlagHelper.checkFlag(getSceneflagSlotGlobal(sceneIdx, flag), flag % 16, pData, 0x800); } diff --git a/src/d/lyt/d_lyt_area_caption.cpp b/src/d/lyt/d_lyt_area_caption.cpp index 97145059..d15b9e1d 100644 --- a/src/d/lyt/d_lyt_area_caption.cpp +++ b/src/d/lyt/d_lyt_area_caption.cpp @@ -1,8 +1,13 @@ #include "d/lyt/d_lyt_area_caption.h" +#include "d/d_message.h" +#include "d/d_pad.h" +#include "d/d_sc_game.h" +#include "d/d_stage_mgr.h" #include "d/lyt/d_textbox.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "toBeSorted/arc_managers/layout_arc_manager.h" - +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytAreaCaptionParts_c, Wait); STATE_DEFINE(dLytAreaCaptionParts_c, Start); @@ -22,6 +27,13 @@ static const d2d::LytBrlanMapping brlanMap2[] = { { "areaCaption_01_out.brlan", "G_inOut_00"}, }; +#define AREA_CAPTION_ANIM_START 0 +#define AREA_CAPTION_ANIM_TYPE 1 +#define AREA_CAPTION_ANIM_TEXTLINE 2 +#define AREA_CAPTION_ANIM_OUT 3 + +#define AREA_CAPTION_NUM_ANIMS 4 + static const char *captionBoxes[] = { "T_caption_00", "T_captionS_00", @@ -38,7 +50,7 @@ bool dLytAreaCaptionParts_c::init(int first) { mFirst = first; if (mFirst != 0) { mLyt.build("areaCaption_00.brlyt", nullptr); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < AREA_CAPTION_NUM_ANIMS; i++) { if (brlanMap1[i].mFile[0] == '\0') { mAnmCtrlInUse[i] = false; } else { @@ -51,7 +63,7 @@ bool dLytAreaCaptionParts_c::init(int first) { } else { mLyt.build("areaCaption_01.brlyt", nullptr); mLyt.setPriority(0x8A); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < AREA_CAPTION_NUM_ANIMS; i++) { if (brlanMap2[i].mFile[0] == '\0') { mAnmCtrlInUse[i] = false; } else { @@ -67,15 +79,15 @@ bool dLytAreaCaptionParts_c::init(int first) { mTextBoxes[i] = mLyt.getTextBox(captionBoxes[i]); } - field_0x54C = 0; - field_0x54D = 0; + field_0x54C = false; + field_0x54D = false; mStateMgr.changeState(StateID_Wait); mLyt.calc(); return true; } bool dLytAreaCaptionParts_c::remove() { - for (int i = 0; i < 4; i++) { + for (int i = 0; i < AREA_CAPTION_NUM_ANIMS; i++) { if (mAnmCtrlInUse[i]) { mAnmGroups[i].unbind(); mAnmGroups[i].remove(); @@ -88,7 +100,7 @@ bool dLytAreaCaptionParts_c::remove() { bool dLytAreaCaptionParts_c::update() { mStateMgr.executeState(); if (*mStateMgr.getStateID() != StateID_Wait) { - for (int i = 0; i < 4; i++) { + for (int i = 0; i < AREA_CAPTION_NUM_ANIMS; i++) { if (mAnmCtrlInUse[i] && mAnmGroups[i].isEnabled()) { mAnmGroups[i].play(); } @@ -105,33 +117,168 @@ bool dLytAreaCaptionParts_c::draw() { void dLytAreaCaptionParts_c::setTextIfWaiting(const char *text) { if (*mStateMgr.getStateID() == StateID_Wait) { - mTextBoxes[0]->fn_800E0A60(text, nullptr); - mTextBoxes[1]->fn_800E0A60(text, nullptr); - mTextBoxes[2]->fn_800E0A60(text, nullptr); - field_0x54C = 1; + mTextBoxes[0]->setMessageWithGlobalTextProcessor2(text, nullptr); + mTextBoxes[1]->setMessageWithGlobalTextProcessor2(text, nullptr); + mTextBoxes[2]->setMessageWithGlobalTextProcessor2(text, nullptr); + field_0x54C = true; } } void dLytAreaCaptionParts_c::check() { if (*mStateMgr.getStateID() == StateID_Start) { - field_0x54D = 1; + field_0x54D = true; } } void dLytAreaCaptionParts_c::initializeState_Wait() {} void dLytAreaCaptionParts_c::executeState_Wait() { - mTextBoxes[0]->fn_800E0A60("N_inOut_00", nullptr); + if (field_0x54C) { + field_0x54C = false; + s32 typeFrame = 0; + if (dStageMgr_c::GetInstance()->isSTIFbyte4_2or3or4()) { + typeFrame = 1; + } else if (dStageMgr_c::GetInstance()->isSTIFbyte4_5or6()) { + typeFrame = 2; + } else if (dStageMgr_c::GetInstance()->isSTIFbyte4_7or8or9or10or11()) { + typeFrame = 3; + } else if (dStageMgr_c::GetInstance()->isSTIFbyte4_1()) { + typeFrame = 4; + } else if (dStageMgr_c::GetInstance()->isSTIFbyte4_0()) { + typeFrame = 5; + } + + if (!mFirst && dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL) { + typeFrame = 6; + } + + s32 numLines = mTextBoxes[0]->calcTextLines(mTextBoxes[0]->GetString(), dMessage_c::getGlobalTagProcessor()); + f32 textFrame = 0.0f; + if (numLines > 1) { + textFrame = 1.0f; + } + + if (!mFirst) { + mLyt.findPane("N_inOut_00")->SetVisible(true); + } + + mAnmGroups[AREA_CAPTION_ANIM_TYPE].setFrame(typeFrame); + mAnmGroups[AREA_CAPTION_ANIM_TYPE].setAnimEnable(true); + mAnmGroups[AREA_CAPTION_ANIM_TEXTLINE].setAnimEnable(true); + mAnmGroups[AREA_CAPTION_ANIM_TEXTLINE].setFrame(textFrame); + mLyt.calc(); + mAnmGroups[AREA_CAPTION_ANIM_TYPE].setAnimEnable(false); + mAnmGroups[AREA_CAPTION_ANIM_TEXTLINE].setAnimEnable(false); + mAnmGroups[AREA_CAPTION_ANIM_START].setAnimEnable(true); + mAnmGroups[AREA_CAPTION_ANIM_START].setFrame(0.0f); + mStateMgr.changeState(StateID_Start); + } } void dLytAreaCaptionParts_c::finalizeState_Wait() {} -void dLytAreaCaptionParts_c::initializeState_Start() {} -void dLytAreaCaptionParts_c::executeState_Start() {} +void dLytAreaCaptionParts_c::initializeState_Start() { + if (mFirst == 0) { + dLytAreaCaption_c::setVisible(true); + dLytMeter_c::GetInstance()->setAreaCaptionOverrideVisibility(false); + dLytMeter_c::GetMain()->setGanbariGaugeHiddenByAreaCaption(true); + } +} +void dLytAreaCaptionParts_c::executeState_Start() { + if (mAnmGroups[AREA_CAPTION_ANIM_START].isEndReached()) { + mAnmGroups[AREA_CAPTION_ANIM_START].setAnimEnable(false); + if (!mFirst) { + dLytAreaCaption_c::setVisible(false); + dLytMeter_c::GetInstance()->setAreaCaptionOverrideVisibility(true); + } + mStateMgr.changeState(StateID_Wait); + } else { + if (shouldImmediatelyDismiss()) { + field_0x54D = false; + if (mFirst) { + mAnmGroups[AREA_CAPTION_ANIM_START].setFrame(0.0f); + mLyt.calc(); + mAnmGroups[AREA_CAPTION_ANIM_START].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } else { + mAnmGroups[AREA_CAPTION_ANIM_OUT].setAnimEnable(true); + mAnmGroups[AREA_CAPTION_ANIM_OUT].setFrame(0.0f); + mStateMgr.changeState(StateID_Out); + dLytAreaCaption_c::setVisible(false); + dLytMeter_c::GetInstance()->setAreaCaptionOverrideVisibility(true); + } + } + } +} void dLytAreaCaptionParts_c::finalizeState_Start() {} void dLytAreaCaptionParts_c::initializeState_Out() {} -void dLytAreaCaptionParts_c::executeState_Out() {} +void dLytAreaCaptionParts_c::executeState_Out() { + if (mAnmGroups[AREA_CAPTION_ANIM_OUT].isEndReached()) { + mAnmGroups[AREA_CAPTION_ANIM_OUT].setAnimEnable(false); + if (!mFirst) { + dLytAreaCaption_c::setVisible(false); + dLytMeter_c::GetInstance()->setAreaCaptionOverrideVisibility(true); + } + mStateMgr.changeState(StateID_Wait); + } +} void dLytAreaCaptionParts_c::finalizeState_Out() {} +bool dLytAreaCaptionParts_c::shouldImmediatelyDismiss() const { + if (mFirst) { + return field_0x54D; + } + + if (field_0x54D) { + return true; + } + + if (dPad::checkButtonBPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C) && dPad::checkButtonCPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS) && dPad::checkButtonPlusPressed()) { + return true; + } + + if (dPad::checkButtonMinusPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_1) && dPad::checkButton1Pressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_2) && dPad::checkButton2Pressed()) { + return true; + } + + if (dPad::checkButtonDpadUpPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_CROSS_DOWN) && dPad::checkButtonDpadDownPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_CROSS_LEFT) && dPad::checkButtonDpadLeftPressed()) { + return true; + } + + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_CROSS_RIGHT) && dPad::checkButtonDpadRightPressed()) { + return true; + } + + if (EventManager::eventRelatedStateFlags_shift0x11_1()) { + return true; + } + + return false; +} + bool dLytAreaCaption_c::create() { new dLytAreaCaption_c(); if (dLytAreaCaption_c::sInstance == nullptr) { @@ -182,15 +329,15 @@ void dLytAreaCaption_c::check() { } } -void dLytAreaCaption_c::set0xAAC(u8 arg) { +void dLytAreaCaption_c::setVisible(bool arg) { if (sInstance != nullptr) { - sInstance->field_0xAAC = arg; + sInstance->mVisible = arg; } } -u8 dLytAreaCaption_c::get0xAAC() { +bool dLytAreaCaption_c::getVisible() { if (sInstance != nullptr) { - return sInstance->field_0xAAC; + return sInstance->mVisible; } return 0; } @@ -202,7 +349,7 @@ bool dLytAreaCaption_c::init() { first = 0; } mPartToDraw = 0; - field_0xAAC = 0; + mVisible = false; return true; } diff --git a/src/d/lyt/d_lyt_auto_caption.cpp b/src/d/lyt/d_lyt_auto_caption.cpp index 12b89a55..ffe5304c 100644 --- a/src/d/lyt/d_lyt_auto_caption.cpp +++ b/src/d/lyt/d_lyt_auto_caption.cpp @@ -3,8 +3,11 @@ #include "common.h" #include "d/d_tag_processor.h" #include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_control_game.h" #include "d/lyt/d_textbox.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "s/s_State.hpp" +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytAutoCaption_c, Invisible); STATE_DEFINE(dLytAutoCaption_c, In); @@ -171,6 +174,10 @@ bool dLytAutoCaption_c::setText(const wchar_t *text) { } bool dLytAutoCaption_c::checkSomethingMeter() { - // TODO - too many dependencies on dLytMeter + if (EventManager::isInEvent() || !dLytControlGame_c::getInstance()->isStateNormal() || + dLytMeter_c::getItemSelect0x75A2() || dLytMeter_c::getMinusBtnFn800F7600() || + dLytMeter_c::getDowsingFn800FE4B0()) { + return true; + } return false; } diff --git a/src/d/lyt/d_lyt_auto_explain.cpp b/src/d/lyt/d_lyt_auto_explain.cpp index 6b1e3e4b..4c3e87fd 100644 --- a/src/d/lyt/d_lyt_auto_explain.cpp +++ b/src/d/lyt/d_lyt_auto_explain.cpp @@ -3,8 +3,11 @@ #include "common.h" #include "d/d_tag_processor.h" #include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_control_game.h" #include "d/lyt/d_textbox.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "s/s_State.hpp" +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytAutoExplain_c, Invisible); STATE_DEFINE(dLytAutoExplain_c, In); @@ -164,6 +167,11 @@ bool dLytAutoExplain_c::setText(const wchar_t *text) { } bool dLytAutoExplain_c::checkSomethingMeter() { - // TODO - too many dependencies on dLytMeter + if (EventManager::isInEvent() || !dLytControlGame_c::getInstance()->isStateNormal() || + dLytMeter_c::getItemSelect0x75A2() || dLytMeter_c::getMinusBtnFn800F7600() || + dLytMeter_c::getDowsingFn800FE4B0()) { + return true; + } + return false; } diff --git a/src/d/lyt/d_lyt_do_button_related.cpp b/src/d/lyt/d_lyt_do_button_related.cpp new file mode 100644 index 00000000..457407ce --- /dev/null +++ b/src/d/lyt/d_lyt_do_button_related.cpp @@ -0,0 +1,19 @@ +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_unknowns.h" + +LytDoButtonRelated::LytDoButtonRelated() { + sInstance = this; +} + +bool LytDoButtonRelated::build(d2d::ResAccIf_c *resAcc) { + for (int i = 0; i < 12; i++) { + field_0x04[i] = DO_NONE; + field_0x34[i] = 0; + } + + return true; +} + +bool LytDoButtonRelated::remove() { + return true; +} diff --git a/src/d/lyt/d_lyt_wipe.cpp b/src/d/lyt/d_lyt_wipe.cpp new file mode 100644 index 00000000..5a564dce --- /dev/null +++ b/src/d/lyt/d_lyt_wipe.cpp @@ -0,0 +1,263 @@ +#include "d/lyt/d_lyt_wipe.h" + +#include "common.h" +#include "d/d_stage.h" +#include "d/lyt/d2d.h" +#include "toBeSorted/arc_managers/layout_arc_manager.h" + +STATE_DEFINE(dLytWipeMain_c, ModeNone); +STATE_DEFINE(dLytWipeMain_c, ModeIn); +STATE_DEFINE(dLytWipeMain_c, ModeWait); +STATE_DEFINE(dLytWipeMain_c, ModeOut); + +STATE_DEFINE(dLytWipe_c, None); +STATE_DEFINE(dLytWipe_c, In); +STATE_DEFINE(dLytWipe_c, Wait); +STATE_DEFINE(dLytWipe_c, Out); + +dLytWipe_c *dLytWipe_c::sInstance; + +#define WIPE_ANIM_INOUT 0 +#define WIPE_NUM_ANIMS 1 + +void dLytWipeMain_c::initializeState_ModeNone() {} +void dLytWipeMain_c::executeState_ModeNone() { + mStateEndReached = true; +} +void dLytWipeMain_c::finalizeState_ModeNone() {} + +void dLytWipeMain_c::initializeState_ModeIn() {} +void dLytWipeMain_c::executeState_ModeIn() { + if (mAnm[WIPE_ANIM_INOUT].isStop2()) { + mStateEndReached = true; + } +} +void dLytWipeMain_c::finalizeState_ModeIn() {} + +void dLytWipeMain_c::initializeState_ModeWait() {} +void dLytWipeMain_c::executeState_ModeWait() { + mStateEndReached = true; +} +void dLytWipeMain_c::finalizeState_ModeWait() {} + +void dLytWipeMain_c::initializeState_ModeOut() {} +void dLytWipeMain_c::executeState_ModeOut() { + if (mAnm[WIPE_ANIM_INOUT].isStop2()) { + mStateEndReached = true; + } +} +void dLytWipeMain_c::finalizeState_ModeOut() {} + +dLytWipeMain_c::dLytWipeMain_c() : mStateMgr(*this, sStateID::null) {} + +static const d2d::LytBrlanMapping brlanMap[] = { + {"wipe_00_inOut.brlan", "G_inOut_00"}, +}; + +bool dLytWipeMain_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("wipe_00.brlyt", nullptr); + mLyt.setPriority(0); + + for (int i = 0; i < WIPE_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[WIPE_ANIM_INOUT].setAnimEnable(true); + mAnm[WIPE_ANIM_INOUT].setFrame(0.0f); + mLyt.calc(); + mAnm[WIPE_ANIM_INOUT].setAnimEnable(false); + mIsIn = false; + return true; +} + +bool dLytWipeMain_c::remove() { + mLyt.unbindAnims(); + for (int i = 0; i < WIPE_NUM_ANIMS; i++) { + mAnm[i].remove(); + } + return true; +} + +void dLytWipeMain_c::gotoIn() { + if (!mIsIn) { + mAnm[WIPE_ANIM_INOUT].setForwardOnce(); + mAnm[WIPE_ANIM_INOUT].setAnimEnable(true); + if (mStateEndReached) { + mAnm[WIPE_ANIM_INOUT].setToStart(); + } else { + mStateMgr.finalizeState(); // ??????? + } + mStateMgr.changeState(StateID_ModeIn); + mIsIn = true; + mStateEndReached = false; + } +} + +void dLytWipeMain_c::gotoWait() { + mAnm[WIPE_ANIM_INOUT].setAnimEnable(false); + mStateMgr.changeState(StateID_ModeWait); + mStateEndReached = false; +} + +void dLytWipeMain_c::gotoOut() { + if (mIsIn) { + mAnm[WIPE_ANIM_INOUT].setBackwardsOnce(); + mAnm[WIPE_ANIM_INOUT].setAnimEnable(true); + if (mStateEndReached) { + // Nothing to do - Anim already at end + } else { + mStateMgr.finalizeState(); // ??????? + } + mStateMgr.changeState(StateID_ModeOut); + mIsIn = false; + mStateEndReached = false; + } +} + +void dLytWipeMain_c::gotoNone() { + mStateMgr.changeState(StateID_ModeNone); + mStateEndReached = false; +} + +bool dLytWipeMain_c::execute() { + mStateMgr.executeState(); + for (int i = 0; i < WIPE_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + return true; +} + +bool dLytWipeMain_c::draw() { + mLyt.addToDrawList(); + return true; +} + +void dLytWipe_c::initializeState_None() { + mWantsIn = false; +} +void dLytWipe_c::executeState_None() { + mWantsOut = false; + if (mWantsIn) { + mTransitionStage = 0; + mIsSettled = false; + // State IN fades OUT, because I guess the fader fades the scene out, + // which means Wipe is In + if (dStage_c::GetInstance()->fadeOut(2, 16)) { + mStateMgr.changeState(StateID_In); + mWantsIn = false; + mVisible = true; + } + } +} +void dLytWipe_c::finalizeState_None() {} + +void dLytWipe_c::initializeState_In() {} +void dLytWipe_c::executeState_In() { + if (mTransitionStage == 0) { + if (dStage_c::GetInstance()->isFadedOut()) { + mFadeDelay = 15; + mTransitionStage = 1; + } + } else if (mTransitionStage == 1) { + mFadeDelay--; + if (mFadeDelay == 0) { + dStage_c::GetInstance()->forceFadeIn(); + mMain.gotoIn(); + mTransitionStage = 2; + } + } else { + mTransitionStage = 3; + if (mMain.isStateEndReached()) { + mMain.gotoWait(); + mStateMgr.changeState(StateID_Wait); + mIsSettled = true; + } + } +} +void dLytWipe_c::finalizeState_In() {} + +void dLytWipe_c::initializeState_Wait() {} +void dLytWipe_c::executeState_Wait() { + mWantsIn = false; + if (mWantsOut) { + mTransitionStage = 0; + mMain.gotoOut(); + mStateMgr.changeState(StateID_Out); + mWantsOut = false; + mIsSettled = false; + } +} +void dLytWipe_c::finalizeState_Wait() {} + +void dLytWipe_c::initializeState_Out() {} +void dLytWipe_c::executeState_Out() { + if (mTransitionStage == 0) { + if (mMain.isStateEndReached()) { + dStage_c::GetInstance()->forceFadeOut(); + mFadeDelay = 15; + mTransitionStage = 1; + } + } else if (mTransitionStage == 1) { + dStage_c::GetInstance()->forceFadeOut(); + mFadeDelay--; + if (mFadeDelay == 0) { + dStage_c::GetInstance()->fadeIn(2, 16); + mMain.gotoNone(); + mTransitionStage = 2; + } + } else { + mTransitionStage = 3; + if (dStage_c::GetInstance()->isFadedIn()) { + mStateMgr.changeState(StateID_None); + mIsSettled = true; + mVisible = false; + } + } +} +void dLytWipe_c::finalizeState_Out() {} + +bool dLytWipe_c::build() { + sInstance = this; + mTransitionStage = 0; + mFadeDelay = 0; + + mWantsIn = false; + mWantsOut = false; + mIsSettled = true; + mVisible = false; + + void *data = LayoutArcManager::GetInstance()->getLoadedData("DoButton"); + mResAcc.attach(data, ""); + mMain.build(&mResAcc); + + mStateMgr.changeState(StateID_None); + return true; +} + +bool dLytWipe_c::remove() { + sInstance = nullptr; + mMain.remove(); + mResAcc.detach(); + return true; +} + +bool dLytWipe_c::execute() { + mMain.execute(); + mStateMgr.executeState(); + return true; +} + +bool dLytWipe_c::draw() { + if (mVisible && + ((mTransitionStage && (*mStateMgr.getStateID() == StateID_In || *mStateMgr.getStateID() == StateID_Wait)) || + (*mStateMgr.getStateID() == StateID_Out && mTransitionStage < 2))) { + mMain.draw(); + } + return true; +} diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 1dd58d3a..39c92069 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -1,14 +1,45 @@ // clang-format off +#include "d/lyt/d2d.h" +#include "d/d_cursor_hit_check.h" +#include "c/c_lib.h" #include "common.h" +#include "d/a/d_a_bird.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_player.h" #include "d/d_message.h" #include "d/d_sc_game.h" #include "d/d_sc_title.h" +#include "d/d_stage.h" #include "d/d_stage_mgr.h" +#include "d/flag/storyflag_manager.h" +#include "d/flag/dungeonflag_manager.h" +#include "d/flag/sceneflag_manager.h" #include "d/lyt/d_lyt_area_caption.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_do_button.h" +#include "d/lyt/d_lyt_map.h" #include "d/lyt/d_lyt_meter_configuration.h" +#include "d/lyt/d_lyt_save_mgr.h" +#include "d/lyt/d_lyt_unknowns.h" #include "d/lyt/d_window.h" #include "d/lyt/meter/d_lyt_meter.h" +#include "d/lyt/meter/d_lyt_meter_key.h" +#include "d/lyt/meter/d_lyt_meter_drink.h" +#include "d/lyt/meter/d_lyt_meter_timer.h" +#include "d/lyt/d_lyt_bird_gauge.h" +#include "d/lyt/d_lyt_boss_gauge.h" +#include "d/lyt/d_lyt_sky_gauge.h" +#include "d/lyt/msg_window/d_lyt_msg_window.h" +#include "d/lyt/msg_window/d_lyt_simple_window.h" +#include "f/f_manager.h" +#include "f/f_profile_name.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_group.h" +#include "sized_string.h" #include "toBeSorted/arc_managers/layout_arc_manager.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/minigame_mgr.h" +#include "toBeSorted/small_sound_mgr.h" // clang-format on static dLytMeterConfiguration_c sConf; @@ -30,7 +61,7 @@ STATE_DEFINE(dLytMeterParts_c, Out); void dLytMeter1Button_c::initializeState_Wait() {} void dLytMeter1Button_c::executeState_Wait() { - if (dLytMeterContainer_c::GetInstance()->isButtonFlag(0x80)) { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_1)) { return; } mStateMgr.changeState(StateID_ToUnuse); @@ -38,53 +69,53 @@ void dLytMeter1Button_c::executeState_Wait() { void dLytMeter1Button_c::finalizeState_Wait() {} void dLytMeter1Button_c::initializeState_ToUse() { - mAnmGroups[0].setBackwardsOnce(); - mAnmGroups[0].setToStart(); - mAnmGroups[0].setAnimEnable(true); + mAnm[0].setBackwardsOnce(); + mAnm[0].setToStart(); + mAnm[0].setAnimEnable(true); } void dLytMeter1Button_c::executeState_ToUse() { - if (mAnmGroups[0].isStop2()) { + if (mAnm[0].isStop2()) { mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[0].isEnabled()) { - mAnmGroups[0].play(); + if (mAnm[0].isEnabled()) { + mAnm[0].play(); } } void dLytMeter1Button_c::finalizeState_ToUse() { - mAnmGroups[0].setAnimEnable(false); + mAnm[0].setAnimEnable(false); } void dLytMeter1Button_c::initializeState_ToUnuse() { - mAnmGroups[0].setForwardOnce(); - mAnmGroups[0].setToStart(); - mAnmGroups[0].setAnimEnable(true); + mAnm[0].setForwardOnce(); + mAnm[0].setToStart(); + mAnm[0].setAnimEnable(true); } void dLytMeter1Button_c::executeState_ToUnuse() { - if (mAnmGroups[0].isStop2()) { + if (mAnm[0].isStop2()) { mStateMgr.changeState(StateID_Unuse); } - if (mAnmGroups[0].isEnabled()) { - mAnmGroups[0].play(); + if (mAnm[0].isEnabled()) { + mAnm[0].play(); } } void dLytMeter1Button_c::finalizeState_ToUnuse() { - mAnmGroups[0].setAnimEnable(false); + mAnm[0].setAnimEnable(false); } void dLytMeter1Button_c::initializeState_Unuse() { - field_0x1A4 = 15; + mUnuseDelay = 15; } void dLytMeter1Button_c::executeState_Unuse() { - if (dLytMeterContainer_c::GetInstance()->isButtonFlag(0x80)) { - if (!(field_0x1A4 > 0)) { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_1)) { + if (!(mUnuseDelay > 0)) { mStateMgr.changeState(StateID_ToUse); return; } - field_0x1A4 -= 1; + mUnuseDelay -= 1; } else { - field_0x1A4 = 15; + mUnuseDelay = 15; } } void dLytMeter1Button_c::finalizeState_Unuse() {} @@ -95,55 +126,119 @@ static const d2d::LytBrlanMapping btn1BrlanMap[] = { { "remoConBtn_04_loop.brlan", "G_loop_00"}, }; -static char *sWindowName1 = "W_bgP_00"; +#define BUTTON_1_ANIM_INPUT 0 +#define BUTTON_1_ANIM_CALL 1 +#define BUTTON_1_ANIM_LOOP 2 + +#define BUTTON_1_NUM_ANIMS 3 + +static char *sWindowName1[] = {"W_bgP_00"}; bool dLytMeter1Button_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("remoConBtn_04.brlyt", nullptr); - for (int i = 0; i < 3; i++) { - mAnmGroups[i].init(btn1BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn1BrlanMap[i].mName); - mAnmGroups[i].bind(false); - mAnmGroups[i].setAnimEnable(false); + for (int i = 0; i < BUTTON_1_NUM_ANIMS; i++) { + mAnm[i].init(btn1BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn1BrlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); } - // TODO + mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtnS_00"), 0); mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtn_00"), 0); - mpWindow = mLyt.getWindow(sWindowName1); - mpTextbox = mLyt.getSizeBoxInWindow(sWindowName1); - mpWindow->UpdateSize(mpTextbox, 32.0f); - field_0x1A4 = 15; - field_0x1AC = 0; - field_0x1AD = 0; - field_0x1A8 = 0; - mAnmGroups[1].setToEnd(); - mAnmGroups[1].setAnimEnable(true); - mAnmGroups[2].setAnimEnable(true); + for (int i = 0; i < 1; i++) { + mpWindow[i] = mLyt.getWindow(sWindowName1[i]); + mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindowName1[i]); + mpWindow[i]->UpdateSize(mpSizeBox[i], 32.0f); + } + mUnuseDelay = 15; + mShouldCall = false; + mHasInitedCall = false; + mCallCount = false; + mAnm[BUTTON_1_ANIM_CALL].setToEnd(); + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(true); + mAnm[BUTTON_1_ANIM_LOOP].setAnimEnable(true); mLyt.calc(); - mAnmGroups[1].setAnimEnable(false); + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(false); mStateMgr.changeState(StateID_Wait); return true; } bool dLytMeter1Button_c::remove() { - for (int i = 0; i < 3; i++) { - mAnmGroups[i].unbind(); - mAnmGroups[i].remove(); + for (int i = 0; i < BUTTON_1_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); } return true; } bool dLytMeter1Button_c::execute() { - if (*mStateMgr.getStateID() == StateID_ToUnuse) { - // TODO - } else { - mStateMgr.executeState(); + dLytMeter_c *meter = dLytMeter_c::GetInstance(); + if (mpOwnerPane == nullptr) { + return true; } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_ToUnuse) { + mAnm[BUTTON_1_ANIM_INPUT].setToEnd2(); + } + return true; + } + + mStateMgr.executeState(); + + if (dLytControlGame_c::getInstance()->isStateNormal()) { + if (StoryflagManager::sInstance->getCounterOrFlag(571)) { + mShouldCall = true; + } + } else { + mShouldCall = false; + } + + if (mShouldCall && meter->checkAllFlags(METER_BTN_1)) { + if (!mHasInitedCall) { + mAnm[BUTTON_1_ANIM_CALL].setToEnd(); + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(true); + mHasInitedCall = true; + } + + if (mAnm[BUTTON_1_ANIM_CALL].isEnabled()) { + mAnm[BUTTON_1_ANIM_CALL].play(); + if (meter->checkAllFlags(METER_BTN_1) && mCallCount < 3 && mAnm[BUTTON_1_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_1_BUTTON_BLINK); + mCallCount++; + } + } + } else { + if (mHasInitedCall == true) { + mAnm[BUTTON_1_ANIM_CALL].setToEnd(); + } else if (mAnm[BUTTON_1_ANIM_CALL].isEnabled()) { + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(false); + } + } + + if (!mShouldCall) { + mHasInitedCall = mShouldCall; + } + + mShouldCall = false; + if (mAnm[BUTTON_1_ANIM_LOOP].isEnabled()) { + mAnm[BUTTON_1_ANIM_LOOP].play(); + } + + return true; +} + +bool dLytMeter1Button_c::shouldCall() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && StoryflagManager::sInstance->getCounterOrFlag(571)) { + return true; + } + return false; } void dLytMeter2Button_c::initializeState_Wait() {} void dLytMeter2Button_c::executeState_Wait() { - if (dLytMeterContainer_c::GetInstance()->isButtonFlag(0x100)) { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_2)) { return; } mStateMgr.changeState(StateID_ToUnuse); @@ -151,53 +246,53 @@ void dLytMeter2Button_c::executeState_Wait() { void dLytMeter2Button_c::finalizeState_Wait() {} void dLytMeter2Button_c::initializeState_ToUse() { - mAnmGroups[0].setBackwardsOnce(); - mAnmGroups[0].setToStart(); - mAnmGroups[0].setAnimEnable(true); + mAnm[0].setBackwardsOnce(); + mAnm[0].setToStart(); + mAnm[0].setAnimEnable(true); } void dLytMeter2Button_c::executeState_ToUse() { - if (mAnmGroups[0].isStop2()) { + if (mAnm[0].isStop2()) { mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[0].isEnabled()) { - mAnmGroups[0].play(); + if (mAnm[0].isEnabled()) { + mAnm[0].play(); } } void dLytMeter2Button_c::finalizeState_ToUse() { - mAnmGroups[0].setAnimEnable(false); + mAnm[0].setAnimEnable(false); } void dLytMeter2Button_c::initializeState_ToUnuse() { - mAnmGroups[0].setForwardOnce(); - mAnmGroups[0].setToStart(); - mAnmGroups[0].setAnimEnable(true); + mAnm[0].setForwardOnce(); + mAnm[0].setToStart(); + mAnm[0].setAnimEnable(true); } void dLytMeter2Button_c::executeState_ToUnuse() { - if (mAnmGroups[0].isStop2()) { + if (mAnm[0].isStop2()) { mStateMgr.changeState(StateID_Unuse); } - if (mAnmGroups[0].isEnabled()) { - mAnmGroups[0].play(); + if (mAnm[0].isEnabled()) { + mAnm[0].play(); } } void dLytMeter2Button_c::finalizeState_ToUnuse() { - mAnmGroups[0].setAnimEnable(false); + mAnm[0].setAnimEnable(false); } void dLytMeter2Button_c::initializeState_Unuse() { - field_0x1A4 = 15; + mUnuseDelay = 15; } void dLytMeter2Button_c::executeState_Unuse() { - if (dLytMeterContainer_c::GetInstance()->isButtonFlag(0x100)) { - if (!(field_0x1A4 > 0)) { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_2)) { + if (!(mUnuseDelay > 0)) { mStateMgr.changeState(StateID_ToUse); return; } - field_0x1A4 -= 1; + mUnuseDelay -= 1; } else { - field_0x1A4 = 15; + mUnuseDelay = 15; } } void dLytMeter2Button_c::finalizeState_Unuse() {} @@ -208,85 +303,298 @@ static const d2d::LytBrlanMapping btn2BrlanMap[] = { { "remoConBtn_05_loop.brlan", "G_loop_00"}, }; -static char *sWindowName2 = "W_bgP_00"; +#define BUTTON_2_ANIM_INPUT 0 +#define BUTTON_2_ANIM_CALL 1 +#define BUTTON_2_ANIM_LOOP 2 + +#define BUTTON_2_NUM_ANIMS 3 + +static char *sWindowName2[] = {"W_bgP_00"}; bool dLytMeter2Button_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("remoConBtn_05.brlyt", nullptr); - for (int i = 0; i < 3; i++) { - mAnmGroups[i].init(btn2BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn2BrlanMap[i].mName); - mAnmGroups[i].bind(false); - mAnmGroups[i].setAnimEnable(false); + for (int i = 0; i < BUTTON_2_NUM_ANIMS; i++) { + mAnm[i].init(btn2BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn2BrlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); } - mpWindow = mLyt.getWindow(sWindowName2); - mpTextbox = mLyt.getSizeBoxInWindow(sWindowName2); - mpWindow->UpdateSize(mpTextbox, 32.0f); - field_0x1A4 = 15; - field_0x1AC = 0; - field_0x1AD = 0; - field_0x1A8 = 0; - mAnmGroups[1].setToEnd(); - mAnmGroups[1].setAnimEnable(true); - mAnmGroups[2].setAnimEnable(true); + for (int i = 0; i < 1; i++) { + mpWindow[i] = mLyt.getWindow(sWindowName2[i]); + mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindowName2[i]); + mpWindow[i]->UpdateSize(mpSizeBox[i], 32.0f); + } + mUnuseDelay = 15; + mShouldCall = 0; + mHasInitedCall = 0; + mCallCount = 0; + mAnm[BUTTON_2_ANIM_CALL].setToEnd(); + mAnm[BUTTON_2_ANIM_CALL].setAnimEnable(true); + mAnm[BUTTON_2_ANIM_LOOP].setAnimEnable(true); mLyt.calc(); - mAnmGroups[1].setAnimEnable(false); + mAnm[BUTTON_2_ANIM_CALL].setAnimEnable(false); mStateMgr.changeState(StateID_Wait); return true; } bool dLytMeter2Button_c::remove() { for (int i = 0; i < 3; i++) { - mAnmGroups[i].unbind(); - mAnmGroups[i].remove(); + mAnm[i].unbind(); + mAnm[i].remove(); } return true; } bool dLytMeter2Button_c::execute() { - if (*mStateMgr.getStateID() == StateID_ToUnuse) { - // TODO - } else { - mStateMgr.executeState(); + dLytMeter_c *meter = dLytMeter_c::GetInstance(); + if (meter->getMeterField_0x13774()) { + StoryflagManager::sInstance->unsetFlag(832); } + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_ToUnuse) { + mAnm[BUTTON_1_ANIM_INPUT].setToEnd2(); + } + return true; + } + + mStateMgr.executeState(); + + if (dLytControlGame_c::getInstance()->isStateNormal()) { + if (StoryflagManager::sInstance->getCounterOrFlag(832)) { + mShouldCall = true; + } + } else { + mShouldCall = false; + } + + if (mShouldCall && meter->checkAllFlags(METER_BTN_2)) { + if (!mHasInitedCall) { + mAnm[BUTTON_1_ANIM_CALL].setToEnd(); + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(true); + mHasInitedCall = true; + } + + if (mAnm[BUTTON_1_ANIM_CALL].isEnabled()) { + mAnm[BUTTON_1_ANIM_CALL].play(); + if (meter->checkAllFlags(METER_BTN_2) && mCallCount < 3 && mAnm[BUTTON_1_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_2_BUTTON_BLINK); + mCallCount++; + } + } + } else { + if (mHasInitedCall == true) { + mAnm[BUTTON_1_ANIM_CALL].setToEnd(); + } else if (mAnm[BUTTON_1_ANIM_CALL].isEnabled()) { + mAnm[BUTTON_1_ANIM_CALL].setAnimEnable(false); + } + } + + if (!mShouldCall) { + mHasInitedCall = mShouldCall; + } + + mShouldCall = false; + if (mAnm[BUTTON_1_ANIM_LOOP].isEnabled()) { + mAnm[BUTTON_1_ANIM_LOOP].play(); + } + + return true; } +bool dLytMeter2Button_c::shouldCall() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && StoryflagManager::sInstance->getCounterOrFlag(832)) { + return true; + } + return false; +} + +enum MeterPart_e { + METER_GANBARI = 0, + METER_RUPY = 1, + METER_ITEM_SELECT = 2, + METER_CROSS_BTN = 3, + METER_PLUS_BTN = 4, + METER_MINUS_BTN = 5, + METER_A_BTN = 6, + METER_DOWSING = 7, + METER_Z_BTN = 8, + METER_NUN_STK = 9, + METER_REMOCON_BG = 10, + METER_NUN_BG = 11, + METER_HEART = 12, + METER_SHIELD = 13, + METER_1_BTN = 14, + METER_2_BTN = 15, +}; + +#define METER_ANIM_ITEM_SELECT 0 +#define METER_ANIM_MINUS_BTN 1 +#define METER_ANIM_PLUS_BTN 2 +#define METER_ANIM_CROSS_BTN 3 +#define METER_ANIM_1_BTN 4 +#define METER_ANIM_2_BTN 5 +#define METER_ANIM_A_BTN 6 +#define METER_ANIM_REMOCON_BG 7 +#define METER_ANIM_DOWSING 8 +#define METER_ANIM_Z_BTN 9 +#define METER_ANIM_NUN_STK 10 +#define METER_ANIM_NUN_BG 11 +#define METER_ANIM_RUPY 12 +#define METER_ANIM_SHIELD 13 +#define METER_ANIM_HEART 14 +#define METER_ANIM_GANBARI_GAUGE 15 + void dLytMeterParts_c::initializeState_Invisible() {} -void dLytMeterParts_c::executeState_Invisible() {} +void dLytMeterParts_c::executeState_Invisible() { + if (mShouldBeVisible) { + if (mIndex == METER_SHIELD) { + mpAnmIn->setForwardOnce(); + if (dMessage_c::getInstance()->getField_0x2FC() != 0) { + mpAnmIn->setToEnd(); + dLytMeter_c::setRupyField_0x8A9(1); + } else { + mpAnmIn->setFrame(0.0f); + dLytMeter_c::setRupyField_0x8A9(2); + } + mpAnmIn->setAnimEnable(true); + } else { + mpAnmIn->setForwardOnce(); + mpAnmIn->setFrame(0.0f); + mpAnmIn->setAnimEnable(true); + } + mStateMgr.changeState(StateID_In); + } +} void dLytMeterParts_c::finalizeState_Invisible() {} void dLytMeterParts_c::initializeState_In() {} -void dLytMeterParts_c::executeState_In() {} +void dLytMeterParts_c::executeState_In() { + if (mpAnmIn->isEndReached()) { + mpAnmIn->setAnimEnable(false); + mStateMgr.changeState(StateID_Visible); + } + + if (mpAnmIn->isEnabled()) { + mpAnmIn->play(); + } +} void dLytMeterParts_c::finalizeState_In() {} void dLytMeterParts_c::initializeState_Visible() {} -void dLytMeterParts_c::executeState_Visible() {} +void dLytMeterParts_c::executeState_Visible() { + if (!mShouldBeVisible) { + if (mIndex == METER_SHIELD) { + mpAnmOut->setForwardOnce(); + if (dLytMeter_c::getRupyField_0x8AC()) { + mpAnmOut->setToEnd(); + if (dLytMeter_c::getHeartField_0x78C() == 0) { + dLytMeter_c::setRupyField_0x8AA(1); + } else { + dLytMeter_c::setRupyField_0x8AA(3); + } + dLytMeter_c::setRupyField_0x8AC(0); + } else { + mpAnmOut->setFrame(0.0f); + if (dLytMeter_c::getHeartField_0x78C() == 0) { + dLytMeter_c::setRupyField_0x8AA(2); + } else { + dLytMeter_c::setRupyField_0x8AA(4); + } + } + mpAnmOut->setAnimEnable(true); + } else { + mpAnmOut->setForwardOnce(); + mpAnmOut->setFrame(0.0f); + mpAnmOut->setAnimEnable(true); + } + mStateMgr.changeState(StateID_Out); + } +} void dLytMeterParts_c::finalizeState_Visible() {} void dLytMeterParts_c::initializeState_Out() {} -void dLytMeterParts_c::executeState_Out() {} +void dLytMeterParts_c::executeState_Out() { + dLytMeter_c *meter = dLytMeter_c::GetInstance(); + if (mpAnmOut->isEndReached()) { + if (mIndex == METER_SHIELD && dMessage_c::getInstance()->getField_0x2FC() == -2) { + dMessage_c::getInstance()->setField_0x2FC(0); + } + mpAnmOut->setAnimEnable(false); + mStateMgr.changeState(StateID_Invisible); + } + + if (mpAnmOut->isEnabled()) { + mpAnmOut->play(); + } + + switch (mIndex) { + case METER_ANIM_MINUS_BTN: meter->clearFlags(METER_BTN_MINUS); break; + case METER_ANIM_1_BTN: meter->clearFlags(METER_BTN_1); break; + case METER_ANIM_CROSS_BTN: meter->clearFlags(METER_BTN_CROSS); break; + case METER_ANIM_2_BTN: meter->clearFlags(METER_BTN_2); break; + case METER_ANIM_A_BTN: meter->clearFlags(METER_BTN_NUN_STK); break; + case METER_ANIM_DOWSING: meter->clearFlags(METER_BTN_C); break; + case METER_ANIM_Z_BTN: meter->clearFlags(METER_BTN_0x1000); break; + case METER_ANIM_NUN_STK: meter->clearFlags(METER_BTN_NUN_STK); break; + } +} void dLytMeterParts_c::finalizeState_Out() {} -void floats() { - 32.0f; - 1.0f; - 0.0f; - int x = 0; - f32 f = x; +void dLytMeterParts_c::build(s32 index) { + mIndex = index; + mShouldBeVisible = false; + mStateMgr.changeState(StateID_Invisible); } -void floats2() { - 5.0f; - 3.0f; +void dLytMeterParts_c::execute() { + mStateMgr.executeState(); +} + +bool dLytMeterMain_c::isNotSilentRealmOrLoftwing() { + if (isSilentRealm() || dAcPy_c::GetLink()->getRidingActorType() == dAcPy_c::RIDING_LOFTWING) { + return false; + } + return true; +} + +bool dLytMeterMain_c::fn_800C9F70() { + if ((fn_800D56B0() && !field_0x13775) || fn_800D5650() || fn_800D5680()) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800C9FE0() { + if (fn_800D56B0() || !field_0x13750 || fn_800D5680()) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800CA040() { + if (field_0x13774 || fn_800D5650() || fn_800D5680()) { + return true; + } + return false; +} + +void dLytMeterMain_c::setUiMode(u16 value) const { + StoryflagManager::sInstance->setFlagOrCounterToValue(840, value); +} + +u8 dLytMeterMain_c::getUiMode() { + return StoryflagManager::sInstance->getFlag(840); } #pragma dont_inline on -dLytMeter_c::dLytMeter_c() {} +dLytMeterMain_c::dLytMeterMain_c() {} #pragma dont_inline reset -extern "C" void fn_800D97E0(int i); -extern "C" void fn_800D9800(int i); - static const d2d::LytBrlanMapping meterBrlanMap[] = { { "basicPosition_00_in.brlan", "G_remoConBtn_00"}, { "basicPosition_00_in.brlan", "G_remoConBtn_01"}, @@ -326,11 +634,23 @@ static const d2d::LytBrlanMapping meterBrlanMap[] = { {"basicPosition_00_rupyPosition.brlan", "G_rupyPosi_00"}, }; -bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { +#define METER_ANIM_POSITION_IN_OFFSET 0 +#define METER_ANIM_POSITION_OUT_OFFSET 16 +#define METER_ANIM_POSITION 32 +#define METER_ANIM_RUPY_POSITION 33 + +#define METER_NUM_ANIMS 34 + +#define METER_NUM_PANES 16 + +static const char *sGroupName = "G_ref_00"; + +bool dLytMeterMain_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("basicPosition_00.brlyt", nullptr); mLyt.setPriority(0x8A); - for (int i = 0; i < 34; i++) { + + for (int i = 0; i < METER_NUM_ANIMS; i++) { mAnmGroups[i].init(meterBrlanMap[i].mFile, resAcc, mLyt.getLayout(), meterBrlanMap[i].mName); mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); @@ -349,41 +669,51 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { mp2Button = nullptr; } - mNodes[0].mpLytPane = &mGanbariGauge; - mNodes[1].mpLytPane = &mRupy; - mNodes[2].mpLytPane = &mItemSelect; - mNodes[3].mpLytPane = &mCrossBtn; - mNodes[4].mpLytPane = &mPlusBtn; - mNodes[5].mpLytPane = &mMinusBtn; - mNodes[6].mpLytPane = &mABtn; - mNodes[7].mpLytPane = &mDowsing; - mNodes[8].mpLytPane = &mZBtn; - mNodes[9].mpLytPane = &mNunStk; - mNodes[10].mpLytPane = &mRemoCon; - mNodes[11].mpLytPane = &mNunBg; - mNodes[12].mpLytPane = &mHeart; - mNodes[13].mpLytPane = &mShield; - mNodes[14].mpLytPane = mp1Button; - mNodes[15].mpLytPane = mp2Button; - mPosArray1[0] = mLyt.findPane("N_shield_00")->GetTranslate(); - mPosArray1[1] = mLyt.findPane("N_shield_01")->GetTranslate(); + mNodes[METER_GANBARI].mpLytPane = &mGanbariGauge; + mNodes[METER_RUPY].mpLytPane = &mRupy; + mNodes[METER_ITEM_SELECT].mpLytPane = &mItemSelect; + mNodes[METER_CROSS_BTN].mpLytPane = &mCrossBtn; + mNodes[METER_PLUS_BTN].mpLytPane = &mPlusBtn; + mNodes[METER_MINUS_BTN].mpLytPane = &mMinusBtn; + mNodes[METER_A_BTN].mpLytPane = &mABtn; + mNodes[METER_DOWSING].mpLytPane = &mDowsing; + mNodes[METER_Z_BTN].mpLytPane = &mZBtn; + mNodes[METER_NUN_STK].mpLytPane = &mNunStk; + mNodes[METER_REMOCON_BG].mpLytPane = &mRemoCon; + mNodes[METER_NUN_BG].mpLytPane = &mNunBg; + mNodes[METER_HEART].mpLytPane = &mHeart; + mNodes[METER_SHIELD].mpLytPane = &mShield; + mNodes[METER_1_BTN].mpLytPane = mp1Button; + mNodes[METER_2_BTN].mpLytPane = mp2Button; + + mShieldPositions[0].copyFrom(mLyt.findPane("N_shield_00")->GetTranslate()); + mShieldPositions[1].copyFrom(mLyt.findPane("N_shield_01")->GetTranslate()); + mShieldPosIndex = 0; + mOldShieldPosIndex = 0; + mShieldPosInterpFrame = 0; + mShieldPos = mShieldPositions[mShieldPosIndex]; - mPos1 = mPosArray1[0]; - mPos2 = mPosArray1[1]; mLyt.findPane("N_rupyAll_00")->SetVisible(true); - mAnmGroups[33].setAnimEnable(true); + mAnmGroups[METER_ANIM_RUPY_POSITION].setAnimEnable(true); - // Advance through some anim's keyframes and store positions in mPosArray2 + // Advance through some anim's keyframes and store positions in mRupyPositions for (int i = 0; i < 7; i++) { - mAnmGroups[33].setFrame(i); + mAnmGroups[METER_ANIM_RUPY_POSITION].setFrame(i); mLyt.calc(); - mPosArray2[i] = mLyt.findPane("N_rupy_00")->GetTranslate(); + mRupyPositions[i].copyFrom(mLyt.findPane("N_rupy_00")->GetTranslate()); } - mAnmGroups[33].setAnimEnable(false); + mAnmGroups[METER_ANIM_RUPY_POSITION].setAnimEnable(false); mLyt.findPane("N_rupyAll_00")->SetVisible(false); - for (int i = 0; i < 16; i++) { + mRupyPosIndex = 0; + mOldRupyPosIndex = 0; + mRupyPosInterpFrame = 0; + mRupyPos = mRupyPositions[mRupyPosIndex]; + mPos3.x = mPos3.y = mPos3.z = 0.0f; + field_0x137C0 = 0x3C; + + for (int i = 0; i < METER_NUM_PANES; i++) { if (mNodes[i].mpLytPane != nullptr) { mNodes[i].mpLytPane->build(resAcc); mMeters.PushBack(&mNodes[i]); @@ -431,17 +761,17 @@ 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")) || - dScGame_c::currentSpawnInfo.stageName == "F302" || dScGame_c::currentSpawnInfo.stageName == "F302") { + 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 == "F303") { mpSmallKey = new dLytMeterSmallKey_c(); mpSmallKey->build(resAcc); } else { @@ -454,15 +784,124 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { mpDrink = new dLytMeterDrink_c(); mpDrink->build(resAcc); } + + mItemSelect.setOwnerPane(mLyt.findPane("N_remoConBtn_00")); + mCrossBtn.setOwnerPane(mLyt.findPane("N_remoConBtn_03")); + mPlusBtn.setOwnerPane(mLyt.findPane("N_remoConBtn_02")); + mMinusBtn.setOwnerPane(mLyt.findPane("N_remoConBtn_01")); + mDowsing.setOwnerPane(mLyt.findPane("N_nunBtn_03")); + mABtn.setOwnerPane(mLyt.findPane("N_remoConBtn_06")); + mZBtn.setOwnerPane(mLyt.findPane("N_nunBtn_01")); + mNunStk.setOwnerPane(mLyt.findPane("N_nunBtn_02")); + mNunBg.setOwnerPane(mLyt.findPane("N_nunBg_00")); + if (mp1Button != nullptr) { + mp1Button->setOwnerPane(mLyt.findPane("N_remoConBtn_04")); + } + if (mp2Button != nullptr) { + mp2Button->setOwnerPane(mLyt.findPane("N_remoConBtn_05")); + } + + mGanbariGauge.setOwnerPane(mLyt.findPane("N_gutsAlpha")); + mShield.setOwnerPane(mLyt.findPane("N_shieldAll_00")); + + if (mLyt.getLayout()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + d2d::dSubPane::linkMeters(g, &mMeters); + } + } + + for (int i = 0; i < METER_NUM_PANES; i++) { + if (mNodes[i].mpLytPane != nullptr) { + mNodes[i].mpPane->SetVisible(false); + } + } + + mNodes[METER_GANBARI].mpPane->SetVisible(true); + mNodes[METER_HEART].mpPane->SetVisible(true); + mNodes[METER_RUPY].mpPane->SetVisible(true); + mNodes[METER_ITEM_SELECT].mpPane->SetVisible(true); + mNodes[METER_CROSS_BTN].mpPane->SetVisible(true); + mNodes[METER_PLUS_BTN].mpPane->SetVisible(true); + mNodes[METER_MINUS_BTN].mpPane->SetVisible(true); + mNodes[METER_A_BTN].mpPane->SetVisible(true); + mNodes[METER_DOWSING].mpPane->SetVisible(true); + mNodes[METER_Z_BTN].mpPane->SetVisible(true); + mNodes[METER_NUN_STK].mpPane->SetVisible(true); + mNodes[METER_REMOCON_BG].mpPane->SetVisible(true); + mNodes[METER_NUN_BG].mpPane->SetVisible(true); + mNodes[METER_SHIELD].mpPane->SetVisible(true); + + if (mNodes[METER_1_BTN].mpPane != nullptr) { + mNodes[METER_1_BTN].mpPane->SetVisible(true); + } + + if (mNodes[METER_2_BTN].mpPane != nullptr) { + mNodes[METER_2_BTN].mpPane->SetVisible(true); + } + + mNodes[METER_SHIELD].mpPane->SetTranslate(mShieldPos); + mNodes[METER_RUPY].mpPane->SetTranslate(mRupyPos); + + for (int i = 0; i < METER_NUM_PANES; i++) { + mAnmGroups[i + METER_ANIM_POSITION_IN_OFFSET].setAnimEnable(true); + mAnmGroups[i + METER_ANIM_POSITION_IN_OFFSET].setToStart(); + } + s32 zero = 0; + + field_0x1374C = 0; + field_0x13748 = 0; + field_0x13750 = 4; + field_0x13770 = 3; + field_0x13774 = 0; + field_0x13775 = 0; + field_0x13773 = 0; + mTimerVisible = false; + mBirdGaugeVisible = false; + field_0x13780 = 1; + field_0x13781 = 0; + mSkyGaugeVisible = false; + mBossGaugeVisible = false; + mKakeraKeyVisible = false; + mBossKeyVisible = false; + mSmallKeyVisible = false; + mDrinkVisible = false; + field_0x1377E = 0; + field_0x1377F = 0; + field_0x13754 = 0; + + mAnmGroups[METER_ANIM_POSITION].setFrame(zero); + mAnmGroups[METER_ANIM_POSITION].setAnimEnable(true); + + mLyt.calc(); + + for (int i = 0; i < METER_NUM_PANES; i++) { + mAnmGroups[i + METER_ANIM_POSITION_IN_OFFSET].setAnimEnable(false); + } + + mAnmGroups[METER_ANIM_POSITION].setAnimEnable(false); + field_0x13771 = 0; + + for (int i = 0; i < METER_NUM_PANES; i++) { + mParts[i].setAnmGroups( + &mAnmGroups[i + METER_ANIM_POSITION_IN_OFFSET], &mAnmGroups[i + METER_ANIM_POSITION_OUT_OFFSET] + ); + mParts[i].build(i); + mPanesVisible[i] = false; + mPanesNotHiddenByAreaCaption[i] = true; + mPanesForceShown[i] = false; + } + + field_0x137B2 = 1; + return true; } -bool dLytMeter_c::remove() { - for (int i = 0; i < 34; i++) { +bool dLytMeterMain_c::remove() { + for (int i = 0; i < METER_NUM_ANIMS; i++) { mAnmGroups[i].remove(); } - for (d2d::SubPaneList::Iterator it = mMeters.GetBeginIter(); it != mMeters.GetEndIter(); ++it) { d2d::dSubPane *m = it->mpLytPane; if (m != nullptr) { @@ -470,7 +909,7 @@ bool dLytMeter_c::remove() { } } - for (int i = 0; i < 16; i++) { + for (int i = 0; i < METER_NUM_PANES; i++) { if (mNodes[i].mpLytPane != nullptr) { mNodes[i].mpLytPane->remove(); } @@ -548,11 +987,722 @@ bool dLytMeter_c::remove() { mpDrink = nullptr; } + return true; +} + +void dLytMeterMain_c::fn_800D5290() { + dLytMeter_c *meter = dLytMeter_c::GetInstance(); + + if (dLytMap_c::getInstance() != nullptr && !dLytMap_c::getInstance()->unkMeterCheck()) { + meter->setFlags(METER_BTN_PLUS); + } + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_PLUS, LytDoButtonRelated::DO_0x74); + meter->clearFlags(METER_BTN_MINUS | METER_BTN_1 | METER_BTN_2); + if (LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::DO_NONE) { + meter->clearFlags(METER_BTN_C); + } +} + +bool dLytMeterMain_c::fn_800D5350() { + if (field_0x13748 == 1 && dMessage_c::getInstance()->getField_0x328()) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800D5380(u8 arg) { + if (dAcPy_c::GetLink() != nullptr && + (dAcPy_c::GetLink()->checkActionFlagsCont(0x400 | 0x100 | 0x80 | 0x40 | 0x10 | 0x4 | 0x2 | 0x1) && + (dAcPy_c::GetLink()->checkActionFlagsCont(0x40) || (arg && mItemSelect.getField_0x5794() == 1)))) { + return true; + } + return false; +} + +extern "C" bool checkIsInSkykeepPuzzle(); +bool dLytMeterMain_c::fn_800D53D0() { + if (checkIsInSkykeepPuzzle() && !field_0x13774) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800D5420() { + if (!fn_800D5650()) { + if (!dStageMgr_c::GetInstance()->isFaderSettled() || !dScGame_c::GetInstance()->isFaderSettled() || + !dStageMgr_c::GetInstance()->fn_80199250() || !dStage_c::GetInstance()->fn_801B3EE0()) { + return true; + } + } + return false; +} + +bool dLytMeterMain_c::isSilentRealm() { + if (dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL && !dScGame_c::isCurrentStage("D003_8")) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800D5590() { + if (dLytMeter_c::getfn_800D97A0() && !dLytMeter_c::GetInstance()->fn_800D56F0()) { + return true; + } + + if (dLytMeter_c::getField_0x13B63()) { + return true; + } + return field_0x13773; +} + +void dLytMeterMain_c::fn_800D5630() { + if (mpBossGauge != nullptr) { + mpBossGauge->fn_80158940(); + } +} + +bool dLytMeterMain_c::fn_800D5650() { + if (field_0x13750 >= 0 && field_0x13750 <= 1) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800D5680() { + if (field_0x13750 >= 2 && field_0x13750 <= 3) { + return true; + } + return false; +} + +bool dLytMeterMain_c::fn_800D56B0() { + if (dLytSaveMgr_c::GetInstance() != nullptr && dLytSaveMgr_c::GetInstance()->fn_80285650()) { + return true; + } + + if (fn_800D5350()) { + return true; + } + + if ((EventManager::isInEvent() && field_0x1377E == 0 && dAcPy_c::GetLink()->getCurrentAction() != 0x8C && + dMessage_c::getInstance()->getField_0x32C() == 0xC) || + field_0x13774) { + return true; + } + + if (dLytMap_c::getInstance() != nullptr && !dLytMap_c::getInstance()->getFn_80139EA0()) { + return true; + } + + return false; +} + +void dLytMeterMain_c::checkPaneVisibility() { + bool oldTimerVisible = mTimerVisible; + bool oldBirdGaugeVisible = mBirdGaugeVisible; + bool oldSkyGaugeVisible = mSkyGaugeVisible; + bool oldBossGaugeVisible = mBossGaugeVisible; + bool oldKakeraKeyVisible = mKakeraKeyVisible; + bool oldBossKeyVisible = mBossKeyVisible; + bool oldSmallKeyVisible = mSmallKeyVisible; + bool oldDrinkVisible = mDrinkVisible; + + dBird_c *bird = nullptr; + if (dAcPy_c::GetLink()->getRidingActorType() == dAcPy_c::RIDING_LOFTWING) { + bird = static_cast(fManager_c::searchBaseByProfName(fProfile::BIRD, nullptr)); + } + + // Set all panes to visible, then go through + // them one by one to find reasons they should + // be hidden. + + mTimerVisible = true; + mBirdGaugeVisible = true; + mSkyGaugeVisible = true; + mBossGaugeVisible = true; + mKakeraKeyVisible = true; + mBossKeyVisible = true; + mSmallKeyVisible = true; + mDrinkVisible = true; + field_0x1377E = false; + + if (EventManager::getCurrentEventName() != nullptr) { + const char *name = EventManager::getCurrentEventName(); + if (strequals(name, "SwordDraw") || strequals(name, "SwordDrawDoorNew")) { + field_0x1377E = true; + if (dLytDobutton_c::getNextActionToShow() != 0x12) { + dLytDobutton_c::setActionTextStuff(0x29, 0x5E, true); + } + if (LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_A) != 0x12) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, LytDoButtonRelated::DO_NONE); + } + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_C, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_Z, LytDoButtonRelated::DO_NONE); + } + } + + for (int i = 0; i < METER_NUM_PANES; i++) { + mPanesVisible[i] = true; + } + + if (dAcPy_c::GetLink2()->canDowseProbably() && !fn_800D5650() && !fn_800D5680()) { + if (!field_0x1377F) { + field_0x1377F = true; + } + } else { + if (field_0x1377F) { + field_0x1377F = false; + } + } + + if ((!StoryflagManager::sInstance->getCounterOrFlag(58) && + ((LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_NONE && + mItemSelect.getField_0x5794() != 2 && + (!EventManager::isInEvent() || !EventManager::isCurrentEvent("ItemGetGorgeous"))))) + + || (dStageMgr_c::GetInstance()->isAreaTypeHouse() && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_NONE && + !MinigameManager::isInMinigameState(MinigameManager::HOUSE_CLEANING) && !mItemSelect.fn_800F02F0()) + + || + (isSilentRealm() && LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_NONE && + !mItemSelect.fn_800F02F0()) + + || ((dAcPy_c::GetLink()->checkActionFlagsCont(0x400000) || fn_800D5420() || + dAcPy_c::GetLink()->checkActionFlags(dAcPy_c::FLG0_CRAWLING) || fn_800D5380(0) || + MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) || + MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) || + MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING))) + + || (MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_NONE) || + (dLytMeter_c::getField_0x13B66() || (fn_800D56B0() && !mItemSelect.fn_800F02F0() && !fn_800D53D0()) || + fn_800D5650() || fn_800D5680())) { + mPanesVisible[METER_ANIM_ITEM_SELECT] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0() && !mMinusBtn.fn_800F75E0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680())) { + mPanesVisible[METER_ANIM_MINUS_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() > 1 && !mPlusBtn.getField_0x1C0() && !mPlusBtn.isCalling())) { + mPanesVisible[METER_ANIM_PLUS_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() > 1 && !mCrossBtn.fn_800FA730())) { + mPanesVisible[METER_ANIM_CROSS_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0 && !mp1Button->shouldCall())) { + mPanesVisible[METER_ANIM_1_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0 && !mp2Button->shouldCall())) { + mPanesVisible[METER_ANIM_2_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() > 1)) { + mPanesVisible[METER_ANIM_A_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0)) { + mPanesVisible[METER_ANIM_REMOCON_BG] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0() && !mDowsing.fn_800FE490()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0 && !fn_800D5380(true) && !mDowsing.shouldCall() && !mDowsing.fn_800FE490())) { + mPanesVisible[METER_ANIM_DOWSING] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0 && !fn_800D5380(true) && !mZBtn.isCalling())) { + mPanesVisible[METER_ANIM_Z_BTN] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0)) { + mPanesVisible[METER_ANIM_NUN_STK] = false; + } + + if ((fn_800D56B0() && !fn_800D53D0()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680()) + + || (getUiMode() != 0)) { + mPanesVisible[METER_ANIM_NUN_BG] = false; + } + + if ((!isNotSilentRealmOrLoftwing() || (mShield.getGaugePercentMaybe() == 0.0f && mShield.getField_0x31D()) || + dAcPy_c::GetLink()->getCurrentAction() == 0x8C || fn_800D5380(false) || field_0x13770 != 3 || + MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) || + MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) || + MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING) || + MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) || + MinigameManager::isInMinigameState(MinigameManager::PUMPKIN_ARCHERY) || + MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) || + MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER) || fn_800D56B0() || field_0x1377E) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || + (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) || + fn_800D5650() || fn_800D5680())) { + mPanesVisible[METER_ANIM_RUPY] = false; + } + + if ((isSilentRealm() || fn_800D5380(false) || field_0x13770 != 3 || + dAcPy_c::GetLink()->getCurrentAction() == 0x8C || + + MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) || + MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) || + MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING) || + MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) || + MinigameManager::isInMinigameState(MinigameManager::PUMPKIN_ARCHERY) || + MinigameManager::isInMinigameState(MinigameManager::INSECT_CAPTURE) || + MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) || + MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER)) + + || + (dMessage_c::getInstance()->getField_0x2FC() && mHeart.getField_0x78C() && !dAcPy_c::LINK->isSittingOrUnk0xAE()) + + || (fn_800D56B0() && + (dMessage_c::getInstance()->getField_0x2FC() == 0 || dMessage_c::getInstance()->getField_0x2FC() == -2)) || + field_0x1377E + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || + (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) || + fn_800D5650() || fn_800D5680())) { + mPanesVisible[METER_ANIM_SHIELD] = false; + } + + if (dMessage_c::getInstance()->getField_0x2FC() != 0) { + mRupy.setSize(0); + } else { + mRupy.setSize(1); + } + + if ((isSilentRealm() || field_0x13770 != 3 || dAcPy_c::GetLink()->getCurrentAction() == 0x8C || + + MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) || + MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING) || + MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) || + MinigameManager::isInMinigameState(MinigameManager::PUMPKIN_ARCHERY) || + MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) || + MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER)) + + || (fn_800D56B0() && mHeart.getField_0x78C() == 0) + + || (dScGame_c::currentSpawnInfo.stageName == "F406" && dScGame_c::currentSpawnInfo.layer == 13) + + || (field_0x1377E != 0) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || + (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) || + fn_800D5650() || fn_800D5680())) { + mPanesVisible[METER_ANIM_HEART] = false; + } + + if (!isSilentRealm() || (fn_800D56B0() && !fn_800D5590()) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || field_0x13750 == 0 || fn_800D5680())) { + mTimerVisible = false; + } + + if (mpTimer != nullptr && mTimerVisible != oldTimerVisible) { + if (mTimerVisible) { + mpTimer->startIn2(); + } else { + mpTimer->startOut2(); + } + } + + if ((dAcPy_c::GetLink()->hasvt_0x1C0() || dAcPy_c::GetLink()->checkActionFlagsCont(0x10) || + (fn_800D56B0() && !field_0x13774) || mGanbariGauge.fn_80104760() || + + MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) || + MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) || + MinigameManager::isInMinigameState(MinigameManager::PUMPKIN_ARCHERY) || + MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) || + MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER)) + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mPanesVisible[METER_ANIM_GANBARI_GAUGE] = false; + } + + if ((dAcPy_c::GetLink()->getRidingActorType() != dAcPy_c::RIDING_LOFTWING || fn_800D56B0()) || + (dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mSkyGaugeVisible = false; + } else if (bird != nullptr && mpSkyGauge != nullptr) { + mpSkyGauge->setHeight(dAcPy_c::GetLink()->vt_0x260()); + } + + if (mpSkyGauge != nullptr && mSkyGaugeVisible != oldSkyGaugeVisible) { + if (mSkyGaugeVisible) { + mpSkyGauge->setWantsIn(); + } else { + mpSkyGauge->setWantsOut(); + } + } + + if (dAcPy_c::GetLink()->getRidingActorType() != dAcPy_c::RIDING_LOFTWING || !field_0x13780 || + + (dLytDobutton_c::getFn0x8010E5D0() != 0x5E || fn_800D56B0() || dLytMeter_c::getField_0x13B66() || + fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mBirdGaugeVisible = false; + } + + if (mpBirdGauge != nullptr) { + if (bird != nullptr) { + mpBirdGauge->setNumDashes(bird->getNumDashes()); + } + if (mBirdGaugeVisible != oldBirdGaugeVisible) { + if (mBirdGaugeVisible) { + if (mpBirdGauge->getField_0x693()) { + mpBirdGauge->setField_0x690(1); + } else { + mBirdGaugeVisible = false; + } + } else { + if (mpBirdGauge->getField_0x692()) { + mpBirdGauge->hide(); + } else { + mBirdGaugeVisible = true; + } + } + } + } + + if (!field_0x13781 || fn_800D56B0() || + + (dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mBossGaugeVisible = false; + } + + if (mBossGaugeVisible != oldBossGaugeVisible) { + if (mBossGaugeVisible) { + if (mpBossGauge != nullptr) { + s32 mode = 0; + if (dScGame_c::currentSpawnInfo.layer == 3) { + mode = 1; + } else if (dScGame_c::currentSpawnInfo.layer == 4) { + mode = 2; + } + mpBossGauge->setMode(mode); + } + } else { + if (mpBossGauge != nullptr) { + mpBossGauge->setField_0x545(true); + } + } + } + + if (mpKakeraKey != nullptr) { + if (dAcItem_c::getKeyPieceCount() == 0 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) || + SceneflagManager::sInstance->checkSceneflagGlobal(4, 0x21) || MinigameManager::isInAnyMinigame() + + || (dLytMeter_c::getField_0x13B66() || fn_800D56B0() || field_0x1377E || fn_800D5420() || fn_800D5650() || + fn_800D5680())) { + mKakeraKeyVisible = false; + } + if (mKakeraKeyVisible != oldKakeraKeyVisible) { + if (mKakeraKeyVisible) { + mpKakeraKey->setShouldBeVisible(true); + } else { + mpKakeraKey->setShouldBeVisible(false); + } + } + } + + if (mpBossKey != nullptr) { + if (DungeonflagManager::sInstance->getCounterOrFlag(12, 8) == 0 + + || DungeonflagManager::sInstance->getCounterOrFlag(16, 8) != 0 || + dAcPy_c::GetLink()->getCurrentAction() == 0x8C || dLytAreaCaption_c::getVisible() || fn_800D5380(false) || + MinigameManager::isInAnyMinigame() || fn_800D56B0() || field_0x1377E + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mBossKeyVisible = false; + } + + if (mBossKeyVisible != oldBossKeyVisible) { + if (mBossKeyVisible) { + mpBossKey->setShouldBeVisible(true); + } else { + mpBossKey->setShouldBeVisible(false); + } + } + } + + if (mpSmallKey != nullptr) { + if (dAcItem_c::getSmallKeyCount() == 0 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) || + MinigameManager::isInAnyMinigame() || fn_800D56B0() || field_0x1377E + + || (dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680())) { + mSmallKeyVisible = false; + } + + if (mSmallKeyVisible != oldSmallKeyVisible) { + if (mSmallKeyVisible) { + mpSmallKey->setShouldBeVisible(true); + } else { + mpSmallKey->setShouldBeVisible(false); + } + } + } + + if (mpDrink != nullptr) { + if (!field_0x137B2 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) || + MinigameManager::isInAnyMinigame() || field_0x1377E + + || fn_800D56B0() || dLytMeter_c::getField_0x13B66() || fn_800D5420() || fn_800D5650() || fn_800D5680()) { + mDrinkVisible = false; + } + + if (mDrinkVisible != oldDrinkVisible) { + if (mDrinkVisible) { + mpDrink->setShouldBeVisible(true); + } else { + mpDrink->setShouldBeVisible(false); + } + } + + mVec3_c pos = mRupy.getLastVisibleDigitPosition(); + mpDrink->setField_0x6E0(pos); + } +} + +bool dLytMeterMain_c::execute() { + dLytMeter_c *meter = dLytMeter_c::GetInstance(); + if (field_0x13775 && !EventManager::isInEvent()) { + field_0x13775 = 0; + } + + if (isSilentRealm()) { + meter->clearFlags(METER_BTN_MINUS); + meter->clearFlags(METER_BTN_CROSS); + } + + if (dStageMgr_c::GetInstance()->isInLastBoss()) { + meter->clearFlags(METER_BTN_PLUS); + } + + if (field_0x13750 != 0 && field_0x13748 == 1) { + fn_800D5290(); + } + + checkPaneVisibility(); + + s32 heartsHeight; + s32 rupeePos; + s32 kakeraKeyPos; + s32 bossKeyPos; + s32 smallKeyPos; + + if (mHeart.getCurrentHealthCapacity() / 4 <= 10) { + heartsHeight = 0; + if (mShield.getGaugePercentMaybe() > 0.0f && + (mLyt.findPane("N_shieldAll_00")->IsVisible() || isNotSilentRealmOrLoftwing())) { + rupeePos = 0; + kakeraKeyPos = 1; + bossKeyPos = 1; + smallKeyPos = 1; + } else { + rupeePos = 2; + kakeraKeyPos = 0; + bossKeyPos = 0; + smallKeyPos = 0; + } + } else { + heartsHeight = 1; + if (mShield.getGaugePercentMaybe() > 0.0f && + (mLyt.findPane("N_shieldAll_00")->IsVisible() || isNotSilentRealmOrLoftwing())) { + rupeePos = 1; + kakeraKeyPos = 1; + bossKeyPos = 3; + smallKeyPos = 3; + } else { + rupeePos = 4; + kakeraKeyPos = 0; + bossKeyPos = 2; + smallKeyPos = 2; + } + } + + if (dMessage_c::getInstance()->getField_0x2FC() != 0) { + rupeePos = 3; + if (dLytMsgWindow_c::getInstance() != nullptr && (dLytMsgWindow_c::getInstance()->fn_800D7B40() == 0x9E02 || + dLytMsgWindow_c::getInstance()->fn_800D7B40() == 0x768C)) { + s32 off = -(mHeart.getCurrentHealthCapacity() / 4 <= 10); + rupeePos = 6 + off; + } + } + + if (mShieldPosIndex != heartsHeight) { + mOldShieldPosIndex = mShieldPosIndex; + mShieldPosIndex = heartsHeight; + mShieldPosInterpFrame = 0; + } + + if (mRupyPosIndex != rupeePos) { + mOldRupyPosIndex = mRupyPosIndex; + mRupyPosIndex = rupeePos; + mRupyPosInterpFrame = 0; + } + + if (mpKakeraKey != nullptr) { + mpKakeraKey->setPosition(kakeraKeyPos); + } + + if (mpBossKey != nullptr) { + mpBossKey->setPosition(bossKeyPos); + } + + if (mpSmallKey != nullptr) { + mpSmallKey->setPosition(smallKeyPos); + } + + if (mShieldPos != mShieldPositions[mShieldPosIndex]) { + if (mShieldPosInterpFrame < 5) { + mVec3_c diff = mShieldPositions[mShieldPosIndex] - mShieldPositions[mOldShieldPosIndex]; + mShieldPos = + diff * cLib::easeOut(++mShieldPosInterpFrame / 5.0f, 3.0f) + mShieldPositions[mOldShieldPosIndex]; + } else { + mShieldPosInterpFrame = 0; + mShieldPos = mShieldPositions[mShieldPosIndex]; + } + mNodes[METER_SHIELD].mpPane->SetTranslate(mShieldPos); + } + + if (field_0x13748 != field_0x1374C) { + field_0x1374C = field_0x13748; + mAnmGroups[METER_ANIM_POSITION].setFrame(field_0x13748); + mAnmGroups[METER_ANIM_POSITION].setAnimEnable(true); + } + + for (int i = 0; i < METER_NUM_PANES; i++) { + bool visible = true; + if (!mPanesForceShown[i]) { + bool b = mPanesVisible[i] && mPanesNotHiddenByAreaCaption[i]; + if (!b) { + visible = false; + } + } + mParts[i].setShouldBeVisible(visible); + mParts[i].execute(); + } + + if (mRupyPos != mRupyPositions[mRupyPosIndex]) { + mShield.setfield_0x318(2); + if (mRupy.getField_0x8A9() == 1) { + mRupyPosInterpFrame = 5; + } + if (mRupyPosInterpFrame < 5) { + mVec3_c diff = mRupyPositions[mRupyPosIndex] - mRupyPositions[mOldRupyPosIndex]; + mRupyPos = diff * cLib::easeOut(++mRupyPosInterpFrame / 5.0f, 3.0f) + mRupyPositions[mOldRupyPosIndex]; + } else { + mRupyPosInterpFrame = 0; + mRupyPos = mRupyPositions[mRupyPosIndex]; + } + mNodes[METER_RUPY].mpPane->SetTranslate(mRupyPos); + } + + for (int i = 0; i < METER_NUM_PANES; i++) { + if (mNodes[i].mpLytPane != nullptr) { + mNodes[i].mpLytPane->execute(); + } + } + + mLyt.calc(); + mItemSelect.fn_800EF580(); + + if (mAnmGroups[METER_ANIM_POSITION].isEnabled()) { + mAnmGroups[METER_ANIM_POSITION].setAnimEnable(false); + } + + meter->resetFlags(); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_NONE); + + LytDoButtonRelated::fn_8010EC10(LytDoButtonRelated::DO_NONE, true); + LytDoButtonRelated::fn_8010ED50(LytDoButtonRelated::DO_NONE, true); + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_L, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_CROSS_R, LytDoButtonRelated::DO_NONE); + + LytDoButtonRelated::reset(LytDoButtonRelated::DO_BUTTON_C, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_Z, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::reset(LytDoButtonRelated::DO_BUTTON_NUN_STK, LytDoButtonRelated::DO_NONE); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_NUN_BG, LytDoButtonRelated::DO_NONE); + + if (mpTimer != nullptr) { + mpTimer->execute(); + } + if (mpTimerPart1 != nullptr) { + mpTimerPart1->execute(); + } + if (mpTimerPart2 != nullptr) { + mpTimerPart2->execute(); + } + if (mpSkyGauge != nullptr) { + mpSkyGauge->execute(); + } + if (mpBirdGauge != nullptr) { + mpBirdGauge->execute(); + } + if (mpBossGauge != nullptr) { + mpBossGauge->execute(); + } + if (mpKakeraKey != nullptr) { + mpKakeraKey->execute(); + } + if (mpBossKey != nullptr) { + mpBossKey->execute(); + } + if (mpSmallKey != nullptr) { + mpSmallKey->execute(); + } + if (mpDrink != nullptr) { + mpDrink->execute(); + } return true; } -bool dLytMeter_c::draw() { +bool dLytMeterMain_c::draw() { mLyt.addToDrawList(); if (mpTimerPart1 != nullptr) { mpTimerPart1->getLyt()->addToDrawList(); @@ -590,11 +1740,11 @@ bool dLytMeter_c::draw() { return true; } -dLytMeterContainer_c::dLytMeterContainer_c() { +dLytMeter_c::dLytMeter_c() { sInstance = this; } -bool dLytMeterContainer_c::build() { +bool dLytMeter_c::build() { void *data = LayoutArcManager::GetInstance()->getLoadedData("DoButton"); mResAcc.attach(data, ""); if (dScTitle_c::sInstance != nullptr) { @@ -608,7 +1758,7 @@ bool dLytMeterContainer_c::build() { } dLytAreaCaption_c::create(); - mMeter.build(&mResAcc); + mMain.build(&mResAcc); if (dScTitle_c::sInstance != nullptr) { mpDoButton = nullptr; mpDoButtonRelated = nullptr; @@ -630,12 +1780,21 @@ bool dLytMeterContainer_c::build() { } fn_800D97E0(0xb); - fn_800D9800(1); - dMessage_c::getInstance()->reset(); + setVisible(true); + dMessage_c::getInstance()->init(); + mFlags = 0xFFFFFFFF; + field_0x13B54 = 0xFFFFFFFF; + field_0x13B60 = 0; + field_0x13B61 = 0; + field_0x13B62 = 0; + field_0x13B63 = 0; + field_0x13B64 = 0; + field_0x13B65 = 0; + field_0x13B66 = 0; return true; } -bool dLytMeterContainer_c::remove() { +bool dLytMeter_c::remove() { if (mpDoButton != nullptr) { mpDoButton->remove(); delete mpDoButton; @@ -645,9 +1804,8 @@ bool dLytMeterContainer_c::remove() { mpDoButtonRelated->remove(); delete mpDoButtonRelated; mpDoButtonRelated = nullptr; - } - mMeter.remove(); + mMain.remove(); if (mpEventSkip != nullptr) { mpEventSkip->remove(); delete mpEventSkip; @@ -663,10 +1821,50 @@ bool dLytMeterContainer_c::remove() { return true; } -bool dLytMeterContainer_c::draw() { +bool dLytMeter_c::execute() { + mMain.mMinusBtn.setField_0x4E80(field_0x13B58); + mMain.mDowsing.setField_0x54E0(field_0x13B5C); + if (mpEventSkip != nullptr) { + mpEventSkip->execute(); + } + + dLytAreaCaption_c::update(); + mMain.execute(); + if (mpDoButton != nullptr) { + mpDoButton->execute(); + } + + if (mpBirdRelated != nullptr) { + mpBirdRelated->execute(); + } + + if (field_0x13B61 || (!EventManager::isInEvent() && field_0x13B62)) { + field_0x13B60 = 0; + field_0x13B61 = 0; + field_0x13B62 = 0; + } + + if (fn_800D97A0() && EventManager::isInEvent()) { + field_0x13B62 = 1; + } + + if (field_0x13B64 || (!EventManager::isInEvent() && field_0x13B65)) { + dLytMeter_c::setField_0x13B63(0); + field_0x13B64 = 0; + field_0x13B65 = 0; + } + + if (dLytMeter_c::getField_0x13B63() && EventManager::isInEvent()) { + field_0x13B65 = 1; + } + + return true; +} + +bool dLytMeter_c::draw() { if (mVisible) { - mMeter.draw(); - if (mMeter.field_0x13750 != 3) { + mMain.draw(); + if (mMain.field_0x13750 != 3) { if (mpEventSkip != nullptr) { mpEventSkip->draw(); } @@ -682,3 +1880,66 @@ bool dLytMeterContainer_c::draw() { return true; } + +bool dLytMeter_c::fn_800D5670() { + return mMain.fn_800D5350(); +} + +void dLytMeter_c::setAreaCaptionOverrideVisibility(bool visible) { + for (int i = 0; i < METER_NUM_PANES; i++) { + mMain.mPanesNotHiddenByAreaCaption[i] = visible; + } + mMain.field_0x137B2 = visible; +} + +bool dLytMeter_c::fn_800D56F0() { + if (mMain.mpTimer != nullptr) { + return mMain.mpTimer->getField_0x54(); + } + + return false; +} + +void dLytMeter_c::fn_800D9710() { + field_0x13B5C = 8; +} + +void dLytMeter_c::setStaminaWheelPercentInternal(f32 percent) { + mMain.mGanbariGauge.setStaminaPercent(percent); +} + +void dLytMeter_c::fn_800D9730(u8 val) { + mMain.mItemSelect.fn_800EF6B0(val); + mMain.mGanbariGauge.setField_0x539(val != 0); +} + +void dLytMeter_c::fn_800D9780(bool val) { + if (!field_0x13B61) { + field_0x13B60 = val; + } +} + +bool dLytMeter_c::fn_800D97A0() { + if (field_0x13B61) { + return false; + } + return field_0x13B60; +} + +void dLytMeter_c::setStaminaWheelPercent(f32 percent) { + if (sInstance != nullptr) { + sInstance->setStaminaWheelPercentInternal(percent); + } +} + +void dLytMeter_c::fn_800D97E0(u8 arg) { + if (sInstance != nullptr) { + sInstance->fn_800D9730(arg); + } +} + +void dLytMeter_c::setVisible(bool b) { + if (sInstance != nullptr) { + sInstance->mVisible = b; + } +} 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..9e0c1ceb 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,12 @@ -#include "d/lyt/d_textbox.h" -#include "d/lyt/d_window.h" #include "d/lyt/meter/d_lyt_meter_a_btn.h" +#include "common.h" +#include "d/lyt/d_lyt_do_button.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytMeterABtn_c, InvisibleWait); STATE_DEFINE(dLytMeterABtn_c, In); @@ -11,6 +16,18 @@ STATE_DEFINE(dLytMeterABtn_c, On); STATE_DEFINE(dLytMeterABtn_c, Active); STATE_DEFINE(dLytMeterABtn_c, Off); +static const d2d::LytBrlanMapping brlanMap[] = { + {"remoConBtn_06_input.brlan", "G_input_00"}, + { "remoConBtn_06_text.brlan", "G_text_00"}, + { "remoConBtn_06_loop.brlan", "G_loop_00"}, +}; + +#define A_BTN_ANIM_INPUT 0 +#define A_BTN_ANIM_TEXT 1 +#define A_BTN_ANIM_LOOP 2 + +#define A_BTN_NUM_ANIMS 3 + void dLytMeterABtn_c::initializeState_InvisibleWait() {} void dLytMeterABtn_c::executeState_InvisibleWait() { if (field_0x1C8 == 0) { @@ -28,8 +45,8 @@ void dLytMeterABtn_c::finalizeState_InvisibleWait() {} void dLytMeterABtn_c::initializeState_In() { mpContainerAnmGroup1->setToStart(); mpContainerAnmGroup1->setAnimEnable(true); - mAnmGroups[0].setBackwardsOnce(); - mAnmGroups[0].setToStart(); + mAnm[A_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[A_BTN_ANIM_INPUT].setToStart(); } void dLytMeterABtn_c::executeState_In() { if (mpContainerAnmGroup1->isEndReached()) { @@ -58,82 +75,266 @@ void dLytMeterABtn_c::executeState_Out() { void dLytMeterABtn_c::finalizeState_Out() {} void dLytMeterABtn_c::initializeState_Wait() {} -void dLytMeterABtn_c::executeState_Wait() {} +void dLytMeterABtn_c::executeState_Wait() { + if (field_0x1C9 == 0) { + return; + } + + if (field_0x1C0) { + if (field_0x1BC != LytDoButtonRelated::DO_NONE) { + mAnm[A_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[A_BTN_ANIM_INPUT].setToStart(); + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_On); + setMessage(field_0x1BC); + } + field_0x1B8 = field_0x1BC; + } else { + if (field_0x1BC != LytDoButtonRelated::DO_NONE) { + setMessage(field_0x1BC); + } + field_0x1B8 = field_0x1BC; + } +} void dLytMeterABtn_c::finalizeState_Wait() {} void dLytMeterABtn_c::initializeState_On() {} -void dLytMeterABtn_c::executeState_On() {} +void dLytMeterABtn_c::executeState_On() { + if (mAnm[A_BTN_ANIM_INPUT].isStop2()) { + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} void dLytMeterABtn_c::finalizeState_On() {} void dLytMeterABtn_c::initializeState_Active() {} -void dLytMeterABtn_c::executeState_Active() {} +void dLytMeterABtn_c::executeState_Active() { + if (field_0x1BC != field_0x1B8 || !field_0x1C0) { + if (field_0x1BC == LytDoButtonRelated::DO_NONE || !field_0x1C0) { + mAnm[A_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[A_BTN_ANIM_INPUT].setFrame(0.0f); + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(true); + if (field_0x1B8 != field_0x1C4) { + field_0x1BC = field_0x1C4; + } + mStateMgr.changeState(StateID_Off); + } else { + setMessage(field_0x1BC); + } + field_0x1B8 = field_0x1BC; + } else if (field_0x1B8 == LytDoButtonRelated::DO_NONE) { + mAnm[A_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[A_BTN_ANIM_INPUT].setFrame(0.0f); + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} void dLytMeterABtn_c::finalizeState_Active() {} void dLytMeterABtn_c::initializeState_Off() {} -void dLytMeterABtn_c::executeState_Off() {} +void dLytMeterABtn_c::executeState_Off() { + if (mAnm[A_BTN_ANIM_INPUT].isEndReached()) { + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} void dLytMeterABtn_c::finalizeState_Off() {} -static const d2d::LytBrlanMapping brlanMap[] = { - {"remoConBtn_06_input.brlan", "G_input_00"}, - { "remoConBtn_06_text.brlan", "G_text_00"}, - { "remoConBtn_06_loop.brlan", "G_loop_00"}, -}; - -#define A_BTN_ANIM_INPUT 0 -#define A_BTN_ANIM_TEXT 1 -#define A_BTN_ANIM_LOOP 2 +static const char *sPane = "N_all_00"; static const char *sTextBoxes[] = { "T_aBtn_00", "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); - for (int i = 0; i < 3; i++) { - mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); - mAnmGroups[i].bind(false); - mAnmGroups[i].setAnimEnable(false); + for (int i = 0; i < A_BTN_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); } - static const char *sPane = "N_all_0"; mpPane = mLyt.findPane(sPane); for (int i = 0; i < 2; i++) { mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); } - static const char *sWindow = "W_bg_P_00"; - mpWindow = mLyt.getWindow(sWindow); - mpSizeBox = mLyt.getSizeBoxInWindow(sWindow); + 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; - field_0x1BC = 0x5F; + field_0x1C4 = LytDoButtonRelated::DO_DASH; + field_0x1B8 = LytDoButtonRelated::DO_DASH; + field_0x1BC = LytDoButtonRelated::DO_DASH; field_0x1C8 = 0; field_0x1CA = 0; field_0x1C9 = 0; - field_0x1C0 = 1; - field_0x1CB = 0; - field_0x1A4 = 0; - mAnmGroups[A_BTN_ANIM_TEXT].setAnimEnable(true); - fn_800E0870(field_0x1B8); - mAnmGroups[A_BTN_ANIM_TEXT].setFrame(0.0f); - mAnmGroups[A_BTN_ANIM_INPUT].setToEnd(); - mAnmGroups[A_BTN_ANIM_INPUT].setAnimEnable(true); - mAnmGroups[A_BTN_ANIM_LOOP].setAnimEnable(true); + field_0x1C0 = true; + mOldTextState = false; + mpOwnerPane = nullptr; + mAnm[A_BTN_ANIM_TEXT].setAnimEnable(true); + setMessage(field_0x1B8); + mAnm[A_BTN_ANIM_TEXT].setFrame(0.0f); + mAnm[A_BTN_ANIM_INPUT].setToEnd(); + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[A_BTN_ANIM_LOOP].setAnimEnable(true); mLyt.calc(); - mAnmGroups[A_BTN_ANIM_INPUT].setAnimEnable(false); + mAnm[A_BTN_ANIM_INPUT].setAnimEnable(false); mStateMgr.changeState(StateID_Wait); return true; } bool dLytMeterABtn_c::remove() { - for (int i = 0; i < 3; i++) { - mAnmGroups[i].unbind(); - mAnmGroups[i].remove(); + for (int i = 0; i < A_BTN_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); } return true; } + +extern "C" bool checkIsInSkykeepPuzzle(); + +bool dLytMeterABtn_c::execute() { + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_Off) { + mAnm[A_BTN_ANIM_INPUT].setToEnd2(); + } + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, LytDoButtonRelated::DO_NONE); + + return true; + } + + if (dLytMeter_c::GetInstance()->getMeterField_0x13750() == 0) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, LytDoButtonRelated::DO_NONE); + + if (field_0x1BC != LytDoButtonRelated::DO_NONE) { + field_0x1BC = LytDoButtonRelated::DO_NONE; + field_0x1B8 = LytDoButtonRelated::DO_NONE; + } + setMessage(field_0x1BC); + } + + bool state = false; + + if (EventManager::isInEvent() && !dLytMeter_c::GetInstance()->fn_800D5670() && + dLytMeter_c::GetMain()->getField_0x1377E() == 0 && !checkIsInSkykeepPuzzle() && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_A) == LytDoButtonRelated::DO_NONE) { + field_0x1C9 = 0; + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, LytDoButtonRelated::DO_NONE); + } else { + field_0x1C9 = 1; + } + + field_0x1CA = 1; + + // TODO + switch (dLytDobutton_c::getField0x480()) { + case 0x0: + case 0x7: + case 0xB: + case 0x15: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1F: + case 0x21: + case 0x22: + case 0x23: + case 0x27: + case 0x28: { + LytDoButtonRelated::Action_e action = LytDoButtonRelated::convertDoButton(dLytDobutton_c::getField0x47C()); + if (action >= 0) { + state = true; + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_A, action); + } + field_0x1CA = 0; + break; + } + } + + field_0x1BC = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_A); + field_0x1C0 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_A); + + if (field_0x1BC == 0x76) { + state = true; + } else if (field_0x1BC == 0x57) { + state = false; + } + + mStateMgr.executeState(); + + if (mOldTextState != state) { + if (*mStateMgr.getStateID() != StateID_Off) { + if (state) { + mAnm[A_BTN_ANIM_TEXT].setFrame(1.0f); + } else { + mAnm[A_BTN_ANIM_TEXT].setFrame(0.0f); + } + mOldTextState = state; + } + } + + for (int i = 0; i < A_BTN_NUM_ANIMS; i++) { + if (i != 1 && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + return true; +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +void dLytMeterABtn_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 if (id == 0x5D) { + wchar_t b2[2]; + b2[0] = b2[1] = 0; + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->setTextWithGlobalTextProcessor(b2); + } + } else { + s32 id2 = id - 0x5E; + sprintf(buf, "ACT_ETC_%03d", sActIds[id2]); + } + + if (id != 0x5D) { + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->SetVisible(true); + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + mpWindow[0]->SetVisible(true); + mpWindow[0]->UpdateSize(mpSizeBox[0], 32.0f); + } else { + mpTextBoxes[0]->SetVisible(false); + mpTextBoxes[1]->SetVisible(false); + mpWindow[0]->SetVisible(false); + } + field_0x1C4 = id; + } else { + mpTextBoxes[0]->SetVisible(false); + mpTextBoxes[1]->SetVisible(false); + mpWindow[0]->SetVisible(false); + } +} diff --git a/src/d/lyt/meter/d_lyt_meter_action_table.inc b/src/d/lyt/meter/d_lyt_meter_action_table.inc new file mode 100644 index 00000000..6ca2e66f --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_action_table.inc @@ -0,0 +1,10 @@ +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 +}; diff --git a/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp index adfc7a09..010656f3 100644 --- a/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp @@ -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 (dLytMeter_c::GetMain()->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 (dLytMeter_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() && + !dLytMeter_c::GetInstance()->fn_800D5670()) || + ((dLytMeter_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 (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_CROSS_UP)) { + 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; +} diff --git a/src/d/lyt/meter/d_lyt_meter_dowsing.cpp b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp index 3086fe25..b9ea37aa 100644 --- a/src/d/lyt/meter/d_lyt_meter_dowsing.cpp +++ b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp @@ -1,5 +1,24 @@ #include "d/lyt/meter/d_lyt_meter_dowsing.h" +#include "common.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d_lyt_area_caption.h" +#include "d/lyt/d_lyt_common_icon_item_maps.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_do_button.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/d_lyt_util_items.h" +#include "d/lyt/d_window.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 "sized_string.h" +#include "toBeSorted/dowsing_target.h" +#include "toBeSorted/effects_struct.h" +#include "toBeSorted/file_manager.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Wait); STATE_DEFINE(dLytMeterDowsingMenuIcon_c, On); STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Select); @@ -31,3 +50,1230 @@ STATE_DEFINE(dLytMeterDowsing_c, ToUnuse); STATE_DEFINE(dLytMeterDowsing_c, Unuse); STATE_DEFINE(dLytMeterDowsing_c, DemoMove); STATE_DEFINE(dLytMeterDowsing_c, DemoOut); + +void dLytMeterDowsingMenuIcon_c::initializeState_Wait() {} +void dLytMeterDowsingMenuIcon_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterDowsingMenuIcon_c::finalizeState_Wait() {} + +void dLytMeterDowsingMenuIcon_c::initializeState_On() {} +void dLytMeterDowsingMenuIcon_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingMenuIcon_c::finalizeState_On() {} + +void dLytMeterDowsingMenuIcon_c::initializeState_Select() {} +void dLytMeterDowsingMenuIcon_c::executeState_Select() { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + if (mShouldBeSelect == 0) { + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterDowsingMenuIcon_c::finalizeState_Select() {} + +void dLytMeterDowsingMenuIcon_c::initializeState_Off() {} +void dLytMeterDowsingMenuIcon_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingMenuIcon_c::finalizeState_Off() {} + +void dLytMeterDowsingMenuIcon_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterDowsingMenuIcon_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterDowsingMenuIcon_c::reset() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterDowsingBlink_c::initializeState_Wait() {} +void dLytMeterDowsingBlink_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterDowsingBlink_c::finalizeState_Wait() {} + +void dLytMeterDowsingBlink_c::initializeState_On() {} +void dLytMeterDowsingBlink_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingBlink_c::finalizeState_On() {} + +void dLytMeterDowsingBlink_c::initializeState_Select() {} +void dLytMeterDowsingBlink_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterDowsingBlink_c::finalizeState_Select() {} + +void dLytMeterDowsingBlink_c::initializeState_Off() {} +void dLytMeterDowsingBlink_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingBlink_c::finalizeState_Off() {} + +void dLytMeterDowsingBlink_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterDowsingBlink_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterDowsingInput_c::initializeState_Wait() {} +void dLytMeterDowsingInput_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterDowsingInput_c::finalizeState_Wait() {} + +void dLytMeterDowsingInput_c::initializeState_On() {} +void dLytMeterDowsingInput_c::executeState_On() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingInput_c::finalizeState_On() {} + +void dLytMeterDowsingInput_c::initializeState_Select() {} +void dLytMeterDowsingInput_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setForwardOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterDowsingInput_c::finalizeState_Select() {} + +void dLytMeterDowsingInput_c::initializeState_Off() {} +void dLytMeterDowsingInput_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingInput_c::finalizeState_Off() {} + +void dLytMeterDowsingInput_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterDowsingInput_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterDowsingText_c::initializeState_Wait() {} +void dLytMeterDowsingText_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterDowsingText_c::finalizeState_Wait() {} + +void dLytMeterDowsingText_c::initializeState_On() {} +void dLytMeterDowsingText_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingText_c::finalizeState_On() {} + +void dLytMeterDowsingText_c::initializeState_Select() {} +void dLytMeterDowsingText_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterDowsingText_c::finalizeState_Select() {} + +void dLytMeterDowsingText_c::initializeState_Off() {} +void dLytMeterDowsingText_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterDowsingText_c::finalizeState_Off() {} + +void dLytMeterDowsingText_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterDowsingText_c::execute() { + mStateMgr.executeState(); +} + +static const char *sPaneNames[] = { + "N_itemArrow_00", "N_arrowHand_00", "N_bBtn_00", "N_A_00", "N_B_00", "N_C_00", + "N_D_00", "N_E_00", "N_F_00", "N_G_00", "N_H_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", "N_btnBg_01", "N_input_00", "N_input_01", +}; + +#define DOWSING_PANE_ITEM_ARROW 0 +#define DOWSING_PANE_ARROW_HAND 1 +#define DOWSING_PANE_N_BTN_0 2 +#define DOWSING_PANE_ITEM_OFFSET 3 +#define DOWSING_PANE_ICON_OFFSET 11 +#define DOWSING_PANE_BTN_BG_01 19 +#define DOWSING_PANE_INPUT_00 20 +#define DOWSING_PANE_INPUT_01 21 + +#define DOWSING_NUM_PANES 22 + +static const d2d::LytBrlanMapping brlanMap[] = { + { "nunBtn_03_in.brlan", "G_inOut_00"}, + { "nunBtn_03_onOff.brlan", "G_itemA_00"}, + { "nunBtn_03_onOff.brlan", "G_itemB_00"}, + { "nunBtn_03_onOff.brlan", "G_itemC_00"}, + { "nunBtn_03_onOff.brlan", "G_itemD_00"}, + { "nunBtn_03_onOff.brlan", "G_itemE_00"}, + { "nunBtn_03_onOff.brlan", "G_itemF_00"}, + { "nunBtn_03_onOff.brlan", "G_itemG_00"}, + { "nunBtn_03_onOff.brlan", "G_itemH_00"}, + { "nunBtn_03_onOff.brlan", "G_text_00"}, + { "nunBtn_03_onOff.brlan", "G_text_01"}, + {"nunBtn_03_selectOnOff.brlan", "G_selectOnOff_00"}, + { "nunBtn_03_selectLoop.brlan", "G_selectLoop_00"}, + { "nunBtn_03_have.brlan", "G_itemA_00"}, + { "nunBtn_03_have.brlan", "G_itemB_00"}, + { "nunBtn_03_have.brlan", "G_itemC_00"}, + { "nunBtn_03_have.brlan", "G_itemD_00"}, + { "nunBtn_03_have.brlan", "G_itemF_00"}, + { "nunBtn_03_have.brlan", "G_itemG_00"}, + { "nunBtn_03_have.brlan", "G_itemH_00"}, + { "nunBtn_03_itemArrow.brlan", "G_itemArrow_00"}, + { "nunBtn_03_decide.brlan", "G_decide_00"}, + { "nunBtn_03_reset.brlan", "G_inOut_00"}, + { "nunBtn_03_input.brlan", "G_input_00"}, + { "nunBtn_03_input.brlan", "G_input_01"}, + { "nunBtn_03_type.brlan", "G_type_00"}, + { "nunBtn_03_call.brlan", "G_call_00"}, + { "nunBtn_03_text.brlan", "G_text_02"}, + { "nunBtn_03_loop.brlan", "G_loop_00"}, +}; + +#define DOWSING_ANIM_IN 0 +#define DOWSING_ANIM_ITEM_ONOFF_OFFSET 1 +#define DOWSING_ANIM_TEXT_ONOFF_OFFSET 9 +#define DOWSING_ANIM_SELECT_ONOFF 11 +#define DOWSING_ANIM_SELECT_LOOP 12 +#define DOWSING_ANIM_HAVE_OFFSET 13 +#define DOWSING_ANIM_ARROW 20 +#define DOWSING_ANIM_DECIDE 21 +#define DOWSING_ANIM_RESET 22 +#define DOWSING_ANIM_INPUT_0 23 +#define DOWSING_ANIM_INPUT_1 24 +#define DOWSING_ANIM_TYPE 25 +#define DOWSING_ANIM_CALL 26 +#define DOWSING_ANIM_TEXT 27 +#define DOWSING_ANIM_LOOP 28 + +#define DOWSING_NUM_ANIMS 29 + +#define DOWSING_NUM_ITEMS 8 + +static const char *sTextboxNames[] = {"T_itemName_00", "T_itemNameS_00", "T_dawsing_00", "T_dawsingS_00"}; + +static const char *sWindowNames[] = { + "W_bgP_01", + "W_bgP_02", + "W_bgP_00", +}; + +static const char *sGroupName = "G_ref_00"; + +void dLytMeterDowsing_c::initializeState_Invisible() {} +void dLytMeterDowsing_c::executeState_Invisible() { + if (getPane()->IsVisible()) { + mStateMgr.changeState(StateID_Wait); + } +} +void dLytMeterDowsing_c::finalizeState_Invisible() { + if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) { + mAnm[DOWSING_ANIM_DECIDE].setToEnd(); + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(true); + mLyt.calc(); + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(false); + } +} + +void dLytMeterDowsing_c::initializeState_Wait() { + fn_800FE220(); +} +void dLytMeterDowsing_c::executeState_Wait() { + if (field_0x5507 != 0) { + fn_800FE220(); + field_0x5507 = 0; + } + + if (!getPane()->IsVisible()) { + mStateMgr.changeState(StateID_Invisible); + } else if (field_0x54F4 == 1) { + mStateMgr.changeState(StateID_DemoMove); + } else if (field_0x5505 != 0) { + mStateMgr.changeState(StateID_MenuSelectingIn); + } else if (field_0x550A != 0 && + (!dLytMeter_c::GetMain()->fn_800D5380(0) || dLytMeter_c::GetMain()->fn_800D5650() || + dLytMeter_c::GetMain()->fn_800D5680())) { + mStateMgr.changeState(StateID_Reset); + } else if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C)) { + mStateMgr.changeState(StateID_ToUnuse); + } else if (dLytMeter_c::GetInstance()->getMeterField_0x1377F() != 0 && field_0x550A == 0 && + dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->fn_800D5650() && + !dLytMeter_c::GetMain()->fn_800D5680() && + getSelectedDowsingSlot() != DowsingTarget::SLOT_LOOK && + getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) { + mAnm[DOWSING_ANIM_IN].setBackwardsOnce(); + mAnm[DOWSING_ANIM_IN].setToEnd2(); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); + mAnm[DOWSING_ANIM_DECIDE].setToEnd(); + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(true); + mItemIcons[0].setItem(convertToLytIndex(getSelectedDowsingSlot())); + mLyt.calc(); + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(false); + field_0x550A = 1; + } +} +void dLytMeterDowsing_c::finalizeState_Wait() {} + +void dLytMeterDowsing_c::initializeState_MenuSelectingIn() { + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(true); + mAnm[DOWSING_ANIM_DECIDE].setFrame(0.0f); + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (i != 4) { + // The bottom slot is always enabled? + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(true); + } + + DowsingTarget::DowsingSlot slot = dowsingSlotForIndex(i); + if (slot != DowsingTarget::SLOT_NONE && DowsingTarget::hasDowsingInSlot(slot)) { + mpPanes[i + DOWSING_PANE_ICON_OFFSET]->SetVisible(true); + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setFrame(0.0f); + } + mItemIcons[i + 1].setItem(getLytIndexForDowsingIndex(i)); + } else { + mpPanes[i + DOWSING_PANE_ICON_OFFSET]->SetVisible(false); + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + } + + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + + mIcon[i].reset(); + } + mAnm[DOWSING_ANIM_IN].setForwardOnce(); + mAnm[DOWSING_ANIM_IN].setFrame(0.0f); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); + if (StoryflagManager::sInstance->getCounterOrFlag(583)) { + mAnm[DOWSING_ANIM_TYPE].setFrame(1.0f); + } else { + mAnm[DOWSING_ANIM_TYPE].setFrame(0.0f); + } + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(false); + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(false); + } + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(false); + } +} +void dLytMeterDowsing_c::executeState_MenuSelectingIn() { + if (mAnm[DOWSING_ANIM_IN].isEndReached()) { + mStateMgr.changeState(StateID_MenuSelecting); + } + + if (mAnm[DOWSING_ANIM_IN].isEnabled()) { + mAnm[DOWSING_ANIM_IN].play(); + } +} +void dLytMeterDowsing_c::finalizeState_MenuSelectingIn() { + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); +} + +void dLytMeterDowsing_c::initializeState_MenuSelecting() {} +void dLytMeterDowsing_c::executeState_MenuSelecting() { + if (field_0x5505 == 0) { + mStateMgr.changeState(StateID_MenuSelectingOut); + } +} +void dLytMeterDowsing_c::finalizeState_MenuSelecting() {} + +void dLytMeterDowsing_c::initializeState_MenuSelectingOut() { + fn_800FE220(); + mAnm[DOWSING_ANIM_IN].setBackwardsOnce(); + mAnm[DOWSING_ANIM_IN].setToStart(); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); + field_0x550A = 0; + if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) { + if (getSelectedDowsingSlot() != DowsingTarget::SLOT_LOOK) { + field_0x550A = 1; + } + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(true); + } +} +void dLytMeterDowsing_c::executeState_MenuSelectingOut() { + if (mAnm[DOWSING_ANIM_IN].isStop2()) { + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); + if (mAnm[DOWSING_ANIM_DECIDE].isEnabled()) { + if (mAnm[DOWSING_ANIM_DECIDE].isEndReached()) { + mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + } else { + mStateMgr.changeState(StateID_Wait); + } + } + + if (mAnm[DOWSING_ANIM_IN].isEnabled()) { + mAnm[DOWSING_ANIM_IN].play(); + } + + if (mAnm[DOWSING_ANIM_DECIDE].isEnabled()) { + mAnm[DOWSING_ANIM_DECIDE].play(); + } +} +void dLytMeterDowsing_c::finalizeState_MenuSelectingOut() {} + +void dLytMeterDowsing_c::initializeState_Reset() { + mAnm[DOWSING_ANIM_RESET].setForwardOnce(); + mAnm[DOWSING_ANIM_RESET].setToStart(); + mAnm[DOWSING_ANIM_RESET].setAnimEnable(true); +} +void dLytMeterDowsing_c::executeState_Reset() { + if (mAnm[DOWSING_ANIM_RESET].isStop2()) { + field_0x550A = 0; + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[DOWSING_ANIM_RESET].isEnabled()) { + mAnm[DOWSING_ANIM_RESET].play(); + } +} +void dLytMeterDowsing_c::finalizeState_Reset() {} + +void dLytMeterDowsing_c::initializeState_ToUse() { + mAnm[DOWSING_ANIM_INPUT_0].setBackwardsOnce(); + mAnm[DOWSING_ANIM_INPUT_0].setToStart(); + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(true); + + if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && + dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->fn_800D5650() && + !dLytMeter_c::GetMain()->fn_800D5680()) { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(true); + mAnm[DOWSING_ANIM_RESET].setBackwardsOnce(); + mAnm[DOWSING_ANIM_RESET].setToStart(); + } +} +void dLytMeterDowsing_c::executeState_ToUse() { + if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && + dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->fn_800D5650() && + !dLytMeter_c::GetMain()->fn_800D5680()) { + if (mAnm[DOWSING_ANIM_INPUT_0].isStop2()) { + if (!mAnm[DOWSING_ANIM_RESET].isEnabled() || mAnm[DOWSING_ANIM_RESET].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + } + } else if (mAnm[DOWSING_ANIM_INPUT_0].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[DOWSING_ANIM_INPUT_0].isEnabled()) { + mAnm[DOWSING_ANIM_INPUT_0].play(); + } + + if (mAnm[DOWSING_ANIM_RESET].isEnabled()) { + mAnm[DOWSING_ANIM_RESET].play(); + } +} +void dLytMeterDowsing_c::finalizeState_ToUse() { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(false); + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(false); +} + +void dLytMeterDowsing_c::initializeState_ToUnuse() { + mAnm[DOWSING_ANIM_INPUT_0].setForwardOnce(); + if (dLytMeter_c::GetMain()->fn_800D5650()) { + mAnm[DOWSING_ANIM_INPUT_0].setToEnd2(); + } else { + mAnm[DOWSING_ANIM_INPUT_0].setToStart(); + } + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(true); + + if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && + dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->fn_800D5650() && + !dLytMeter_c::GetMain()->fn_800D5680()) { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(true); + mAnm[DOWSING_ANIM_RESET].setForwardOnce(); + mAnm[DOWSING_ANIM_RESET].setToStart(); + } +} +void dLytMeterDowsing_c::executeState_ToUnuse() { + if (mAnm[DOWSING_ANIM_INPUT_0].isStop2()) { + if (!mAnm[DOWSING_ANIM_RESET].isEnabled() || mAnm[DOWSING_ANIM_RESET].isStop2()) { + mStateMgr.changeState(StateID_Unuse); + } + } + + if (mAnm[DOWSING_ANIM_INPUT_0].isEnabled()) { + mAnm[DOWSING_ANIM_INPUT_0].play(); + } + + if (mAnm[DOWSING_ANIM_RESET].isEnabled()) { + mAnm[DOWSING_ANIM_RESET].play(); + } +} +void dLytMeterDowsing_c::finalizeState_ToUnuse() { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(false); + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(false); +} + +void dLytMeterDowsing_c::initializeState_Unuse() { + field_0x54D8 = 15; +} +void dLytMeterDowsing_c::executeState_Unuse() { + if (field_0x54F4 == 1) { + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(true); + mAnm[DOWSING_ANIM_INPUT_0].setFrame(0.0f); + mLyt.calc(); + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(false); + mStateMgr.changeState(StateID_DemoMove); + } else if (!dLytMeter_c::GetMain()->fn_800D5680() && + dLytMeter_c::GetInstance()->getMeterField_0x13774() == 0 && + dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C)) { + if (field_0x54D8 <= 0) { + mStateMgr.changeState(StateID_ToUse); + } else { + field_0x54D8--; + } + } else { + field_0x54D8 = 15; + } +} +void dLytMeterDowsing_c::finalizeState_Unuse() {} + +void dLytMeterDowsing_c::initializeState_DemoMove() { + field_0x550B = 1; + mDemoFrame = 0; + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (i != 4) { + // The bottom slot is always enabled? + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(true); + } + + DowsingTarget::DowsingSlot slot = dowsingSlotForIndex(i); + bool condition = slot != DowsingTarget::SLOT_NONE && DowsingTarget::hasDowsingInSlot(slot); + if (i == fn_800FE9C0(field_0x54F8)) { + condition = false; + } + if (condition) { + mpPanes[i + DOWSING_PANE_ICON_OFFSET]->SetVisible(true); + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setFrame(0.0f); + } + mItemIcons[i + 1].setItem(getLytIndexForDowsingIndex(i)); + } else { + mpPanes[i + DOWSING_PANE_ICON_OFFSET]->SetVisible(false); + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + } + + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + + mIcon[i].reset(); + } + + mAnm[DOWSING_ANIM_IN].setForwardOnce(); + mAnm[DOWSING_ANIM_IN].setToEnd2(); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); + + if (StoryflagManager::sInstance->getCounterOrFlag(583)) { + mAnm[DOWSING_ANIM_TYPE].setFrame(1.0f); + } else { + mAnm[DOWSING_ANIM_TYPE].setFrame(0.0f); + } + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (i != 4) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(false); + } + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(false); + } +} +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_970_; +void dLytMeterDowsing_c::executeState_DemoMove() { + mDemoFrame++; + if (mDemoFrame == 15) { + if (field_0x54F8 <= 21) { + s32 i = fn_800FE9C0(field_0x54F8); + s32 idx = i + DOWSING_PANE_ICON_OFFSET; + mpPanes[idx]->SetVisible(true); + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(true); + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setFrame(0.0f); + mItemIcons[i + 1].setItem(getLytIndexForDowsingIndex(i)); + + idx = i + DOWSING_PANE_ITEM_OFFSET; + nw4r::math::MTX34 mtx = mpPanes[idx]->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_970_, &pos, nullptr, nullptr, nullptr, nullptr); + SmallSoundManager::GetInstance()->playSound(SE_S_DOWSING_ADD); + } + } else if (mDemoFrame == 16) { + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (i != 4 && mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].isEnabled()) { + mAnm[convertSlotIndexToAnm(i) + DOWSING_ANIM_HAVE_OFFSET].setAnimEnable(false); + } + } + } + + if (mDemoFrame > 80) { + mDemoFrame = 0; + mStateMgr.changeState(StateID_DemoOut); + } +} +void dLytMeterDowsing_c::finalizeState_DemoMove() {} + +void dLytMeterDowsing_c::initializeState_DemoOut() { + mAnm[DOWSING_ANIM_IN].setBackwardsOnce(); + mAnm[DOWSING_ANIM_IN].setToStart(); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); +} +void dLytMeterDowsing_c::executeState_DemoOut() { + if (mAnm[DOWSING_ANIM_IN].isStop2()) { + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); + field_0x54F4 = 4; + mStateMgr.changeState(StateID_Wait); + } + if (mAnm[DOWSING_ANIM_IN].isEnabled()) { + mAnm[DOWSING_ANIM_IN].play(); + } +} +void dLytMeterDowsing_c::finalizeState_DemoOut() {} + +bool dLytMeterDowsing_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("nunBtn_03.brlyt", nullptr); + + for (int i = 0; i < DOWSING_NUM_PANES; i++) { + mpPanes[i] = mLyt.findPane(sPaneNames[i]); + } + + for (int i = 0; i < DOWSING_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[DOWSING_ANIM_SELECT_LOOP].setAnimEnable(true); + mAnm[DOWSING_ANIM_TYPE].setAnimEnable(true); + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + mIcon[i].setAnm(&mAnm[i + DOWSING_ANIM_ITEM_ONOFF_OFFSET]); + mIcon[i].init(); + } + + mBlink.setAnm(&mAnm[DOWSING_ANIM_SELECT_ONOFF]); + mBlink.init(); + mInput.setAnm(&mAnm[DOWSING_ANIM_INPUT_1]); + mInput.init(); + + for (int i = 0; i < 2; i++) { + mText[i].setAnm(&mAnm[i + DOWSING_ANIM_TEXT_ONOFF_OFFSET]); + mText[i].init(); + } + + for (int i = 0; i < 4; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextboxNames[i]); + } + + for (int i = 0; i < 3; i++) { + mpWindows[i] = mLyt.getWindow(sWindowNames[i]); + mpSizeBoxes[i] = mLyt.getSizeBoxInWindow(sWindowNames[i]); + } + mpWindows[0]->UpdateSize(mpSizeBoxes[0], 32.0f); + + for (int i = 0; i < 9; i++) { + mSubpanes[i].mpLytPane = &mItemIcons[i]; + mItemIcons[i].build(resAcc, dLytCommonIconItem_c::DOWSING); + mSubpaneList.PushBack(&mSubpanes[i]); + } + + if (mLyt.getLayout()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + linkMeters(g, &mSubpaneList); + } + } + + for (int i = 0; i < 9; i++) { + mItemIcons[i].reset(); + mItemIcons[i].setVisible(false); + mItemIcons[i].setSize(true); + } + + field_0x54E0 = 8; + + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + + mpOwnerPane = nullptr; + + field_0x54F4 = 0; + field_0x54F8 = -1; + mDemoFrame = 0; + field_0x5500 = 0; + field_0x54F0 = LytDoButtonRelated::DO_NONE; + field_0x54E4 = LytDoButtonRelated::DO_NONE; + field_0x54E8 = LytDoButtonRelated::DO_NONE; + field_0x54D8 = 15; + field_0x5505 = 0; + field_0x54EC = 1; + field_0x5504 = 0; + field_0x5508 = 0; + field_0x5509 = 0; + field_0x550A = 0; + + field_0x5506 = getPane()->IsVisible(); + field_0x5507 = 0; + field_0x550B = 0; + + mAnm[DOWSING_ANIM_IN].setForwardOnce(); + mAnm[DOWSING_ANIM_IN].setFrame(0.0f); + mAnm[DOWSING_ANIM_IN].setAnimEnable(true); + + mAnm[DOWSING_ANIM_CALL].setToEnd(); + mAnm[DOWSING_ANIM_CALL].setAnimEnable(true); + + mAnm[DOWSING_ANIM_INPUT_1].setForwardOnce(); + mAnm[DOWSING_ANIM_INPUT_1].setToEnd2(); + mAnm[DOWSING_ANIM_INPUT_1].setAnimEnable(true); + mAnm[DOWSING_ANIM_TEXT].setAnimEnable(true); + + setMessage(field_0x54E4); + + mAnm[DOWSING_ANIM_TEXT].setFrame(0.0f); + + mLyt.calc(); + + mAnm[DOWSING_ANIM_IN].setAnimEnable(false); + mAnm[DOWSING_ANIM_CALL].setAnimEnable(false); + mAnm[DOWSING_ANIM_INPUT_1].setAnimEnable(false); + mAnm[DOWSING_ANIM_LOOP].setAnimEnable(true); + + mStateMgr.changeState(StateID_Invisible); + + return true; +} + +bool dLytMeterDowsing_c::remove() { + for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) { + if (!it->mpLytPane->LytMeter0x24()) { + continue; + } + // @bug checking nullptr after invoking virtual function on it + d2d::dSubPane *subPane = it->mpLytPane; + if (subPane != nullptr) { + nw4r::lyt::Pane *parent = subPane->getPane()->GetParent(); + parent->RemoveChild(subPane->getPane()); + } + } + + for (int i = 0; i < DOWSING_NUM_ITEMS + 1; i++) { + mSubpanes[i].mpLytPane->remove(); + } + + for (int i = 0; i < DOWSING_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + + return true; +} + +bool dLytMeterDowsing_c::execute() { + if (dLytControlGame_c::getInstance()->isStateNormal()) { + if (StoryflagManager::sInstance->getCounterOrFlag(566) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) != LytDoButtonRelated::DO_NONE) { + if (dLytMeter_c::GetMain()->fn_800D5380(0)) { + field_0x5508 = 0; + StoryflagManager::sInstance->unsetFlag(566); + if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE) { + if (LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) { + StoryflagManager::sInstance->unsetFlag(818); + } + } + } else { + field_0x5508 = 1; + } + } else if (StoryflagManager::sInstance->getCounterOrFlag(818) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) { + if (field_0x5505 != 0 || field_0x550A != 0) { + field_0x5508 = 0; + StoryflagManager::sInstance->unsetFlag(818); + } else { + field_0x5508 = 1; + } + } + } else { + field_0x5508 = 0; + } + + bool newVisible = getPane()->IsVisible(); + if (field_0x5506 != newVisible) { + field_0x5506 = newVisible; + if (!newVisible) { + field_0x5507 = 1; + } + } + + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() != StateID_DemoMove && *mStateMgr.getStateID() != StateID_DemoOut && + field_0x550B != 0) { + mpPanes[DOWSING_PANE_INPUT_00]->SetVisible(true); + mpPanes[DOWSING_PANE_INPUT_01]->SetVisible(true); + if (mAnm[DOWSING_ANIM_INPUT_0].isEnabled()) { + mAnm[DOWSING_ANIM_INPUT_0].setFrame(0.0f); + mLyt.calc(); + mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(false); + } + field_0x550B = 0; + mStateMgr.changeState(StateID_Reset); + } + + if (*mStateMgr.getStateID() == StateID_MenuSelectingIn || *mStateMgr.getStateID() == StateID_MenuSelecting || + *mStateMgr.getStateID() == StateID_MenuSelectingOut) { + mStateMgr.changeState(StateID_Reset); + } + + if (*mStateMgr.getStateID() == StateID_Wait) { + field_0x5507 = 1; + } + return true; + } + + if (field_0x5506 == 0) { + return true; + } + + fn_800FE110(); + bool state = false; + s32 action = dLytDobutton_c::getFn0x8010E5E0(); + if (action == 8 || action == 10 || action == 30) { + LytDoButtonRelated::Action_e action = LytDoButtonRelated::convertDoButton(dLytDobutton_c::getFn0x8010E5D0()); + if (action >= 0) { + state = true; + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_C, action); + } + } + field_0x54E8 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C); + field_0x54EC = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_C) && + dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C); + if (*mStateMgr.getStateID() != StateID_ToUnuse && + (dLytMeter_c::GetMain()->getUiMode() == 0 || field_0x54E8 != 0x51)) { + if (field_0x54E8 != field_0x54E4) { + if (field_0x5500 != 0) { + field_0x54E4 = field_0x54E8; + setMessage(field_0x54E8); + } else { + field_0x5500 += 1; + } + } else { + field_0x5500 = 0; + } + } else { + field_0x5500 = 0; + } + + mStateMgr.executeState(); + + if (field_0x5504 != state) { + if (state) { + mAnm[DOWSING_ANIM_TEXT].setFrame(1.0f); + } else { + mAnm[DOWSING_ANIM_TEXT].setFrame(0.0f); + } + field_0x5504 = state; + } + + if (field_0x5508 != 0) { + if (field_0x5509 == 0) { + mAnm[DOWSING_ANIM_CALL].setToEnd(); + mAnm[DOWSING_ANIM_CALL].setAnimEnable(true); + field_0x5509 = 1; + } + if (mAnm[DOWSING_ANIM_CALL].isEnabled()) { + mAnm[DOWSING_ANIM_CALL].play(); + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C) && + mAnm[DOWSING_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_C_BUTTON_BLINK); + } + } + } else if (field_0x5509 == 1) { + mAnm[DOWSING_ANIM_CALL].setToEnd(); + } else if (mAnm[DOWSING_ANIM_CALL].isEnabled()) { + mAnm[DOWSING_ANIM_CALL].setAnimEnable(false); + } + + if (field_0x5508 == 0) { + field_0x5509 = field_0x5508; + } + field_0x5508 = 0; + + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + mIcon[i].execute(); + } + + if (mLyt.findPane("N_setBtn_00")->IsVisible()) { + mBlink.execute(); + mInput.execute(); + + if (mAnm[DOWSING_ANIM_INPUT_1].isEnabled()) { + mLyt.getLayout()->Animate(0); + mLyt.calc(); + } + } + + for (int i = 0; i < 2; i++) { + mText[i].execute(); + } + + // Rotate the arrow + mVec3_c t1(0.0f, 0.0f, 0.0f); + t1.z = mArrowRotation; + mpPanes[DOWSING_PANE_ITEM_ARROW]->SetRotate(t1); + // But rotate the button and the pointer back so that + // they point up + mVec3_c t2(0.0f, 0.0f, 0.0f); + t2.z = -mArrowRotation; + mpPanes[DOWSING_PANE_ARROW_HAND]->SetRotate(t2); + mpPanes[DOWSING_PANE_N_BTN_0]->SetRotate(t2); + + f32 frame = mAnm[DOWSING_ANIM_ARROW].getAnimDuration(); + if (mArrowLength < 0.0f) { + mArrowLength = 0.0f; + } + if (mArrowLength > 1.0f) { + mArrowLength = 1.0f; + } + mAnm[DOWSING_ANIM_ARROW].setFrame(frame * mArrowLength); + mAnm[DOWSING_ANIM_ARROW].setAnimEnable(true); + + if (mAnm[DOWSING_ANIM_SELECT_LOOP].isEnabled()) { + mAnm[DOWSING_ANIM_SELECT_LOOP].play(); + } + + if (mAnm[DOWSING_ANIM_LOOP].isEnabled()) { + mAnm[DOWSING_ANIM_LOOP].play(); + } + + for (int i = 0; i < DOWSING_NUM_ITEMS + 1; i++) { + mSubpanes[i].mpLytPane->execute(); + } + + return true; +} + +void dLytMeterDowsing_c::fn_800FE110() { + bool anySelected = false; + s32 selectedIdx = -1; + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + DowsingTarget::DowsingSlot slot = dowsingSlotForIndex(i); + if (field_0x54E0 == slot && field_0x54F4 == 0 && slot != DowsingTarget::SLOT_NONE && + DowsingTarget::hasDowsingInSlot(slot)) { + mIcon[i].setShouldBeSelect(true); + anySelected = true; + selectedIdx = i; + } else { + mIcon[i].setShouldBeSelect(false); + } + } + + setItemName(selectedIdx); + + if (anySelected) { + mBlink.setShouldBeSelect(true); + mText[0].setShouldBeSelect(true); + } else { + mBlink.setShouldBeSelect(false); + mText[0].setShouldBeSelect(false); + } + + if (dLytMeter_c::GetInstance()->getMeterField_0x1377F() != 0 && field_0x550A == 0) { + mInput.setShouldBeSelect(true); + } else { + mInput.setShouldBeSelect(false); + } +} + +void dLytMeterDowsing_c::fn_800FE220() { + if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && + dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->fn_800D5650() && + !dLytMeter_c::GetMain()->fn_800D5680()) { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(true); + mAnm[DOWSING_ANIM_RESET].setForwardOnce(); + mAnm[DOWSING_ANIM_RESET].setToStart(); + mItemIcons[0].setItem(convertToLytIndex(getSelectedDowsingSlot())); + mLyt.calc(); + mAnm[DOWSING_ANIM_RESET].setAnimEnable(false); + mLyt.findPane("N_bBtnText_00")->SetVisible(true); + mLyt.findPane("N_bBtnText_00")->SetAlpha(255); + } else { + mAnm[DOWSING_ANIM_RESET].setAnimEnable(true); + mAnm[DOWSING_ANIM_RESET].setForwardOnce(); + mAnm[DOWSING_ANIM_RESET].setToEnd2(); + mLyt.calc(); + mAnm[DOWSING_ANIM_RESET].setAnimEnable(false); + } +} + +bool dLytMeterDowsing_c::fn_800FE3C0(s32 arg) { + if (field_0x54F4 == 0) { + field_0x54F4 = 1; + field_0x54F8 = arg; + mDemoFrame = 0; + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + for (int i = 0; i < DOWSING_NUM_ITEMS; i++) { + mIcon[i].init(); + } + mpPanes[DOWSING_PANE_INPUT_00]->SetVisible(false); + mpPanes[DOWSING_PANE_INPUT_01]->SetVisible(false); + } else if (field_0x54F4 == 4) { + field_0x54F4 = 0; + return true; + } + return false; +} + +bool dLytMeterDowsing_c::fn_800FE490() const { + return field_0x54F4 != 0; +} + +bool dLytMeterDowsing_c::fn_800FE4B0() const { + if (field_0x5505 != 0 || field_0x54E0 < 8) { + if (*mStateMgr.getStateID() == StateID_ToUse || *mStateMgr.getStateID() == StateID_Wait) { + return true; + } + } + + return *mStateMgr.getStateID() == StateID_MenuSelectingIn || *mStateMgr.getStateID() == StateID_MenuSelecting || + *mStateMgr.getStateID() == StateID_MenuSelectingOut; +} + +bool dLytMeterDowsing_c::fn_800FE610() { + if ((!dLytMeter_c::GetMain()->getDowsingNotHiddenByAreaCaption() && !dLytAreaCaption_c::getVisible()) || + !getPane()->IsVisible() || dLytMeter_c::GetMain()->fn_800D5680()) { + return false; + } + return true; +} + +static const s32 lytIndexes[] = { + LYT_CMN_DowsingInvalid, LYT_CMN_DowsingTreasure, LYT_CMN_DowsingHeart, LYT_CMN_DowsingGoddessCube, + LYT_CMN_DowsingLook, LYT_CMN_DowsingGratitudeCrystal, LYT_CMN_DowsingInvalid, LYT_CMN_DowsingRupee, +}; + +s32 dLytMeterDowsing_c::convertToLytIndex(s32 slot) const { + if (slot == DowsingTarget::SLOT_STORY_EVENT) { + return DowsingTarget::getTopDowsingIcon(); + } else if (slot == DowsingTarget::SLOT_QUEST) { + return DowsingTarget::getLeftDowsingIcon(); + } else { + for (s32 i = 0; i < DOWSING_NUM_ITEMS; i++) { + if (slot == dowsingSlotForIndex(i)) { + return lytIndexes[i]; + } + } + return LYT_CMN_DowsingInvalid; + } +} + +u8 dLytMeterDowsing_c::getSelectedDowsingSlot() const { + if (dLytMeter_c::GetMain()->fn_800D5650()) { + return DowsingTarget::SLOT_NONE; + } else { + return FileManager::GetInstance()->getDowsingSlotIdx(); + } +} + +void dLytMeterDowsing_c::setItemName(s32 idx) { + if (idx >= 0 && field_0x54F4 == 0) { + mText[1].setShouldBeSelect(true); + SizedString<32> label; + label.sprintf("NAME_DOWSING_%03d_R", getDowsingItemIdForIndex(idx)); + mpTextBoxes[0]->setMessageWithGlobalTextProcessor2(label, nullptr); + mpTextBoxes[1]->setMessageWithGlobalTextProcessor2(label, nullptr); + mpWindows[1]->UpdateSize(mpSizeBoxes[1], 32.0f); + } else { + mText[1].setShouldBeSelect(false); + } +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +void dLytMeterDowsing_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 = 2; i <= 3; i++) { + mpTextBoxes[i]->SetVisible(true); + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + mpWindows[2]->SetVisible(true); + mpWindows[2]->UpdateSize(mpSizeBoxes[2], 32.0f); + field_0x54F0 = id; + } else { + mpTextBoxes[2]->SetVisible(false); + mpTextBoxes[3]->SetVisible(false); + mpWindows[2]->SetVisible(false); + } +} + +s32 dLytMeterDowsing_c::convertSlotIndexToAnm(s32 idx) const { + if (idx > 4) { + return idx - 1; + } else { + return idx; + } +} + +static const s32 unkTable[] = {0, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 6, 6, 6, 6, 1, 5, 7, 3}; + +s32 dLytMeterDowsing_c::fn_800FE9C0(s32 unkId) const { + return unkTable[unkId]; +} + +bool dLytMeterDowsing_c::shouldCall() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && + ((StoryflagManager::sInstance->getCounterOrFlag(566) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) != LytDoButtonRelated::DO_NONE) || + (StoryflagManager::sInstance->getCounterOrFlag(818) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52))) { + return true; + } + + return false; +} diff --git a/src/d/lyt/meter/d_lyt_meter_event_skip.cpp b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp index 27cc4ae4..4a1e9914 100644 --- a/src/d/lyt/meter/d_lyt_meter_event_skip.cpp +++ b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp @@ -1,6 +1,133 @@ #include "d/lyt/meter/d_lyt_meter_event_skip.h" +#include "d/d_sc_game.h" +#include "d/lyt/d2d.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "toBeSorted/event_manager.h" + STATE_DEFINE(dLytMeterEventSkip_c, Invisible); STATE_DEFINE(dLytMeterEventSkip_c, In); STATE_DEFINE(dLytMeterEventSkip_c, Visible); STATE_DEFINE(dLytMeterEventSkip_c, Out); + +static const d2d::LytBrlanMapping brlanMap[] = { + { "skip_00_in.brlan", "G_inOut_00"}, + {"skip_00_out.brlan", "G_inOut_00"}, +}; + +#define SKIP_ANIM_IN 0 +#define SKIP_ANIM_OUT 1 + +#define SKIP_NUM_ANIMS 2 + +void dLytMeterEventSkip_c::initializeState_Invisible() {} +void dLytMeterEventSkip_c::executeState_Invisible() { + if (shouldPromptForSkip() || dLytMeter_c::GetInstance()->getMeterField_0x13774()) { + if (dLytMeter_c::GetInstance()->getMeterField_0x13774()) { + for (int i = 0; i < 2; i++) { + mLyt.fn_800AB9A0(mpTextBoxes[i], 1); + } + } else { + for (int i = 0; i < 2; i++) { + mLyt.fn_800AB9A0(mpTextBoxes[i], 0); + } + } + + mpWindow->UpdateSize(mpSizeBox, 32.0f); + mVisible = true; + mAnm[SKIP_ANIM_IN].setAnimEnable(true); + mAnm[SKIP_ANIM_IN].setFrame(0.0f); + mStateMgr.changeState(StateID_In); + } +} +void dLytMeterEventSkip_c::finalizeState_Invisible() {} + +void dLytMeterEventSkip_c::initializeState_In() {} +void dLytMeterEventSkip_c::executeState_In() { + if (mAnm[SKIP_ANIM_IN].isStop2()) { + mLyt.calc(); // ??? + mAnm[SKIP_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Visible); + } +} +void dLytMeterEventSkip_c::finalizeState_In() {} + +void dLytMeterEventSkip_c::initializeState_Visible() {} +void dLytMeterEventSkip_c::executeState_Visible() { + if (!shouldPromptForSkip() && !dLytMeter_c::GetInstance()->getMeterField_0x13774()) { + mAnm[SKIP_ANIM_OUT].setAnimEnable(true); + mAnm[SKIP_ANIM_OUT].setFrame(0.0f); + mStateMgr.changeState(StateID_Out); + } +} +void dLytMeterEventSkip_c::finalizeState_Visible() {} + +void dLytMeterEventSkip_c::initializeState_Out() {} +void dLytMeterEventSkip_c::executeState_Out() { + if (mAnm[SKIP_ANIM_OUT].isStop2()) { + mAnm[SKIP_ANIM_OUT].setAnimEnable(false); + mVisible = false; + mStateMgr.changeState(StateID_Invisible); + } +} +void dLytMeterEventSkip_c::finalizeState_Out() {} + +static const char *sTextBoxes[] = { + "T_skipText_00", + "T_skipTextS_00", +}; + +bool dLytMeterEventSkip_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("skip_00.brlyt", nullptr); + + for (int i = 0; i < SKIP_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 < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]); + } + + mpWindow = mLyt.getWindow("W_bgP_00"); + mpSizeBox = mLyt.getSizeBoxInWindow("W_bgP_00"); + mpWindow->UpdateSize(mpSizeBox, 32.0f); + mLyt.setPriority(0x8A); + mVisible = false; + mStateMgr.changeState(StateID_Invisible); + + return true; +} + +bool dLytMeterEventSkip_c::remove() { + for (int i = 0; i < 2; i++) { + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterEventSkip_c::execute() { + mStateMgr.executeState(); + if (mVisible) { + for (int i = 0; i < 2; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + } + return true; +} + +bool dLytMeterEventSkip_c::draw() { + if (mVisible) { + mLyt.addToDrawList(); + } + return true; +} + +bool dLytMeterEventSkip_c::shouldPromptForSkip() const { + return dScGame_c::currentSpawnInfo.stageName == "Demo" ? false : EventManager::canSkipCurrentEvent(); +} 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..aeb3f9e1 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,15 @@ #include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h" +#include "common.h" +#include "d/a/d_a_player.h" +#include "d/d_camera.h" +#include "d/d_sc_game.h" +#include "d/lyt/d_lyt_meter_configuration.h" +#include "m/m_vec.h" +#include "toBeSorted/d_d3d.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/file_manager.h" + STATE_DEFINE(dLytMeterGanbariGauge_c, InvisibleWait); STATE_DEFINE(dLytMeterGanbariGauge_c, In); STATE_DEFINE(dLytMeterGanbariGauge_c, Wait); @@ -14,80 +24,704 @@ 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() == dAcPy_c::RIDING_BOAT) { + 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 (mStaminaPercent > 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 (mStaminaPercent < 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 (mStaminaPercent < 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 (mStaminaPercent < 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 (isStaminaLow(mStaminaPercent)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(1.0f); + mStateMgrWheel.changeState(StateID_Caution); + } else if (isStaminaCritical(mStaminaPercent)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f); + mStateMgrWheel.changeState(StateID_Caution); + } else if (mStaminaPercent >= 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 (mStaminaPercent <= 0.0001f) { + mStateMgrWheel.changeState(StateID_ToMin); + } else if (isStaminaCritical(mStaminaPercent)) { + mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f); + } else if (isStaminaLow(mStaminaPercent)) { + 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 (mStaminaPercent >= 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() == dAcPy_c::RIDING_BOAT) { + field_0x554 = 4.0f; + } else if (swimmingRelated()) { + field_0x554 = 1.0f; + } else { + field_0x554 = 2.0f; + } +} +void dLytMeterGanbariGauge_c::executeState_Recovery() { + if (swimmingRelated()) { + if (mStaminaPercent >= 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 (mStaminaPercent >= 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::isStaminaLow(f32 arg) { + if (swimmingRelated()) { + return arg <= 0.125f; + } else { + return arg <= 0.3f; + } +} + +bool dLytMeterGanbariGauge_c::isStaminaCritical(f32 arg) { + if (swimmingRelated()) { + return false; + } else { + return arg <= 0.1f; + } +} + 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); + + mStaminaPercent = 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; + mpOwnerPane = 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 (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgrMain.getStateID() != StateID_InvisibleWait) { + mStateMgrMain.changeState(StateID_InvisibleWait); + } + return true; + } + + if (fn_80104710(false) || (isCrawling() && !fn_801047B0())) { + field_0x534 = 1; + } else if (dLytMeterConfiguration_c::GetInstance()->field_0x13C) { + field_0x534 = 0; + } else { + field_0x534 = 1; + } + + bool b12 = false; + field_0x558 = 0; + f32 drinkFrame = 0.0f; + if (displayAirInsteadOfStamina()) { + if (FileManager::GetInstance()->hasAirPotionPlus() || FileManager::GetInstance()->hasAirPotionNormal()) { + b12 = true; + if ((FileManager::GetInstance()->hasAirPotionNormal() && + FileManager::GetInstance()->getAirPotionTimer() < 600) || + (FileManager::GetInstance()->hasAirPotionPlus() && + FileManager::GetInstance()->getAirPotionPlusTimer() < 600)) { + field_0x558 = 1; + } + if (FileManager::GetInstance()->hasAirPotionPlus()) { + drinkFrame = 3.0f; + } else if (FileManager::GetInstance()->hasAirPotionNormal()) { + drinkFrame = 1.0f; + } + } + } else { + if (dAcPy_c::GetLink()->isAffectedByStaminaPotionPlus() || dAcPy_c::GetLink()->isAffectedByStaminaPotion()) { + b12 = true; + if ((dAcPy_c::GetLink()->isAffectedByStaminaPotion() && + FileManager::GetInstance()->getStaminaPotionTimer() < 600) || + (dAcPy_c::GetLink()->isAffectedByStaminaPotionPlus() && + FileManager::GetInstance()->getStaminaPotionPlusTimer() < 600)) { + field_0x558 = 1; + } + if (dAcPy_c::GetLink()->isAffectedByStaminaPotionPlus()) { + drinkFrame = 2.0f; + } else if (dAcPy_c::GetLink()->isAffectedByStaminaPotion()) { + drinkFrame = 1.0f; + } + } + } + + mVec3_c diff = dAcPy_c::GetLink()->poscopy3 - dScGame_c::getCamera(0)->getPositionMaybe(); + f32 len = diff.mag(); + mVec3_c v; + d3d::fn_80016960(v, dAcPy_c::GetLink()->poscopy3); + if (!EventManager::isInEvent()) { + field_0x524 = v; + } + + s32 angle = 0; + mVec3_c v1(field_0x524); + mVec2_c v2(0.0f, 0.0f); + if (fn_80104710(true)) { + field_0x540 = 5; + } else if (field_0x540 > 0 && *mStateMgrMain.getStateID() == StateID_Wait) { + mStateMgrMain.changeState(StateID_CameraOut); + } + + f32 scale; + if (fn_80104710(false) || (isCrawling() && !fn_801047B0())) { + if (dAcPy_c::GetLink()->getRidingActorType() == dAcPy_c::RIDING_BOAT) { + angle = 4; + v1.x = 232.0f; + v1.y = 145.0f; + scale = 1.12f; + } else if (displayAirInsteadOfStamina()) { + angle = 2; + scale = 1.45f; + v1.x = 232.0f; + v1.y = 145.0f; + } else { + angle = 2; + scale = 1.3f; + v1.x = 232.0f; + v1.y = 145.0f; + } + } else if (fn_801047B0()) { + v2.set(-32.0f, -40.0f); + scale = 0.8f; + } else if (field_0x55B) { + v2.x = -44.0f; + v2.y = -105.0f; + v2.y += 46.0f; + scale = 1.0f; + } else if (dAcPy_c::GetLink()->getRidingActorType() == dAcPy_c::RIDING_BOAT) { + angle = 3; + v2.set(-95.0f, -50.0f); + scale = 0.9f; + } else if (field_0x559 && swimmingRelated()) { + angle = 1; + v2.set(-65.0f, 0.0f); + scale = 1.0f; + } else if (field_0x534 == 0) { + v2.set(-44.0f, -105.0f); + scale = 1.0f; + } else { + v1.x = 216.0f; + v1.y = -60.0f; + scale = 1.4f; + } + + v1.x = v1.x + v2.x; + v1.y = v1.y + v2.y; + v1.z = 0.0f; + mLyt.getLayout()->GetRootPane()->SetTranslate(v1); + mVec2_c scaleV(scale, scale); + mLyt.getLayout()->GetRootPane()->SetScale(scaleV); + + if (!field_0x534 && len <= dLytMeterConfiguration_c::GetInstance()->field_0x138 && !fn_80104710(false) && + !isCrawling()) { + field_0x530 = 1; + } else { + field_0x530 = 0; + } + + for (int i = 0; i < GANBARI_NUM_ANIMS; i++) { + if (i != GANBARI_ANIM_ANGLE && i != GANBARI_ANIM_UPDOWN_0 && i != GANBARI_ANIM_UPDOWN_1 && + i != GANBARI_ANIM_USE && i != GANBARI_ANIM_COLOR && i != GANBARI_ANIM_DRINK) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + } + + mAnm[GANBARI_ANIM_UPDOWN_0].setFrame(mStaminaPercent * 100.0f); + mAnm[GANBARI_ANIM_ANGLE].setFrame(angle); + + mStateMgrWheel.executeState(); + + if (field_0x544 != 0) { + if (mStaminaPercent < field_0x550 && + mStaminaPercent < field_0x51C - dLytMeterConfiguration_c::GetInstance()->getField_0x1CC()) { + field_0x548 = dLytMeterConfiguration_c::GetInstance()->getField_0x1C8(); + field_0x54C = field_0x51C; + field_0x550 = mStaminaPercent; + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(field_0x54C * 100.0f); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + } else { + if (field_0x548 > 0) { + field_0x548--; + } + if (field_0x548 == 0) { + field_0x54C -= dLytMeterConfiguration_c::GetInstance()->getField_0x1D0(); + if (field_0x54C < mStaminaPercent) { + field_0x544 = 0; + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f); + mLyt.calc(); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false); + } else { + f32 frame = field_0x54C * 100.0f; + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(frame); + } + } + } + } else { + if (mStaminaPercent < field_0x51C - dLytMeterConfiguration_c::GetInstance()->getField_0x1C4()) { + field_0x544 = 1; + field_0x54C = field_0x51C; + field_0x550 = mStaminaPercent; + field_0x548 = dLytMeterConfiguration_c::GetInstance()->getField_0x1C8(); + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(field_0x54C * 100.0f); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + } else { + mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(mStaminaPercent * 100.0f); + mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true); + } + } + + if (b12) { + if (!mAnm[GANBARI_ANIM_M_LOOP].isEnabled()) { + mAnm[GANBARI_ANIM_M_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_M_LOOP].setAnimEnable(true); + } + } else if (mAnm[GANBARI_ANIM_M_LOOP].getFrame() < 1.0f) { + mAnm[GANBARI_ANIM_M_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_M_LOOP].setAnimEnable(false); + } + + if (b12 && field_0x558) { + if (!mAnm[GANBARI_ANIM_M_CAUTION].isEnabled()) { + mAnm[GANBARI_ANIM_M_CAUTION].setFrame(0.0f); + mAnm[GANBARI_ANIM_M_CAUTION].setAnimEnable(true); + } + } else if (mAnm[GANBARI_ANIM_M_CAUTION].getFrame() < 1.0f) { + mAnm[GANBARI_ANIM_M_CAUTION].setFrame(0.0f); + mAnm[GANBARI_ANIM_M_CAUTION].setAnimEnable(false); + } + + if (!b12 && mStaminaPercent < field_0x51C) { + if (!mAnm[GANBARI_ANIM_LOOP].isEnabled()) { + mAnm[GANBARI_ANIM_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_LOOP].setAnimEnable(true); + } + } else if (mAnm[GANBARI_ANIM_LOOP].getFrame() < 1.0f) { + mAnm[GANBARI_ANIM_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_LOOP].setAnimEnable(false); + } + + mAnm[GANBARI_ANIM_COLOR].setFrame(field_0x554); + mAnm[GANBARI_ANIM_COLOR].setAnimEnable(true); + + mAnm[GANBARI_ANIM_DRINK].setFrame(drinkFrame); + mAnm[GANBARI_ANIM_DRINK].setAnimEnable(true); + + if (!EventManager::isInEvent() && !dAcPy_c::GetLink()->hasvt_0x1C0() && + !dAcPy_c::GetLink()->checkActionFlagsCont(0x10) && + (d3d::fn_80016A90(dAcPy_c::GetLink()->poscopy3) || fn_80104710(false) || isCrawling()) && + *mStateMgrWheel.getStateID() != StateID_Full && *mStateMgrMain.getStateID() == StateID_InvisibleWait && + !field_0x530) { + mStateMgrMain.changeState(StateID_In); + } else if (!EventManager::isInEvent() && *mStateMgrWheel.getStateID() == StateID_Full && + *mStateMgrWheel.getOldStateID() != StateID_Full && *mStateMgrMain.getStateID() == StateID_Wait) { + mStateMgrMain.changeState(StateID_OutWait); + } else if ((EventManager::isInEvent() || dAcPy_c::GetLink()->hasvt_0x1C0() || + dAcPy_c::GetLink()->checkActionFlagsCont(0x10) || + (!d3d::fn_80016A90(dAcPy_c::GetLink()->poscopy3) && !fn_80104710(false) && !isCrawling())) && + *mStateMgrMain.getStateID() == StateID_Wait) { + mStateMgrMain.changeState(StateID_CameraOut); + } else if (field_0x530 && *mStateMgrMain.getStateID() == StateID_Wait) { + mStateMgrMain.changeState(StateID_CameraOut); + } + + if (field_0x540 > 0) { + field_0x540--; + } + + if (field_0x55A != swimmingRelated() && *mStateMgrMain.getStateID() == StateID_Wait) { + mStateMgrMain.changeState(StateID_Out); + field_0x55A = swimmingRelated(); + } + + mStateMgrMain.executeState(); + field_0x51C = mStaminaPercent; + return true; } -const char *dLytMeterGanbariGauge_c::getName() const { - return mLyt.getName(); +bool dLytMeterGanbariGauge_c::fn_80104710(bool arg) const { + if (dAcPy_c::GetLink() != nullptr && + dAcPy_c::GetLink()->checkActionFlagsCont(0x400 | 0x100 | 0x80 | 0x40 | 0x10 | 0x4 | 0x2 | 0x1) && + dAcPy_c::GetLink()->checkActionFlagsCont(0x40)) { + return true; + } + if (!arg && field_0x540 > 0) { + return true; + } + return false; } -d2d::LytBase_c *dLytMeterGanbariGauge_c::getLyt() { - return &mLyt; +bool dLytMeterGanbariGauge_c::fn_80104760() const { + const dAcPy_c *link = dAcPy_c::GetLink(); + if (link != nullptr && + (link->checkActionFlagsCont(0x2) || link->checkActionFlagsCont(0x80) || link->checkActionFlagsCont(0x4) || + link->checkActionFlagsCont(0x10) || link->checkActionFlagsCont(0x100))) { + return true; + } + return false; } -nw4r::lyt::Pane *dLytMeterGanbariGauge_c::getPane() { - return mLyt.getLayout()->GetRootPane(); +bool dLytMeterGanbariGauge_c::fn_801047B0() const { + if (fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu") || + fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu2")) { + return true; + } + return false; +} + +bool dLytMeterGanbariGauge_c::isCrawling() const { + return dAcPy_c::GetLink()->checkActionFlags(dAcPy_c::FLG0_CRAWLING); +} + +bool dLytMeterGanbariGauge_c::swimmingRelated() { + if (!dAcPy_c::GetLink()->checkFlags0x340(0x100) || dAcPy_c::GetLink()->getCurrentAction() == 0x57 || + dAcPy_c::GetLink()->checkActionFlags(dAcPy_c::FLG0_IN_WATER)) { + return true; + } + return false; +} + +bool dLytMeterGanbariGauge_c::displayAirInsteadOfStamina() { + if (field_0x554 == 1.0f) { + return true; + } + if (field_0x554 == 2.0f && swimmingRelated()) { + return true; + } + return false; +} + +void dLytMeterGanbariGauge_c::realizeAnimState() { + mAnm[GANBARI_ANIM_TO_MIN].setToStart(); + mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true); + + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f); + mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(true); + + 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() == dAcPy_c::RIDING_BOAT) { + 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_heart.cpp b/src/d/lyt/meter/d_lyt_meter_heart.cpp new file mode 100644 index 00000000..0c6ed76a --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_heart.cpp @@ -0,0 +1,382 @@ +#include "d/lyt/meter/d_lyt_meter_heart.h" + +#include "common.h" +#include "d/a/d_a_player.h" +#include "d/d_sc_game.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_game_over.h" +#include "nw4r/math/math_types.h" +#include "toBeSorted/effects_struct.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/file_manager.h" +#include "toBeSorted/small_sound_mgr.h" + +static const d2d::LytBrlanMapping brlanMap[] = { + { "heartAll_00_heat.brlan", "G_heart_00"}, + { "heartAll_00_heat.brlan", "G_heart_01"}, + { "heartAll_00_heat.brlan", "G_heart_02"}, + { "heartAll_00_heat.brlan", "G_heart_03"}, + { "heartAll_00_heat.brlan", "G_heart_04"}, + { "heartAll_00_heat.brlan", "G_heart_05"}, + { "heartAll_00_heat.brlan", "G_heart_06"}, + { "heartAll_00_heat.brlan", "G_heart_07"}, + { "heartAll_00_heat.brlan", "G_heart_08"}, + { "heartAll_00_heat.brlan", "G_heart_09"}, + { "heartAll_00_heat.brlan", "G_heart_10"}, + { "heartAll_00_heat.brlan", "G_heart_11"}, + { "heartAll_00_heat.brlan", "G_heart_12"}, + { "heartAll_00_heat.brlan", "G_heart_13"}, + { "heartAll_00_heat.brlan", "G_heart_14"}, + { "heartAll_00_heat.brlan", "G_heart_15"}, + { "heartAll_00_heat.brlan", "G_heart_16"}, + { "heartAll_00_heat.brlan", "G_heart_17"}, + { "heartAll_00_heat.brlan", "G_heart_18"}, + { "heartAll_00_heat.brlan", "G_heart_19"}, + {"heartAll_00_heartMain.brlan", "G_heartMain_00"}, + { "heartAll_00_drink.brlan", "G_drink_00"}, + { "heartAll_00_mLoop.brlan", "G_mLoop_00"}, + { "heartAll_00_mCaution.brlan", "G_mCaution_00"}, + { "heartAll_00_loop.brlan", "G_loop_00"}, + { "heartAll_00_danger.brlan", "G_danger_00"}, +}; + +#define HEART_ANIM_HEAT_OFFSET 0 +#define HEART_ANIM_MAIN 20 +#define HEART_ANIM_DRINK 21 +#define HEART_ANIM_MLOOP 22 +#define HEART_ANIM_MCAUTION 23 +#define HEART_ANIM_LOOP 24 +#define HEART_ANIM_DANGER 25 + +#define HEART_NUM_ANIMS 26 + +#define HEART_NUM_HEARTS 20 + +static const char *sPaneNames[] = { + "N_heart_00", "N_heart_01", "N_heart_02", "N_heart_03", "N_heart_04", "N_heart_05", "N_heart_06", + "N_heart_07", "N_heart_08", "N_heart_09", "N_heart_10", "N_heart_11", "N_heart_12", "N_heart_13", + "N_heart_14", "N_heart_15", "N_heart_16", "N_heart_17", "N_heart_18", "N_heart_19", + +}; + +bool dLytMeterHeart_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("heartAll_00.brlyt", nullptr); + + for (int i = 0; i < HEART_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + if (i <= HEART_NUM_HEARTS) { + mAnm[i].setAnimEnable(true); + } else { + mAnm[i].setAnimEnable(false); + } + } + + for (int i = 0; i < HEART_NUM_HEARTS; i++) { + mpHeartPanes[i] = mLyt.findPane(sPaneNames[i]); + } + + mpAlphaPane = mLyt.findPane("N_heartAlpha_00"); + mpMainPane = mLyt.findPane("N_heartMain_00"); + + mCurrentHealth = 0; + mCurrentHealthCapacity = 0; + mStoredHealth = 0; + mStoredHealthCapacity = 0; + mHealthCapacityIncreaseDelayTimer = 0; + mEffectHeartIdx = -1; + field_0x78C = 0; + field_0x790 = 0; + field_0x794 = 0; + field_0x797 = 0; + mIsLoop = false; + mIsDanger = false; + field_0x79A = 0; + + mCurrentHealth = getCurrentHealth(); + mCurrentHealthCapacity = getCurrentHealthCapacity(); + mStoredHealth = mCurrentHealth; + mStoredHealthCapacity = mCurrentHealthCapacity; + field_0x794 = 1; + realizeHeartsState(); + field_0x795 = 1; + + mLyt.calc(); + + return true; +} + +bool dLytMeterHeart_c::remove() { + return true; +} + +bool dLytMeterHeart_c::execute() { + if (field_0x78C > 0) { + field_0x78C--; + } + if (field_0x790 > 0) { + field_0x790--; + } + executeInternal(); + + if (mIsLoop) { + if (!mAnm[HEART_ANIM_LOOP].isEnabled()) { + mAnm[HEART_ANIM_LOOP].setFrame(0.0f); + mAnm[HEART_ANIM_LOOP].setAnimEnable(true); + } + } else { + if (mAnm[HEART_ANIM_LOOP].isEnabled()) { + mAnm[HEART_ANIM_LOOP].setFrame(0.0f); + mLyt.calc(); + mAnm[HEART_ANIM_LOOP].setAnimEnable(false); + } + } + + if (mIsDanger) { + if (dAcPy_c::GetLink2()->getField_0x4564() == 1.0f) { + if (!mAnm[HEART_ANIM_DANGER].isEnabled()) { + mAnm[HEART_ANIM_DANGER].setAnimEnable(true); + } + mAnm[HEART_ANIM_DANGER].setFrame(0.0f); + } + } else { + if (mAnm[HEART_ANIM_DANGER].isEnabled()) { + mAnm[HEART_ANIM_DANGER].setToEnd(); + mLyt.getLayout()->Animate(0); + mLyt.calc(); + mAnm[HEART_ANIM_DANGER].setAnimEnable(false); + } + } + + f32 drinkFrame = 0.0f; + bool hasGuardianPotion = false; + bool hasExpiringGuardianPotion = false; + if (FileManager::GetInstance()->hasGuardianPotionPlus()) { + drinkFrame = 2.0f; + hasGuardianPotion = true; + } else if (FileManager::GetInstance()->hasGuardianPotionNormal()) { + hasGuardianPotion = true; + drinkFrame = 1.0f; + } + + if ((FileManager::GetInstance()->hasGuardianPotionNormal() && + FileManager::GetInstance()->getGuardianPotionTimer() < 600) || + (FileManager::GetInstance()->hasGuardianPotionPlus() && + FileManager::GetInstance()->getGuardianPotionPlusTimer() < 600)) { + hasExpiringGuardianPotion = true; + } + + if (hasGuardianPotion) { + if (!mAnm[HEART_ANIM_MLOOP].isEnabled()) { + mAnm[HEART_ANIM_MLOOP].setFrame(0.0f); + mAnm[HEART_ANIM_MLOOP].setAnimEnable(true); + } + } else if (mAnm[HEART_ANIM_MLOOP].getFrame() < 1.0f) { + mAnm[HEART_ANIM_MLOOP].setFrame(0.0f); + mLyt.getLayout()->Animate(0); + mAnm[HEART_ANIM_MLOOP].setAnimEnable(false); + } + + if (hasGuardianPotion && hasExpiringGuardianPotion) { + if (!mAnm[HEART_ANIM_MCAUTION].isEnabled()) { + mAnm[HEART_ANIM_MCAUTION].setFrame(0.0f); + mAnm[HEART_ANIM_MCAUTION].setAnimEnable(true); + } + } else if (mAnm[HEART_ANIM_MCAUTION].getFrame() < 1.0f) { + mAnm[HEART_ANIM_MCAUTION].setFrame(0.0f); + mLyt.getLayout()->Animate(0); + mAnm[HEART_ANIM_MCAUTION].setAnimEnable(false); + } + + mAnm[HEART_ANIM_DRINK].setFrame(drinkFrame); + mAnm[HEART_ANIM_DRINK].setAnimEnable(true); + + for (int i = 0; i < HEART_NUM_ANIMS; i++) { + if (i > HEART_NUM_HEARTS + 1 && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + if (mIsDanger && mAnm[HEART_ANIM_DANGER].isEndReached()) { + mAnm[HEART_ANIM_DANGER].setToEnd(); + mAnm[HEART_ANIM_DANGER].setAnimEnable(false); + } + + mLyt.calc(); + + return true; +} + +s32 dLytMeterHeart_c::getNumDisplayedHearts() const { + return mStoredHealthCapacity / 4; +} + +s32 dLytMeterHeart_c::getDisplayedHealthCapacity() const { + return getNumDisplayedHearts() * 4; +} + +void dLytMeterHeart_c::realizeHeartsState() { + s32 hearts = getNumDisplayedHearts(); + (void)getDisplayedHealthCapacity(); + s32 health = mStoredHealth; + s32 healthCapacity = mStoredHealthCapacity; + s32 numFilledHearts = health / 4; + s32 partialHeartFill = health % 4; // Wrong + s32 displayedFilledHearts = healthCapacity / 4; + s32 mNumTotalHeartsIncludingPartial = (getCurrentHealthCapacity() + 3) / 4; + if (displayedFilledHearts < mNumTotalHeartsIncludingPartial) { + mNumTotalHeartsIncludingPartial = displayedFilledHearts; + } + + mIsLoop = false; + mIsDanger = false; + + for (int i = 0; i < HEART_NUM_HEARTS; i++) { + if (i < mNumTotalHeartsIncludingPartial) { + mpHeartPanes[i]->SetVisible(true); + if (i < displayedFilledHearts) { + if (i < hearts) { + if (numFilledHearts == 0 && partialHeartFill == 0) { + if (i == 0) { + mpMainPane->SetVisible(false); + } + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f); + } else if (i < numFilledHearts) { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(0.0f); + if (i == numFilledHearts - 1 && partialHeartFill == 0) { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(2.0f); + mpMainPane->SetVisible(true); + mpMainPane->SetTranslate(mpHeartPanes[i]->GetTranslate()); + mAnm[HEART_ANIM_MAIN].setFrame(4.0f); + if (dAcPy_c::GetLink2() != nullptr && + dAcPy_c::GetLink2()->hasLessThanQuarterHealth(false)) { + mIsDanger = true; + } else { + mIsLoop = true; + } + } else { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(0.0f); + } + } else if (i == numFilledHearts && partialHeartFill != 0) { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(2.0f); + mpMainPane->SetVisible(true); + mpMainPane->SetTranslate(mpHeartPanes[i]->GetTranslate()); + mAnm[HEART_ANIM_MAIN].setFrame(partialHeartFill); + if (dAcPy_c::GetLink2() != nullptr && dAcPy_c::GetLink2()->hasLessThanQuarterHealth(false)) { + mIsDanger = true; + } else { + mIsLoop = true; + } + } else { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f); + } + } else { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f); + } + } else { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f); + } + } else { + mpHeartPanes[i]->SetVisible(false); + } + } +} +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_972_; +void dLytMeterHeart_c::executeInternal() { + if (mEffectHeartIdx >= 0) { + nw4r::math::MTX34 mtx = mpHeartPanes[mEffectHeartIdx]->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_972_, &pos, nullptr, nullptr, nullptr, nullptr); + SmallSoundManager::GetInstance()->playSound(SE_S_HEART_ADD); + mEffectHeartIdx = -1; + } + + // Redundant + if (!field_0x794) { + mCurrentHealth = getCurrentHealth(); + mCurrentHealthCapacity = getCurrentHealthCapacity(); + field_0x794 = 1; + } + + mCurrentHealthCapacity = getCurrentHealthCapacity(); + mCurrentHealth = getCurrentHealth(); + + if (field_0x796) { + for (int i = 0; i < HEART_NUM_HEARTS; i++) { + mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f); + } + mLyt.calc(); + field_0x796 = 0; + } + + bool isDanger = dAcPy_c::GetLink2()->hasLessThanQuarterHealth(0); + bool healthDifferent = mStoredHealth != mCurrentHealth; + bool healthCapacityDifferent = mStoredHealthCapacity != mCurrentHealthCapacity; + if (healthCapacityDifferent && field_0x790 < 20) { + field_0x790 = 20; + } + if (healthDifferent || field_0x797 != isDanger) { + s32 current = mCurrentHealth; + if (mStoredHealth + 1 <= current) { + mStoredHealth = mStoredHealth + 1; + if (mpAlphaPane->IsVisible() && mpAlphaPane->GetGlobalAlpha() != 0 && mStoredHealth % 4 == 0 && + (!(dScGame_c::currentSpawnInfo.stageName == "F406") || dScGame_c::currentSpawnInfo.layer != 13) && + dLytGameOver_c::GetInstance() == nullptr) { + SmallSoundManager::GetInstance()->playSound(SE_S_HP_GAUGE_UP); + } + } else { + if (mStoredHealth - 1 >= current) { + mStoredHealth = mStoredHealth - 1; + if (EventManager::isInEvent() && !strcmp(EventManager::getCurrentEventName(), ("MoleF202Start")) && + mStoredHealth % 4 == 0) { + SmallSoundManager::GetInstance()->playSound(SE_S_HP_GAUGE_DOWN); + } + } + } + realizeHeartsState(); + if (healthDifferent && field_0x78C < 10) { + field_0x78C = 10; + } + field_0x797 = isDanger; + } else if (healthCapacityDifferent) { + if (mStoredHealthCapacity + 1 <= mCurrentHealthCapacity) { + if ((mStoredHealthCapacity + 1) % 4 == 0) { + if (mHealthCapacityIncreaseDelayTimer < 15) { + mHealthCapacityIncreaseDelayTimer += 1; + return; + } + mHealthCapacityIncreaseDelayTimer = 0; + } + mStoredHealthCapacity++; + if (mStoredHealthCapacity % 4 == 0) { + field_0x79A = 1; + } + } else { + if (mStoredHealthCapacity - 1 >= mCurrentHealthCapacity) { + mStoredHealthCapacity = mStoredHealthCapacity - 1; + } + } + if (field_0x79A && mStoredHealth > mCurrentHealthCapacity - 3) { + s32 numDisplayed = getNumDisplayedHearts(); + if (numDisplayed >= 1 && numDisplayed <= 20) { + mEffectHeartIdx = numDisplayed - 1; + field_0x79A = 0; + } + } + realizeHeartsState(); + if (field_0x78C < 20) { + field_0x78C = 20; + } + } else if (field_0x79A) { + field_0x79A = 0; + } +} + +u8 dLytMeterHeart_c::getCurrentHealth() const { + return FileManager::GetInstance()->getCurrentHealth(); +} + +u8 dLytMeterHeart_c::getCurrentHealthCapacity() const { + return dAcPy_c::getCurrentHealthCapacity(); +} 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..f79df912 100644 --- a/src/d/lyt/meter/d_lyt_meter_item_select.cpp +++ b/src/d/lyt/meter/d_lyt_meter_item_select.cpp @@ -1,12 +1,2749 @@ #include "d/lyt/meter/d_lyt_meter_item_select.h" +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_itembase.h" +#include "d/a/d_a_player.h" +#include "d/d_pad.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_common_icon_item_maps.h" +#include "d/lyt/d_lyt_control_game.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 "s/s_Math.h" +#include "sized_string.h" +#include "toBeSorted/effects_struct.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/minigame_mgr.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() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterItemSelectIcon_c::finalizeState_Wait() {} + +void dLytMeterItemSelectIcon_c::initializeState_On() {} +void dLytMeterItemSelectIcon_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectIcon_c::finalizeState_On() {} + +void dLytMeterItemSelectIcon_c::initializeState_Select() {} +void dLytMeterItemSelectIcon_c::executeState_Select() { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + if (mShouldBeSelect == 0) { + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterItemSelectIcon_c::finalizeState_Select() {} + +void dLytMeterItemSelectIcon_c::initializeState_Off() {} +void dLytMeterItemSelectIcon_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectIcon_c::finalizeState_Off() {} + +void dLytMeterItemSelectIcon_c::init() { + mShouldBeSelect = 0; + mpAnm->setFrame(0.0f); + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterItemSelectIcon_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterItemSelectBlink_c::initializeState_Wait() {} +void dLytMeterItemSelectBlink_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterItemSelectBlink_c::finalizeState_Wait() {} + +void dLytMeterItemSelectBlink_c::initializeState_On() {} +void dLytMeterItemSelectBlink_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectBlink_c::finalizeState_On() {} + +void dLytMeterItemSelectBlink_c::initializeState_Select() {} +void dLytMeterItemSelectBlink_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterItemSelectBlink_c::finalizeState_Select() {} + +void dLytMeterItemSelectBlink_c::initializeState_Off() {} +void dLytMeterItemSelectBlink_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectBlink_c::finalizeState_Off() {} + +void dLytMeterItemSelectBlink_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterItemSelectBlink_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterItemSelectText_c::initializeState_Wait() {} +void dLytMeterItemSelectText_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterItemSelectText_c::finalizeState_Wait() {} + +void dLytMeterItemSelectText_c::initializeState_On() {} +void dLytMeterItemSelectText_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectText_c::finalizeState_On() {} + +void dLytMeterItemSelectText_c::initializeState_Select() {} +void dLytMeterItemSelectText_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterItemSelectText_c::finalizeState_Select() {} + +void dLytMeterItemSelectText_c::initializeState_Off() {} +void dLytMeterItemSelectText_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterItemSelectText_c::finalizeState_Off() {} + +void dLytMeterItemSelectText_c::init() { + mShouldBeSelect = 0; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterItemSelectText_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterItemSelectBtn_c::initializeState_Invisible() { + mDelay = 15; +} +void dLytMeterItemSelectBtn_c::executeState_Invisible() { + if (mpAnm->isEnabled()) { + mpAnm->setAnimEnable(false); + } + + if (mShouldBeVisible) { + if (mDelay <= 0) { + mStateMgr.changeState(StateID_On); + } else { + mDelay--; + } + } else { + mDelay = 15; + } +} +void dLytMeterItemSelectBtn_c::finalizeState_Invisible() {} + +void dLytMeterItemSelectBtn_c::initializeState_On() { + mpAnm->setBackwardsOnce(); + + if (mInstant) { + mpAnm->setToEnd2(); + mInstant = false; + } + + mpAnm->setAnimEnable(true); +} +void dLytMeterItemSelectBtn_c::executeState_On() { + if (!mShouldBeVisible) { + mStateMgr.changeState(StateID_Off); + } else { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Visible); + } else if (mInstant) { + mpAnm->setToEnd2(); + mInstant = false; + mStateMgr.changeState(StateID_Visible); + } + if (mpAnm->isEnabled()) { + mpAnm->play(); + } + } +} +void dLytMeterItemSelectBtn_c::finalizeState_On() {} + +void dLytMeterItemSelectBtn_c::initializeState_Visible() {} +void dLytMeterItemSelectBtn_c::executeState_Visible() { + if (mpAnm->isEnabled()) { + mpAnm->setAnimEnable(false); + } + if (!mShouldBeVisible) { + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterItemSelectBtn_c::finalizeState_Visible() {} + +void dLytMeterItemSelectBtn_c::initializeState_Off() { + mpAnm->setForwardOnce(); + + if (mInstant) { + mpAnm->setToEnd2(); + mInstant = false; + } + + mpAnm->setAnimEnable(true); +} +void dLytMeterItemSelectBtn_c::executeState_Off() { + if (mShouldBeVisible) { + mStateMgr.changeState(StateID_On); + } else { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Invisible); + } else if (mInstant) { + mpAnm->setToEnd2(); + mInstant = false; + mStateMgr.changeState(StateID_Invisible); + } + if (mpAnm->isEnabled()) { + mpAnm->play(); + } + } +} +void dLytMeterItemSelectBtn_c::finalizeState_Off() {} + +void dLytMeterItemSelectBtn_c::init(s32 i, d2d::dLytSub *lyt, nw4r::lyt::Pane *pane) { + mpLyt = lyt; + mIdx = i; + mpPane1 = pane; + mpPane2 = nullptr; + mDelay = 15; + mShouldBeVisible = 0; + mInstant = 0; + field_0x57 = 0; + mStateMgr.changeState(StateID_Invisible); +} + +void dLytMeterItemSelectBtn_c::execute() { + if (mpPane2 != nullptr && mpPane2->IsVisible() && mpPane1->IsVisible()) { + mStateMgr.executeState(); + } +} + +void dLytMeterItemSelectBtn_c::setVisible(bool bVisible, bool bInstant) { + mShouldBeVisible = bVisible; + mInstant = bInstant; + field_0x57 = 1; + if (bInstant) { + mDelay = 0; + } +} + +void dLytMeterItemSelectBtn_c::setVisible(bool bVisible) { + if (mpAnm->isEnabled()) { + setVisible(bVisible, true); + } else { + mpAnm->setAnimEnable(true); + mShouldBeVisible = bVisible; + if (bVisible) { + mpAnm->setFrame(0.0f); + mStateMgr.changeState(StateID_Visible); + } else { + mpAnm->setToEnd(); + mStateMgr.changeState(StateID_Invisible); + } + mpLyt->getLayout()->Animate(0); + mpLyt->calc(); + mpAnm->setAnimEnable(false); + } +} + +bool dLytMeterItemSelectBtn_c::isSettled() const { + return !mpAnm->isEnabled(); +} + +void dLytMeterItemSelectBtn_c::setVisible2(bool bVisible) { + field_0x57 = 1; + if (bVisible) { + mDelay = 15; + mShouldBeVisible = true; + mInstant = false; + mpAnm->setToEnd(); + mStateMgr.changeState(StateID_Visible); + } else { + mDelay = 15; + mShouldBeVisible = false; + mInstant = false; + mpAnm->setFrame(0.0f); + mStateMgr.changeState(StateID_Invisible); + } +} + +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", +}; + +#define ITEM_SELECT_PANE_ITEM_ARROW 0 +#define ITEM_SELECT_PANE_ARROW_HAND 1 +#define ITEM_SELECT_PANE_N_BTN_0 2 +#define ITEM_SELECT_PANE_ITEM_SELECT 3 +#define ITEM_SELECT_PANE_SET_BTN 4 +#define ITEM_SELECT_PANE_B_BTN_1 5 +#define ITEM_SELECT_PANE_BTN_BG 6 +#define ITEM_SELECT_PANE_BTN 7 +#define ITEM_SELECT_PANE_INPUT 8 +#define ITEM_SELECT_PANE_ICON_OFFSET 9 + +#define ITEM_SELECT_NUM_PANES 17 + +static const int sDemoMoveIntsUnk[] = {4, 2, 3, 1, 7, 6, 5, 0}; + +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_ITEM_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 + +#define ITEM_SELECT_NUM_ITEMS 8 + +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 *sGroupName = "G_ref_00"; + dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null) { - field_0x574C = 11; - field_0x5750 = 11; + field_0x574C = I_INVALID; + field_0x5750 = I_INVALID; field_0x5754 = 0; field_0x5758 = -1; field_0x575C = 0; - field_0x5760 = 0; + mDemoMoveTimer = 0; field_0x5764 = -1; field_0x5768 = 2; + + field_0x57B5 = 0; + field_0x57B6 = 0; + field_0x57B7 = 0; + field_0x57B8 = 0; + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + field_0x57A3[i] = false; + mIsBocoburinLocked[i] = false; + } +} + +void dLytMeterItemSelect_c::initializeState_InitWait() {} +void dLytMeterItemSelect_c::executeState_InitWait() { + if (field_0x57B5 == 0) { + return; + } + if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) { + field_0x579A = field_0x5794; + } + + bool blocked = isWheelBlockedByCurrentAction(); + if ((field_0x574C != I_INVALID && field_0x5794 != I_INVALID && !blocked) || field_0x579A != I_INVALID) { + realizeSelectedWheelItem(); + fn_800EF8C0(true); + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + for (int i = 0; i < 4; i++) { + if (i == 2) { + mBtn[i].setVisible2(false); + } else { + mBtn[i].setVisible2(true); + } + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(true); + if (i == 2) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setToEnd(); + } else { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setFrame(0.0f); + } + } + + mLyt.calc(); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(false); + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].setAnimEnable(true); + mStateMgr.changeState(StateID_Wait); + } else { + for (int i = 0; i < 4; i++) { + mBtn[i].setVisible2(false); + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(true); + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setToEnd(); + } + + mLyt.calc(); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(false); + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + mBtn[1].setVisible(false); + mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].setAnimEnable(true); + mStateMgr.changeState(StateID_Unuse); + } + } else { + if (field_0x5754 != 1) { + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mpPanes[ITEM_SELECT_PANE_ITEM_SELECT]->SetVisible(false); + } + mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].setAnimEnable(true); + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + for (int i = 0; i < 4; i++) { + if (i == 2 && blocked) { + mBtn[i].setVisible2(false); + } else { + mBtn[i].setVisible2(true); + } + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(true); + if (i == 2 && blocked) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setToEnd(); + } else { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setFrame(0.0f); + } + } + + mLyt.calc(); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(false); + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + + if (blocked) { + field_0x5768 = 0; + mStateMgr.changeState(StateID_FrameOffIn); + } else { + mStateMgr.changeState(StateID_Wait); + } + } else { + for (int i = 0; i < 4; i++) { + if (i != 2 || blocked) { + mBtn[i].setVisible2(false); + } else { + mBtn[i].setVisible2(true); + } + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(true); + if (i != 2 || blocked) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setToEnd(); + } else { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setFrame(0.0f); + } + } + + mLyt.calc(); + + for (int i = 0; i < 4; i++) { + mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET].setAnimEnable(false); + } + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + mStateMgr.changeState(StateID_Unuse); + } + } +} +void dLytMeterItemSelect_c::finalizeState_InitWait() {} + +void dLytMeterItemSelect_c::initializeState_Wait() { + if (mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->GetAlpha() == 64) { + mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(255); + } +} +void dLytMeterItemSelect_c::executeState_Wait() { + if (field_0x57B3 == 1 && (field_0x5794 == I_INVALID || LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == + LytDoButtonRelated::DO_STOP)) { + mStateMgr.changeState(StateID_SetNone); + } else if (field_0x57B3 == 0 && field_0x5794 == I_INVALID && + (field_0x579A == I_SAILCLOTH || field_0x579A == I_BOAT_CANNON || field_0x579A == I_HARP)) { + mStateMgr.changeState(StateID_SetNone); + } else if (field_0x5754 == 1) { + mStateMgr.changeState(StateID_DemoMove); + } else if (field_0x57A0 != 0) { + field_0x5780 = mAnm[ITEM_SELECT_ANIM_DECIDE].getAnimDuration(); + mStateMgr.changeState(StateID_SetIn); + } else if (field_0x57A2 != 0) { + mStateMgr.changeState(StateID_SelectIn); + } else if (isWheelBlockedByCurrentAction()) { + field_0x5768 = 0; + mStateMgr.changeState(StateID_FrameOffIn); + } else if ((field_0x5794 == I_SAILCLOTH || (field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP)) && + field_0x579A == I_INVALID) { + mStateMgr.changeState(StateID_SetSpecialItemIn); + } else if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + mStateMgr.changeState(StateID_ToUnuse); + } else if (!dLytMeter_c::GetMain()->fn_800D5650() && !dLytMeter_c::GetMain()->fn_800D5680() && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) != LytDoButtonRelated::DO_ITEMS && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) != LytDoButtonRelated::DO_RETURN && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) != LytDoButtonRelated::DO_DONE && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) != LytDoButtonRelated::DO_STOP && + (field_0x5794 != I_BOAT_CANNON && field_0x5794 != I_HARP && field_0x5794 != I_INVALID && + field_0x5794 != I_SAILCLOTH)) { + mStateMgr.changeState(StateID_ResetIn); + } +} +void dLytMeterItemSelect_c::finalizeState_Wait() {} + +void dLytMeterItemSelect_c::initializeState_SelectIn() { + if (dAcPy_c::GetLink()->checkFlags0x340(0x400)) { + field_0x57BD = 1; + field_0x5788 = 0; + field_0x579B = 0; + mEffects.fn_80027320(0); + mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetInfluencedAlpha(true); + mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(64); + } + + if (mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_FULL].setToEnd(); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(false); + } + + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_DECIDE].setFrame(0.0f); + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (fn_800F01B0(i)) { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(0.0f); + if (fn_800F01E0(i)) { + mIsBocoburinLocked[i] = true; + } + } else { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(true); + } + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + mAnm[i + ITEM_SELECT_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[i + ITEM_SELECT_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[i + ITEM_SELECT_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + mIcon[i].setShouldBeSelect(0); + } + + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false); + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(false); + } + + mpPanes[ITEM_SELECT_PANE_ITEM_SELECT]->SetVisible(true); + + mAnm[ITEM_SELECT_ANIM_IN].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + realizeWheelItems(); +} +void dLytMeterItemSelect_c::executeState_SelectIn() { + bool bAllAnimsSettled = true; + if (field_0x57BD != 0) { + if (field_0x5788 > 0) { + field_0x5788--; + bAllAnimsSettled = false; + } else { + field_0x57BE = 1; + bool settled0x57BE = true; + bool settled0x5784 = true; + if (field_0x579B != 0xFF) { + settled0x57BE = sLib::chaseUC(&field_0x579B, 0xFF, 0x55); + } + if (field_0x5784 != 1.0f) { + settled0x5784 = sLib::chase(&field_0x5784, 1.0f, 0.06666666f); + } + mEffects.fn_80027320(field_0x579B); + if (!settled0x57BE || !settled0x5784) { + bAllAnimsSettled = false; + } + } + } + + if (bAllAnimsSettled) { + if (mAnm[ITEM_SELECT_ANIM_IN].isEndReached()) { + mStateMgr.changeState(StateID_Select); + } + } + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_SelectIn() { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); +} + +void dLytMeterItemSelect_c::initializeState_Select() {} +void dLytMeterItemSelect_c::executeState_Select() { + if (dLytMeter_c::getCrossBtn0x7BF8() == 0 && dPad::checkButtonDpadDownPressed()) { + if (field_0x5794 != I_INVALID) { + field_0x5780 = 0.0f; + mStateMgr.changeState(StateID_SetIn); + } else { + mStateMgr.changeState(StateID_SelectOut); + } + } else if (field_0x57A2 == 0) { + if (field_0x57A0 != 0 || field_0x5794 != I_INVALID) { + field_0x5780 = 0.0f; + mStateMgr.changeState(StateID_SetIn); + } else { + mStateMgr.changeState(StateID_SelectOut); + } + } +} +void dLytMeterItemSelect_c::finalizeState_Select() {} + +void dLytMeterItemSelect_c::initializeState_SetIn() { + if (mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_FULL].setToEnd(); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(false); + } + + if (field_0x5780 == mAnm[ITEM_SELECT_ANIM_DECIDE].getAnimDuration()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(mAnm[ITEM_SELECT_ANIM_IN].getAnimDuration()); + } + + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_DECIDE].setFrame(field_0x5780); + mBtn[0].setVisible(true, false); + mBtn[2].setVisible(false, true); + mLyt.calc(); + field_0x57B3 = 1; + field_0x578C = 3; + if (field_0x57BD != 0) { + field_0x5788 = 0; + } +} +void dLytMeterItemSelect_c::executeState_SetIn() { + bool bAllAnimsSettled = true; + if (field_0x57BD != 0) { + if (field_0x5788 > 0) { + field_0x5788--; + bAllAnimsSettled = false; + } else { + bool settled0x57BE = true; + bool settled0x5784 = true; + if (field_0x579B != 0) { + settled0x57BE = sLib::chaseUC(&field_0x579B, 0, 0x55); + } + if (field_0x5784 != 0.8f) { + settled0x5784 = sLib::chase(&field_0x5784, 0.8f, 0.06666666f); + } + mEffects.fn_80027320(field_0x579B); + if (settled0x57BE && settled0x5784) { + field_0x57BD = 0; + field_0x57BE = 0; + mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(0xFF); + } else { + bAllAnimsSettled = false; + } + } + } + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + } + + if (bAllAnimsSettled) { + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEndReached()) { + if (!mBtn[1].getShouldBeVisible()) { + mBtn[1].setVisible(true, true); + } + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false); + mStateMgr.changeState(StateID_Set); + } + } + + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_DECIDE].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_SetIn() {} + +void dLytMeterItemSelect_c::initializeState_SetSpecialItemIn() { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setToEnd(); + + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + + mBtn[0].setVisible(true); + mBtn[1].setVisible(true); + mBtn[3].setVisible(true); + + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + + if (field_0x57B3 != 0) { + mAnm[ITEM_SELECT_ANIM_OUT].setToStart(); + } else { + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2(); + if (field_0x5798 == I_INVALID) { + mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mBtn[2].setVisible(false); + mBtn[0].setVisible(true); + mBtn[1].setVisible(true); + } else { + mBtn[2].setVisible(false, false); + mBtn[0].setVisible(true, false); + mBtn[1].setVisible(true, false); + } + } + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + field_0x579A = field_0x5794; +} +void dLytMeterItemSelect_c::executeState_SetSpecialItemIn() { + if (field_0x57B4 != 0 && !mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + } + + if (mAnm[ITEM_SELECT_ANIM_OUT].isStop2() && mBtn[0].isSettled() && mBtn[1].isSettled() && mBtn[2].isSettled()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + } else { + mStateMgr.changeState(StateID_Wait); + } + } + + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].play(); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_SetSpecialItemIn() {} + +void dLytMeterItemSelect_c::initializeState_Set() { + if (field_0x5794 == I_HARP && field_0x5790 <= 0) { + field_0x5790 = 10; + } + if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) { + field_0x579A = field_0x5794; + } +} +void dLytMeterItemSelect_c::executeState_Set() { + if (field_0x57A0 == 0) { + if (field_0x5794 == I_INVALID) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mpPanes[ITEM_SELECT_PANE_ITEM_SELECT]->SetVisible(false); + if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + mStateMgr.changeState(StateID_ToUnuse); + } else { + mStateMgr.changeState(StateID_SetNone); + } + } else { + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setToStart(); + mStateMgr.changeState(StateID_SetOut); + } + } else { + if ((field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) && + field_0x579A != field_0x5794) { + mStateMgr.changeState(StateID_SetSpecialItemIn); + } else if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) && field_0x5790 <= 0 && + (field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP)) { + mStateMgr.changeState(StateID_ToUnuse); + } else if (field_0x57A2 != 0) { + mStateMgr.changeState(StateID_SelectIn); + } + } +} +void dLytMeterItemSelect_c::finalizeState_Set() {} + +void dLytMeterItemSelect_c::initializeState_SetOut() { + field_0x57B3 = 0; + field_0x5790 = 0; +} +void dLytMeterItemSelect_c::executeState_SetOut() { + if (mAnm[ITEM_SELECT_ANIM_OUT].isStop2()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + field_0x57B3 = 0; + field_0x579A = I_INVALID; + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_SetOut() {} + +void dLytMeterItemSelect_c::initializeState_SetNone() { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + if (field_0x5795 == I_SAILCLOTH || field_0x5795 == I_BOAT_CANNON || field_0x5795 == I_HARP) { + // "instant" + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + mBtn[0].setVisible(true, true); + mBtn[2].setVisible(true, true); + } else { + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mBtn[0].setVisible(true, false); + mBtn[2].setVisible(true, false); + } +} +void dLytMeterItemSelect_c::executeState_SetNone() { + if (field_0x5754 == 1) { + mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + fn_800F0310(); + } else { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2() && mBtn[0].isSettled()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B3 = 0; + field_0x579A = I_INVALID; + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } + } +} +void dLytMeterItemSelect_c::finalizeState_SetNone() {} + +void dLytMeterItemSelect_c::initializeState_SelectOut() { + mAnm[ITEM_SELECT_ANIM_IN].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_IN].setToStart(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + field_0x57B3 = 0; + if (field_0x5796 != I_INVALID) { + mBtn[2].setVisible(false, false); + } else { + mBtn[2].setVisible(true, false); + } + if (field_0x57BD != 0) { + field_0x5788 = 0; + } +} +void dLytMeterItemSelect_c::executeState_SelectOut() { + bool bAllAnimsSettled = true; + if (field_0x57BD != 0) { + if (field_0x5788 > 0) { + field_0x5788--; + bAllAnimsSettled = false; + } else { + bool settled0x57BE = true; + bool settled0x5784 = true; + if (field_0x579B != 0) { + settled0x57BE = sLib::chaseUC(&field_0x579B, 0, 0x55); + } + if (field_0x5784 != 0.8f) { + settled0x5784 = sLib::chase(&field_0x5784, 0.8f, 0.06666666f); + } + mEffects.fn_80027320(field_0x579B); + if (settled0x57BE && settled0x5784) { + field_0x57BD = 0; + field_0x57BE = 0; + mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(0xFF); + } else { + bAllAnimsSettled = false; + } + } + } + + if (bAllAnimsSettled) { + if (mAnm[ITEM_SELECT_ANIM_IN].isStop2() && mBtn[2].isSettled()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mpPanes[ITEM_SELECT_PANE_ITEM_SELECT]->SetVisible(false); + mStateMgr.changeState(StateID_Wait); + } + } + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_SelectOut() {} + +void dLytMeterItemSelect_c::initializeState_ResetIn() { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mBtn[2].setVisible(true); + setBtnText(mLastDoButtonRelatedAction); +} +void dLytMeterItemSelect_c::executeState_ResetIn() { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B3 = 0; + mStateMgr.changeState(StateID_Reset); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_ResetIn() {} + +void dLytMeterItemSelect_c::initializeState_Reset() {} +void dLytMeterItemSelect_c::executeState_Reset() { + if (field_0x57A2 != 0 || field_0x5754 == 1 || + (field_0x57A0 != 0 && (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) { + mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + fn_800F0310(); + } else if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) { + mStateMgr.changeState(StateID_SetSpecialItemIn); + } else if (LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_ITEMS || + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_RETURN || + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_DONE || + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::DO_STOP || + field_0x5794 == I_INVALID || !dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + field_0x5754 == 1) { + mStateMgr.changeState(StateID_ResetOut); + } +} +void dLytMeterItemSelect_c::finalizeState_Reset() {} + +void dLytMeterItemSelect_c::initializeState_ResetOut() { + mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + mBtn[2].setVisible(false); +} +void dLytMeterItemSelect_c::executeState_ResetOut() { + if (field_0x57A2 != 0 || field_0x5754 == 1 || + (field_0x57A0 != 0 && (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) { + mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2(); + mBtn[2].setVisible(false, true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + fn_800F0310(); + } else { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2() && mBtn[2].isSettled()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } + } +} +void dLytMeterItemSelect_c::finalizeState_ResetOut() {} + +void dLytMeterItemSelect_c::initializeState_ToUse() { + if (field_0x5796 != I_INVALID) { + field_0x57B4 = 0; + } + field_0x57C4 = 0; + mBtn[1].setVisible(true, false); + mBtn[0].setVisible(true, false); + + if (field_0x57B3 == 0) { + if (field_0x5796 != I_INVALID) { + mBtn[2].setVisible(false, false); + } else { + mBtn[2].setVisible(true, false); + } + + if (field_0x57B4 != 0) { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + } + } else if (field_0x5794 != I_INVALID && (field_0x5795 == I_BOAT_CANNON || field_0x5795 == I_HARP)) { + field_0x57B3 = 0; + field_0x57C4 = 1; + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setToStart(); + } +} +void dLytMeterItemSelect_c::executeState_ToUse() { + if (field_0x57A2 != 0 || field_0x5754 == 1 || + (field_0x57A0 != 0 && (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) { + if (field_0x57C4 != 0 && mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2(); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + } + + fn_800F0310(); + } else { + bool b = false; + if (field_0x57C4 != 0) { + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_OUT].isStop2()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + b = true; + } + } else { + b = true; + } + } else { + b = true; + } + + if (mBtn[1].isSettled() && b) { + if (field_0x57B3 == 0) { + if (mBtn[0].isSettled() && mBtn[2].isSettled()) { + if (field_0x57B4 != 0) { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + } else { + mStateMgr.changeState(StateID_Wait); + } + } + } else { + mStateMgr.changeState(StateID_Wait); + } + } + + if (field_0x57B3 == 0 && field_0x57B4 != 0 && mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } + + if (field_0x57C4 != 0 && mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].play(); + } + } +} +void dLytMeterItemSelect_c::finalizeState_ToUse() { + if (field_0x57B3 == 0 && field_0x57B4 != 0) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B4 = 0; + } +} + +void dLytMeterItemSelect_c::initializeState_ToUnuse() { + mBtn[1].setVisible(false, false); + mBtn[0].setVisible(false, false); + if (field_0x57B3 == 0) { + if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false, false); + } else { + mBtn[2].setVisible(true, false); + } + } + + field_0x57A1 = field_0x57A0; +} +void dLytMeterItemSelect_c::executeState_ToUnuse() { + if (field_0x57B3 == 0 && field_0x5794 == I_INVALID && + (field_0x579A == I_SAILCLOTH || field_0x579A == I_BOAT_CANNON || field_0x579A == I_HARP)) { + mStateMgr.changeState(StateID_SetNone); + } else if (field_0x57A2 != 0 || field_0x5754 == 1 || + (field_0x57A0 != 0 && (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) { + fn_800F0310(); + return; + } + + if (field_0x57A0 == 0 && field_0x57A1 != 0) { + field_0x57A1 = field_0x57A0; + if (field_0x5794 == I_INVALID) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mBtn[1].setVisible(false); + mBtn[2].setVisible(true); + } else { + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2(); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + mBtn[2].setVisible(false); + field_0x57B3 = 0; + } + } + + if (mBtn[1].isSettled() && mBtn[0].isSettled()) { + mBtn[1].setVisible(false); + mBtn[0].setVisible(false); + if (field_0x57B3 == 0) { + if (mBtn[2].isSettled()) { + if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false); + } else { + mBtn[2].setVisible(true); + } + mStateMgr.changeState(StateID_Unuse); + } + } else { + mStateMgr.changeState(StateID_Unuse); + } + } +} +void dLytMeterItemSelect_c::finalizeState_ToUnuse() {} + +void dLytMeterItemSelect_c::initializeState_Unuse() {} +void dLytMeterItemSelect_c::executeState_Unuse() { + if (isWheelBlockedByCurrentAction()) { + field_0x5768 = 1; + mBtn[2].setVisible(false); + mStateMgr.changeState(StateID_FrameOffIn); + } else if (field_0x57A2 != 0 || field_0x5754 == 1 || + (field_0x57A0 != 0 && (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || + (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) { + fn_800F0310(); + } else if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) || field_0x5754 == 1) { + if (field_0x5794 != I_INVALID) { + if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) { + mStateMgr.changeState(StateID_SetSpecialItemIn); + return; + } + } else { + field_0x57B4 = 0; + } + mStateMgr.changeState(StateID_ToUse); + } +} +void dLytMeterItemSelect_c::finalizeState_Unuse() {} + +void dLytMeterItemSelect_c::initializeState_DemoMove() { + mDemoMoveTimer = 0; + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (field_0x5758 < 8) { + if (i == sDemoMoveIntsUnk[field_0x5758]) { + field_0x57A3[i] = false; + field_0x575C++; + } else { + field_0x57A3[i] = true; + } + } else if ((i == 0 || i == 2 || i == 3) && fn_800F01B0(i)) { + field_0x57A3[i] = false; + field_0x575C++; + } else { + field_0x57A3[i] = true; + } + mIsBocoburinLocked[i] = false; + } + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (fn_800F01B0(i)) { + if (fn_800F01E0(i) || field_0x57A3[i] == 0) { + if (isSlotBocoburinLocked(i)) { + mIsBocoburinLocked[i] = true; + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(0.0f); + } else { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + } else { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(0.0f); + } + } else { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(true); + } + + realizeWheelItems(); + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + mpPanes[ITEM_SELECT_PANE_B_BTN_1]->SetVisible(true); + mpPanes[ITEM_SELECT_PANE_ITEM_SELECT]->SetVisible(true); + field_0x57C5 = 1; + mpPanes[ITEM_SELECT_PANE_BTN_BG]->SetVisible(false); + mpPanes[ITEM_SELECT_PANE_BTN]->SetVisible(false); + mpPanes[ITEM_SELECT_PANE_INPUT]->SetVisible(false); + + mAnm[ITEM_SELECT_ANIM_IN].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_IN].setToEnd2(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(false); + } + + SmallSoundManager::GetInstance()->playSound(SE_S_GET_ITEM_SET); +} +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_740_; +void dLytMeterItemSelect_c::executeState_DemoMove() { + mDemoMoveTimer++; + if (mDemoMoveTimer == 15) { + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (fn_800F01B0(i) && !field_0x57A3[i]) { + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setFrame(0.0f); + field_0x57A3[i] = true; + + field_0x575C--; + + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(true); + mLyt.calc(); + mAnm[i + ITEM_SELECT_ANIM_HAVE_OFFSET].setAnimEnable(false); + + nw4r::math::MTX34 mtx = mpPanes[i + ITEM_SELECT_PANE_ICON_OFFSET]->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_740_, &pos, nullptr, nullptr, nullptr, nullptr); + + if (mIsBocoburinLocked[i]) { + mIsBocoburinLocked[i] = false; + field_0x5799 = I_INVALID; + } else { + field_0x5799 = getInternalBaseItemForSlot(i); + field_0x5794 = field_0x5799; + } + } + } + realizeWheelItems(); + } + + if (mDemoMoveTimer > 80) { + mDemoMoveTimer = 0; + if (field_0x575C <= 0) { + mStateMgr.changeState(StateID_DemoOut0); + } + } +} +void dLytMeterItemSelect_c::finalizeState_DemoMove() {} + +void dLytMeterItemSelect_c::initializeState_DemoOut0() { + if (field_0x5799 != I_INVALID) { + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_DECIDE].setFrame(0.0f); + } else { + mAnm[ITEM_SELECT_ANIM_IN].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_IN].setToStart(); + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + } +} +void dLytMeterItemSelect_c::executeState_DemoOut0() { + if (field_0x5799 != I_INVALID) { + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEndReached()) { + if (!mBtn[1].getShouldBeVisible()) { + mBtn[1].setVisible(true, true); + } + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false); + mStateMgr.changeState(StateID_DemoOut1); + } + + if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_DECIDE].play(); + } + } else { + if (mAnm[ITEM_SELECT_ANIM_IN].isStop2()) { + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + field_0x5754 = 4; + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_IN].play(); + } + } +} +void dLytMeterItemSelect_c::finalizeState_DemoOut0() {} + +void dLytMeterItemSelect_c::initializeState_DemoOut1() { + mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_OUT].setFrame(0.0f); +} +void dLytMeterItemSelect_c::executeState_DemoOut1() { + if (mAnm[ITEM_SELECT_ANIM_OUT].isEndReached()) { + mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false); + field_0x57B3 = 1; + field_0x5754 = 4; + field_0x5799 = I_INVALID; + mStateMgr.changeState(StateID_Wait); + } + + if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_OUT].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_DemoOut1() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffIn() { + field_0x57C2 = 0; + if ((field_0x57B3 == 0 || (field_0x57B3 == 1 && field_0x57B4 == 1)) && field_0x5768 == 1) { + mBtn[0].setVisible(true, false); + mBtn[1].setVisible(true, false); + } + + if (field_0x5768 == 1) { + mBtn[0].setVisible(true, false); + } + + if (field_0x57B3 == 0) { + if (field_0x5794 == I_INVALID) { + mBtn[2].setVisible(false, false); + } else if (field_0x57B4 == 0) { + field_0x57C2 = 1; + mBtn[2].setVisible(false, true); + } + } + + if (field_0x57B3 == 0 && field_0x5794 != I_INVALID) { + mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + } +} +void dLytMeterItemSelect_c::executeState_FrameOffIn() { + bool isDone = true; + if (!mBtn[0].isSettled()) { + isDone = false; + } + if (!mBtn[1].isSettled()) { + isDone = false; + } + if (!mBtn[2].isSettled()) { + isDone = false; + } + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + } else { + isDone = false; + } + } + + if (isDone) { + mStateMgr.changeState(StateID_FrameOffMove); + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } +} +void dLytMeterItemSelect_c::finalizeState_FrameOffIn() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffMove() {} +void dLytMeterItemSelect_c::executeState_FrameOffMove() { + if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + mBtn[1].setVisible(false, false); + mBtn[0].setVisible(false, false); + } else { + mBtn[1].setVisible(true, false); + mBtn[0].setVisible(true, false); + } + + if (!isWheelBlockedByCurrentAction()) { + mStateMgr.changeState(StateID_FrameOffOut); + } +} +void dLytMeterItemSelect_c::finalizeState_FrameOffMove() {} + +void dLytMeterItemSelect_c::initializeState_FrameOffOut() { + if (!mpPanes[ITEM_SELECT_PANE_SET_BTN]->IsVisible()) { + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + } + + if (field_0x57B3 == 0 && field_0x5794 != I_INVALID) { + if (field_0x57A0 != 0) { + field_0x57B3 = 1; + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_DECIDE].setToEnd(); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false); + } else { + mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce(); + mAnm[ITEM_SELECT_ANIM_RESET].setToStart(); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true); + } + + if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + mBtn[0].setVisible(false); + mBtn[1].setVisible(false); + mBtn[2].setVisible(false); + } else { + mBtn[0].setVisible(true, false); + mBtn[1].setVisible(true, false); + mBtn[3].setVisible(true); + mBtn[2].setVisible(false, false); + } + } else { + mBtn[0].setVisible(true, false); + mBtn[1].setVisible(true, false); + mBtn[3].setVisible(true); + if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false, false); + } else { + mBtn[2].setVisible(true, false); + } + } +} +void dLytMeterItemSelect_c::executeState_FrameOffOut() { + bool isDone = true; + if (!mBtn[0].isSettled()) { + isDone = false; + } + if (!mBtn[1].isSettled()) { + isDone = false; + } + if (!mBtn[2].isSettled()) { + isDone = false; + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + } else { + isDone = false; + } + } + + if (isDone) { + if (field_0x57C2 != 0) { + field_0x57C2 = 0; + } + + if (field_0x5768 == 1) { + mBtn[1].setVisible(false); + mStateMgr.changeState(StateID_Unuse); + } else if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B)) { + mBtn[1].setVisible(false); + mStateMgr.changeState(StateID_Unuse); + } else { + mBtn[0].setVisible(true); + mBtn[1].setVisible(true); + mBtn[3].setVisible(true); + if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false); + } else { + mBtn[2].setVisible(true); + } + mStateMgr.changeState(StateID_Wait); + } + } + + if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) { + mAnm[ITEM_SELECT_ANIM_RESET].play(); + } +} +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 < ITEM_SELECT_NUM_PANES; 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 < ITEM_SELECT_NUM_ITEMS; i++) { + mIcon[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_ITEM_ONOFF_OFFSET]); + mIcon[i].init(); + } + + mBlink.setAnm(&mAnm[ITEM_SELECT_ANIM_SELECT_ONOFF]); + mBlink.init(); + + field_0x578C = 0; + field_0x5790 = 0; + field_0x5784 = 0.8f; + field_0x5788 = 0; + field_0x579B = 0; + field_0x57BD = 0; + field_0x57BE = 0; + field_0x57BF = 0; + field_0x57C0 = 1; + field_0x57C1 = 0; + field_0x57C2 = 0; + field_0x57C3 = 0; + field_0x57C4 = 0; + field_0x57C5 = 0; + + mEffects.init(dLytControlGame_c::getInstance()); + + 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()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + linkMeters(g, &mSubpaneList); + } + } + + for (int i = 0; i < 9; i++) { + mItemIcons[i].reset(); + mItemIcons[i].setVisible(false); + mItemIcons[i].setSize(true); + } + + field_0x5794 = I_INVALID; + field_0x5795 = I_INVALID; + field_0x5796 = I_INVALID; + field_0x5797 = I_INVALID; + field_0x5798 = I_INVALID; + field_0x5799 = I_INVALID; + field_0x579A = I_INVALID; + + mStoredBowVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BOW)); + mStoredSlingshotVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_SLINGSHOT)); + mStoredBeetleVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BEETLE)); + mStoredBugNetVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BUG_NET)); + + field_0x57B3 = 0; + field_0x57B4 = 0; + + realizeWheelItems(); + setBtnItem(field_0x5796); + + mAnm[ITEM_SELECT_ANIM_NUMBERV].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_CALL].setToEnd(); + mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(true); + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 0].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 0].setToEnd(); + + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 1].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 1].setToEnd(); + + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 2].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 2].setToEnd(); + + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 3].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 3].setToEnd(); + + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(false); + + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 0].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 1].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 2].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_INPUT_OFFSET + 3].setAnimEnable(false); + + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + + field_0x57A0 = 0; + field_0x57A1 = 0; + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + field_0x5780 = 0.0f; + + mpOwnerPane = nullptr; + + field_0x57B9 = 0; + field_0x57BA = 0; + field_0x57BB = 0; + field_0x57BC = 0; + field_0x5774 = 0; + mLastDoButtonRelatedAction = LytDoButtonRelated::DO_NONE; + field_0x5770 = 5; + + setBtnText(LytDoButtonRelated::DO_NONE); + + 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; + } + // @bug checking nullptr after invoking virtual function on it + 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 != I_SAILCLOTH && field_0x5794 != I_BOAT_CANNON && + field_0x5794 != I_HARP)) { + field_0x57B9 = 0; + StoryflagManager::sInstance->unsetFlag(569); + } else { + field_0x57B9 = 1; + } + } + + field_0x57BF = field_0x57BE; + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() != StateID_DemoMove && *mStateMgr.getStateID() != StateID_DemoOut0 && + *mStateMgr.getStateID() != StateID_DemoOut1 && field_0x57C5 != 0) { + mpPanes[ITEM_SELECT_PANE_BTN_BG]->SetVisible(true); + mpPanes[ITEM_SELECT_PANE_BTN]->SetVisible(true); + mpPanes[ITEM_SELECT_PANE_INPUT]->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 != I_INVALID) { + if (field_0x5794 != I_INVALID) { + 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 != I_INVALID) { + 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].setVisible(true, true); + mBtn[0].setVisible(true, true); + + field_0x57B3 = 0; + + if (field_0x5798 != I_INVALID) { + if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false, true); + } else { + mBtn[2].setVisible(true, true); + } + } else if (field_0x5794 != I_INVALID) { + mBtn[2].setVisible(false, true); + } else { + mBtn[2].setVisible(true, true); + } + + 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[ITEM_SELECT_PANE_ICON_OFFSET + 2]->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].setVisible(true); + mBtn[2].setVisible(true); + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B3 = 0; + field_0x579A = I_INVALID; + mStateMgr.changeState(StateID_Wait); + } + if (*mStateMgr.getStateID() == StateID_SetSpecialItemIn) { + mBtn[0].setVisible(true, true); + if (mpOwnerPane->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[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true); + + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true); + mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f); + + mBtn[1].setVisible(true, true); + mBtn[2].setVisible(true, true); + mLyt.calc(); + + mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false); + field_0x57B3 = 0; + field_0x579A = I_INVALID; + mStateMgr.changeState(StateID_Wait); + } + } + + if (dLytDobutton_c::getField0x47C() == 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 != I_INVALID) { + field_0x5797 = field_0x5794; + field_0x57B4 = 0; + } else { + field_0x57B4 = 1; + } + setBtnItem(field_0x5796); + b = true; + // The conditions below check if you just upgraded a certain item. If the current item differs from + // what we recorded last, this automatically switches the item. + } else if (mStoredBowVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BOW))) { + mStoredBowVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BOW)); + setBtnItem(field_0x5796); + b = true; + } else if (mStoredSlingshotVariant != + baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_SLINGSHOT))) { + mStoredSlingshotVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_SLINGSHOT)); + setBtnItem(field_0x5796); + b = true; + } else if (mStoredBeetleVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BEETLE))) { + mStoredBeetleVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BEETLE)); + setBtnItem(field_0x5796); + b = true; + } else if (mStoredBugNetVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BUG_NET))) { + mStoredBugNetVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BUG_NET)); + setBtnItem(field_0x5796); + b = true; + } + + if (field_0x5797 != I_INVALID) { + realizeBtnNumberForLytIndex( + baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(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 == I_BOMB_BAG) { + SmallSoundManager::GetInstance()->playSound(SE_S_BM_MAX); + } else if (field_0x5797 == I_BOW) { + SmallSoundManager::GetInstance()->playSound(SE_S_AW_MAX); + } else if (field_0x5797 == I_SLINGSHOT) { + SmallSoundManager::GetInstance()->playSound(SE_S_PC_MAX); + } + } + field_0x57B7 = false; + } + + realizeSelectedWheelItem(); + mStateMgr.executeState(); + fn_800EF8C0(false); + + if (dLytDobutton_c::getField0x47C() == 0x28) { + if (field_0x57C3 != 0) { + field_0x57BB = 1; + } + } else { + field_0x57C3 = 0; + } + + bool b2 = false; + if (field_0x57B9 != 0 && dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) && + mLastDoButtonRelatedAction == 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 (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) && + 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 (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_B) && + 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 < ITEM_SELECT_NUM_ITEMS; 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); + } + + // Rotate the arrow + mVec3_c t1(0.0f, 0.0f, 0.0f); + t1.z = mArrowRotation; + mpPanes[ITEM_SELECT_PANE_ITEM_ARROW]->SetRotate(t1); + // But rotate the button and the pointer back so that + // they point up + mVec3_c t2(0.0f, 0.0f, 0.0f); + t2.z = -mArrowRotation; + mpPanes[ITEM_SELECT_PANE_ARROW_HAND]->SetRotate(t2); + mpPanes[ITEM_SELECT_PANE_N_BTN_0]->SetRotate(t2); + + f32 frame = mAnm[ITEM_SELECT_ANIM_ARROW].getAnimDuration(); + if (mArrowLength < 0.0f) { + mArrowLength = 0.0f; + } + if (mArrowLength > 1.0f) { + mArrowLength = 1.0f; + } + mAnm[ITEM_SELECT_ANIM_ARROW].setFrame(frame * mArrowLength); + 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 == I_SAILCLOTH) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_SAILCLOTH); + } else if (field_0x5794 == I_BOAT_CANNON) { + if (field_0x57B3 != 0) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_STOW_CANNON); + } else { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_READY_CANNON); + } + } + + if (field_0x578C <= 0 && *mStateMgr.getStateID() != StateID_SetIn && + *mStateMgr.getStateID() != StateID_SetOut && *mStateMgr.getStateID() != StateID_ToUnuse && + *mStateMgr.getStateID() != StateID_Unuse) { + if (mLastDoButtonRelatedAction != LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B)) { + mLastDoButtonRelatedAction = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B); + setBtnText(mLastDoButtonRelatedAction); + } + } else { + if (mLastDoButtonRelatedAction != LytDoButtonRelated::DO_NONE) { + mLastDoButtonRelatedAction = LytDoButtonRelated::DO_NONE; + setBtnText(mLastDoButtonRelatedAction); + } + + if (field_0x578C > 0) { + field_0x578C--; + } + } + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_NONE); + } + + field_0x57C1 = isWheelBlockedByCurrentAction(); + return true; +} + +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_717_; +void dLytMeterItemSelect_c::fn_800EF580() { + nw4r::math::MTX34 mtx = mpPanes[11]->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + mVec3_c scale(field_0x5784, field_0x5784, field_0x5784); + mEffects.fn_80029A70(PARTICLE_RESOURCE_ID_MAPPING_717_, &pos, nullptr, &scale, nullptr, nullptr); + + if (field_0x57C0 != 0) { + mEffects.fn_80026ED0(); + field_0x57C0 = 0; + } else { + if (field_0x57BE != field_0x57BF) { + if (field_0x57BE != 0) { + mEffects.fn_80026F10(); + } else { + mEffects.fn_80026ED0(); + } + } + } +} + +void dLytMeterItemSelect_c::fn_800EF6B0(u8 arg) { + if (field_0x5794 != I_SAILCLOTH && field_0x5794 != I_BOAT_CANNON && field_0x5794 != I_HARP) { + field_0x5798 = field_0x5794; + } + + if (field_0x5794 != arg) { + field_0x5795 = field_0x5794; + } + field_0x5794 = arg; +} + +void dLytMeterItemSelect_c::setOwnerPane(nw4r::lyt::Pane *p) { + mpOwnerPane = p; + for (int i = 0; i < 4; i++) { + mBtn[i].setOwnerPane(p); + } +} + +void dLytMeterItemSelect_c::fn_800EF710(u8 arg) { + field_0x57A0 = arg; +} + +void dLytMeterItemSelect_c::fn_800EF720(InternalItem_e arg) { + if (field_0x57B5 == 0 || *mStateMgr.getStateID() != StateID_InitWait) { + field_0x57B5 = 1; + field_0x574C = arg; + } +} + +void dLytMeterItemSelect_c::fn_800EF7A0(bool a, s32 b) { + if (field_0x5796 == b) { + field_0x57B6 = a; + } +} + +void dLytMeterItemSelect_c::realizeSelectedWheelItem() { + s32 selectedSlot = -1; + if (field_0x5754 == 0) { + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (field_0x574C == fn_800F0170(i)) { + selectedSlot = i; + break; + } + } + } + + ITEM_ID id = static_cast(-1); + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + if (selectedSlot == i) { + id = getBaseItemForBWheelSlot(selectedSlot); + mIcon[i].setShouldBeSelect(true); + } else { + mIcon[i].setShouldBeSelect(false); + } + } + + setCurrentItemText(baseItemIdToCurrentVariant(id)); + if (selectedSlot != -1 && field_0x5754 == 0) { + mBlink.setShouldBeSelect(true); + mText[0].setShouldBeSelect(true); + } else { + mBlink.setShouldBeSelect(false); + mText[0].setShouldBeSelect(false); + } +} + +void dLytMeterItemSelect_c::fn_800EF8C0(bool bInstant) { + bool visible = true; + if (dAcPy_c::GetLink2()->fn_80202D90(false)) { + mpPanes[10]->SetInfluencedAlpha(true); + mpPanes[10]->SetAlpha(64); + if (field_0x5794 == 0) { + visible = false; + } + } else { + mpPanes[10]->SetInfluencedAlpha(true); + mpPanes[10]->SetAlpha(0xFF); + } + + if (!mBtn[1].getShouldBeVisible() && dLytMeter_c::GetInstance()->getMeterField_0x13770() != 1 && + dLytMeter_c::GetInstance()->getMeterField_0x13770() != 2) { + visible = false; + } + if (bInstant == false) { + bInstant = mBtn[1].getInstant(); + } + + if (visible) { + mBtn[3].setVisible(true, bInstant); + } else { + mBtn[3].setVisible(false, bInstant); + } +} + +void dLytMeterItemSelect_c::realizeWheelNumberForLytIndex(s32 iconIdx, s32 lytItemIdx) { + if (lytItemIdx == LYT_CMN_ItemBombBag || lytItemIdx == LYT_CMN_ItemBow || lytItemIdx == LYT_CMN_ItemSlingshot || + lytItemIdx == LYT_CMN_ItemIronBow || lytItemIdx == LYT_CMN_ItemSacredBow || + lytItemIdx == LYT_CMN_ItemScattershot) { + s32 num = 0; + s32 max = 0; + switch (lytItemIdx) { + case LYT_CMN_ItemBombBag: + num = dAcItem_c::getTotalBombCount(); + max = dAcItem_c::getTotalBombCapacity(); + break; + case LYT_CMN_ItemBow: + case LYT_CMN_ItemIronBow: + case LYT_CMN_ItemSacredBow: + num = dAcItem_c::getTotalArrowCount(); + max = dAcItem_c::getTotalArrowCapacity(); + break; + case LYT_CMN_ItemSlingshot: + case LYT_CMN_ItemScattershot: + num = dAcItem_c::getTotalSeedCount(); + max = dAcItem_c::getTotalSeedCapacity(); + break; + } + + s32 color = 0; + if (num == 0) { + color = 1; + } else if (num == max) { + color = 2; + } + mItemIcons[iconIdx].setNumber(num); + mItemIcons[iconIdx].setNumberColor(color); + } +} + +void dLytMeterItemSelect_c::realizeBtnNumberForLytIndex(s32 lytItemIdx, bool b) { + if (lytItemIdx == LYT_CMN_ItemBombBag || lytItemIdx == LYT_CMN_ItemBow || lytItemIdx == LYT_CMN_ItemSlingshot || + lytItemIdx == LYT_CMN_ItemIronBow || lytItemIdx == LYT_CMN_ItemSacredBow || + lytItemIdx == LYT_CMN_ItemScattershot) { + s32 num = 0; + s32 max = 0; + switch (lytItemIdx) { + case LYT_CMN_ItemBombBag: + num = dAcItem_c::getTotalBombCount(); + max = dAcItem_c::getTotalBombCapacity(); + break; + case LYT_CMN_ItemBow: + case LYT_CMN_ItemIronBow: + case LYT_CMN_ItemSacredBow: + num = dAcItem_c::getTotalArrowCount(); + max = dAcItem_c::getTotalArrowCapacity(); + break; + case LYT_CMN_ItemSlingshot: + case LYT_CMN_ItemScattershot: + num = dAcItem_c::getTotalSeedCount(); + max = dAcItem_c::getTotalSeedCapacity(); + break; + } + + SizedWString<32> numberText; + numberText.sprintf(L"%d", num); + mpTextBoxes[0]->setTextWithGlobalTextProcessor(numberText, nullptr); + mpTextBoxes[1]->setTextWithGlobalTextProcessor(numberText, nullptr); + mpTextBoxes[2]->setTextWithGlobalTextProcessor(numberText, nullptr); + mpTextBoxes[3]->setTextWithGlobalTextProcessor(numberText, nullptr); + + s32 color = 0; + if (num == 0) { + color = 1; + } else if (num == max) { + color = 2; + } + + if (color != field_0x5764) { + if (!b && color == 2) { + field_0x57B7 = 1; + } + field_0x5764 = color; + } + + mAnm[ITEM_SELECT_ANIM_TEXTCOLOR].setFrame(color); + mAnm[ITEM_SELECT_ANIM_TEXTCOLOR].setAnimEnable(true); + mLyt.calc(); + mAnm[ITEM_SELECT_ANIM_TEXTCOLOR].setAnimEnable(false); + mAnm[ITEM_SELECT_ANIM_NUMBERV].setFrame(1.0f); + } else { + mAnm[ITEM_SELECT_ANIM_NUMBERV].setFrame(0.0f); + } +} + +void dLytMeterItemSelect_c::realizeWheelNumberVForLytIndex(s32 iconIdx, s32 lytItemIdx) { + if (!mIsBocoburinLocked[iconIdx] && + (lytItemIdx == LYT_CMN_ItemBombBag || lytItemIdx == LYT_CMN_ItemBow || lytItemIdx == LYT_CMN_ItemSlingshot || + lytItemIdx == LYT_CMN_ItemIronBow || lytItemIdx == LYT_CMN_ItemSacredBow || + lytItemIdx == LYT_CMN_ItemScattershot)) { + mItemIcons[iconIdx].setHasNumber(true); + } else { + mItemIcons[iconIdx].setHasNumber(false); + } +} + +bool dLytMeterItemSelect_c::fn_800EFDF0(bool b) const { + if (!mpOwnerPane->IsVisible()) { + return false; + } + + if (field_0x57A2 != 0) { + if (*mStateMgr.getStateID() == StateID_ToUse || *mStateMgr.getStateID() == StateID_InitWait || + *mStateMgr.getStateID() == StateID_Wait) { + return true; + } + } + + if (*mStateMgr.getStateID() == StateID_SelectIn || *mStateMgr.getStateID() == StateID_Select || + *mStateMgr.getStateID() == StateID_SelectOut) { + return true; + } + + if (!b && (*mStateMgr.getStateID() == StateID_SetIn || *mStateMgr.getStateID() == StateID_Set || + *mStateMgr.getStateID() == StateID_SetOut)) { + return true; + } + return false; +} + +bool dLytMeterItemSelect_c::fn_800F0030() const { + if (!StoryflagManager::sInstance->getCounterOrFlag(58) && + !(EventManager::isInEvent() && EventManager::isCurrentEvent("ItemGetGorgeous")) || + (mpOwnerPane == nullptr || !mpOwnerPane->IsVisible() || dLytMeter_c::GetMain()->fn_800D5650() || + dLytMeter_c::GetMain()->fn_800D5680() || + !dLytMeter_c::GetMain()->getItemSelectNotHiddenByAreaCaption())) { + // If we don't have a B-Wheel and we're not currently in the ItemGetGorgeous event, + // or (random other conditions), return false + return false; + } + + return true; +} + +static const ITEM_ID sSlotToBaseItem[] = { + ITEM_BOW, ITEM_BOMB_BAG, ITEM_BEETLE, ITEM_BUG_NET, ITEM_SLINGSHOT, ITEM_CLAWSHOTS, ITEM_WHIP, ITEM_GUST_BELLOWS, +}; + +ITEM_ID dLytMeterItemSelect_c::getBaseItemForBWheelSlot(s32 idx) { + return sSlotToBaseItem[idx]; +} + +// What is this for? This is not an internal item id... +static s32 sUnkArray1[] = {1, 0, 3, 8, 4, 2, 6, 5}; + +s32 dLytMeterItemSelect_c::fn_800F0170(s32 slot) const { + return sUnkArray1[slot]; +} + +u8 dLytMeterItemSelect_c::getInternalBaseItemForSlot(s32 slot) const { + static s32 sSlotToInternalItem[] = {I_BOW, I_BOMB_BAG, I_BEETLE, I_BUG_NET, + I_SLINGSHOT, I_CLAWSHOTS, I_WHIP, I_GUST_BELLOWS}; + + return sSlotToInternalItem[slot]; +} + +extern "C" s32 fn_801673B0(s32); + +bool dLytMeterItemSelect_c::fn_800F01B0(s32 arg) const { + return fn_801673B0(arg) != 0; +} + +extern "C" bool fn_80167780(s32, bool); + +bool dLytMeterItemSelect_c::fn_800F01E0(s32 arg) const { + return fn_80167780(arg, true); +} + +bool dLytMeterItemSelect_c::isSlotBocoburinLocked(s32 slot) { + return dAcPy_c::isItemRestrictedByBokoBase(getBaseItemForBWheelSlot(slot)); +} + +bool dLytMeterItemSelect_c::fn_800F0220(s32 arg) { + if (field_0x5754 == 0) { + field_0x5754 = 1; + + field_0x5758 = arg; + field_0x575C = 0; + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + mpPanes[4]->SetVisible(false); + mpPanes[5]->SetVisible(false); + mpPanes[3]->SetVisible(false); + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + mIcon[i].init(); + } + } else if (field_0x5754 == 4) { + field_0x5754 = 0; + return true; + } + return false; +} + +bool dLytMeterItemSelect_c::fn_800F02F0() const { + return field_0x5754 != 0; +} + +void dLytMeterItemSelect_c::fn_800F0310() { + mBtn[1].setVisible(false, true); + if (field_0x57B3 == 0) { + mBtn[0].setVisible(false, true); + mBtn[2].setVisible(false, true); + } + + mLyt.calc(); + + if (field_0x57B3 == 0 && field_0x57B4 != 0) { + mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false); + field_0x57B4 = 0; + } + + if (field_0x5754 == 1) { + mStateMgr.changeState(StateID_DemoMove); + } else if (field_0x57A0 != 0) { + field_0x5780 = mAnm[ITEM_SELECT_ANIM_DECIDE].getAnimDuration(); + mStateMgr.changeState(StateID_SetIn); + } else { + mStateMgr.changeState(StateID_SelectIn); + } +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +void dLytMeterItemSelect_c::setBtnText(s32 unkId) { + SizedString<16> id; + if (unkId < LytDoButtonRelated::DO_NONE) { + mpTextBoxes[8]->SetVisible(true); + mpTextBoxes[9]->SetVisible(true); + mpWindows[0]->SetVisible(true); + mpTextBoxes[4]->SetVisible(true); + mpTextBoxes[5]->SetVisible(true); + mpWindows[3]->SetVisible(true); + if (unkId < 0x5D) { + id.sprintf("ACT_INFO_%03d", sActIds[unkId]); + } else { + unkId -= 0x5E; + id.sprintf("ACT_ETC_%03d", sActIds[unkId]); + } + mpTextBoxes[8]->setMessageWithGlobalTextProcessor2(id, nullptr); + mpTextBoxes[9]->setMessageWithGlobalTextProcessor2(id, nullptr); + mpWindows[0]->UpdateSize(mpSizeBoxes[0], 32.0f); + mpTextBoxes[4]->setMessageWithGlobalTextProcessor2(id, nullptr); + mpTextBoxes[5]->setMessageWithGlobalTextProcessor2(id, nullptr); + mpWindows[3]->UpdateSize(mpSizeBoxes[3], 32.0f); + } else { + const wchar_t *empty = L""; + mpTextBoxes[8]->setTextWithGlobalTextProcessor(empty, nullptr); + mpTextBoxes[9]->setTextWithGlobalTextProcessor(empty, nullptr); + mpTextBoxes[8]->SetVisible(false); + mpTextBoxes[9]->SetVisible(false); + mpWindows[0]->SetVisible(false); + mpTextBoxes[4]->setTextWithGlobalTextProcessor(empty, nullptr); + mpTextBoxes[5]->setTextWithGlobalTextProcessor(empty, nullptr); + mpTextBoxes[4]->SetVisible(false); + mpTextBoxes[5]->SetVisible(false); + mpWindows[3]->SetVisible(false); + } +} + +void dLytMeterItemSelect_c::setBtnItem(s32 item) { + if (item == I_SAILCLOTH || item == I_BOAT_CANNON || item == I_HARP) { + field_0x57B8 = 1; + } else { + field_0x57B8 = 0; + } + + if (item != I_INVALID) { + mItemIcons[8].setItem(baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(item))); + } +} + +static const s32 sSlotToBaseItemLytIdx[] = { + LYT_CMN_ItemBow, LYT_CMN_ItemBombBag, LYT_CMN_ItemBeetle, LYT_CMN_ItemBugnet, + LYT_CMN_ItemSlingshot, LYT_CMN_ItemClawshots, LYT_CMN_ItemWhip, LYT_CMN_ItemGustBellows, +}; + +void dLytMeterItemSelect_c::realizeWheelItems() { + for (int i = 0; i < ITEM_SELECT_NUM_ITEMS; i++) { + s32 lytItem = baseItemLytIndexToCurrentVariant(sSlotToBaseItemLytIdx[i]); + if (mIsBocoburinLocked[i]) { + mItemIcons[i].setBocoburinLocked(true); + } else { + mItemIcons[i].setBocoburinLocked(false); + } + mItemIcons[i].setUnk(false); + realizeWheelNumberVForLytIndex(i, lytItem); + realizeWheelNumberForLytIndex(i, lytItem); + mItemIcons[i].setItem(lytItem); + } +} + +s32 dLytMeterItemSelect_c::baseItemLytIndexToCurrentVariant(s32 baseItem) const { + if (baseItem == LYT_CMN_ItemBow) { + switch (dAcPy_c::getCurrentBowType()) { + case 2: return LYT_CMN_ItemIronBow; + case 3: return LYT_CMN_ItemSacredBow; + } + } else if (baseItem == LYT_CMN_ItemSlingshot) { + switch (dAcPy_c::getCurrentSlingshotType()) { + case 2: return LYT_CMN_ItemScattershot; + } + } else if (baseItem == LYT_CMN_ItemBeetle) { + switch (dAcPy_c::getCurrentBeetleType()) { + case 2: return LYT_CMN_ItemHookBeetle; + case 3: return LYT_CMN_ItemQuickBeetle; + case 4: return LYT_CMN_ItemToughBeetle; + } + } else if (baseItem == LYT_CMN_ItemBugnet) { + switch (dAcPy_c::getCurrentBugNetType()) { + case 2: return LYT_CMN_ItemBigBugnet; + } + } + return baseItem; +} + +ITEM_ID dLytMeterItemSelect_c::baseItemIdToCurrentVariant(ITEM_ID baseItem) const { + if (baseItem == ITEM_BOW) { + switch (dAcPy_c::getCurrentBowType()) { + case 2: return ITEM_IRON_BOW; + case 3: return ITEM_SACRED_BOW; + } + } else if (baseItem == ITEM_SLINGSHOT) { + switch (dAcPy_c::getCurrentSlingshotType()) { + case 2: return ITEM_MIGHTY_SCATTERSHOT; + } + } else if (baseItem == ITEM_BEETLE) { + switch (dAcPy_c::getCurrentBeetleType()) { + case 2: return ITEM_HOOK_BEETLE; + case 3: return ITEM_QUICK_BEETLE; + case 4: return ITEM_TOUGH_BEETLE; + } + } else if (baseItem == ITEM_BUG_NET) { + switch (dAcPy_c::getCurrentBugNetType()) { + case 2: return ITEM_BIG_BUG_NET; + } + } + return baseItem; +} + +static const s32 sInternalItemToLytIndex[] = { + LYT_CMN_ItemBombBag, LYT_CMN_ItemBow, LYT_CMN_ItemSailcloth, LYT_CMN_ItemClawshots, + LYT_CMN_ItemBeetle, LYT_CMN_ItemSlingshot, LYT_CMN_ItemGustBellows, LYT_CMN_ItemBugnet, + LYT_CMN_ItemWhip, LYT_CMN_ItemBoatCannon, LYT_CMN_ItemHarp, +}; + +s32 dLytMeterItemSelect_c::getBaseItemLytIndexforInternalId(s32 idx) const { + if (idx < 11) { + return sInternalItemToLytIndex[idx]; + } else if (field_0x5797 != I_INVALID) { + return sInternalItemToLytIndex[field_0x5797]; + } + + return LYT_CMN_ItemInvalid; +} + +extern "C" bool checkIsInSkykeepPuzzle(); + +bool dLytMeterItemSelect_c::isWheelBlockedByCurrentAction() { + if (dAcPy_c::LINK->getRidingActorType() == dAcPy_c::RIDING_LOFTWING || + dAcPy_c::LINK->checkActionFlags(dAcPy_c::FLG0_SWING_ROPE) || dAcPy_c::LINK->checkCurrentAction(0x9C) || + dAcPy_c::LINK->getRidingActorType() == dAcPy_c::RIDING_TRUCK_MINECART || + dAcPy_c::LINK->checkCurrentAction(0x95) || isInSpiralChargeTutorialMinigame() || isInRollercoasterMinigame() || + dAcPy_c::LINK->checkCurrentAction(0x8C) || dLytMeter_c::GetMain()->getField_0x1377E() != 0 || + checkIsInSkykeepPuzzle() || dLytMeter_c::GetInstance()->getMeterField_0x13770() == 0) { + return true; + } + + return false; +} + +bool dLytMeterItemSelect_c::isInSpiralChargeTutorialMinigame() { + return MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL); +} + +bool dLytMeterItemSelect_c::isInRollercoasterMinigame() { + return MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER); +} + +void dLytMeterItemSelect_c::setCurrentItemText(ITEM_ID item) { + if (item >= ITEM_NONE && field_0x5754 == 0) { + mText[1].setShouldBeSelect(true); + SizedString<16> msg; + msg.sprintf("NAME_ITEM_%03d", item); + mpTextBoxes[6]->setMessageWithGlobalTextProcessor2(msg, nullptr); + mpTextBoxes[7]->setMessageWithGlobalTextProcessor2(msg, nullptr); + mpWindows[2]->UpdateSize(mpSizeBoxes[2], 32.0f); + } else { + mText[1].setShouldBeSelect(false); + } } diff --git a/src/d/lyt/meter/d_lyt_meter_key.cpp b/src/d/lyt/meter/d_lyt_meter_key.cpp index d9bd35fc..824d4f10 100644 --- a/src/d/lyt/meter/d_lyt_meter_key.cpp +++ b/src/d/lyt/meter/d_lyt_meter_key.cpp @@ -1,5 +1,14 @@ #include "d/lyt/meter/d_lyt_meter_key.h" +#include "c/c_lib.h" +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/d_stage_mgr.h" +#include "d/lyt/d2d.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_pane.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterKakeraKey_c, Wait); STATE_DEFINE(dLytMeterKakeraKey_c, On); STATE_DEFINE(dLytMeterKakeraKey_c, Increase); @@ -16,54 +25,503 @@ STATE_DEFINE(dLytMeterSmallKey_c, On); STATE_DEFINE(dLytMeterSmallKey_c, Active); STATE_DEFINE(dLytMeterSmallKey_c, Off); +static const d2d::LytBrlanMapping brlanMapKakera[] = { + { "keyKakera_00_in.brlan", "G_inOut_00"}, + {"keyKakera_00_number1.brlan", "G_number1_00"}, + {"keyKakera_00_number2.brlan", "G_number2_00"}, + {"keyKakera_00_number3.brlan", "G_number3_00"}, + {"keyKakera_00_number4.brlan", "G_number4_00"}, + {"keyKakera_00_number5.brlan", "G_number5_00"}, + { "keyKakera_00_loop.brlan", "G_loop_00"}, + { "keyKakera_00_out.brlan", "G_inOut_00"}, +}; + +#define KEY_KAKERA_ANIM_IN 0 +#define KEY_KAKERA_ANIM_NUMBER_OFFSET 1 +#define KEY_KAKERA_ANIM_LOOP 6 +#define KEY_KAKERA_ANIM_OUT 7 + +#define KEY_KAKERA_NUM_ANIMS 8 + +#define KEY_KAKERA_NUM_PIECES 5 + void dLytMeterKakeraKey_c::initializeState_Wait() {} -void dLytMeterKakeraKey_c::executeState_Wait() {} +void dLytMeterKakeraKey_c::executeState_Wait() { + if (mShouldBeVisible) { + mStateMgr.changeState(StateID_On); + } +} void dLytMeterKakeraKey_c::finalizeState_Wait() {} -void dLytMeterKakeraKey_c::initializeState_On() {} -void dLytMeterKakeraKey_c::executeState_On() {} +void dLytMeterKakeraKey_c::initializeState_On() { + mAnm[KEY_KAKERA_ANIM_IN].setAnimEnable(true); + mAnm[KEY_KAKERA_ANIM_IN].setToEnd(); + for (int i = 0; i < KEY_KAKERA_NUM_PIECES; i++) { + if (i < mSavedKeyPieceCount) { + mAnm[i + KEY_KAKERA_ANIM_NUMBER_OFFSET].setAnimEnable(true); + mAnm[i + KEY_KAKERA_ANIM_NUMBER_OFFSET].setToEnd(); + } + } + + mLyt.calc(); + + for (int i = 0; i < KEY_KAKERA_NUM_PIECES; i++) { + if (mAnm[i + KEY_KAKERA_ANIM_NUMBER_OFFSET].isEnabled()) { + mAnm[i + KEY_KAKERA_ANIM_NUMBER_OFFSET].setAnimEnable(false); + } + } + + mAnm[KEY_KAKERA_ANIM_IN].setFrame(0.0f); +} +void dLytMeterKakeraKey_c::executeState_On() { + if (mAnm[KEY_KAKERA_ANIM_IN].isEndReached()) { + mAnm[KEY_KAKERA_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} void dLytMeterKakeraKey_c::finalizeState_On() {} -void dLytMeterKakeraKey_c::initializeState_Increase() {} -void dLytMeterKakeraKey_c::executeState_Increase() {} +void dLytMeterKakeraKey_c::initializeState_Increase() { + mNextKeyPieceCount = mSavedKeyPieceCount + 1; + mAnm[mNextKeyPieceCount - 1 + KEY_KAKERA_ANIM_NUMBER_OFFSET].setAnimEnable(true); + mAnm[mNextKeyPieceCount - 1 + KEY_KAKERA_ANIM_NUMBER_OFFSET].setFrame(0.0f); + mSavedKeyPieceCount = dAcItem_c::getKeyPieceCount(); + if (mSavedKeyPieceCount == KEY_KAKERA_NUM_PIECES) { + SmallSoundManager::GetInstance()->playSound(SE_S_KEY_COMPLETE); + } else { + SmallSoundManager::GetInstance()->playSound(SE_S_KEY_PARTS); + } +} +void dLytMeterKakeraKey_c::executeState_Increase() { + if (mAnm[mNextKeyPieceCount + KEY_KAKERA_ANIM_IN].isEndReached()) { + mAnm[mNextKeyPieceCount + KEY_KAKERA_ANIM_IN].setAnimEnable(false); + mNextKeyPieceCount = -1; + mStateMgr.changeState(StateID_Active); + } +} void dLytMeterKakeraKey_c::finalizeState_Increase() {} void dLytMeterKakeraKey_c::initializeState_Active() {} -void dLytMeterKakeraKey_c::executeState_Active() {} +void dLytMeterKakeraKey_c::executeState_Active() { + if (mSavedKeyPieceCount != dAcItem_c::getKeyPieceCount()) { + mStateMgr.changeState(StateID_Increase); + } else if (!mShouldBeVisible) { + mStateMgr.changeState(StateID_Off); + } +} void dLytMeterKakeraKey_c::finalizeState_Active() {} -void dLytMeterKakeraKey_c::initializeState_Off() {} -void dLytMeterKakeraKey_c::executeState_Off() {} +void dLytMeterKakeraKey_c::initializeState_Off() { + mAnm[KEY_KAKERA_ANIM_OUT].setAnimEnable(true); + mAnm[KEY_KAKERA_ANIM_OUT].setFrame(0.0f); +} +void dLytMeterKakeraKey_c::executeState_Off() { + if (mAnm[KEY_KAKERA_ANIM_OUT].isEndReached()) { + mAnm[KEY_KAKERA_ANIM_OUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} void dLytMeterKakeraKey_c::finalizeState_Off() {} +bool dLytMeterKakeraKey_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("keyKakera_00.brlyt", nullptr); + mLyt.setPriority(0x8A); + + for (int i = 0; i < KEY_KAKERA_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapKakera[i].mFile, resAcc, mLyt.getLayout(), brlanMapKakera[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[KEY_KAKERA_ANIM_LOOP].setAnimEnable(true); + mSavedKeyPieceCount = dAcItem_c::getKeyPieceCount(); + mNextKeyPieceCount = -1; + mpPane = mLyt.findPane("N_inOut_00"); + nw4r::lyt::Pane *positionPane = mLyt.findPane("N_keyPosition_00"); + + mPanePositions[0].copyFrom(positionPane->GetTranslate()); + mPanePositions[1].copyFrom(mpPane->GetTranslate()); + + mPosititionIndex = 1; + mOldPosititionIndex = 1; + mMovementFrame = 0; + + mPosition.copyFrom(mPanePositions[mPosititionIndex]); + mShouldBeVisible = 0; + mpPane->SetTranslate(mPosition); + + mAnm[KEY_KAKERA_ANIM_IN].setFrame(0.0f); + mAnm[KEY_KAKERA_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[KEY_KAKERA_ANIM_IN].setAnimEnable(false); + + mStateMgr.changeState(StateID_Wait); + + return true; +} + +bool dLytMeterKakeraKey_c::remove() { + for (int i = 0; i < KEY_KAKERA_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterKakeraKey_c::execute() { + mStateMgr.executeState(); + if (mPosition != mPanePositions[mPosititionIndex]) { + if (mMovementFrame < 5) { + mVec3_c diff = mPanePositions[mPosititionIndex] - mPanePositions[mOldPosititionIndex]; + mPosition = diff * cLib::easeOut(++mMovementFrame / 5.0f, 3.0f) + mPanePositions[mOldPosititionIndex]; + } else { + mMovementFrame = 0; + mPosition = mPanePositions[mPosititionIndex]; + } + mpPane->SetTranslate(mPosition); + } + + for (int i = 0; i < KEY_KAKERA_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + + return true; +} + +bool dLytMeterKakeraKey_c::draw() { + mLyt.addToDrawList(); + return true; +} + +void dLytMeterKakeraKey_c::setPosition(s32 position) { + if (mPosititionIndex == position) { + return; + } + + mOldPosititionIndex = mPosititionIndex; + mPosititionIndex = position; + mMovementFrame = 0; +} + +static const d2d::LytBrlanMapping brlanMapBoss[] = { + { "keyBoss_00_in.brlan", "G_inOut_00"}, + { "keyBoss_00_out.brlan", "G_inOut_00"}, + { "keyBoss_00_keyBoss.brlan", "G_keyBoss_00"}, + { "keyBoss_00_loop.brlan", "G_loop_00"}, + {"keyBoss_00_position.brlan", "G_position_00"}, +}; + +#define KEY_BOSS_ANIM_IN 0 +#define KEY_BOSS_ANIM_OUT 1 +#define KEY_BOSS_ANIM_KEYBOSS 2 +#define KEY_BOSS_ANIM_LOOP 3 +#define KEY_BOSS_ANIM_POSITION 4 + +#define KEY_BOSS_NUM_ANIMS 5 + void dLytMeterBossKey_c::initializeState_Wait() {} -void dLytMeterBossKey_c::executeState_Wait() {} +void dLytMeterBossKey_c::executeState_Wait() { + if (mShouldBeVisible) { + mStateMgr.changeState(StateID_On); + } +} void dLytMeterBossKey_c::finalizeState_Wait() {} -void dLytMeterBossKey_c::initializeState_On() {} -void dLytMeterBossKey_c::executeState_On() {} +void dLytMeterBossKey_c::initializeState_On() { + mAnm[KEY_BOSS_ANIM_IN].setAnimEnable(true); + mAnm[KEY_BOSS_ANIM_IN].setFrame(0.0f); +} +void dLytMeterBossKey_c::executeState_On() { + if (mAnm[KEY_BOSS_ANIM_IN].isEndReached()) { + mAnm[KEY_BOSS_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} void dLytMeterBossKey_c::finalizeState_On() {} void dLytMeterBossKey_c::initializeState_Active() {} -void dLytMeterBossKey_c::executeState_Active() {} +void dLytMeterBossKey_c::executeState_Active() { + if (!mShouldBeVisible) { + mStateMgr.changeState(StateID_Off); + } +} void dLytMeterBossKey_c::finalizeState_Active() {} -void dLytMeterBossKey_c::initializeState_Off() {} -void dLytMeterBossKey_c::executeState_Off() {} +void dLytMeterBossKey_c::initializeState_Off() { + mAnm[KEY_BOSS_ANIM_OUT].setAnimEnable(true); + mAnm[KEY_BOSS_ANIM_OUT].setFrame(0.0f); +} +void dLytMeterBossKey_c::executeState_Off() { + if (mAnm[KEY_BOSS_ANIM_OUT].isEndReached()) { + mAnm[KEY_BOSS_ANIM_OUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} void dLytMeterBossKey_c::finalizeState_Off() {} +bool dLytMeterBossKey_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("keyBoss_00.brlyt", nullptr); + + for (int i = 0; i < KEY_BOSS_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapBoss[i].mFile, resAcc, mLyt.getLayout(), brlanMapBoss[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[KEY_BOSS_ANIM_LOOP].setAnimEnable(true); + mpPane = mLyt.findPane("N_keyBoss_00"); + mAnm[KEY_BOSS_ANIM_POSITION].setAnimEnable(true); + + for (int i = 0; i < 4; i++) { + mAnm[KEY_BOSS_ANIM_POSITION].setFrame(i); + mLyt.calc(); + mPanePositions[i].copyFrom(mLyt.findPane("N_keyPosition_00")->GetTranslate()); + } + + mAnm[KEY_BOSS_ANIM_POSITION].setAnimEnable(false); + + mPosititionIndex = 1; + mOldPosititionIndex = 1; + mMovementFrame = 0; + + mPosition.copyFrom(mPanePositions[mPosititionIndex]); + mShouldBeVisible = 0; + mpPane->SetTranslate(mPosition); + + mAnm[KEY_BOSS_ANIM_IN].setFrame(0.0f); + mAnm[KEY_BOSS_ANIM_IN].setAnimEnable(true); + + f32 frame = 0.0f; + if (dStageMgr_c::GetInstance()->getMapNameId() == 11) { + frame = 0.0f; + } else if (dStageMgr_c::GetInstance()->getMapNameId() == 14) { + frame = 1.0f; + } else if (dStageMgr_c::GetInstance()->getMapNameId() == 12) { + frame = 2.0f; + } else if (dStageMgr_c::GetInstance()->getMapNameId() == 16) { + frame = 3.0f; + } else if (dStageMgr_c::GetInstance()->getMapNameId() == 13) { + frame = 4.0f; + } else if (dStageMgr_c::GetInstance()->getMapNameId() == 15) { + frame = 5.0f; + } + + mAnm[KEY_BOSS_ANIM_KEYBOSS].setAnimEnable(true); + mAnm[KEY_BOSS_ANIM_KEYBOSS].setFrame(frame); + + mLyt.getLayout()->Animate(0); + mLyt.calc(); + mAnm[KEY_BOSS_ANIM_IN].setAnimEnable(false); + mAnm[KEY_BOSS_ANIM_KEYBOSS].setAnimEnable(false); + + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterBossKey_c::remove() { + for (int i = 0; i < KEY_BOSS_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterBossKey_c::execute() { + mStateMgr.executeState(); + + if (mPosition != mPanePositions[mPosititionIndex]) { + if (mMovementFrame < 5) { + mVec3_c diff = mPanePositions[mPosititionIndex] - mPanePositions[mOldPosititionIndex]; + mPosition = diff * cLib::easeOut(++mMovementFrame / 5.0f, 3.0f) + mPanePositions[mOldPosititionIndex]; + } else { + mMovementFrame = 0; + mPosition = mPanePositions[mPosititionIndex]; + } + mpPane->SetTranslate(mPosition); + } + + for (int i = 0; i < KEY_BOSS_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + + return true; +} + +bool dLytMeterBossKey_c::draw() { + mLyt.addToDrawList(); + return true; +} + +void dLytMeterBossKey_c::setPosition(s32 position) { + if (mPosititionIndex == position) { + return; + } + + mOldPosititionIndex = mPosititionIndex; + mPosititionIndex = position; + mMovementFrame = 0; +} + +static const d2d::LytBrlanMapping brlanMapSmall[] = { + { "keySmall_00_in.brlan", "G_inOut_00"}, + { "keySmall_00_out.brlan", "G_inOut_00"}, + {"keySmall_00_keySmall.brlan", "G_keySmall_00"}, + { "keySmall_00_loop.brlan", "G_loop_00"}, + {"keySmall_00_position.brlan", "G_position_00"}, +}; + +#define KEY_SMALL_ANIM_IN 0 +#define KEY_SMALL_ANIM_OUT 1 +#define KEY_SMALL_ANIM_KEYSMALL 2 +#define KEY_SMALL_ANIM_LOOP 3 +#define KEY_SMALL_ANIM_POSITION 4 + +#define KEY_SMALL_NUM_ANIMS 5 + void dLytMeterSmallKey_c::initializeState_Wait() {} -void dLytMeterSmallKey_c::executeState_Wait() {} +void dLytMeterSmallKey_c::executeState_Wait() { + if (mShouldBeVisible && dAcItem_c::getSmallKeyCount() != 0) { + mStateMgr.changeState(StateID_On); + } +} void dLytMeterSmallKey_c::finalizeState_Wait() {} -void dLytMeterSmallKey_c::initializeState_On() {} -void dLytMeterSmallKey_c::executeState_On() {} +void dLytMeterSmallKey_c::initializeState_On() { + mAnm[KEY_SMALL_ANIM_IN].setAnimEnable(true); + mAnm[KEY_SMALL_ANIM_IN].setToEnd(); + mSavedSmallKeyCount = dAcItem_c::getSmallKeyCount(); + if (mSavedSmallKeyCount > 0 && mSavedSmallKeyCount <= 5) { + mAnm[KEY_SMALL_ANIM_KEYSMALL].setFrame(mSavedSmallKeyCount - 1); + } + mAnm[KEY_SMALL_ANIM_IN].setFrame(0.0f); +} +void dLytMeterSmallKey_c::executeState_On() { + if (mAnm[KEY_SMALL_ANIM_IN].isEndReached()) { + mAnm[KEY_SMALL_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} void dLytMeterSmallKey_c::finalizeState_On() {} void dLytMeterSmallKey_c::initializeState_Active() {} -void dLytMeterSmallKey_c::executeState_Active() {} +void dLytMeterSmallKey_c::executeState_Active() { + if (mSavedSmallKeyCount != dAcItem_c::getSmallKeyCount()) { + mSavedSmallKeyCount = dAcItem_c::getSmallKeyCount(); + if (mSavedSmallKeyCount > 0 && mSavedSmallKeyCount <= 5) { + mAnm[KEY_SMALL_ANIM_KEYSMALL].setFrame(mSavedSmallKeyCount - 1); + } + } + + if (!mShouldBeVisible || dAcItem_c::getSmallKeyCount() == 0) { + mStateMgr.changeState(StateID_Off); + } +} void dLytMeterSmallKey_c::finalizeState_Active() {} -void dLytMeterSmallKey_c::initializeState_Off() {} -void dLytMeterSmallKey_c::executeState_Off() {} +void dLytMeterSmallKey_c::initializeState_Off() { + mAnm[KEY_SMALL_ANIM_OUT].setAnimEnable(true); + mAnm[KEY_SMALL_ANIM_OUT].setFrame(0.0f); +} +void dLytMeterSmallKey_c::executeState_Off() { + if (mAnm[KEY_SMALL_ANIM_OUT].isEndReached()) { + mAnm[KEY_SMALL_ANIM_OUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} void dLytMeterSmallKey_c::finalizeState_Off() {} + +bool dLytMeterSmallKey_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("keySmall_00.brlyt", nullptr); + + for (int i = 0; i < KEY_SMALL_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapSmall[i].mFile, resAcc, mLyt.getLayout(), brlanMapSmall[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[KEY_SMALL_ANIM_LOOP].setAnimEnable(true); + mAnm[KEY_SMALL_ANIM_KEYSMALL].setAnimEnable(true); + mpPane = mLyt.findPane("N_keyAll_00"); + mAnm[KEY_SMALL_ANIM_POSITION].setAnimEnable(true); + + for (int i = 0; i < 4; i++) { + mAnm[KEY_SMALL_ANIM_POSITION].setFrame(i); + mLyt.calc(); + mPanePositions[i].copyFrom(mLyt.findPane("N_keyPosition_00")->GetTranslate()); + } + + mAnm[KEY_SMALL_ANIM_POSITION].setAnimEnable(false); + + mPosititionIndex = 1; + mOldPosititionIndex = 1; + mMovementFrame = 0; + + mPosition.copyFrom(mPanePositions[mPosititionIndex]); + mShouldBeVisible = 0; + mSavedSmallKeyCount = 0; + mpPane->SetTranslate(mPosition); + + mAnm[KEY_SMALL_ANIM_IN].setFrame(0.0f); + mAnm[KEY_SMALL_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[KEY_SMALL_ANIM_IN].setAnimEnable(false); + + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterSmallKey_c::remove() { + for (int i = 0; i < KEY_SMALL_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterSmallKey_c::execute() { + mStateMgr.executeState(); + + if (mPosition != mPanePositions[mPosititionIndex]) { + if (mMovementFrame < 5) { + mVec3_c diff = mPanePositions[mPosititionIndex] - mPanePositions[mOldPosititionIndex]; + mPosition = diff * cLib::easeOut(++mMovementFrame / 5.0f, 3.0f) + mPanePositions[mOldPosititionIndex]; + } else { + mMovementFrame = 0; + mPosition = mPanePositions[mPosititionIndex]; + } + mpPane->SetTranslate(mPosition); + } + + for (int i = 0; i < KEY_SMALL_NUM_ANIMS; i++) { + if (i != KEY_SMALL_ANIM_KEYSMALL && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + + return true; +} + +bool dLytMeterSmallKey_c::draw() { + mLyt.addToDrawList(); + return true; +} + +void dLytMeterSmallKey_c::setPosition(s32 position) { + if (mPosititionIndex == position) { + return; + } + + mOldPosititionIndex = mPosititionIndex; + mPosititionIndex = position; + mMovementFrame = 0; +} diff --git a/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp b/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp index 2e388799..f7fcb7a6 100644 --- a/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp @@ -1,5 +1,18 @@ #include "d/lyt/meter/d_lyt_meter_minus_btn.h" +#include "common.h" +#include "d/d_pouch.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d_lyt_common_icon_item_maps.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_util_items.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "nw4r/lyt/lyt_group.h" +#include "nw4r/math/math_types.h" +#include "sized_string.h" +#include "toBeSorted/file_manager.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Wait); STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, On); STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Select); @@ -24,3 +37,1062 @@ STATE_DEFINE(dLytMeterMinusBtn_c, ToUnuse); STATE_DEFINE(dLytMeterMinusBtn_c, Unuse); STATE_DEFINE(dLytMeterMinusBtn_c, DemoMove); STATE_DEFINE(dLytMeterMinusBtn_c, DemoOut); + +static u32 demoRotIncrement = 0x199A; + +void dLytMeterMinusBtnMenuIcon_c::initializeState_Wait() {} +void dLytMeterMinusBtnMenuIcon_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterMinusBtnMenuIcon_c::finalizeState_Wait() {} + +void dLytMeterMinusBtnMenuIcon_c::initializeState_On() {} +void dLytMeterMinusBtnMenuIcon_c::executeState_On() { + if (mShouldBeSelect == 0) { + mpAnm->setToEnd(); + } + + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnMenuIcon_c::finalizeState_On() {} + +void dLytMeterMinusBtnMenuIcon_c::initializeState_Select() {} +void dLytMeterMinusBtnMenuIcon_c::executeState_Select() { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + if (mShouldBeSelect == 0) { + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterMinusBtnMenuIcon_c::finalizeState_Select() {} + +void dLytMeterMinusBtnMenuIcon_c::initializeState_Off() {} +void dLytMeterMinusBtnMenuIcon_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnMenuIcon_c::finalizeState_Off() {} + +void dLytMeterMinusBtnMenuIcon_c::init() { + mShouldBeSelect = 0; + mpAnm->setFrame(0.0f); + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterMinusBtnMenuIcon_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterMinusBtnBlink_c::initializeState_Wait() {} +void dLytMeterMinusBtnBlink_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterMinusBtnBlink_c::finalizeState_Wait() {} + +void dLytMeterMinusBtnBlink_c::initializeState_On() {} +void dLytMeterMinusBtnBlink_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnBlink_c::finalizeState_On() {} + +void dLytMeterMinusBtnBlink_c::initializeState_Select() {} +void dLytMeterMinusBtnBlink_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterMinusBtnBlink_c::finalizeState_Select() {} + +void dLytMeterMinusBtnBlink_c::initializeState_Off() {} +void dLytMeterMinusBtnBlink_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnBlink_c::finalizeState_Off() {} + +void dLytMeterMinusBtnBlink_c::init() { + mStateMgr.changeState(StateID_Wait); + mShouldBeSelect = 0; +} + +void dLytMeterMinusBtnBlink_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterMinusBtnText_c::initializeState_Wait() {} +void dLytMeterMinusBtnText_c::executeState_Wait() { + if (mShouldBeSelect != 0) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_On); + } +} +void dLytMeterMinusBtnText_c::finalizeState_Wait() {} + +void dLytMeterMinusBtnText_c::initializeState_On() {} +void dLytMeterMinusBtnText_c::executeState_On() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Select); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnText_c::finalizeState_On() {} + +void dLytMeterMinusBtnText_c::initializeState_Select() {} +void dLytMeterMinusBtnText_c::executeState_Select() { + if (mShouldBeSelect == 0) { + mpAnm->setBackwardsOnce(); + mpAnm->setToStart(); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterMinusBtnText_c::finalizeState_Select() {} + +void dLytMeterMinusBtnText_c::initializeState_Off() {} +void dLytMeterMinusBtnText_c::executeState_Off() { + if (mpAnm->isStop2()) { + mpAnm->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterMinusBtnText_c::finalizeState_Off() {} + +void dLytMeterMinusBtnText_c::init() { + mStateMgr.changeState(StateID_Wait); + mShouldBeSelect = 0; +} + +void dLytMeterMinusBtnText_c::execute() { + mStateMgr.executeState(); +} + +static const char *sPaneNames[] = { + "N_itemArrow_00", "N_arrowHand_00", "N_bBtn_00", "N_A_00", "N_B_00", "N_C_00", "N_D_00", + "N_E_00", "N_F_00", "N_G_00", "N_H_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", "N_textA_00", "N_textB_00", + "N_textC_00", "N_textD_00", "N_textE_00", "N_textF_00", "N_textG_06", "N_textH_07", "N_UIMode_00", +}; + +#define MINUS_BTN_PANE_ITEM_ARROW 0 +#define MINUS_BTN_PANE_ARROW_HAND 1 +#define MINUS_BTN_PANE_N_BTN_0 2 +#define MINUS_BTN_PANE_ITEM_OFFSET 3 +#define MINUS_BTN_PANE_ICON_OFFSET 11 +#define MINUS_BTN_PANE_TEXT_OFFSET 19 +#define MINUS_BTN_PANE_UIMODE 27 + +#define MINUS_BTN_NUM_PANES 28 + +static const d2d::LytBrlanMapping brlanMap[] = { + { "remoConBtn_01_in.brlan", "G_inOut_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemA_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemB_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemC_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemD_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemE_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemF_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemG_00"}, + { "remoConBtn_01_onOff.brlan", "G_itemH_00"}, + { "remoConBtn_01_onOff.brlan", "G_text_00"}, + { "remoConBtn_01_onOff.brlan", "G_text_01"}, + {"remoConBtn_01_selectOnOff.brlan", "G_selectOnOff_00"}, + { "remoConBtn_01_selectLoop.brlan", "G_selectLoop_00"}, + { "remoConBtn_01_have.brlan", "G_itemA_00"}, + { "remoConBtn_01_have.brlan", "G_itemB_00"}, + { "remoConBtn_01_have.brlan", "G_itemC_00"}, + { "remoConBtn_01_have.brlan", "G_itemD_00"}, + { "remoConBtn_01_have.brlan", "G_itemE_00"}, + { "remoConBtn_01_have.brlan", "G_itemF_00"}, + { "remoConBtn_01_have.brlan", "G_itemG_00"}, + { "remoConBtn_01_have.brlan", "G_itemH_00"}, + { "remoConBtn_01_itemArrow.brlan", "G_itemArrow_00"}, + { "remoConBtn_01_equip.brlan", "G_equipA_00"}, + { "remoConBtn_01_equip.brlan", "G_equipB_00"}, + { "remoConBtn_01_equip.brlan", "G_equipC_00"}, + { "remoConBtn_01_equip.brlan", "G_equipD_00"}, + { "remoConBtn_01_equip.brlan", "G_equipE_00"}, + { "remoConBtn_01_equip.brlan", "G_equipF_00"}, + { "remoConBtn_01_equip.brlan", "G_equipG_00"}, + { "remoConBtn_01_equip.brlan", "G_equipH_00"}, + { "remoConBtn_01_decide.brlan", "G_decide_00"}, + { "remoConBtn_01_input.brlan", "G_input_00"}, + { "remoConBtn_01_call.brlan", "G_call_00"}, +}; + +#define MINUS_BTN_ANIM_IN 0 +#define MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET 1 +#define MINUS_BTN_ANIM_TEXT_ONOFF_OFFSET 9 +#define MINUS_BTN_ANIM_SELECT_ONOFF 11 +#define MINUS_BTN_ANIM_SELECT_LOOP 12 +#define MINUS_BTN_ANIM_HAVE_OFFSET 13 +#define MINUS_BTN_ANIM_ARROW 21 +#define MINUS_BTN_ANIM_EQUIP_OFFSET 22 +#define MINUS_BTN_ANIM_DECIDE 30 +#define MINUS_BTN_ANIM_INPUT 31 +#define MINUS_BTN_ANIM_CALL 32 + +#define MINUS_BTN_NUM_ANIMS 33 + +#define MINUS_BTN_NUM_ITEMS 8 + +static const char *sTextboxNames[] = {"T_itemName_00", "T_itemNameS_00"}; + +static const char *sWindowNames[] = { + "W_bgP_01", + "W_bgP_09", +}; + +static const char *sGroupName = "G_ref_00"; + +void dLytMeterMinusBtn_c::initializeState_Wait() {} +void dLytMeterMinusBtn_c::executeState_Wait() { + if (field_0x4E88 == 1) { + mStateMgr.changeState(StateID_DemoMove); + } else if (field_0x4EB8 != 0) { + mStateMgr.changeState(StateID_MenuSelectingIn); + } else if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_MINUS)) { + mStateMgr.changeState(StateID_ToUnuse); + } +} +void dLytMeterMinusBtn_c::finalizeState_Wait() {} + +void dLytMeterMinusBtn_c::initializeState_MenuSelectingIn() { + bool locked = isPouchBocoburinLocked(); + mAnm[MINUS_BTN_ANIM_DECIDE].setAnimEnable(true); + mAnm[MINUS_BTN_ANIM_DECIDE].setFrame(0.0f); + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mpPanes[i + MINUS_BTN_PANE_ICON_OFFSET]->SetVisible(true); + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(true); + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setAnimEnable(true); + + field_0x4EBB[i] = 0; + field_0x4E98[i] = getPouchItemForSlot(i, true); + if (hasPouchSlot(i, true)) { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setFrame(0.0f); + if (field_0x4E98[i] != 0x32) { + s32 amount = getPouchItemAmount(i, true); + if (locked) { + mItemIcons[i].setBocoburinLocked(true); + } else { + mItemIcons[i].setBocoburinLocked(false); + } + + if (amount >= 0 && !locked) { + mItemIcons[i].setHasNumber(true); + mItemIcons[i].setNumber(amount); + mItemIcons[i].setItem(field_0x4E98[i]); + mItemIcons[i].setNumberColor(getPouchItemNumberColor(i, true)); + } else { + mItemIcons[i].setHasNumber(false); + mItemIcons[i].setItem(field_0x4E98[i]); + } + + if (getShieldDurability(i, true) >= 0.0f) { + mItemIcons[i].setShieldDurability(getShieldDurability(i, true)); + if (i == convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot())) { + mItemIcons[i].setShieldOnOff(false); + } else { + mItemIcons[i].setShieldOnOff(true); + field_0x4EBB[i] = 1; + } + } else { + mItemIcons[i].setShieldOnOff(false); + } + } else { + mpPanes[i + MINUS_BTN_PANE_ICON_OFFSET]->SetVisible(false); + } + } else { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setFrame(1.0f); + } + + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + mIcon[i].setShouldBeSelect(false); + } + + mLyt.calc(); + mAnm[MINUS_BTN_ANIM_DECIDE].setAnimEnable(false); + mAnm[MINUS_BTN_ANIM_IN].setForwardOnce(); + mAnm[MINUS_BTN_ANIM_IN].setFrame(0.0f); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(true); + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(false); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(false); + } +} +void dLytMeterMinusBtn_c::executeState_MenuSelectingIn() { + realizeShieldDurability(); + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mpPanes[i + MINUS_BTN_PANE_TEXT_OFFSET]->SetVisible(true); + s32 item = getPouchItemForSlot(i, true); + if (i == convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot())) { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(1.0f); + mpPanes[i + MINUS_BTN_PANE_TEXT_OFFSET]->SetVisible(true); + } else { + if (isUnequippable(item)) { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(1.0f); + } else { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(0.0f); + } + mpPanes[i + MINUS_BTN_PANE_TEXT_OFFSET]->SetVisible(false); + } + } + + if (mAnm[MINUS_BTN_ANIM_IN].isEndReached()) { + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setAnimEnable(false); + } + mStateMgr.changeState(StateID_MenuSelecting); + } + if (mAnm[MINUS_BTN_ANIM_IN].isEnabled()) { + mAnm[MINUS_BTN_ANIM_IN].play(); + } +} +void dLytMeterMinusBtn_c::finalizeState_MenuSelectingIn() { + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(false); +} + +void dLytMeterMinusBtn_c::initializeState_MenuSelecting() {} +void dLytMeterMinusBtn_c::executeState_MenuSelecting() { + realizeShieldDurability(); + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + s32 item = getPouchItemForSlot(i, true); + // If our soup turned cold while the menu is open, fix the icon and text + if (hasPouchSlot(i, true) && field_0x4E98[i] == LYT_CMN_PouchPumpkinSoup && + item == LYT_CMN_PouchPumpkinSoupCold) { + field_0x4E98[i] = item; + mItemIcons[i].setItem(item); + mItemIcons[i].setNumberColor(getPouchItemNumberColor(i, true)); + u32 fileSlot = convertLytPouchSlot(i); + setItemText(FileManager::GetInstance()->getPouchItem(fileSlot)); + } + } + + if (field_0x4EB8 == 0) { + mStateMgr.changeState(StateID_MenuSelectingOut); + } +} +void dLytMeterMinusBtn_c::finalizeState_MenuSelecting() {} + +void dLytMeterMinusBtn_c::initializeState_MenuSelectingOut() { + mAnm[MINUS_BTN_ANIM_IN].setBackwardsOnce(); + mAnm[MINUS_BTN_ANIM_IN].setToStart(); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(true); +} +void dLytMeterMinusBtn_c::executeState_MenuSelectingOut() { + realizeShieldDurability(); + if (mAnm[MINUS_BTN_ANIM_IN].isStop2()) { + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + if (mAnm[MINUS_BTN_ANIM_IN].isEnabled()) { + mAnm[MINUS_BTN_ANIM_IN].play(); + } +} +void dLytMeterMinusBtn_c::finalizeState_MenuSelectingOut() {} + +void dLytMeterMinusBtn_c::initializeState_ToUse() { + mAnm[MINUS_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[MINUS_BTN_ANIM_INPUT].setToStart(); + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(true); +} +void dLytMeterMinusBtn_c::executeState_ToUse() { + if (field_0x4EB8 != 0) { + mAnm[MINUS_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[MINUS_BTN_ANIM_INPUT].setToEnd2(); + mLyt.calc(); + mStateMgr.changeState(StateID_MenuSelectingIn); + } else { + if (mAnm[MINUS_BTN_ANIM_INPUT].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + if (mAnm[MINUS_BTN_ANIM_INPUT].isEnabled()) { + mAnm[MINUS_BTN_ANIM_INPUT].play(); + } + } +} +void dLytMeterMinusBtn_c::finalizeState_ToUse() { + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(false); +} + +void dLytMeterMinusBtn_c::initializeState_ToUnuse() { + mAnm[MINUS_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[MINUS_BTN_ANIM_INPUT].setToStart(); + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(true); +} +void dLytMeterMinusBtn_c::executeState_ToUnuse() { + if (field_0x4EB8 != 0) { + mAnm[MINUS_BTN_ANIM_INPUT].setFrame(0.0f); + mLyt.calc(); + mStateMgr.changeState(StateID_MenuSelectingIn); + } else { + if (mAnm[MINUS_BTN_ANIM_INPUT].isStop2()) { + mStateMgr.changeState(StateID_Unuse); + } + if (mAnm[MINUS_BTN_ANIM_INPUT].isEnabled()) { + mAnm[MINUS_BTN_ANIM_INPUT].play(); + } + } +} +void dLytMeterMinusBtn_c::finalizeState_ToUnuse() { + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(false); +} + +void dLytMeterMinusBtn_c::initializeState_Unuse() { + field_0x4E84 = 15; +} +void dLytMeterMinusBtn_c::executeState_Unuse() { + if (field_0x4E88 == 1) { + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[MINUS_BTN_ANIM_INPUT].setFrame(0.0f); + mLyt.calc(); + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_DemoMove); + } else if (field_0x4EB8 != 0) { + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[MINUS_BTN_ANIM_INPUT].setFrame(0.0f); + mLyt.calc(); + mAnm[MINUS_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_MenuSelectingIn); + } else { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_MINUS)) { + if (field_0x4E84 <= 0) { + mStateMgr.changeState(StateID_ToUse); + } else { + field_0x4E84--; + } + } else { + field_0x4E84 = 15; + } + } +} +void dLytMeterMinusBtn_c::finalizeState_Unuse() {} +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_971_; +void dLytMeterMinusBtn_c::initializeState_DemoMove() { + mDemoFrame = 0; + mSlotToDemo = -1; + field_0x4EC3 = 1; + mpPanes[MINUS_BTN_PANE_UIMODE]->SetVisible(false); + isPouchBocoburinLocked(); // @bug (?) return value ignored + s32 count = getPouchSlotCount(true); + + u8 slotConfig[8]; + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + if (hasPouchSlot(i, true)) { + if (field_0x4E8C == 0) { + slotConfig[i] = 2; + } else { + slotConfig[i] = 1; + } + } else { + slotConfig[i] = 0; + if (field_0x4E8C == 1 && i == convertFilePouchSlot(count)) { + mSlotToDemo = i; + field_0x4E8C = 2; + mDemoFrame = -15; + } + } + } + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + field_0x4E98[i] = getPouchItemForSlot(i, true); + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(true); + field_0x4EBB[i] = 0; + if (slotConfig[i] != 0) { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setFrame(0.0f); + if (field_0x4E98[i] != 0x32) { + mpPanes[i + MINUS_BTN_PANE_ICON_OFFSET]->SetVisible(true); + s32 amount = getPouchItemAmount(i, true); + bool locked = isPouchBocoburinLocked(); + if (locked) { + mItemIcons[i].setBocoburinLocked(true); + } else { + mItemIcons[i].setBocoburinLocked(false); + } + + if (amount >= 0 && !locked) { + mItemIcons[i].setHasNumber(true); + mItemIcons[i].setNumber(amount); + mItemIcons[i].setItem(field_0x4E98[i]); + mItemIcons[i].setNumberColor(getPouchItemNumberColor(i, true)); + } else { + mItemIcons[i].setHasNumber(false); + mItemIcons[i].setItem(field_0x4E98[i]); + } + + if (getShieldDurability(i, true) >= 0.0f) { + mItemIcons[i].setShieldDurability(getShieldDurability(i, true)); + if (i == convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot())) { + mItemIcons[i].setShieldOnOff(false); + } else { + mItemIcons[i].setShieldOnOff(true); + field_0x4EBB[i] = 1; + } + } else { + mItemIcons[i].setShieldOnOff(false); + } + } else { + mpPanes[i + MINUS_BTN_PANE_ICON_OFFSET]->SetVisible(false); + } + } else { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setFrame(1.0f); + mpPanes[i + MINUS_BTN_PANE_ICON_OFFSET]->SetVisible(true); + } + + if (i == convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot())) { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(1.0f); + mpPanes[i + MINUS_BTN_PANE_TEXT_OFFSET]->SetVisible(true); + } else { + if (isUnequippable(field_0x4E98[i])) { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(1.0f); + } else { + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(0.0f); + } + mpPanes[i + MINUS_BTN_PANE_TEXT_OFFSET]->SetVisible(false); + } + + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + mIcon[i].setShouldBeSelect(false); + } + + mAnm[MINUS_BTN_ANIM_IN].setForwardOnce(); + mAnm[MINUS_BTN_ANIM_IN].setToEnd2(); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(false); + + int numPlayingEffects = 0; + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mAnm[i + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(false); + mAnm[i + MINUS_BTN_ANIM_EQUIP_OFFSET].setAnimEnable(false); + mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(false); + + if (slotConfig[i] == 2 && numPlayingEffects < 4) { + nw4r::math::MTX34 mtx = mpPanes[i + MINUS_BTN_PANE_ITEM_OFFSET]->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + mSlotForEffect[numPlayingEffects] = i; + mEffects[numPlayingEffects].fn_80029980( + PARTICLE_RESOURCE_ID_MAPPING_971_, &pos, &mEffectsRot[numPlayingEffects], nullptr, nullptr, nullptr + ); + numPlayingEffects++; + } + } + + if (field_0x4E8C == 0) { + SmallSoundManager::GetInstance()->playSound(SE_S_DOGU_PORCH_ADD_FIRST); + } else { + SmallSoundManager::GetInstance()->playSound(SE_S_DOGU_PORCH_ADD); + } +} +void dLytMeterMinusBtn_c::executeState_DemoMove() { + mDemoFrame++; + if (mDemoFrame == 0) { + if (mSlotToDemo >= 0) { + mAnm[mSlotToDemo + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(true); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_HAVE_OFFSET].setFrame(0.0f); + getPaneByIndex(mSlotToDemo + MINUS_BTN_PANE_ICON_OFFSET)->SetVisible(false); + + mAnm[mSlotToDemo + MINUS_BTN_ANIM_EQUIP_OFFSET].setAnimEnable(true); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_EQUIP_OFFSET].setFrame(0.0f); + getPaneByIndex(mSlotToDemo + MINUS_BTN_PANE_TEXT_OFFSET)->SetVisible(false); + + mAnm[mSlotToDemo + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setForwardOnce(); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(true); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setFrame(0.0f); + + mIcon[mSlotToDemo].setShouldBeSelect(false); + mLyt.calc(); + + mAnm[mSlotToDemo + MINUS_BTN_ANIM_HAVE_OFFSET].setAnimEnable(false); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_EQUIP_OFFSET].setAnimEnable(false); + mAnm[mSlotToDemo + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET].setAnimEnable(false); + + nw4r::math::MTX34 mtx = getPaneByIndex(mSlotToDemo + MINUS_BTN_PANE_ITEM_OFFSET)->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + mSlotForEffect[0] = mSlotToDemo; + mEffects[0].fn_80029980( + PARTICLE_RESOURCE_ID_MAPPING_971_, &pos, &mEffectsRot[0], nullptr, nullptr, nullptr + ); + } + } else if (mDemoFrame > 0) { + for (int i = 0; i < 4; i++) { + s32 slot = mSlotForEffect[i]; + if (slot >= 0) { + mEffectsRot[i].z += demoRotIncrement; + nw4r::math::MTX34 mtx = getPaneByIndex(slot + MINUS_BTN_PANE_ITEM_OFFSET)->GetGlobalMtx(); + mVec3_c pos(mtx._03, mtx._13, 0.0f); + mEffects[i].fn_800271E0(&pos, &mEffectsRot[i], nullptr); + } + } + } + + if (mDemoFrame >= 65) { + mDemoFrame = 0; + mSlotToDemo = -1; + mStateMgr.changeState(StateID_DemoOut); + } +} +void dLytMeterMinusBtn_c::finalizeState_DemoMove() {} + +void dLytMeterMinusBtn_c::initializeState_DemoOut() { + mAnm[MINUS_BTN_ANIM_IN].setBackwardsOnce(); + mAnm[MINUS_BTN_ANIM_IN].setToStart(); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(true); +} +void dLytMeterMinusBtn_c::executeState_DemoOut() { + if (mAnm[MINUS_BTN_ANIM_IN].isStop2()) { + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(false); + field_0x4E88 = 4; + mStateMgr.changeState(StateID_Wait); + } + if (mAnm[MINUS_BTN_ANIM_IN].isEnabled()) { + mAnm[MINUS_BTN_ANIM_IN].play(); + } +} +void dLytMeterMinusBtn_c::finalizeState_DemoOut() {} + +bool dLytMeterMinusBtn_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("remoConBtn_01.brlyt", nullptr); + + for (int i = 0; i < MINUS_BTN_NUM_PANES; i++) { + mpPanes[i] = mLyt.findPane(sPaneNames[i]); + } + + for (int i = 0; i < MINUS_BTN_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[MINUS_BTN_ANIM_SELECT_LOOP].setAnimEnable(true); + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mIcon[i].setAnm(&mAnm[i + MINUS_BTN_ANIM_ITEM_ONOFF_OFFSET]); + mIcon[i].init(); + } + + mBlink.setAnm(&mAnm[MINUS_BTN_ANIM_SELECT_ONOFF]); + mBlink.init(); + + for (int i = 0; i < 2; i++) { + mText[i].setAnm(&mAnm[i + MINUS_BTN_ANIM_TEXT_ONOFF_OFFSET]); + mText[i].init(); + } + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(sTextboxNames[i]); + } + + for (int i = 0; i < 2; 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 < 8; i++) { + mSubpanes[i].mpLytPane = &mItemIcons[i]; + mItemIcons[i].build(resAcc, dLytCommonIconItem_c::POUCH); + mSubpaneList.PushBack(&mSubpanes[i]); + } + + if (mLyt.getLayout()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + linkMeters(g, &mSubpaneList); + } + } + + for (int i = 0; i < 8; i++) { + mItemIcons[i].reset(); + mItemIcons[i].setVisible(false); + mItemIcons[i].setSize(true); + field_0x4EBB[i] = 0; + field_0x4E98[i] = 0x32; + } + + for (s32 i = 0; i < 4; i++) { + mEffectsRot[i].setR(0); + mSlotForEffect[i] = -1; + mEffects[i].init(dLytControlGame_c::getInstance()); + } + + field_0x4E80 = 8; + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + + mpOwnerPane = nullptr; + + field_0x4E88 = 0; + field_0x4E8C = -1; + mDemoFrame = 0; + mSlotToDemo = -1; + + field_0x4EB8 = 0; + field_0x4EB9 = 0; + field_0x4EBA = 0; + + field_0x4EC3 = 0; + field_0x4E84 = 15; + + mAnm[MINUS_BTN_ANIM_IN].setForwardOnce(); + mAnm[MINUS_BTN_ANIM_IN].setFrame(0.0f); + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(true); + mAnm[MINUS_BTN_ANIM_CALL].setToEnd(); + mAnm[MINUS_BTN_ANIM_CALL].setAnimEnable(true); + + mLyt.calc(); + + mAnm[MINUS_BTN_ANIM_IN].setAnimEnable(false); + mAnm[MINUS_BTN_ANIM_CALL].setAnimEnable(false); + + mStateMgr.changeState(StateID_Wait); + + return true; +} + +bool dLytMeterMinusBtn_c::remove() { + for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) { + d2d::dSubPane *subPane = it->mpLytPane; + if (subPane != nullptr) { + nw4r::lyt::Pane *parent = subPane->getPane()->GetParent(); + parent->RemoveChild(subPane->getPane()); + } + } + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mSubpanes[i].mpLytPane->remove(); + } + + for (int i = 0; i < MINUS_BTN_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + + // Not removing our EffectsStructs I guess? + return true; +} + +bool dLytMeterMinusBtn_c::execute() { + bool btnShown = true; + if (dLytMeter_c::GetMain()->getUiMode() > 1 && !shouldCall() && !fn_800F75E0()) { + btnShown = false; + } + + if (field_0x4EC3 == 0) { + if (!btnShown) { + mpPanes[MINUS_BTN_PANE_UIMODE]->SetVisible(false); + } else { + mpPanes[MINUS_BTN_PANE_UIMODE]->SetVisible(true); + } + } + + if (dLytControlGame_c::getInstance()->isStateNormal() && mpPanes[MINUS_BTN_PANE_UIMODE]->IsVisible()) { + if (StoryflagManager::sInstance->getCounterOrFlag(568) != 0) { + if (field_0x4EB8 != 0) { + field_0x4EB9 = 0; + StoryflagManager::sInstance->unsetFlag(568); + } else { + field_0x4EB9 = 1; + } + } + } else { + field_0x4EB9 = 0; + } + + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() != StateID_DemoMove && *mStateMgr.getStateID() != StateID_DemoOut && + field_0x4EC3 != 0) { + if (btnShown) { + mpPanes[MINUS_BTN_PANE_UIMODE]->SetVisible(true); + } + field_0x4EC3 = false; + } + + return true; + } + + if (!getPane()->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_ToUnuse) { + mAnm[MINUS_BTN_ANIM_INPUT].setToEnd2(); + } + return true; + } + + if (!StoryflagManager::sInstance->getCounterOrFlag(30)) { + dLytMeter_c::GetInstance()->clearFlags(METER_BTN_MINUS); + } + + fn_800F7300(); + + mStateMgr.executeState(); + + if (field_0x4EB9 != 0 && dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_MINUS)) { + if (field_0x4EBA == 0) { + mAnm[MINUS_BTN_ANIM_CALL].setToEnd(); + mAnm[MINUS_BTN_ANIM_CALL].setAnimEnable(true); + field_0x4EBA = 1; + } + + if (mAnm[MINUS_BTN_ANIM_CALL].isEnabled()) { + mAnm[MINUS_BTN_ANIM_CALL].play(); + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_MINUS) && + mAnm[MINUS_BTN_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_MINUS_BUTTON_BLINK); + } + } + } else if (field_0x4EBA == 1) { + mAnm[MINUS_BTN_ANIM_CALL].setToEnd(); + } else if (mAnm[MINUS_BTN_ANIM_CALL].isEnabled()) { + mAnm[MINUS_BTN_ANIM_CALL].setAnimEnable(false); + } + + if (!field_0x4EB9) { + field_0x4EBA = field_0x4EB9; + } + + field_0x4EB9 = 0; + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mIcon[i].execute(); + } + + mBlink.execute(); + + for (int i = 0; i < 2; i++) { + mText[i].execute(); + } + + mVec3_c t1(0.0f, 0.0f, 0.0f); + t1.z = mArrowRotation; + mpPanes[MINUS_BTN_PANE_ITEM_ARROW]->SetRotate(t1); + // But rotate the button and the pointer back so that + // they point up + mVec3_c t2(0.0f, 0.0f, 0.0f); + t2.z = -mArrowRotation; + mpPanes[MINUS_BTN_PANE_ARROW_HAND]->SetRotate(t2); + mpPanes[MINUS_BTN_PANE_N_BTN_0]->SetRotate(t2); + + f32 frame = mAnm[MINUS_BTN_ANIM_ARROW].getAnimDuration(); + if (mArrowLength < 0.0f) { + mArrowLength = 0.0f; + } + if (mArrowLength > 1.0f) { + mArrowLength = 1.0f; + } + mAnm[MINUS_BTN_ANIM_ARROW].setFrame(frame * mArrowLength); + mAnm[MINUS_BTN_ANIM_ARROW].setAnimEnable(true); + + if (mAnm[MINUS_BTN_ANIM_SELECT_LOOP].isEnabled()) { + mAnm[MINUS_BTN_ANIM_SELECT_LOOP].play(); + } + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mSubpanes[i].mpLytPane->execute(); + } + + return true; +} + +bool dLytMeterMinusBtn_c::shouldCall() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && StoryflagManager::sInstance->getCounterOrFlag(568)) { + return true; + } + return false; +} + +void dLytMeterMinusBtn_c::fn_800F7300() { + s32 itemId = -1; + for (int i = 0; i < 8; i++) { + int item = getPouchItemForSlot(i, true); + if (field_0x4E80 == i && field_0x4E88 == 0 && item != 0x32) { + mIcon[i].setShouldBeSelect(true); + u32 slot = convertLytPouchSlot(i); + if (slot < getPouchSlotCount(true)) { + itemId = FileManager::GetInstance()->getPouchItem(slot); + if (itemId == 0) { + itemId = -1; + } + } + } else { + mIcon[i].setShouldBeSelect(false); + } + } + + if (*mStateMgr.getStateID() == StateID_Wait || *mStateMgr.getStateID() == StateID_MenuSelectingIn || + *mStateMgr.getStateID() == StateID_ToUnuse || *mStateMgr.getStateID() == StateID_Unuse) { + itemId = -1; + } + + setItemText(itemId); + + if (itemId >= 0) { + mBlink.setShouldBeSelect(true); + if (isNotMedalOrExtraAmmo(itemId)) { + mText[0].setShouldBeSelect(true); + } else { + mText[0].setShouldBeSelect(false); + } + } else { + mBlink.setShouldBeSelect(false); + mText[0].setShouldBeSelect(false); + } +} + +bool dLytMeterMinusBtn_c::demoRelated(s32 arg) { + if (field_0x4E88 == 0) { + field_0x4E88 = 1; + field_0x4E8C = arg; + mDemoFrame = 0; + for (s32 i = 0; i < 4; i++) { + mEffectsRot[i].setR(0); + mSlotForEffect[i] = -1; + } + mArrowRotation = 0.0f; + mArrowLength = 0.0f; + + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + mIcon[i].init(); + } + } else if (field_0x4E88 == 4) { + field_0x4E88 = 0; + return true; + } + return false; +} + +bool dLytMeterMinusBtn_c::fn_800F75E0() const { + return field_0x4E88 != 0; +} + +bool dLytMeterMinusBtn_c::fn_800F7600() const { + if (field_0x4EB8 != 0 || field_0x4E80 < 8) { + if (*mStateMgr.getStateID() == StateID_ToUse || *mStateMgr.getStateID() == StateID_Wait) { + return true; + } + } + + return *mStateMgr.getStateID() == StateID_MenuSelectingIn || *mStateMgr.getStateID() == StateID_MenuSelecting || + *mStateMgr.getStateID() == StateID_MenuSelectingOut; +} + +bool dLytMeterMinusBtn_c::fn_800F7760() const { + if (!StoryflagManager::sInstance->getCounterOrFlag(30) || + (mpOwnerPane == nullptr || !mpOwnerPane->IsVisible() || dLytMeter_c::GetMain()->fn_800D5650() || + dLytMeter_c::GetMain()->fn_800D5680() || + !dLytMeter_c::GetMain()->getMinusBtnNotHiddenByAreaCaption())) { + return false; + } + + return true; +} + +bool dLytMeterMinusBtn_c::isUnequippable(s32 item) const { + switch (item) { + case LYT_CMN_PouchSeedSatchelSmall: + case LYT_CMN_PouchSeedSatchelMed: + case LYT_CMN_PouchSeedSatchelBig: + case LYT_CMN_PouchQuiverSmall: + case LYT_CMN_PouchQuiverMed: + case LYT_CMN_PouchQuiverBig: + case LYT_CMN_PouchBombBagSmall: + case LYT_CMN_PouchBombBagMed: + case LYT_CMN_PouchBombBagBig: + case LYT_CMN_PouchMedalDurable: + case LYT_CMN_PouchMedalHeart: + case LYT_CMN_PouchMedalLife: + case LYT_CMN_PouchMedalRupee: + case LYT_CMN_PouchMedalTreasure: + case LYT_CMN_PouchMedalCursed: + case LYT_CMN_Pouch32: // ? + case LYT_CMN_PouchMedalBug: return true; + default: return false; + } +} + +void dLytMeterMinusBtn_c::setItemText(s32 item) { + if (item >= 0 && field_0x4E88 == 0) { + mText[1].setShouldBeSelect(true); + SizedString<16> label; + label.sprintf("NAME_ITEM_%03d", item); + mpTextBoxes[0]->setMessageWithGlobalTextProcessor2(label, nullptr); + mpTextBoxes[1]->setMessageWithGlobalTextProcessor2(label, nullptr); + mpWindows[1]->UpdateSize(mpSizeBoxes[1], 32.0f); + } else { + mText[1].setShouldBeSelect(false); + } +} + +void dLytMeterMinusBtn_c::realizeShieldDurability() { + for (int i = 0; i < MINUS_BTN_NUM_ITEMS; i++) { + if (field_0x4EBB[i] != 0) { + mItemIcons[i].setShieldDurability(getShieldDurability(i, true)); + } + } +} + +bool dLytMeterMinusBtn_c::isNotMedalOrExtraAmmo(s32 item) { + if (isItemExtraAmmo(item) || isItemMedal(item)) { + return false; + } + return true; +} 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..7b9468d2 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,228 @@ #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 != mDisplayedAction) { + field_0x174 = mDisplayedAction; + } + 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]); + } + + mDisplayedAction = 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; +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +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); + mDisplayedAction = 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..582cba17 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,270 @@ #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; + + dLytMeter_c::GetMain()->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 hasNunStk = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_NUN_STK); + u8 val = dLytMeter_c::getDowsing0x550A(); + if (hasNunStk != field_0x1C5 || val != field_0x1C6) { + field_0x1C5 = hasNunStk; + field_0x1C6 = val; + + if (hasNunStk) { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(1.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + dLytMeter_c::GetMain()->getNunStk()->getBgPane()->SetVisible(true); + } else { + if (val) { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(1.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + } else { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(0.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + setMessage(field_0x1B4); + } + dLytMeter_c::GetMain()->getNunStk()->getBgPane()->SetVisible(false); + } + } + + mStateMgr.executeState(); + for (int i = 0; i < NUN_BG_NUM_ANIMS; i++) { + if (i != 1 && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + return true; +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +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_plus_btn.cpp b/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp index 58601775..4c2cfb9e 100644 --- a/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp @@ -1,6 +1,336 @@ #include "d/lyt/meter/d_lyt_meter_plus_btn.h" +#include "common.h" +#include "d/d_stage_mgr.h" +#include "d/flag/dungeonflag_manager.h" +#include "d/flag/sceneflag_manager.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/d_window.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "d/t/d_t_map_mark.h" +#include "f/f_base.h" +#include "f/f_manager.h" +#include "f/f_profile_name.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterPlusBtn_c, Wait); STATE_DEFINE(dLytMeterPlusBtn_c, ToUse); STATE_DEFINE(dLytMeterPlusBtn_c, ToUnuse); STATE_DEFINE(dLytMeterPlusBtn_c, Unuse); + +static const d2d::LytBrlanMapping brlanMap[] = { + {"remoConBtn_02_input.brlan", "G_input_00"}, + { "remoConBtn_02_call.brlan", "G_call_00"}, + { "remoConBtn_02_loop.brlan", "G_loop_00"}, +}; + +#define PLUS_BTN_ANIM_INPUT 0 +#define PLUS_BTN_ANIM_CALL 1 +#define PLUS_BTN_ANIM_LOOP 2 + +#define PLUS_BTN_NUM_ANIMS 3 + +void dLytMeterPlusBtn_c::initializeState_Wait() {} +void dLytMeterPlusBtn_c::executeState_Wait() { + if (!dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS)) { + mStateMgr.changeState(StateID_ToUnuse); + } +} +void dLytMeterPlusBtn_c::finalizeState_Wait() {} + +void dLytMeterPlusBtn_c::initializeState_ToUse() { + mAnm[PLUS_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[PLUS_BTN_ANIM_INPUT].setToStart(); + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(true); +} +void dLytMeterPlusBtn_c::executeState_ToUse() { + if (mAnm[PLUS_BTN_ANIM_INPUT].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + if (mAnm[PLUS_BTN_ANIM_INPUT].isEnabled()) { + mAnm[PLUS_BTN_ANIM_INPUT].play(); + } +} +void dLytMeterPlusBtn_c::finalizeState_ToUse() { + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(false); +} + +void dLytMeterPlusBtn_c::initializeState_ToUnuse() { + mAnm[PLUS_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[PLUS_BTN_ANIM_INPUT].setToStart(); + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(true); +} +void dLytMeterPlusBtn_c::executeState_ToUnuse() { + if (mAnm[PLUS_BTN_ANIM_INPUT].isStop2()) { + mStateMgr.changeState(StateID_Unuse); + } + if (mAnm[PLUS_BTN_ANIM_INPUT].isEnabled()) { + mAnm[PLUS_BTN_ANIM_INPUT].play(); + } +} +void dLytMeterPlusBtn_c::finalizeState_ToUnuse() { + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(false); +} + +void dLytMeterPlusBtn_c::initializeState_Unuse() {} +void dLytMeterPlusBtn_c::executeState_Unuse() { + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS)) { + if (field_0x1BC <= 0) { + mStateMgr.changeState(StateID_ToUse); + } else { + field_0x1BC--; + } + } else { + field_0x1BC = 15; + } +} +void dLytMeterPlusBtn_c::finalizeState_Unuse() {} + +static const char *sPane[] = {"N_all_00"}; + +static const char *sTextBoxes[] = { + "T_mapBtn_02", + "T_mapBtnS_00", +}; + +static const char *sWindows[] = {"W_bgP_00"}; + +bool dLytMeterPlusBtn_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("remoConBtn_02.brlyt", nullptr); + + for (int i = 0; i < PLUS_BTN_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 < 1; i++) { + mpPane[i] = mLyt.findPane(sPane[i]); + } + + 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]); + mpWindow[i]->UpdateSize(mpSizeBox[i], 32.0f); + } + + field_0x1B0 = LytDoButtonRelated::DO_NONE; + field_0x1B4 = LytDoButtonRelated::DO_NONE; + + setMessage(LytDoButtonRelated::DO_NONE); + + field_0x1C0 = 0; + field_0x1C1 = StoryflagManager::sInstance->getCounterOrFlag(212); + + mCallCount = 0; + + mpOwnerPane = nullptr; + + mShouldCall = false; + field_0x1C3 = false; + field_0x1BC = 15; + + mAnm[PLUS_BTN_ANIM_LOOP].setAnimEnable(true); + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[PLUS_BTN_ANIM_INPUT].setFrame(0.0f); + mLyt.calc(); + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterPlusBtn_c::remove() { + for (int i = 0; i < PLUS_BTN_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterPlusBtn_c::execute() { + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_Wait && dStageMgr_c::GetInstance()->isInLastBoss()) { + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[PLUS_BTN_ANIM_INPUT].setToEnd(); + mLyt.calc(); + mAnm[PLUS_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Unuse); + } + return true; + } + + // Better double check if the map is open! + if (hasSpecificMapMark() && DungeonflagManager::sInstance->getCounterOrFlag(2, 8) && !isMapOpen() && + dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS) && !isMapOpen()) { + mShouldCall = true; + } else { + if (dLytControlGame_c::getInstance()->isStateNormal()) { + if (StoryflagManager::sInstance->getCounterOrFlag(567)) { + mShouldCall = true; + } else { + mShouldCall = false; + } + } else { + mShouldCall = false; + } + } + + if (mShouldCall && dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS)) { + if (!field_0x1C3) { + mAnm[PLUS_BTN_ANIM_CALL].setToEnd(); + mAnm[PLUS_BTN_ANIM_CALL].setAnimEnable(true); + field_0x1C3 = true; + } + if (mAnm[PLUS_BTN_ANIM_CALL].isEnabled()) { + mAnm[PLUS_BTN_ANIM_CALL].play(); + if (dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_PLUS) && + mAnm[PLUS_BTN_ANIM_CALL].getFrame() == 1.0f && mCallCount < 3) { + SmallSoundManager::GetInstance()->playSound(SE_S_PLUS_BUTTON_BLINK); + mCallCount++; + } + } + } else if (field_0x1C3 == true) { + mAnm[PLUS_BTN_ANIM_CALL].setToEnd(); + } else if (mAnm[PLUS_BTN_ANIM_CALL].isEnabled()) { + mAnm[PLUS_BTN_ANIM_CALL].setAnimEnable(false); + } + + if (!mShouldCall) { + field_0x1C3 = mShouldCall; + } + mShouldCall = false; + + field_0x1B0 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_PLUS); + if (field_0x1B0 != field_0x1B4) { + setMessage(field_0x1B0); + } + + mStateMgr.executeState(); + + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_PLUS, LytDoButtonRelated::DO_NONE); + + if (mAnm[PLUS_BTN_ANIM_LOOP].isEnabled()) { + mAnm[PLUS_BTN_ANIM_LOOP].play(); + } + + return true; +} + +bool dLytMeterPlusBtn_c::isCalling() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && StoryflagManager::sInstance->getCounterOrFlag(567)) { + return true; + } + return false; +} + +void dLytMeterPlusBtn_c::setCall(bool shouldCall) { + field_0x1C0 = shouldCall; + if (shouldCall) { + StoryflagManager::sInstance->setFlag(212); + } +} + +bool dLytMeterPlusBtn_c::hasSpecificMapMark() { + dTgMapMark_c *mark = nullptr; + while ((mark = static_cast(fManager_c::searchBaseByGroupType(fBase_c::STAGE, mark))) != nullptr) { + if (mark->checkActorProperty(0x100) || mark->profile_name != fProfile::T_MAP_MARK || + mark->rotz_shift0_0xf == 1) { + continue; + } + + switch (mark->shift0_0x3) { + case 0: { + mark->field_0x10D = mark->shift4_0x8 < 0xFF && + SceneflagManager::sInstance->checkBoolFlag(mark->roomid, mark->shift4_0x8); + break; + } + case 1: { + mark->field_0x10D = mark->shift4_0x8 < 0xFF && + !SceneflagManager::sInstance->checkBoolFlag(mark->roomid, mark->shift4_0x8); + break; + } + case 3: { + mark->field_0x10D = true; + break; + } + } + + switch (mark->shift2_0x3) { + case 0: { + mark->field_0x10C = StoryflagManager::sInstance->getCounterOrFlag(mark->mTriggerStoryFlag) != 0; + break; + } + case 1: { + mark->field_0x10C = StoryflagManager::sInstance->getCounterOrFlag(mark->mTriggerStoryFlag) == 0; + break; + } + case 3: { + mark->field_0x10C = true; + break; + } + } + + mark->field_0x10E = mark->field_0x10C && mark->field_0x10D; + + if (mark->shift23_0x8 < 0xFF && SceneflagManager::sInstance->checkBoolFlag(mark->roomid, mark->shift23_0x8)) { + mark->field_0x10E = !mark->field_0x10E; + if (mark->rotz_shift12_0x3 != 0) { + mark->field_0x10E = false; + } + } + + if (mark->field_0x10E && mark->rotz_shift10_0x3 != 0) { + return true; + } + } + + return false; +} + +bool dLytMeterPlusBtn_c::isMapOpen() const { + if (dLytControlGame_c::getInstance() != nullptr) { + return dLytControlGame_c::getInstance()->isInSomeMapState(); + } + return false; +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +void dLytMeterPlusBtn_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]->SetVisible(true); + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + mpWindow[0]->SetVisible(true); + mpWindow[0]->UpdateSize(mpSizeBox[0], 32.0f); + } else { + mpTextBoxes[0]->SetVisible(false); + mpTextBoxes[1]->SetVisible(false); + mpWindow[0]->SetVisible(false); + } + field_0x1B4 = id; +} diff --git a/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp b/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp index 2abbc350..0986a7bc 100644 --- a/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp +++ b/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp @@ -1,5 +1,7 @@ #include "d/lyt/meter/d_lyt_meter_remocon_bg.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 "toBeSorted/event_manager.h" @@ -8,6 +10,7 @@ STATE_DEFINE(dLytMeterRemoconBg_c, On); STATE_DEFINE(dLytMeterRemoconBg_c, Active); STATE_DEFINE(dLytMeterRemoconBg_c, Off); +// Incredible use of the state manager here void dLytMeterRemoconBg_c::initializeState_Wait() {} void dLytMeterRemoconBg_c::executeState_Wait() {} void dLytMeterRemoconBg_c::finalizeState_Wait() {} @@ -24,12 +27,13 @@ void dLytMeterRemoconBg_c::initializeState_Off() {} void dLytMeterRemoconBg_c::executeState_Off() {} void dLytMeterRemoconBg_c::finalizeState_Off() {} - bool dLytMeterRemoconBg_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("remoConBg_00.brlyt", nullptr); - static const char *n1 = "N_remoConBg_00"; - mpPane = mLyt.findPane(n1); + static const char *sPanes[] = {"N_remoConBg_00"}; + for (int i = 0; i < 1; i++) { + mpPane[i] = mLyt.findPane(sPanes[i]); + } field_0xE8 = 0x61; field_0xDC = 0x61; field_0xE0 = 0x61; @@ -44,18 +48,23 @@ bool dLytMeterRemoconBg_c::remove() { } bool dLytMeterRemoconBg_c::execute() { - // TODO + if (EventManager::isInEvent() || dLytMeter_c::getItemSelect0x75A2() != 0) { + field_0xEC = 0; + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_REMOCON_BG, LytDoButtonRelated::DO_NONE); + } else { + field_0xEC = 1; + } + s32 d = dLytDobutton_c::getFn0x8010E5E0(); + if (d == 1 || d == 2 || d == 3 || d == 4 || d == 12 || d == 13 || d == 14 || d == 6) { + LytDoButtonRelated::Action_e a = LytDoButtonRelated::convertDoButton(dLytDobutton_c::getFn0x8010E5D0()); + if (a >= 0) { + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_REMOCON_BG, a); + } + } + + field_0xE0 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_REMOCON_BG); + field_0xE4 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_REMOCON_BG); + mStateMgr.executeState(); + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_REMOCON_BG, LytDoButtonRelated::DO_NONE); return true; } - -const char *dLytMeterRemoconBg_c::getName() const { - return mLyt.getName(); -} - -d2d::LytBase_c *dLytMeterRemoconBg_c::getLyt() { - return &mLyt; -} - -nw4r::lyt::Pane *dLytMeterRemoconBg_c::getPane() { - return mLyt.getLayout()->GetRootPane(); -} diff --git a/src/d/lyt/meter/d_lyt_meter_rupy.cpp b/src/d/lyt/meter/d_lyt_meter_rupy.cpp index d6eb5895..976ba037 100644 --- a/src/d/lyt/meter/d_lyt_meter_rupy.cpp +++ b/src/d/lyt/meter/d_lyt_meter_rupy.cpp @@ -1,5 +1,14 @@ #include "d/lyt/meter/d_lyt_meter_rupy.h" +#include "c/c_math.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_meter_configuration.h" +#include "nw4r/math/math_types.h" +#include "toBeSorted/small_sound_mgr.h" + +extern "C" s32 getRupeeCounter2(); +extern "C" u32 getCurrentWalletCapacity2(); + STATE_DEFINE(dLytMeterRupyStart_c, Wait); STATE_DEFINE(dLytMeterRupyStart_c, Start); @@ -10,3 +19,599 @@ STATE_DEFINE(dLytMeterRupy_c, In); STATE_DEFINE(dLytMeterRupy_c, Active); STATE_DEFINE(dLytMeterRupy_c, Start); STATE_DEFINE(dLytMeterRupy_c, Out); + +void dLytMeterRupyStart_c::initializeState_Wait() {} +void dLytMeterRupyStart_c::executeState_Wait() { + if (mShouldStart) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Start); + } +} +void dLytMeterRupyStart_c::finalizeState_Wait() {} + +void dLytMeterRupyStart_c::initializeState_Start() {} +void dLytMeterRupyStart_c::executeState_Start() { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mShouldStart = false; + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } +} +void dLytMeterRupyStart_c::finalizeState_Start() {} + +void dLytMeterRupyStart_c::init() { + mShouldStart = false; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterRupyStart_c::execute() { + mStateMgr.executeState(); +} + +void dLytMeterRupyBlink_c::initializeState_Wait() {} +void dLytMeterRupyBlink_c::executeState_Wait() { + if (mShouldFlash) { + mpAnm->setForwardOnce(); + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(true); + mStateMgr.changeState(StateID_Flash); + } +} +void dLytMeterRupyBlink_c::finalizeState_Wait() {} + +void dLytMeterRupyBlink_c::initializeState_Flash() {} +void dLytMeterRupyBlink_c::executeState_Flash() { + if (mImmediatelyCancelFlash) { + mpAnm->setFrame(0.0f); + mpAnm->setAnimEnable(false); + mImmediatelyCancelFlash = false; + mShouldFlash = false; + mStateMgr.changeState(StateID_Wait); + } else { + if (mpAnm->isEndReached()) { + mpAnm->setAnimEnable(false); + mShouldFlash = false; + mStateMgr.changeState(StateID_Wait); + } + + if (mpAnm->isEnabled()) { + mpAnm->play(); + } + } +} +void dLytMeterRupyBlink_c::finalizeState_Flash() {} + +void dLytMeterRupyBlink_c::init() { + mShouldFlash = false; + mImmediatelyCancelFlash = false; + mStateMgr.changeState(StateID_Wait); +} + +void dLytMeterRupyBlink_c::execute() { + mStateMgr.executeState(); +} + +static const d2d::LytBrlanMapping brlanMap[] = { + { "rupy_01_in.brlan", "G_inOut_00"}, + { "rupy_01_sizeChange.brlan", "G_sizeChange"}, + { "rupy_01_keta.brlan", "G_keta_00"}, + { "rupy_01_color.brlan", "G_color_00"}, + { "rupy_01_number.brlan", "G_number_00"}, + { "rupy_01_number.brlan", "G_number_01"}, + { "rupy_01_number.brlan", "G_number_02"}, + { "rupy_01_number.brlan", "G_number_03"}, + { "rupy_01_loop.brlan", "G_loop_00"}, + {"rupy_01_randomFlash.brlan", "G_number_00"}, + {"rupy_01_randomFlash.brlan", "G_number_01"}, + {"rupy_01_randomFlash.brlan", "G_number_02"}, + {"rupy_01_randomFlash.brlan", "G_number_03"}, + { "rupy_01_jump.brlan", "G_number_00"}, + { "rupy_01_jump.brlan", "G_number_01"}, + { "rupy_01_jump.brlan", "G_number_02"}, + { "rupy_01_jump.brlan", "G_number_03"}, + { "rupy_01_start.brlan", "G_number_00"}, + { "rupy_01_start.brlan", "G_number_01"}, + { "rupy_01_start.brlan", "G_number_02"}, + { "rupy_01_start.brlan", "G_number_03"}, + { "rupy_01_out.brlan", "G_inOut_00"}, +}; + +#define RUPY_ANIM_IN 0 +#define RUPY_ANIM_SIZE_CHANGE 1 +#define RUPY_ANIM_KETA 2 +#define RUPY_ANIM_COLOR 3 +#define RUPY_ANIM_NUMBER_OFFSET 4 +#define RUPY_ANIM_LOOP 8 +#define RUPY_ANIM_FLASH_OFFSET 9 +#define RUPY_ANIM_JUMP_OFFSET 13 +#define RUPY_ANIM_START_OFFSET 17 +#define RUPY_ANIM_OUT 21 + +#define RUPY_NUM_ANIMS 22 + +#define RUPY_NUM_DIGITS 4 + +static const char *sPaneNames[] = { + "N_ketaT_00", + "N_ketaT_01", + "N_ketaT_02", + "N_ketaT_03", +}; + +void dLytMeterRupy_c::initializeState_In() { + mAnm[RUPY_ANIM_OUT].setAnimEnable(false); + mAnm[RUPY_ANIM_OUT].setFrame(0.0f); + + mAnm[RUPY_ANIM_IN].setForwardOnce(); + if (field_0x8A9 == 1) { + mAnm[RUPY_ANIM_IN].setFrame(0.0f); + } else { + mAnm[RUPY_ANIM_IN].setToEnd(); + } + + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + if (mAnm[i + RUPY_ANIM_FLASH_OFFSET].isEnabled()) { + mBlinkParts[i].cancelFlash(); + } else { + mAnm[i + RUPY_ANIM_FLASH_OFFSET].setAnimEnable(true); + } + + mAnm[i + RUPY_ANIM_FLASH_OFFSET].setFrame(0.0f); + } + + mLyt.calc(); + + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mAnm[i + RUPY_ANIM_FLASH_OFFSET].setAnimEnable(false); + } + field_0x8A9 = 0; + mAnm[RUPY_ANIM_IN].setAnimEnable(true); + field_0x8AB = 1; +} +void dLytMeterRupy_c::executeState_In() { + if (mAnm[RUPY_ANIM_IN].isEndReached()) { + mAnm[RUPY_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} +void dLytMeterRupy_c::finalizeState_In() {} + +void dLytMeterRupy_c::initializeState_Active() {} +void dLytMeterRupy_c::executeState_Active() { + bool result = updateDisplayedAmount(false); + if (field_0x890 == 0) { + mStateMgr.changeState(StateID_Start); + } else if (!result && field_0x890 != -1) { + field_0x890 = -1; + } +} +void dLytMeterRupy_c::finalizeState_Active() {} + +void dLytMeterRupy_c::initializeState_Start() { + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + if (i < mNumDisplayedDigits) { + mStartParts[i].setShouldStart(true); + } + } +} +void dLytMeterRupy_c::executeState_Start() { + updateDisplayedAmount(false); + bool bAllDone = true; + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + if (mStartParts[i].isStarting()) { + bAllDone = false; + } + } + + if (bAllDone) { + mStateMgr.changeState(StateID_Active); + } + + field_0x890++; +} +void dLytMeterRupy_c::finalizeState_Start() {} + +void dLytMeterRupy_c::initializeState_Out() { + mAnm[RUPY_ANIM_OUT].setForwardOnce(); + if (field_0x8AA == 1 || field_0x8AA == 3) { + mAnm[RUPY_ANIM_OUT].setFrame(0.0f); + } else { + mAnm[RUPY_ANIM_OUT].setToEnd(); + } + + if (field_0x8AA >= 3 && field_0x8AA < 5) { + field_0x8AE = 1; + } else { + field_0x8AE = 0; + } + + field_0x8AA = 0; + mAnm[RUPY_ANIM_OUT].setAnimEnable(true); +} +void dLytMeterRupy_c::executeState_Out() { + if (mAnm[RUPY_ANIM_OUT].isEndReached()) { + field_0x8AB = 0; + + if (field_0x8AE == 0 && hasChangeInRupees()) { + mDisplayedRupeeCount = getRupeeCounter2(); + updateDisplayedAmount(true); + } + + mAnm[RUPY_ANIM_OUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} +void dLytMeterRupy_c::finalizeState_Out() {} + +bool dLytMeterRupy_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("rupy_01.brlyt", nullptr); + + for (int i = 0; i < RUPY_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 < RUPY_NUM_DIGITS; i++) { + mStartParts[i].setAnm(&mAnm[i + RUPY_ANIM_START_OFFSET]); + mStartParts[i].init(); + mBlinkParts[i].setAnm(&mAnm[i + RUPY_ANIM_FLASH_OFFSET]); + mBlinkParts[i].init(); + } + + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mpPanes[i] = mLyt.findPane(sPaneNames[i]); + } + + mAnm[RUPY_ANIM_SIZE_CHANGE].setAnimEnable(true); + mAnm[RUPY_ANIM_COLOR].setAnimEnable(true); + mAnm[RUPY_ANIM_LOOP].setAnimEnable(true); + + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mAnm[i + RUPY_ANIM_NUMBER_OFFSET].setAnimEnable(true); + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setAnimEnable(true); + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(0.0f); + } + + mSize = 1; + mAnm[RUPY_ANIM_SIZE_CHANGE].setFrame(mSize); + mRupeeColor = 0; + mAnm[RUPY_ANIM_COLOR].setFrame(mRupeeColor); + mAnm[RUPY_ANIM_IN].setAnimEnable(true); + mAnm[RUPY_ANIM_IN].setToEnd(); + mLyt.calc(); + mAnm[RUPY_ANIM_IN].setAnimEnable(false); + + field_0x8AB = 0; + mDisplayedRupeeCount = getRupeeCounter2(); + field_0x890 = -1; + mBlinkDelay = cM::rndF(10.0f); + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mJumpState[i] = 0xFF; + mDisplayedDigits[i] = 0; + mPrevDigits[i] = 0; + } + + field_0x8A9 = 0; + field_0x8AA = 0; + mNumDisplayedDigits = 0; + field_0x8AC = 0; + field_0x8AD = 0; + + field_0x8AE = 0; + updateDisplayedAmount(true); + + mStateMgr.changeState(StateID_Active); + return true; +} + +bool dLytMeterRupy_c::remove() { + for (int i = 0; i < RUPY_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterRupy_c::execute() { + if (field_0x8A9 != 0) { + mStateMgr.changeState(StateID_In); + } else if (field_0x8AA != 0) { + mStateMgr.changeState(StateID_Out); + } + + mStateMgr.executeState(); + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mStartParts[i].execute(); + mBlinkParts[i].execute(); + } + + for (s32 i = 0; i < RUPY_NUM_ANIMS; i++) { + switch (i) { + case RUPY_ANIM_SIZE_CHANGE: + case RUPY_ANIM_KETA: + case RUPY_ANIM_COLOR: + case RUPY_ANIM_NUMBER_OFFSET + 0: + case RUPY_ANIM_NUMBER_OFFSET + 1: + case RUPY_ANIM_NUMBER_OFFSET + 2: + case RUPY_ANIM_NUMBER_OFFSET + 3: + case RUPY_ANIM_JUMP_OFFSET + 0: + case RUPY_ANIM_JUMP_OFFSET + 1: + case RUPY_ANIM_JUMP_OFFSET + 2: + case RUPY_ANIM_JUMP_OFFSET + 3: + case RUPY_ANIM_START_OFFSET + 0: + case RUPY_ANIM_START_OFFSET + 1: + case RUPY_ANIM_START_OFFSET + 2: + case RUPY_ANIM_START_OFFSET + 3: continue; + } + // Yes, really + u32 idx = i; + if (mAnm[idx].isEnabled()) { + mAnm[idx].play(); + } + } + + mAnm[RUPY_ANIM_SIZE_CHANGE].setFrame(mSize); + + bool isMax = false; + u32 current = mDisplayedRupeeCount; + u32 capacity = getCurrentWalletCapacity2(); + if (current != 0 && capacity == current) { + isMax = true; + }; + if (isMax != mRupeeColor) { + mRupeeColor = isMax; + mAnm[RUPY_ANIM_COLOR].setFrame(mRupeeColor); + } + + return true; +} + +bool dLytMeterRupy_c::hasChangeInRupees() const { + s32 amount = getRupeeCounter2(); + if (amount > 9999) { + amount = 9999; + } else if (amount < 0) { + amount = 0; + } + return amount != mDisplayedRupeeCount; +} + +s32 dLytMeterRupy_c::getRupeeDifference() const { + return getRupeeCounter2() - mDisplayedRupeeCount; +} + +mVec3_c dLytMeterRupy_c::getLastVisibleDigitPosition() { + mVec3_c ret(0.0f, 0.0f, 0.0f); + u32 idx = mNumDisplayedDigits - 1; + if (idx <= 3) { + nw4r::math::MTX34 mtx = mpPanes[idx]->GetGlobalMtx(); + ret.x = mtx._03; + ret.y = mtx._13; + } + + return ret; +} + +void dLytMeterRupy_c::setDigit(s32 index, s32 digit) { + mDisplayedDigits[index] = digit; + s32 num = index + RUPY_ANIM_NUMBER_OFFSET; + mAnm[num].setFrame(digit); +} + +bool dLytMeterRupy_c::updateDisplayedAmount(bool suppressSound) { + s32 amount = getRupeeCounter2(); + if (amount > 9999) { + amount = 9999; + } else if (amount < 0) { + amount = 0; + } + + s32 newNumDisplayed = amount; + if (amount != mDisplayedRupeeCount || suppressSound) { + bool b = false; + if (amount < mDisplayedRupeeCount) { + if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::sInstance->getField_0x1DC()) { + newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::sInstance->getField_0x1E4(); + } else if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::sInstance->getField_0x1D8()) { + newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::sInstance->getField_0x1E0(); + } else { + newNumDisplayed = mDisplayedRupeeCount - 1; + } + b = true; + if (field_0x8AB) { + if (newNumDisplayed == amount) { + SmallSoundManager::GetInstance()->playSound(SE_S_RUPEE_COUNT_DOWN_END); + } else { + SmallSoundManager::GetInstance()->playSound(SE_S_RUPEE_COUNT_DOWN); + } + } + if (field_0x8AD) { + field_0x8AD = 0; + } + } else if (amount > mDisplayedRupeeCount) { + if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::sInstance->getField_0x1DC()) { + newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::sInstance->getField_0x1E4(); + } else if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::sInstance->getField_0x1D8()) { + newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::sInstance->getField_0x1E0(); + } else { + newNumDisplayed = mDisplayedRupeeCount + 1; + } + b = true; + if (field_0x8AB) { + if (newNumDisplayed == amount) { + SmallSoundManager::GetInstance()->playSound(SE_S_RUPEE_COUNT_UP_END); + if (field_0x8AD) { + field_0x890 = 0; + field_0x8AD = 0; + } + } else { + SmallSoundManager::GetInstance()->playSound(SE_S_RUPEE_COUNT_UP); + } + } + } + if (newNumDisplayed > 9999) { + newNumDisplayed = 9999; + } else if (newNumDisplayed < 0) { + newNumDisplayed = 0; + } + + s32 newNumDigits = 0; + if (newNumDisplayed >= 1000) { + newNumDigits = 4; + setDigit(0, newNumDisplayed / 1000); + s32 rem = (newNumDisplayed % 1000); + setDigit(1, rem / 100); + rem = rem % 100; + setDigit(2, rem / 10); + setDigit(3, rem % 10); + } else if (newNumDisplayed >= 100) { + newNumDigits = 3; + setDigit(0, newNumDisplayed / 100); + s32 rem = (newNumDisplayed % 100); + setDigit(1, rem / 10); // x + setDigit(2, rem % 10); + } else if (newNumDisplayed >= 10) { + newNumDigits = 2; + setDigit(0, newNumDisplayed / 10); + setDigit(1, newNumDisplayed % 10); + } else { + newNumDigits = 1; + setDigit(0, newNumDisplayed); + } + + if (mNumDisplayedDigits > newNumDigits) { + if (mAnm[mNumDisplayedDigits - 1 + RUPY_ANIM_FLASH_OFFSET].isEnabled()) { + mBlinkParts[mNumDisplayedDigits - 1].cancelFlash(); + mAnm[mNumDisplayedDigits - 1 + RUPY_ANIM_FLASH_OFFSET].setFrame(0.0f); + mLyt.calc(); + } + } + + mNumDisplayedDigits = newNumDigits; + mAnm[RUPY_ANIM_KETA].setAnimEnable(true); + mAnm[RUPY_ANIM_KETA].setFrame(mNumDisplayedDigits - 1); + + if (*mStateMgr.getStateID() == StateID_Active) { + executeDigitJump(); + } + + if (field_0x8AB && b) { + executeDigitBlink(newNumDisplayed); + } + + mDisplayedRupeeCount = newNumDisplayed; + mPrevDigits[0] = mDisplayedDigits[0]; + mPrevDigits[1] = mDisplayedDigits[1]; + mPrevDigits[2] = mDisplayedDigits[2]; + mPrevDigits[3] = mDisplayedDigits[3]; + } else if (field_0x8AD && amount == getCurrentWalletCapacity2()) { + SmallSoundManager::GetInstance()->playSound(SE_S_RUPEE_MAX); + field_0x890 = 0; + field_0x8AD = 0; + } + + if (mDisplayedRupeeCount == amount) { + bool b = false; + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + if (mJumpState[i] != 0xFF) { + mJumpState[i] = 0xFF; + b = true; + } + } + if (b) { + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(0.0f); + } + mBlinkDelay = cM::rndF(10.0f); + } + return false; + } else { + return true; + } +} + +void dLytMeterRupy_c::executeDigitJump() { + // Is this not possibly out of bounds??? + s32 last = mNumDisplayedDigits + 3; + if (mPrevDigits[last] == 1) { + mAnm[mNumDisplayedDigits - 1 + RUPY_ANIM_JUMP_OFFSET].setFrame(2.0f); + s32 last = mNumDisplayedDigits + 3; + mPrevDigits[last] = 0; + } else { + mAnm[mNumDisplayedDigits - 1 + RUPY_ANIM_JUMP_OFFSET].setFrame(1.0f); + s32 last = mNumDisplayedDigits + 3; + mPrevDigits[last] = 1; + } + + if (mNumDisplayedDigits >= 4) { + s32 last = mNumDisplayedDigits - 4; + if (mDisplayedDigits[last] != mPrevDigits[last] && mJumpState[last] == 0xFF) { + mJumpState[last] = 0; + } + } + if (mNumDisplayedDigits >= 3) { + s32 last = mNumDisplayedDigits - 3; + if (mDisplayedDigits[last] != mPrevDigits[last] && mJumpState[last] == 0xFF) { + mJumpState[last] = 0; + } + } + if (mNumDisplayedDigits >= 2) { + s32 last = mNumDisplayedDigits - 2; + if (mDisplayedDigits[last] != mPrevDigits[last] && mJumpState[last] == 0xFF) { + mJumpState[last] = 0; + } + } + + for (int i = 0; i < RUPY_NUM_DIGITS; i++) { + if (mJumpState[i] == 0xFF) { + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(0.0f); + } else if (i != mNumDisplayedDigits - 1) { + if (mJumpState[i] == 0) { + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(1.0f); + mJumpState[i] = 1; + } else if (mJumpState[i] == 1) { + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(2.0f); + mJumpState[i] = 2; + } else if (mJumpState[i] == 2) { + mAnm[i + RUPY_ANIM_JUMP_OFFSET].setFrame(0.0f); + mJumpState[i] = 0xFF; + } + } + } +} + +void dLytMeterRupy_c::executeDigitBlink(s32 amount) { + if (amount >= 1000 && amount % 1000 == 0) { + mBlinkParts[0].doFlash(); + } + + if (amount >= 100 && amount % 100 == 0) { + if (amount >= 1000) { + mBlinkParts[1].doFlash(); + } else { + mBlinkParts[0].doFlash(); + } + } + + mBlinkDelay--; + if (mBlinkDelay <= 0) { + if (mNumDisplayedDigits == 1) { + mBlinkParts[mNumDisplayedDigits - 1].doFlash(); + } else { + if (cM::rndF(100.0f) >= 50.0f) { + mBlinkParts[mNumDisplayedDigits - 1].doFlash(); + } else { + mBlinkParts[mNumDisplayedDigits - 2].doFlash(); + } + } + mBlinkDelay = mAnm[RUPY_ANIM_FLASH_OFFSET + 0].getAnimDuration() + cM::rndF(10.0f); + } +} diff --git a/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp index 259e9483..09afec6b 100644 --- a/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp +++ b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp @@ -1,9 +1,39 @@ #include "d/lyt/meter/d_lyt_meter_shield_gauge.h" +#include "common.h" +#include "d/d_pouch.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_meter_configuration.h" +#include "toBeSorted/file_manager.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterShieldGauge_c, Normal); STATE_DEFINE(dLytMeterShieldGauge_c, Use); STATE_DEFINE(dLytMeterShieldGauge_c, ToMax); +static const d2d::LytBrlanMapping brlanMap[] = { + { "shield_00_break.brlan", "G_break_00"}, + { "shield_00_level.brlan", "G_level_00"}, + {"shield_00_shieldUpDown.brlan", "G_shield_00"}, + { "shield_00_shieldType.brlan", "G_shieldType_00"}, + { "shield_00_shieldUse.brlan", "G_shield_01"}, + { "shield_00_toMax.brlan", "G_toMax_00"}, + { "shield_00_loop.brlan", "G_loop_00"}, + { "shield_00_loop.brlan", "G_loop_01"}, +}; + +#define SHIELD_ANIM_BREAK 0 +#define SHIELD_ANIM_LEVEL 1 +#define SHIELD_ANIM_UPDOWN 2 +#define SHIELD_ANIM_TYPE 3 +#define SHIELD_ANIM_USE 4 +#define SHIELD_ANIM_TO_MAX 5 +#define SHIELD_ANIM_LOOP_0 6 +#define SHIELD_ANIM_LOOP_1 7 + +#define SHIELD_NUM_ANIMS 8 + +// Incredible use of the state manager here void dLytMeterShieldGauge_c::initializeState_Normal() {} void dLytMeterShieldGauge_c::executeState_Normal() {} void dLytMeterShieldGauge_c::finalizeState_Normal() {} @@ -17,31 +47,332 @@ void dLytMeterShieldGauge_c::executeState_ToMax() {} void dLytMeterShieldGauge_c::finalizeState_ToMax() {} bool dLytMeterShieldGauge_c::build(d2d::ResAccIf_c *resAcc) { - // TODO + mLyt.setResAcc(resAcc); + mLyt.build("shield_00.brlyt", nullptr); + + for (int i = 0; i < SHIELD_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mpOwnerPane = nullptr; + field_0x31D = 1; + field_0x2E0 = 0.0f; + field_0x2E4 = 0.0f; + field_0x2E8 = 0.0f; + field_0x2EC = 0.0f; + + field_0x308 = convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot()); + field_0x300 = field_0x2EC; + field_0x304 = field_0x2E0; + field_0x2FC = dLytMeterConfiguration_c::GetInstance()->getField_0x1C8(); + field_0x2F0 = 80.0f; + field_0x2F4 = 80.0f; + + field_0x2F8 = mAnm[SHIELD_ANIM_USE].getAnimDuration() - 1.0f; + field_0x30D = 0; + field_0x30E = 0; + field_0x30C = 0; + field_0x31F = 0; + field_0x31E = 0; + field_0x318 = 0; + field_0x310 = 0; + field_0x314 = -1; + + mAnm[SHIELD_ANIM_UPDOWN].setFrame(field_0x2E0); + mAnm[SHIELD_ANIM_UPDOWN].setAnimEnable(true); + field_0x2E4 = calcUpdownRatio(field_0x2E0); + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + setLevel(field_0x2F0); + mAnm[SHIELD_ANIM_LEVEL].setAnimEnable(true); + mAnm[SHIELD_ANIM_TYPE].setFrame(getLytFrameForShield(0)); + mAnm[SHIELD_ANIM_TYPE].setAnimEnable(true); + mAnm[SHIELD_ANIM_LOOP_0].setAnimEnable(true); + mAnm[SHIELD_ANIM_LOOP_1].setAnimEnable(true); + + mAnm[SHIELD_ANIM_BREAK].setToEnd(); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); + + mLyt.calc(); + + mAnm[SHIELD_ANIM_UPDOWN].setAnimEnable(false); + mAnm[SHIELD_ANIM_LEVEL].setAnimEnable(false); + mAnm[SHIELD_ANIM_TYPE].setAnimEnable(false); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(false); + field_0x31C = 1; + field_0x30C = 1; + mStateMgr.changeState(StateID_Normal); return true; } bool dLytMeterShieldGauge_c::remove() { for (int i = 0; i < 8; i++) { - mAnmGroups[i].unbind(); - mAnmGroups[i].remove(); + mAnm[i].unbind(); + mAnm[i].remove(); } return true; } bool dLytMeterShieldGauge_c::execute() { - // TODO + if (!mpOwnerPane) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + return true; + } + + if (field_0x2E0 == 0.0f) { + field_0x318 = 2; + } + + bool b1 = false; + bool b2 = true; + bool b3 = false; + bool b4 = false; + + if (field_0x310 != field_0x314 || + field_0x308 != convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot())) { + mLyt.findPane("N_alpha_00")->SetVisible(true); + field_0x314 = field_0x310; + mAnm[SHIELD_ANIM_TYPE].setFrame(getLytFrameForShield(field_0x310)); + mAnm[SHIELD_ANIM_TYPE].setAnimEnable(true); + mAnm[SHIELD_ANIM_LOOP_0].setFrame(0.0f); + field_0x31D = 1; + b2 = false; + b3 = true; + field_0x2E8 = field_0x2E0; + field_0x308 = convertFilePouchSlot(FileManager::GetInstance()->getShieldPouchSlot()); + } + + if (field_0x2E0 != field_0x2E8 || field_0x31D) { + if (field_0x2E0 < field_0x2E8) { + f32 f = calcUpdownRatio(field_0x2E0); + field_0x2E8 = field_0x2E0; + mAnm[SHIELD_ANIM_UPDOWN].setFrame(f); + mAnm[SHIELD_ANIM_UPDOWN].setAnimEnable(true); + b1 = true; + if (field_0x31F && field_0x31D) { + field_0x31F = 0; + b1 = false; + } + field_0x31E = 0; + b4 = true; + } else { + b1 = true; + field_0x2EC += 1.0f; + if (field_0x31F && field_0x31D) { + field_0x31F = 0; + b1 = false; + } + if (field_0x2EC >= field_0x2E0 || field_0x31D) { + field_0x2EC = field_0x2E0; + } + if (field_0x2E0 < field_0x2EC) { + field_0x31E = 1; + } + + if (!field_0x31D) { + if (field_0x2E0 >= field_0x2F0) { + if (field_0x31E) { + SmallSoundManager::GetInstance()->playSoundWithPitch(SE_S_GAUGE_SHIELD_UP_LV, 1.0f); + } + SmallSoundManager::GetInstance()->playSound(SE_S_GAUGE_SHIELD_UP_MAX); + } else { + if (field_0x31E) { + SmallSoundManager::GetInstance()->playSoundWithPitch( + SE_S_GAUGE_SHIELD_UP_LV, field_0x2E0 / field_0x2F0 + ); + } + } + } + f32 tmp = calcUpdownRatio(field_0x2EC); + field_0x2E4 = tmp; + if (!field_0x31F) { + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + } + field_0x2E8 = field_0x2EC; + mAnm[SHIELD_ANIM_UPDOWN].setFrame(tmp); + mAnm[SHIELD_ANIM_UPDOWN].setAnimEnable(true); + } + + if (FileManager::GetInstance()->getShieldPouchSlot() == 8) { + if (field_0x2E0 <= 0.0f && b4) { + mAnm[SHIELD_ANIM_BREAK].setFrame(0.0f); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); + field_0x30D = 1; + } else { + mAnm[SHIELD_ANIM_BREAK].setToEnd(); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); + mLyt.calc(); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(false); + field_0x30C = 1; + } + } else { + if (field_0x2E0 <= 0.0f && b4) { + mAnm[SHIELD_ANIM_BREAK].setFrame(0.0f); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); + field_0x30D = 1; + } else if (b2 && field_0x2E0 >= field_0x2F0) { + mAnm[SHIELD_ANIM_TO_MAX].setFrame(0.0f); + mAnm[SHIELD_ANIM_TO_MAX].setAnimEnable(true); + field_0x30E = 1; + } + } + } + + f32 f1 = dLytMeterConfiguration_c::GetInstance()->getField_0x1CC() * 40.0f / 4.0f; + f32 f2 = dLytMeterConfiguration_c::GetInstance()->getField_0x1D0() * 40.0f / 4.0f; + f32 f3 = dLytMeterConfiguration_c::GetInstance()->getField_0x1C4() * 40.0f / 4.0f; + + (void)calcUpdownRatio(field_0x2E0); + + if (field_0x31F) { + if (field_0x2E0 < field_0x304 && field_0x2E0 < field_0x2EC - f1) { + field_0x2FC = dLytMeterConfiguration_c::GetInstance()->getField_0x1C8(); + field_0x300 = field_0x2EC; + field_0x304 = field_0x2E0; + field_0x2E4 = calcUpdownRatio(field_0x2EC); + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + } else { + if (field_0x2FC > 0) { + field_0x2FC--; + } + if (field_0x2FC == 0) { + field_0x300 = field_0x300 - f2; + if (field_0x300 < field_0x2E0) { + field_0x31F = 0; + field_0x300 = field_0x2E0; + } + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + field_0x2E4 = calcUpdownRatio(field_0x300); + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + } + } + } else if (!field_0x31D && field_0x2E0 < field_0x2EC - f3) { + field_0x31F = 1; + field_0x300 = field_0x2EC; + field_0x304 = field_0x2E0; + field_0x2FC = dLytMeterConfiguration_c::GetInstance()->getField_0x1C8(); + field_0x2E4 = calcUpdownRatio(field_0x2EC); + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + } else if (!b1) { + field_0x2E4 = calcUpdownRatio(field_0x2EC); + mAnm[SHIELD_ANIM_USE].setFrame(field_0x2F8 - field_0x2E4); + mAnm[SHIELD_ANIM_USE].setAnimEnable(true); + } + + if (!b1) { + field_0x2EC = field_0x2E0; + } + field_0x31D = 0; + if (field_0x2F0 != field_0x2F4 || b3) { + setLevel(field_0x2F0); + mAnm[SHIELD_ANIM_LEVEL].setAnimEnable(true); + field_0x2F4 = field_0x2F0; + } + + if (mAnm[SHIELD_ANIM_BREAK].isEnabled()) { + if (field_0x318 == 0 && field_0x2E0 > 0) { + mAnm[SHIELD_ANIM_BREAK].setFrame(0.0f); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); // redundant? + field_0x30C = 0; + field_0x30D = 0; + } else if (mAnm[SHIELD_ANIM_BREAK].isEndReached()) { + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(false); + field_0x30C = 1; + field_0x30D = 0; + } else { + mAnm[SHIELD_ANIM_BREAK].play(); + } + } else if (field_0x30C && !field_0x318 && field_0x2E0 > 0.0f) { + mAnm[SHIELD_ANIM_BREAK].setFrame(0.0f); + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(true); + field_0x30C = 0; + field_0x30D = 0; + } + + if (mAnm[SHIELD_ANIM_TO_MAX].isEnabled()) { + if (mAnm[SHIELD_ANIM_TO_MAX].isEndReached()) { + mAnm[SHIELD_ANIM_TO_MAX].setAnimEnable(false); + field_0x30E = 0; + } else { + mAnm[SHIELD_ANIM_TO_MAX].play(); + } + } + + mStateMgr.executeState(); + + if ((field_0x314 == 6 || field_0x314 == 7 || field_0x314 == 8) && mAnm[SHIELD_ANIM_USE].getFrame() == 0.0f && + mAnm[SHIELD_ANIM_LOOP_0].getFrame() == 0.0f) { + if (mAnm[SHIELD_ANIM_LOOP_0].isEnabled()) { + mAnm[SHIELD_ANIM_LOOP_0].setAnimEnable(false); + } + } else if (!mAnm[SHIELD_ANIM_LOOP_0].isEnabled()) { + mAnm[SHIELD_ANIM_LOOP_0].setAnimEnable(true); + } + + if (mAnm[SHIELD_ANIM_LOOP_0].isEnabled()) { + mAnm[SHIELD_ANIM_LOOP_0].play(); + } + + if (mAnm[SHIELD_ANIM_LOOP_1].isEnabled()) { + mAnm[SHIELD_ANIM_LOOP_1].play(); + } + + mLyt.calc(); + + if (mAnm[SHIELD_ANIM_UPDOWN].isEnabled()) { + mAnm[SHIELD_ANIM_UPDOWN].setAnimEnable(false); + } + + if (mAnm[SHIELD_ANIM_LEVEL].isEnabled()) { + mAnm[SHIELD_ANIM_LEVEL].setAnimEnable(false); + } + + if (mAnm[SHIELD_ANIM_TYPE].isEnabled()) { + mAnm[SHIELD_ANIM_TYPE].setAnimEnable(false); + } + + if (mAnm[SHIELD_ANIM_USE].isEnabled()) { + mAnm[SHIELD_ANIM_USE].setAnimEnable(false); + } + + if (!field_0x30E && mAnm[SHIELD_ANIM_TO_MAX].isEnabled()) { + mAnm[SHIELD_ANIM_TO_MAX].setAnimEnable(false); + } + + if (!field_0x30C && !field_0x30D && mAnm[SHIELD_ANIM_BREAK].isEnabled()) { + mAnm[SHIELD_ANIM_BREAK].setAnimEnable(false); + } + + if (field_0x318 > 0) { + field_0x318--; + } + return true; } -const char *dLytMeterShieldGauge_c::getName() const { - return mLyt.getName(); +void dLytMeterShieldGauge_c::setLevel(f32 lv) { + mAnm[SHIELD_ANIM_LEVEL].setFrame(lv * 0.5f); } -d2d::LytBase_c *dLytMeterShieldGauge_c::getLyt() { - return &mLyt; +s32 dLytMeterShieldGauge_c::getLytFrameForShield(s32 shield) const { + static const int table[] = {0, 4, 7, 1, 5, 8, 2, 6, 9, 3}; + if (shield == 10) { + shield = 0; + } + return table[shield]; } -nw4r::lyt::Pane *dLytMeterShieldGauge_c::getPane() { - return mLyt.getLayout()->GetRootPane(); +f32 dLytMeterShieldGauge_c::calcUpdownRatio(f32 f) const { + f32 duration = mAnm[SHIELD_ANIM_UPDOWN].getAnimDuration() - 1.0f; + f32 bound = 0.0f; + f32 b = (field_0x2F0 > bound ? f / field_0x2F0 : bound); + return b * duration; } diff --git a/src/d/lyt/meter/d_lyt_meter_timer.cpp b/src/d/lyt/meter/d_lyt_meter_timer.cpp index 91a216dc..f79d6c7f 100644 --- a/src/d/lyt/meter/d_lyt_meter_timer.cpp +++ b/src/d/lyt/meter/d_lyt_meter_timer.cpp @@ -1,5 +1,25 @@ +#define NEED_DIRECT_FRAMECTRL_ACCESS 1 + #include "d/lyt/meter/d_lyt_meter_timer.h" +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/col/c/c_m3d.h" +#include "d/d_sc_game.h" +#include "d/flag/itemflag_manager.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_drop_line.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "d/t/d_t_siren.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_pane.h" +#include "nw4r/math/math_types.h" +#include "toBeSorted/effects_struct.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/small_sound_mgr.h" + +#include + STATE_DEFINE(dLytMeterTimer_c, ChangeSiren); STATE_DEFINE(dLytMeterTimer_c, Siren); STATE_DEFINE(dLytMeterTimer_c, ChangeSafeBloom); @@ -7,3 +27,1516 @@ STATE_DEFINE(dLytMeterTimer_c, ChangeSafe); STATE_DEFINE(dLytMeterTimer_c, Safe); STATE_DEFINE(dLytMeterTimer_c, ChangeFruits); STATE_DEFINE(dLytMeterTimer_c, Fruits); + +LytMeterTimerPart1_c *LytMeterTimerPart1_c::sInstance; +LytMeterTimerPart2_c *LytMeterTimerPart2_c::sInstance; +bool dLytMeterTimer_c::sDoExit; +bool dLytMeterTimer_c::sDoFinishAnim; +bool dLytMeterTimer_c::sFinished; + +static const d2d::LytBrlanMapping brlanMapPart1[] = { + { "timer_01_in.brlan", "G_inOut_00"}, + {"timer_01_mapPosition.brlan", "G_inOut_00"}, + { "timer_01_Loop.brlan", "G_nutLoop_00"}, + { "timer_01_Loop2.brlan", "G_nutLoop_00"}, + { "timer_01_Loop3.brlan", "G_nutLoop_00"}, + { "timer_01_Loop4.brlan", "G_nutLoop_00"}, + { "timer_01_Loop.brlan", "G_bowlLoop_00"}, + { "timer_01_Loop2.brlan", "G_bowlLoop_00"}, + { "timer_01_Loop3.brlan", "G_bowlLoop_00"}, + { "timer_01_Loop4.brlan", "G_bowlLoop_00"}, + { "timer_01_bowlNut.brlan", "G_nut_00"}, + { "timer_01_bowlNut.brlan", "G_nut_01"}, + { "timer_01_bowlNut.brlan", "G_nut_02"}, + { "timer_01_bowlNut.brlan", "G_nut_03"}, + { "timer_01_bowlNut.brlan", "G_nut_04"}, + { "timer_01_bowlNut.brlan", "G_nut_05"}, + { "timer_01_bowlNut.brlan", "G_nut_06"}, + { "timer_01_bowlNut.brlan", "G_nut_07"}, + { "timer_01_bowlNut.brlan", "G_nut_08"}, + { "timer_01_bowlNut.brlan", "G_nut_09"}, + { "timer_01_bowlNut.brlan", "G_nut_10"}, + { "timer_01_bowlNut.brlan", "G_nut_11"}, + { "timer_01_bowlNut.brlan", "G_nut_12"}, + { "timer_01_bowlNut.brlan", "G_nut_13"}, + { "timer_01_bowlNut.brlan", "G_nut_14"}, + { "timer_01_out.brlan", "G_inOut_00"}, +}; + +#define TIMER_01_ANIM_IN 0 +#define TIMER_01_ANIM_MAP_POSITION 1 +#define TIMER_01_ANIM_NUT_LOOP_OFFSET 2 +#define TIMER_01_ANIM_BOWL_LOOP_OFFSET 6 +#define TIMER_01_ANIM_BOWL_NUT_OFFSET 10 +#define TIMER_01_ANIM_OUT 25 + +#define TIMER_01_NUM_ANIMS 26 + +#define TIMER_01_COLOR_00_CIRCLE 0 +#define TIMER_01_COLOR_00_SHADOW 1 +#define TIMER_01_COLOR_00_RAINBOW_CIRCLE 2 + +#define TIMER_01_COLOR_01_CIRCLE 0 +#define TIMER_01_COLOR_01_SHADOW 1 +#define TIMER_01_COLOR_01_RAINBOW_CIRCLE 2 + +#define TIMER_01_NUM_TRIALS 4 + +static const char *sPaneNamesPart1[] = { + "N_bowlNut_00", "N_bowlNut_01", "N_bowlNut_02", "N_bowlNut_03", "N_bowlNut_04", + "N_bowlNut_05", "N_bowlNut_06", "N_bowlNut_07", "N_bowlNut_08", "N_bowlNut_09", + "N_bowlNut_10", "N_bowlNut_11", "N_bowlNut_12", "N_bowlNut_13", "N_bowlNut_14", +}; + +#define TIMER_01_NUM_TEARS 15 + +bool LytMeterTimerPart1_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.build("timer_01.brlyt", resAcc); + mLyt.setPriority(0x8A); + + for (int i = 0; i < TIMER_01_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapPart1[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart1[i].mName); + mAnm[i].bind(false); + mAnm[i].setRate(1.0f); + mAnm[i].setAnimEnable(false); + } + + for (int i = 0; i < TIMER_01_NUM_TEARS; i++) { + mpPanes[i] = mLyt.findPane(sPaneNamesPart1[i]); + } + return true; +} + +bool LytMeterTimerPart1_c::remove() { + for (int i = 0; i < TIMER_01_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool LytMeterTimerPart1_c::execute() { + if (dLytDropLine_c::getActivePane() == nullptr) { + dLytDropLine_c::setPane(mpPanes[field_0x760]); + } + for (int i = 0; i < TIMER_01_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + return true; +} + +void LytMeterTimerPart1_c::init() { + mTrial = dAcItem_c::getCurrentTrial(); + initLoopAnim(); + initBowlNuts(); + initOutAnim(); + initColors(); + initInAnim(); + field_0x760 = 0; + dLytDropLine_c::setPane(mpPanes[field_0x760]); +} + +void LytMeterTimerPart1_c::initInAnim() { + mAnm[TIMER_01_ANIM_IN].setForwardOnce(); + mAnm[TIMER_01_ANIM_IN].setFrame(0.0f); + mAnm[TIMER_01_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_01_ANIM_IN].setAnimEnable(false); +} + +void LytMeterTimerPart1_c::initLoopAnim() { + for (u8 i = 0; i < TIMER_01_NUM_TRIALS; i++) { + if (i == mTrial) { + mAnm[i + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setForwardLoop(); + mAnm[i + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setFrame(0.0f); + mAnm[i + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(true); + mLyt.calc(); + mAnm[i + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(false); + + mAnm[i + TIMER_01_ANIM_NUT_LOOP_OFFSET].setForwardLoop(); + mAnm[i + TIMER_01_ANIM_NUT_LOOP_OFFSET].setFrame(0.0f); + mAnm[i + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(true); + mLyt.calc(); + mAnm[i + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(false); + } else { + mAnm[i + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(false); + mAnm[i + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(false); + } + } +} + +void LytMeterTimerPart1_c::initBowlNuts() { + for (int i = 0; i < TIMER_01_NUM_TEARS; i++) { + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setForwardOnce(); + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setFrame(0.0f); + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(true); + } + mLyt.calc(); + for (int i = 0; i < TIMER_01_NUM_TEARS; i++) { + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart1_c::resetBowlNuts() { + for (int i = 0; i < TIMER_01_NUM_TEARS; i++) { + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setBackwardsOnce(); + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setToStart(); + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(true); + } + mLyt.calc(); + for (int i = 0; i < TIMER_01_NUM_TEARS; i++) { + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart1_c::initOutAnim() { + mAnm[TIMER_01_ANIM_OUT].setForwardOnce(); + mAnm[TIMER_01_ANIM_OUT].setFrame(0.0f); + mAnm[TIMER_01_ANIM_OUT].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_01_ANIM_OUT].setAnimEnable(false); +} + +void LytMeterTimerPart1_c::startInAnim() { + if (dLytMeter_c::GetMain()->fn_800D5650()) { + mAnm[TIMER_01_ANIM_MAP_POSITION].setFrame(1.0f); + } else { + mAnm[TIMER_01_ANIM_MAP_POSITION].setFrame(0.0f); + } + mAnm[TIMER_01_ANIM_MAP_POSITION].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_01_ANIM_MAP_POSITION].setAnimEnable(false); + + mAnm[TIMER_01_ANIM_IN].setToStart(); + mAnm[TIMER_01_ANIM_IN].setAnimEnable(true); +} + +void LytMeterTimerPart1_c::realizeTrial() { + switch (mTrial) { + case dAcItem_c::TRIAL_ELDIN: + mAnm[0 + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(true); + mAnm[0 + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(true); + break; + case dAcItem_c::TRIAL_FARON: + mAnm[1 + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(true); + mAnm[1 + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(true); + break; + case dAcItem_c::TRIAL_SKYLOFT: + mAnm[2 + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(true); + mAnm[2 + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(true); + break; + case dAcItem_c::TRIAL_LANAYRU: + mAnm[3 + TIMER_01_ANIM_NUT_LOOP_OFFSET].setAnimEnable(true); + mAnm[3 + TIMER_01_ANIM_BOWL_LOOP_OFFSET].setAnimEnable(true); + break; + } +} + +void LytMeterTimerPart1_c::startNextFruitAnim() { + if (mActualTearCount > 0 && !mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled() && + mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].getFrame() == 0.0f) { + mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(true); + } +} + +void LytMeterTimerPart1_c::startFruitAnim(s32 index) { + if (field_0x780 < TIMER_01_NUM_TEARS && !mAnm[index + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled()) { + mAnm[index + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(true); + } +} + +void LytMeterTimerPart1_c::startOutAnim() { + mAnm[TIMER_01_ANIM_OUT].setToStart(); + mAnm[TIMER_01_ANIM_OUT].setAnimEnable(true); +} + +void LytMeterTimerPart1_c::stopInAnim() { + mAnm[TIMER_01_ANIM_IN].setAnimEnable(false); +} + +void LytMeterTimerPart1_c::disableCurrentFruitAnim() { + if (mActualTearCount > 0 && mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled()) { + mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart1_c::stopFinishedFruit() { + for (s32 i = 0; i <= field_0x780; i++) { + if (mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled() && mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].isStop2()) { + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].setAnimEnable(false); + return; + } + } +} + +void LytMeterTimerPart1_c::stopOutAnim() { + mAnm[TIMER_01_ANIM_OUT].setAnimEnable(false); +} + +bool LytMeterTimerPart1_c::isInAnimFinished() { + if (mAnm[TIMER_01_ANIM_IN].isEnabled() && mAnm[TIMER_01_ANIM_IN].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart1_c::isCurrentFruitAnimFinished() { + if (mActualTearCount > 0 && mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled() && + mAnm[mActualTearCount - 1 + TIMER_01_ANIM_BOWL_NUT_OFFSET].isStop2()) { + return true; + } + return false; +} + +bool LytMeterTimerPart1_c::isAnyFruitAnimFinished() { + for (s32 i = 0; i <= field_0x780; i++) { + if (mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled() && mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].isStop2()) { + return true; + } + } + return false; +} + +bool LytMeterTimerPart1_c::isLastFruitAnimFinished() { + return mAnm[TIMER_01_ANIM_BOWL_NUT_OFFSET + TIMER_01_NUM_TEARS - 1].isStop2(); +} + +bool LytMeterTimerPart1_c::isOutAnimFinished() { + if (mAnm[TIMER_01_ANIM_OUT].isEnabled() && mAnm[TIMER_01_ANIM_OUT].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart1_c::isAnyFruitAnimAtFrame(f32 f) const { + for (int i = 0; i <= field_0x780; i++) { + if (mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].isEnabled() && + f - 1.0f < mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].getFrame() && + mAnm[i + TIMER_01_ANIM_BOWL_NUT_OFFSET].getFrame() <= f) { + return true; + } + } + return false; +} + +bool LytMeterTimerPart1_c::incrementTearCount() { + mActualTearCount = ItemflagManager::sInstance->getFlagDirect(500); + if (mDisplayedTearCount < mActualTearCount && dLytDropLine_c::finishPartMaybe()) { + startNextFruitAnim(); + if (!dLytMeter_c::getfn_800C9FE0()) { + createEffect(mActualTearCount - 1); + SmallSoundManager::GetInstance()->playSound(SE_S_SIREN_SHIZUKU_GET_IN); + } + + if (mActualTearCount < TIMER_01_NUM_TEARS) { + field_0x760++; + dLytDropLine_c::setPane(mpPanes[field_0x760]); + } + mDisplayedTearCount++; + } + + if (isCurrentFruitAnimFinished()) { + disableCurrentFruitAnim(); + return true; + } + return false; +} + +void LytMeterTimerPart1_c::initColors() { + switch (mTrial) { + case dAcItem_c::TRIAL_ELDIN: + mColors1[TIMER_01_COLOR_00_CIRCLE] = mColor(0xFF, 0xFF, 0x80, 0xFF); + mColors1[TIMER_01_COLOR_00_SHADOW] = mColor(0xFF, 0xFF, 0xC8, 0xFF); + mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_CIRCLE] = mColor(0xFF, 0xFF, 0x00, 0xFF); + mColors2[TIMER_01_COLOR_01_SHADOW] = mColor(0xFF, 0xFF, 0x40, 0xFF); + mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_FARON: + mColors1[TIMER_01_COLOR_00_CIRCLE] = mColor(0xFF, 0x80, 0xA0, 0xFF); + mColors1[TIMER_01_COLOR_00_SHADOW] = mColor(0xFF, 0xC8, 0xC8, 0xFF); + mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_CIRCLE] = mColor(0xFF, 0x40, 0x80, 0xFF); + mColors2[TIMER_01_COLOR_01_SHADOW] = mColor(0xFF, 0x40, 0x80, 0xFF); + mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_SKYLOFT: + mColors1[TIMER_01_COLOR_00_CIRCLE] = mColor(0x80, 0xFF, 0x80, 0xFF); + mColors1[TIMER_01_COLOR_00_SHADOW] = mColor(0xC8, 0xFF, 0xC8, 0xFF); + mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_CIRCLE] = mColor(0x00, 0xFF, 0x40, 0xFF); + mColors2[TIMER_01_COLOR_01_SHADOW] = mColor(0x40, 0xFF, 0x40, 0xFF); + mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_LANAYRU: + mColors1[TIMER_01_COLOR_00_CIRCLE] = mColor(0x80, 0xFF, 0xFF, 0xFF); + mColors1[TIMER_01_COLOR_00_SHADOW] = mColor(0xC8, 0xC8, 0xFF, 0xFF); + mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_CIRCLE] = mColor(0x00, 0x80, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_SHADOW] = mColor(0x40, 0xA0, 0xFF, 0xFF); + mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + } +} + +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_135_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_136_; +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_137_; +void LytMeterTimerPart1_c::createEffect(s32 fruitIndex) { + nw4r::math::MTX34 mtx = mpPanes[fruitIndex]->GetGlobalMtx(); + mVec3_c pos; + pos.x = mtx._03; + pos.y = mtx._13; + pos.z = 0.0f; + EffectsStruct::fn_800298C0( + PARTICLE_RESOURCE_ID_MAPPING_135_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_CIRCLE], + &mColors2[TIMER_01_COLOR_01_CIRCLE] + ); + EffectsStruct::fn_800298C0( + PARTICLE_RESOURCE_ID_MAPPING_136_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_SHADOW], + &mColors2[TIMER_01_COLOR_01_SHADOW] + ); + EffectsStruct::fn_800298C0( + PARTICLE_RESOURCE_ID_MAPPING_137_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE], + &mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE] + ); +} + +void LytMeterTimerPart1_c::updateDropLine(nw4r::lyt::Pane *pane) { + u8 idx = field_0x780; + dLytDropLine_c::update(mpPanes[idx], pane, mTrial, field_0x780 % 2 != 0); +} + +static const d2d::LytBrlanMapping brlanMapPart2[] = { + { "timer_02_in.brlan", "G_inOut_00"}, + {"timer_02_mapPosition.brlan", "G_inOut_00"}, + { "timer_02_dying.brlan", "G_fall_08"}, + { "timer_02_dying.brlan", "G_fall_07"}, + { "timer_02_dying.brlan", "G_fall_06"}, + { "timer_02_dying.brlan", "G_fall_05"}, + { "timer_02_dying.brlan", "G_fall_04"}, + { "timer_02_dying.brlan", "G_fall_03"}, + { "timer_02_dying.brlan", "G_fall_02"}, + { "timer_02_dying.brlan", "G_fall_01"}, + { "timer_02_dying.brlan", "G_fall_00"}, + { "timer_02_fallOut.brlan", "G_fall_08"}, + { "timer_02_fallOut.brlan", "G_fall_07"}, + { "timer_02_fallOut.brlan", "G_fall_06"}, + { "timer_02_fallOut.brlan", "G_fall_05"}, + { "timer_02_fallOut.brlan", "G_fall_04"}, + { "timer_02_fallOut.brlan", "G_fall_03"}, + { "timer_02_fallOut.brlan", "G_fall_02"}, + { "timer_02_fallOut.brlan", "G_fall_01"}, + { "timer_02_fallOut.brlan", "G_fall_00"}, + {"timer_02_changeFruit.brlan", "G_fruitsAll_00"}, + {"timer_02_fruitsColor.brlan", "G_fruitsAll_00"}, + { "timer_02_petalOnOff.brlan", "G_petalOnOff_00"}, + { "timer_02_bloom.brlan", "G_bloom_00"}, + { "timer_02_beforeFall.brlan", "G_beforeFall_00"}, + {"timer_02_changeSiren.brlan", "G_change_00"}, + { "timer_02_sirenLoop.brlan", "G_sirenLoop_00"}, + { "timer_02_changeSafe.brlan", "G_change_00"}, + { "timer_02_Loop.brlan", "G_flowreLoop_00"}, + { "timer_02_out.brlan", "G_inOut_00"}, +}; + +#define TIMER_02_ANIM_IN 0 +#define TIMER_02_ANIM_MAP_POSITION 1 +#define TIMER_02_ANIM_DYING_OFFSET 2 +#define TIMER_02_ANIM_FALL_OUT_OFFSET 11 +#define TIMER_02_ANIM_CHANGE_FRUIT 20 +#define TIMER_02_ANIM_FRUITS_COLOR 21 +#define TIMER_02_ANIM_PETAL_ONOFF 22 +#define TIMER_02_ANIM_BLOOM 23 +#define TIMER_02_ANIM_BEFORE_FALL 24 +#define TIMER_02_ANIM_CHANGE_SIREN 25 +#define TIMER_02_ANIM_SIREN_LOOP 26 +#define TIMER_02_ANIM_SIREN_SAFE 27 +#define TIMER_02_ANIM_FLOWER_LOOP 28 +#define TIMER_02_ANIM_OUT 29 + +#define TIMER_02_NUM_ANIMS 30 + +static const char *sPaneNamePart2 = "N_flowerAll_00"; + +#define TIMER_02_NUM_PETALS 9 + +#define TIMER_02_COLOR_00_00 0 +#define TIMER_02_COLOR_00_01 1 + +#define TIMER_02_COLOR_01_00 0 +#define TIMER_02_COLOR_01_01 1 + +bool LytMeterTimerPart2_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.build("timer_02.brlyt", resAcc); + mLyt.setPriority(0x8A); + + for (int i = 0; i < TIMER_02_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapPart2[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart2[i].mName); + mAnm[i].bind(false); + mAnm[i].setRate(1.0f); + mAnm[i].setAnimEnable(false); + } + + mpPane = mLyt.findPane(sPaneNamePart2); + + return true; +} + +bool LytMeterTimerPart2_c::remove() { + for (int i = 0; i < TIMER_02_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool LytMeterTimerPart2_c::execute() { + if (mVisible) { + for (int i = 0; i < TIMER_02_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + } + return true; +} + +void LytMeterTimerPart2_c::init() { + mTrial = dAcItem_c::getCurrentTrial(); + initBloomAnim(); + initBeforeFallAnim(); + initChangeSirenAnim(); + initSirenLoopAnim(); + initSirenSafeAnim(); + initFlowerLoopAnim(); + initDyingAnims(); + initFallOutAnims(); + initOutAnim(); + initInAnim(); + initChangeFruitAnim(); + initColors(); +} + +void LytMeterTimerPart2_c::initInAnim() { + mAnm[TIMER_02_ANIM_IN].setForwardOnce(); + mAnm[TIMER_02_ANIM_IN].setFrame(0.0f); + mAnm[TIMER_02_ANIM_IN].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_IN].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initBloomAnim() { + mAnm[TIMER_02_ANIM_BLOOM].setForwardOnce(); + mAnm[TIMER_02_ANIM_BLOOM].setFrame(0.0f); + mAnm[TIMER_02_ANIM_BLOOM].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_BLOOM].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initBeforeFallAnim() { + mAnm[TIMER_02_ANIM_BEFORE_FALL].setForwardLoop(); + mAnm[TIMER_02_ANIM_BEFORE_FALL].setFrame(0.0f); + mAnm[TIMER_02_ANIM_BEFORE_FALL].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_BEFORE_FALL].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initChangeSirenAnim() { + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setForwardOnce(); + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setFrame(0.0f); + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initSirenLoopAnim() { + mAnm[TIMER_02_ANIM_SIREN_LOOP].setForwardLoop(); + mAnm[TIMER_02_ANIM_SIREN_LOOP].setFrame(0.0f); + mAnm[TIMER_02_ANIM_SIREN_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_SIREN_LOOP].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initSirenSafeAnim() { + mAnm[TIMER_02_ANIM_SIREN_SAFE].setForwardOnce(); + mAnm[TIMER_02_ANIM_SIREN_SAFE].setFrame(0.0f); + mAnm[TIMER_02_ANIM_SIREN_SAFE].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_SIREN_SAFE].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initFlowerLoopAnim() { + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setForwardOnce(); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setFrame(0.0f); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initDyingAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (i < mNumPetals) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setForwardOnce(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToStart(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(true); + } + } + mLyt.calc(); + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart2_c::initFallOutAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (i < mNumPetals) { + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setForwardOnce(); + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setToStart(); + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(true); + } + } + mLyt.calc(); + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart2_c::initOutAnim() { + mAnm[TIMER_02_ANIM_OUT].setForwardOnce(); + mAnm[TIMER_02_ANIM_OUT].setFrame(0.0f); + mAnm[TIMER_02_ANIM_OUT].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_OUT].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::initChangeFruitAnim() { + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setForwardOnce(); + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setFrame(0.0f); + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::startInAnim() { + if (dLytMeter_c::GetMain()->fn_800D5650()) { + mAnm[TIMER_02_ANIM_MAP_POSITION].setFrame(1.0f); + } else { + mAnm[TIMER_02_ANIM_MAP_POSITION].setFrame(0.0f); + } + mAnm[TIMER_02_ANIM_MAP_POSITION].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_MAP_POSITION].setAnimEnable(false); + + mAnm[TIMER_02_ANIM_IN].setToStart(); + mAnm[TIMER_02_ANIM_IN].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::enableBloomAnim() { + mAnm[TIMER_02_ANIM_BLOOM].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::enableBeforeFallAnim() { + if (!mAnm[TIMER_02_ANIM_BEFORE_FALL].isEnabled()) { + mAnm[TIMER_02_ANIM_BEFORE_FALL].setAnimEnable(true); + } +} + +void LytMeterTimerPart2_c::enableChangeSirenAnim() { + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::enableSirenLoopAnim() { + mAnm[TIMER_02_ANIM_SIREN_LOOP].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::enableSafeAnim() { + mAnm[TIMER_02_ANIM_SIREN_SAFE].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::resumeFlowerLoop() { + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setFrame(mFlowerLoopFrame); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::startFlowerLoop() { + if (!mAnm[TIMER_02_ANIM_FLOWER_LOOP].isEnabled()) { + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setToStart(); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(true); + } +} + +void LytMeterTimerPart2_c::syncPetalsTime() { + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (i == mNumPetals - 1) { + if (!mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEnabled()) { + f32 duration = mAnm[i + TIMER_02_ANIM_DYING_OFFSET].getAnimDuration() - 1.0f; + s32 time = dTgSiren_c::getTime() % 10000; + if (time == 0) { + time = 10000; + } + f32 tmp = duration - (time / 10000.0f) * duration; + f32 targetFrame = (s32)(tmp + 0.5f); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setRate(1.0f); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setFrame(targetFrame); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(true); + } + } else if (mNumPetals <= i) { + if (!mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEnabled()) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToEnd(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(true); + mLyt.calc(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } + } + } +} + +void LytMeterTimerPart2_c::updatePetalsRate() { + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (i < mNumPetals) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setRate(20.0f); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(true); + } else { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToEnd2(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } + } +} + +void LytMeterTimerPart2_c::restartPetals() { + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEndReached() && + !mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].isEnabled()) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToStart(); + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(true); + } + } +} + +void LytMeterTimerPart2_c::startOutAnim() { + mAnm[TIMER_02_ANIM_OUT].setToStart(); + mAnm[TIMER_02_ANIM_OUT].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::enableChangeFruitAnim() { + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setAnimEnable(true); +} + +void LytMeterTimerPart2_c::syncTime() { + f32 duration = mAnm[TIMER_02_ANIM_FLOWER_LOOP].getAnimDuration() - 1.0f; + s32 time = dTgSiren_c::getTime() % 2000; + if (time == 0) { + time = 2000; + } + mFlowerLoopFrame = duration - (time / 2000.0f) * duration; + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setRate(1.0f); +} + +void LytMeterTimerPart2_c::syncTimeWithSafe() { + f32 duration = mAnm[TIMER_02_ANIM_FLOWER_LOOP].getAnimDuration() - 1.0f; + s32 time = dTgSiren_c::getTime() % 2000; + if (time == 0) { + time = 2000; + } + f32 loopFrame = duration - (time / 2000.0f) * duration; + f32 safeDuration = mAnm[TIMER_02_ANIM_SIREN_SAFE].getFrameCtrl()->mEndFrame - 1.0f; + f32 finalFrame = loopFrame; + if (safeDuration < finalFrame) { + finalFrame = finalFrame - safeDuration; + } + mFlowerLoopFrame = finalFrame; + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setRate(1.0f); +} + +void LytMeterTimerPart2_c::stopInAnim() { + mAnm[TIMER_02_ANIM_IN].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopBloomAnim() { + mAnm[TIMER_02_ANIM_BLOOM].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopBeforeFallAnim() { + if (mAnm[TIMER_02_ANIM_BEFORE_FALL].isEnabled()) { + mAnm[TIMER_02_ANIM_BEFORE_FALL].setAnimEnable(false); + } +} + +void LytMeterTimerPart2_c::stopChangeSirenAnim() { + mAnm[TIMER_02_ANIM_CHANGE_SIREN].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopSirenLoopAnim() { + mAnm[TIMER_02_ANIM_SIREN_LOOP].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopSirenSafeAnim() { + mAnm[TIMER_02_ANIM_SIREN_SAFE].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopFlowerLoopAnim() { + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::resetFlowerLoopAnim() { + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setFrame(0.0f); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_FLOWER_LOOP].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopDyingAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEnabled()) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } + } +} + +void LytMeterTimerPart2_c::stopFinishedDyingAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEnabled() && mAnm[i + TIMER_02_ANIM_DYING_OFFSET].isEndReached()) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } + } +} + +void LytMeterTimerPart2_c::stopFallOutAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].isEnabled()) { + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(false); + } + } +} + +void LytMeterTimerPart2_c::stopFinishedFallOutAnims() { + for (int i = 0; i < TIMER_02_NUM_PETALS; i++) { + if (mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].isEnabled() && + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].isEndReached()) { + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(false); + // ??? - if one of the fall out anims is finished, stop all others too??? + stopFallOutAnims(); + } + } +} + +void LytMeterTimerPart2_c::stopOutAnim() { + mAnm[TIMER_02_ANIM_OUT].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::stopChangeFruitAnim() { + mAnm[TIMER_02_ANIM_CHANGE_FRUIT].setAnimEnable(false); +} + +bool LytMeterTimerPart2_c::isInAnimFinished() { + if (mAnm[TIMER_02_ANIM_IN].isEnabled() && mAnm[TIMER_02_ANIM_IN].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isBloomAnimFinished() { + if (mAnm[TIMER_02_ANIM_BLOOM].isEnabled() && mAnm[TIMER_02_ANIM_BLOOM].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isBeforeFallAnimAtStart() { + if (mAnm[TIMER_02_ANIM_BEFORE_FALL].isEnabled() && cM3d_IsZero(mAnm[TIMER_02_ANIM_BEFORE_FALL].getFrame())) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isChangeSirenAnimFinished() { + if (mAnm[TIMER_02_ANIM_CHANGE_SIREN].isEnabled() && mAnm[TIMER_02_ANIM_CHANGE_SIREN].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isSirenSafeAnimFinished() { + if (mAnm[TIMER_02_ANIM_SIREN_SAFE].isEnabled() && mAnm[TIMER_02_ANIM_SIREN_SAFE].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isFlowerLoopAnimFinished() { + if (mAnm[TIMER_02_ANIM_FLOWER_LOOP].isEnabled() && mAnm[TIMER_02_ANIM_FLOWER_LOOP].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isPetalDyingAnimFinished() { + if (mNumPetals > 0) { + s32 idx = mNumPetals - 1; + if (mAnm[idx + TIMER_02_ANIM_DYING_OFFSET].isEnabled() && + mAnm[idx + TIMER_02_ANIM_DYING_OFFSET].isEndReached()) { + return true; + } + } + return false; +} + +bool LytMeterTimerPart2_c::isFirstFallOutAnimFinished() { + if (mAnm[TIMER_02_ANIM_FALL_OUT_OFFSET].isEnabled() && mAnm[TIMER_02_ANIM_FALL_OUT_OFFSET].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isOutAnimFinished() { + if (mAnm[TIMER_02_ANIM_OUT].isEnabled() && mAnm[TIMER_02_ANIM_OUT].isEndReached()) { + return true; + } + return false; +} + +bool LytMeterTimerPart2_c::isChangeFruitAnimFinished() { + if (mAnm[TIMER_02_ANIM_CHANGE_FRUIT].isEnabled() && mAnm[TIMER_02_ANIM_CHANGE_FRUIT].isEndReached()) { + return true; + } + return false; +} + +void LytMeterTimerPart2_c::realizeFruitsColor() { + f32 frame = 0.0f; + switch (mTrial) { + case dAcItem_c::TRIAL_ELDIN: frame = 0.0f; break; + case dAcItem_c::TRIAL_FARON: frame = 1.0f; break; + case dAcItem_c::TRIAL_SKYLOFT: frame = 2.0f; break; + case dAcItem_c::TRIAL_LANAYRU: frame = 3.0f; break; + } + mAnm[TIMER_02_ANIM_FRUITS_COLOR].setForwardOnce(); + mAnm[TIMER_02_ANIM_FRUITS_COLOR].setFrame(frame); + mAnm[TIMER_02_ANIM_FRUITS_COLOR].setAnimEnable(true); + mLyt.calc(); + mAnm[TIMER_02_ANIM_FRUITS_COLOR].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::finishDyingAnims() { + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToEnd2(); + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(true); + } + mLyt.calc(); + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart2_c::setPetalsToStart() { + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_DYING_OFFSET].setToStart(); + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setToEnd2(); + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(true); + } + mLyt.calc(); + for (s32 i = 0; i < TIMER_02_NUM_PETALS; i++) { + mAnm[i + TIMER_02_ANIM_FALL_OUT_OFFSET].setAnimEnable(false); + } +} + +void LytMeterTimerPart2_c::realizePetalsOnOff() { + mAnm[TIMER_02_ANIM_PETAL_ONOFF].setAnimEnable(true); + mAnm[TIMER_02_ANIM_PETAL_ONOFF].setFrame(9 - mNumPetals); + mLyt.calc(); + mAnm[TIMER_02_ANIM_PETAL_ONOFF].setAnimEnable(false); +} + +void LytMeterTimerPart2_c::finishSingleAnim(u8 idx) { + mAnm[idx].setToEnd2(); +} + +void LytMeterTimerPart2_c::resetSingleAnim(u8 idx) { + mAnm[idx].setToStart(); +} + +void LytMeterTimerPart2_c::calc() { + mLyt.calc(); +} + +void LytMeterTimerPart2_c::initColors() { + switch (mTrial) { + case dAcItem_c::TRIAL_ELDIN: + mColors1[TIMER_02_COLOR_00_00] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors1[TIMER_02_COLOR_00_01] = mColor(0xFF, 0xFF, 0x40, 0xFF); + mColors2[TIMER_02_COLOR_01_00] = mColor(0xFF, 0xFF, 0x00, 0xFF); + mColors2[TIMER_02_COLOR_01_01] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_FARON: + mColors1[TIMER_02_COLOR_00_00] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors1[TIMER_02_COLOR_00_01] = mColor(0xFF, 0x50, 0x82, 0xFF); + mColors2[TIMER_02_COLOR_01_00] = mColor(0xFF, 0x00, 0x40, 0xFF); + mColors2[TIMER_02_COLOR_01_01] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_SKYLOFT: + mColors1[TIMER_02_COLOR_00_00] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors1[TIMER_02_COLOR_00_01] = mColor(0x78, 0xFF, 0x78, 0xFF); + mColors2[TIMER_02_COLOR_01_00] = mColor(0x00, 0xFF, 0x3C, 0xFF); + mColors2[TIMER_02_COLOR_01_01] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + case dAcItem_c::TRIAL_LANAYRU: + mColors1[TIMER_02_COLOR_00_00] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + mColors1[TIMER_02_COLOR_00_01] = mColor(0x78, 0xB4, 0xFF, 0xFF); + mColors2[TIMER_02_COLOR_01_00] = mColor(0x00, 0x80, 0xFF, 0xFF); + mColors2[TIMER_02_COLOR_01_01] = mColor(0xFF, 0xFF, 0xFF, 0xFF); + break; + } +} + +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_174_; +void LytMeterTimerPart2_c::createSingleFruitEffect() { + nw4r::math::MTX34 mtx = mpPane->GetGlobalMtx(); + mVec3_c pos; + pos.x = mtx._03; + pos.y = mtx._13; + pos.z = 0.0f; + EffectsStruct::fn_800298C0( + PARTICLE_RESOURCE_ID_MAPPING_174_, &pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_00], + &mColors2[TIMER_02_COLOR_01_00] + ); +} +extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_206_; +void LytMeterTimerPart2_c::createFruitCompleteEffect() { + nw4r::math::MTX34 mtx = mpPane->GetGlobalMtx(); + mVec3_c pos; + pos.x = mtx._03; + pos.y = mtx._13; + pos.z = 0.0f; + EffectsStruct::fn_800298C0( + PARTICLE_RESOURCE_ID_MAPPING_206_, &pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_01], + &mColors2[TIMER_02_COLOR_01_01] + ); +} + +void dLytMeterTimer_c::initializeState_ChangeSiren() {} +void dLytMeterTimer_c::executeState_ChangeSiren() { + if (mpPart2->isFlowerLoopAnimFinished()) { + mpPart2->stopFlowerLoopAnim(); + mpPart2->resetFlowerLoopAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_FLOWER_LOOP); + } + if (mpPart2->isBeforeFallAnimAtStart()) { + mpPart2->stopBeforeFallAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_BEFORE_FALL); + } + + if (field_0x57 <= 1) { + if (mLastTime < mActualTime && field_0x58 == 1 && mpPart1->getActualTearCount() != TIMER_01_NUM_TEARS) { + gotoChangeSafeBloom(); + } + if (!EventManager::isInEvent()) { + mpPart2->setVisible(true); + } + } + + if (dLytMeter_c::getfn_800D97A0() && !field_0x54) { + mpPart2->setVisible(true); + } + + switch (field_0x57) { + case 0: + if (mpPart2->isPetalDyingAnimFinished()) { + mpPart2->stopFinishedDyingAnims(); + field_0x57 = 1; + mpPart2->restartPetals(); + } + break; + case 1: + if (mpPart2->isFirstFallOutAnimFinished()) { + dLytMeter_c::setField_0x13B61(1); + field_0x57 = 2; + } + break; + case 2: + if (mpPart2->isFirstFallOutAnimFinished() && field_0x48) { + mpPart2->stopFinishedFallOutAnims(); + mpPart2->enableChangeSirenAnim(); + } + if (mpPart2->isChangeSirenAnimFinished()) { + mpPart2->stopChangeSirenAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_CHANGE_SIREN); + field_0x58 = 1; + gotoSiren(); + } + break; + } +} +void dLytMeterTimer_c::finalizeState_ChangeSiren() {} + +void dLytMeterTimer_c::initializeState_Siren() {} +void dLytMeterTimer_c::executeState_Siren() { + if (!field_0x58) { + if (mpPart2->isSirenSafeAnimFinished()) { + mpPart2->stopSirenSafeAnim(); + } + const char *eventName = EventManager::getCurrentEventName(); + if (eventName != nullptr && (!strcmp(eventName, "SirenChaser") || !strcmp(eventName, "SirenChaserL"))) { + gotoChangeSiren(); + } + } +} +void dLytMeterTimer_c::finalizeState_Siren() {} + +void dLytMeterTimer_c::initializeState_ChangeSafeBloom() {} +void dLytMeterTimer_c::executeState_ChangeSafeBloom() { + if (mpPart2->isBloomAnimFinished()) { + mpPart2->stopSirenSafeAnim(); + mpPart2->stopBloomAnim(); + gotoChangeSafe(); + } else if (mpPart1->incrementTearCount() == true) { + mpPart2->stopSirenSafeAnim(); + mpPart2->initBeforeFallAnim(); + mpPart2->setNumPetals(0); + mpPart2->realizePetalsOnOff(); + mpPart2->enableSafeAnim(); + mpPart2->finishSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->resetSingleAnim(TIMER_02_ANIM_BLOOM); + mpPart2->enableBloomAnim(); + mpPart2->stopDyingAnims(); + } +} +void dLytMeterTimer_c::finalizeState_ChangeSafeBloom() {} + +void dLytMeterTimer_c::initializeState_ChangeSafe() {} +void dLytMeterTimer_c::executeState_ChangeSafe() { + if (mpPart1->getActualTearCount() != TIMER_01_NUM_TEARS && + mpPart1->getDisplayedTearCount() < mpPart1->getActualTearCount()) { + gotoChangeSafeBloom(); + } else { + if (mLastTime < mActualTime) { + gotoChangeSafeBloom(); + } else { + if (mpPart2->isSirenSafeAnimFinished()) { + mpPart2->stopSirenSafeAnim(); + gotoSafe(); + } + s32 rem = mActualTime % 1000; + s32 quot = mActualTime / 1000; + if (rem == 0 && quot % 2 == 0) { + mpPart2->syncTime(); + field_0x59 = true; + field_0x5C = 4; + } + + if (field_0x59) { + if (field_0x5C-- == 0) { + mpPart2->resumeFlowerLoop(); + field_0x59 = false; + } + } + } + } +} +void dLytMeterTimer_c::finalizeState_ChangeSafe() {} + +void dLytMeterTimer_c::initializeState_Safe() {} +void dLytMeterTimer_c::executeState_Safe() { + const char *eventName = EventManager::getCurrentEventName(); + if (eventName != nullptr && !strcmp(eventName, "SirenSeekerFind")) { + gotoChangeSiren(); + } else if (eventName != nullptr && !strcmp(eventName, "SirenAreaEnter")) { + gotoChangeSiren(); + } else { + if (mActualTime == 0) { + gotoChangeSiren(); + } else if (!checkForPetalChangeMaybe()) { + if (mLastTime < mActualTime) { + gotoChangeSafeBloom(); + } else { + mpPart2->setNumPetals(getPetalForTimerMaybe(mActualTime)); + if (mpPart1->getActualTearCount() != TIMER_01_NUM_TEARS) { + if (mpPart2->getNumPetals() == 1 && mActualTime < 9000) { + mpPart2->enableBeforeFallAnim(); + } else { + mpPart2->stopBeforeFallAnim(); + } + } + if (mLastTime == mActualTime) { + if (mpPart1->getActualTearCount() != TIMER_01_NUM_TEARS) { + mpPart2->stopDyingAnims(); + mpPart2->stopFinishedFallOutAnims(); + } else { + mpPart2->startFlowerLoop(); + } + if (mpPart2->isFlowerLoopAnimFinished()) { + mpPart2->stopFlowerLoopAnim(); + } + } else { + s32 quot = mActualTime / 1000; + if (mpPart2->isFlowerLoopAnimFinished()) { + mpPart2->stopFlowerLoopAnim(); + } + s32 rem = mActualTime % 1000; + if (rem == 0 && quot % 2 == 0) { + mpPart2->syncTime(); + field_0x59 = true; + field_0x5C = 4; + } + if (field_0x59) { + if (field_0x5C-- == 0) { + mpPart2->resumeFlowerLoop(); + field_0x59 = false; + } + } + mpPart2->stopFinishedDyingAnims(); + mpPart2->stopFinishedFallOutAnims(); + if (mActualTime <= 90000) { + mpPart2->syncPetalsTime(); + } + } + } + } + } +} +void dLytMeterTimer_c::finalizeState_Safe() {} + +void dLytMeterTimer_c::initializeState_ChangeFruits() {} +void dLytMeterTimer_c::executeState_ChangeFruits() { + switch (field_0x56) { + case 3: + if (mpPart2->isBloomAnimFinished()) { + mpPart2->stopSirenSafeAnim(); + mpPart2->stopBloomAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_BLOOM); + startSafe(); + } + break; + case 4: + if (mpPart2->isSirenSafeAnimFinished()) { + mpPart2->stopSirenSafeAnim(); + field_0x56 = 5; + } + break; + case 5: + if (sDoFinishAnim == true) { + doPickup(); + } + break; + case 6: + sFinished = true; + if (mpPart2->isFlowerLoopAnimFinished()) { + mpPart2->stopFlowerLoopAnim(); + mpPart2->resetFlowerLoopAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_FLOWER_LOOP); + } + + if (dLytDropLine_c::finishPartMaybe()) { + if (mpPart1->isLastFruitAnimFinished()) { + mpPart2->realizeFruitsColor(); + mpPart2->enableChangeFruitAnim(); + mpPart2->initChangeSirenAnim(); + mpPart2->createFruitCompleteEffect(); + } else { + mpPart2->createSingleFruitEffect(); + } + } + + if (mpPart1->isAnyFruitAnimAtFrame(4.0f)) { + s32 fruit = mpPart1->getField0x780() + 1; + mpPart1->setField0x780(fruit); + if (mpPart1->getField0x780() < TIMER_01_NUM_TEARS) { + mpPart1->updateDropLine(mpPart2->i_getPane()); + mpPart1->startFruitAnim(fruit); + mpPart1->createEffect(fruit); + } + } + + if (mpPart1->isAnyFruitAnimFinished()) { + mpPart1->stopFinishedFruit(); + } + + if (mpPart2->isChangeFruitAnimFinished()) { + if (field_0x60 <= 0) { + mpPart2->stopSirenSafeAnim(); + mpPart2->stopChangeFruitAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_CHANGE_FRUIT); + dLytMeter_c::setField_0x13B64(1); + gotoFruits(); + } else { + field_0x60--; + } + } + break; + } +} +void dLytMeterTimer_c::finalizeState_ChangeFruits() {} + +void dLytMeterTimer_c::initializeState_Fruits() { + sDoExit = true; +} +void dLytMeterTimer_c::executeState_Fruits() { + if (mpPart2->isFlowerLoopAnimFinished()) { + mpPart2->stopFlowerLoopAnim(); + mpPart2->resetFlowerLoopAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_FLOWER_LOOP); + } + + if (mActualTime == 0) { + gotoChangeSiren(); + } +} +void dLytMeterTimer_c::finalizeState_Fruits() {} + +bool dLytMeterTimer_c::build() { + mpPart1 = LytMeterTimerPart1_c::GetInstance(); + mpPart2 = LytMeterTimerPart2_c::GetInstance(); + mpPart1->init(); + mpPart2->init(); + mpPart1->realizeTrial(); + mpPart2->setNumPetals(TIMER_02_NUM_PETALS); + mpPart2->realizePetalsOnOff(); + mpPart2->initFallOutAnims(); + mpPart2->initDyingAnims(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->enableSafeAnim(); + mStateMgr.changeState(StateID_Siren); + field_0x60 = 20; + sDoExit = false; + sDoFinishAnim = false; + sFinished = false; + return true; +} + +bool dLytMeterTimer_c::remove() { + mpPart1 = nullptr; + mpPart2 = nullptr; + return true; +} + +bool dLytMeterTimer_c::execute() { + if (dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL) { + mActualTime = dTgSiren_c::getTime(); + if (mActualTime > 500 && isInSiren() && mpPart1->getActualTearCount() != TIMER_01_NUM_TEARS) { + gotoChangeSafeBloom(); + } + + if (mpPart1->getActualTearCount() == TIMER_01_NUM_TEARS && dLytMeter_c::getField_0x13B63()) { + if (!field_0x55) { + field_0x60 = 20; + } + field_0x55 = true; + } + + if (field_0x55) { + if (field_0x54) { + gotoChangeFruits3(); + } else if (sDoFinishAnim == true) { + gotoChangeFruits6(); + } + } + + if (mpPart1->isInAnimFinished() && mpPart2->isInAnimFinished()) { + mpPart1->stopInAnim(); + mpPart2->stopInAnim(); + } + + if (mpPart1->isOutAnimFinished() && mpPart2->isOutAnimFinished()) { + mpPart1->stopOutAnim(); + mpPart2->stopOutAnim(); + } + + mStateMgr.executeState(); + mLastTime = mActualTime; + } + + return true; +} + +bool dLytMeterTimer_c::startIn2() { + startIn(); + field_0x48 = 1; + return true; +} + +bool dLytMeterTimer_c::startOut2() { + startOut(); + field_0x48 = 0; + return true; +} + +void dLytMeterTimer_c::startIn() { + mpPart1->stopOutAnim(); + mpPart2->stopOutAnim(); + mpPart1->startInAnim(); + mpPart2->startInAnim(); + if (dLytMeter_c::GetMain()->fn_800D5650()) { + if (mStateMgr.isState(StateID_ChangeSiren)) { + mpPart2->stopFlowerLoopAnim(); + mpPart2->resetFlowerLoopAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_FLOWER_LOOP); + mpPart2->stopBeforeFallAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_BEFORE_FALL); + mpPart2->finishDyingAnims(); + mpPart2->setPetalsToStart(); + mpPart2->finishSingleAnim(TIMER_02_ANIM_CHANGE_SIREN); + mpPart2->enableChangeSirenAnim(); + mpPart2->calc(); + mpPart2->stopChangeSirenAnim(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_CHANGE_SIREN); + gotoSiren(); + } else if (mStateMgr.isState(StateID_ChangeSafeBloom) || mStateMgr.isState(StateID_ChangeSafe)) { + mpPart2->stopSirenSafeAnim(); + mpPart2->finishSingleAnim(TIMER_02_ANIM_BLOOM); + mpPart2->enableBloomAnim(); + mpPart2->calc(); + mpPart2->stopBloomAnim(); + mpPart2->setNumPetals(TIMER_02_NUM_PETALS); + mpPart2->realizePetalsOnOff(); + mpPart2->initFallOutAnims(); + mpPart2->initDyingAnims(); + mpPart2->finishSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->enableSafeAnim(); + mpPart2->calc(); + mpPart2->stopSirenSafeAnim(); + gotoSafe(); + } + } +} + +void dLytMeterTimer_c::gotoChangeSiren() { + if (mStateMgr.isState(StateID_Safe) || mStateMgr.isState(StateID_Siren)) { + if (mpPart2->getNumPetals() > 1) { + // Okay + mpPart2->setNumPetals(mpPart2->getNumPetals()); + mpPart2->initDyingAnims(); + mpPart2->updatePetalsRate(); + } else if (mpPart2->getNumPetals() == 1) { + mpPart2->updatePetalsRate(); + } + mpPart2->setVisible(false); + field_0x57 = 0; + mStateMgr.changeState(StateID_ChangeSiren); + } +} + +void dLytMeterTimer_c::gotoSiren() { + mpPart2->enableSirenLoopAnim(); + field_0x54 = true; + mStateMgr.changeState(StateID_Siren); +} + +void dLytMeterTimer_c::gotoChangeSafeBloom() { + if (mStateMgr.isState(StateID_Siren) || mStateMgr.isState(StateID_Safe) || mStateMgr.isState(StateID_ChangeSiren) || + mStateMgr.isState(StateID_ChangeSafe)) { + if (mpPart1->getActualTearCount() == TIMER_01_NUM_TEARS - 1) { + mpPart2->stopDyingAnims(); + } + mpPart2->stopSirenLoopAnim(); + field_0x54 = false; + mStateMgr.changeState(StateID_ChangeSafeBloom); + } +} + +void dLytMeterTimer_c::gotoChangeSafe() { + mpPart2->setNumPetals(TIMER_02_NUM_PETALS); + mpPart2->realizePetalsOnOff(); + mpPart2->initFallOutAnims(); + mpPart2->initDyingAnims(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->enableSafeAnim(); + mLastTime = mActualTime; + if ((mLastTime / 1000) % 2 != 0) { + mpPart2->syncTimeWithSafe(); + field_0x59 = true; + field_0x5C = 2; + } + mStateMgr.changeState(StateID_ChangeSafe); +} + +void dLytMeterTimer_c::gotoSafe() { + mStateMgr.changeState(StateID_Safe); +} + +void dLytMeterTimer_c::gotoChangeFruits6() { + if (mStateMgr.isState(StateID_Siren) || mStateMgr.isState(StateID_Safe)) { + mpPart1->resetBowlNuts(); + mpPart1->updateDropLine(mpPart2->i_getPane()); + mpPart1->startFruitAnim(mpPart1->getField0x780()); + mpPart1->createEffect(mpPart1->getField0x780()); + field_0x54 = false; + field_0x56 = 6; + mStateMgr.changeState(StateID_ChangeFruits); + } +} + +void dLytMeterTimer_c::gotoFruits() { + mStateMgr.changeState(StateID_Fruits); +} + +void dLytMeterTimer_c::startOut() { + mpPart1->stopInAnim(); + mpPart2->stopInAnim(); + mpPart1->startOutAnim(); + mpPart2->startOutAnim(); +} + +void dLytMeterTimer_c::gotoChangeFruits3() { + if (mStateMgr.isState(StateID_Siren) || mStateMgr.isState(StateID_Safe)) { + mpPart2->initBeforeFallAnim(); + mpPart2->setNumPetals(0); + mpPart2->realizePetalsOnOff(); + mpPart2->enableSafeAnim(); + mpPart2->finishSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->resetSingleAnim(TIMER_02_ANIM_BLOOM); + mpPart2->enableBloomAnim(); + field_0x54 = false; + field_0x56 = 3; + mStateMgr.changeState(StateID_ChangeFruits); + } +} + +void dLytMeterTimer_c::startSafe() { + mpPart2->setNumPetals(TIMER_02_NUM_PETALS); + mpPart2->realizePetalsOnOff(); + mpPart2->initFallOutAnims(); + mpPart2->initDyingAnims(); + mpPart2->resetSingleAnim(TIMER_02_ANIM_SIREN_SAFE); + mpPart2->enableSafeAnim(); + mLastTime = mActualTime; + field_0x56 = 4; +} + +void dLytMeterTimer_c::doPickup() { + mpPart1->resetBowlNuts(); + mpPart1->updateDropLine(mpPart2->i_getPane()); + mpPart1->startFruitAnim(mpPart1->getField0x780()); + mpPart1->createEffect(mpPart1->getField0x780()); + field_0x56 = 6; +} + +bool dLytMeterTimer_c::isInSiren() { + if (EventManager::isInEvent()) { + return false; + } + return mStateMgr.isState(StateID_Siren); +} + +s32 dLytMeterTimer_c::getPetalForTimerMaybe(s32 time) { + s32 result = time / 10000; + if (time % 10000 != 0) { + result += 1; + } + if (result <= TIMER_02_NUM_PETALS) { + return result; + } + return TIMER_02_NUM_PETALS; +} + +bool dLytMeterTimer_c::checkForPetalChangeMaybe() { + if (mLastTime - mActualTime > 10000) { + mpPart2->setNumPetals(getPetalForTimerMaybe(mLastTime)); + mLastTime = mActualTime; + return true; + } + return 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 9a48f924..31dca491 100644 --- a/src/d/lyt/meter/d_lyt_meter_z_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_z_btn.cpp @@ -1,6 +1,280 @@ #include "d/lyt/meter/d_lyt_meter_z_btn.h" +#include "common.h" +#include "d/d_pad.h" +#include "d/d_sc_game.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_unknowns.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "toBeSorted/attention.h" +#include "toBeSorted/small_sound_mgr.h" + STATE_DEFINE(dLytMeterZBtn_c, Wait); STATE_DEFINE(dLytMeterZBtn_c, On); STATE_DEFINE(dLytMeterZBtn_c, Active); STATE_DEFINE(dLytMeterZBtn_c, Off); + +static const d2d::LytBrlanMapping brlanMap[] = { + {"nunBtn_01_input.brlan", "G_input_00"}, + { "nunBtn_01_call.brlan", "G_call_00"}, + { "nunBtn_01_loop.brlan", "G_loop_00"}, +}; + +#define Z_BTN_ANIM_INPUT 0 +#define Z_BTN_ANIM_CALL 1 +#define Z_BTN_ANIM_LOOP 2 + +#define Z_BTN_NUM_ANIMS 3 + +void dLytMeterZBtn_c::initializeState_Wait() { + mOnDelay = 15; +} +void dLytMeterZBtn_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[Z_BTN_ANIM_INPUT].setBackwardsOnce(); + mAnm[Z_BTN_ANIM_INPUT].setToStart(); + mAnm[Z_BTN_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 dLytMeterZBtn_c::finalizeState_Wait() {} + +void dLytMeterZBtn_c::initializeState_On() {} +void dLytMeterZBtn_c::executeState_On() { + if (mAnm[Z_BTN_ANIM_INPUT].isStop2()) { + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Active); + } +} +void dLytMeterZBtn_c::finalizeState_On() {} + +void dLytMeterZBtn_c::initializeState_Active() {} +void dLytMeterZBtn_c::executeState_Active() { + if (field_0x1B4 != field_0x1B0 || !field_0x1B8) { + if (field_0x1B4 == LytDoButtonRelated::DO_NONE || !field_0x1B8) { + mAnm[Z_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[Z_BTN_ANIM_INPUT].setFrame(0.0f); + mAnm[Z_BTN_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[Z_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[Z_BTN_ANIM_INPUT].setFrame(0.0f); + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } +} +void dLytMeterZBtn_c::finalizeState_Active() {} + +void dLytMeterZBtn_c::initializeState_Off() {} +void dLytMeterZBtn_c::executeState_Off() { + if (mAnm[Z_BTN_ANIM_INPUT].isEndReached()) { + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } +} +void dLytMeterZBtn_c::finalizeState_Off() {} + +static const char *sPane = "N_collectAll_00"; + +static const char *sTextBoxes[] = { + "T_zBtn_00", + "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); + + for (int i = 0; i < Z_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 < 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 = 0x5E; + field_0x1B0 = 0x5E; + field_0x1B4 = 0x5E; + field_0x1C4 = false; + field_0x1B8 = true; + mpOwnerPane = nullptr; + + setMessage(0x5E); + field_0x1C5 = 0; + field_0x1C6 = 0; + mOnDelay = 15; + + mAnm[Z_BTN_ANIM_INPUT].setToEnd(); + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(true); + mAnm[Z_BTN_ANIM_CALL].setToEnd(); + mAnm[Z_BTN_ANIM_CALL].setAnimEnable(true); + mAnm[Z_BTN_ANIM_LOOP].setAnimEnable(true); + mLyt.calc(); + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(false); + mAnm[Z_BTN_ANIM_CALL].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeterZBtn_c::remove() { + for (int i = 0; i < Z_BTN_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].remove(); + } + return true; +} + +bool dLytMeterZBtn_c::execute() { + if (mpOwnerPane == nullptr) { + return true; + } + + if (!mpOwnerPane->IsVisible()) { + if (*mStateMgr.getStateID() == StateID_Off) { + mAnm[Z_BTN_ANIM_INPUT].setToEnd2(); + } else if (*mStateMgr.getStateID() == StateID_Active) { + mAnm[Z_BTN_ANIM_INPUT].setForwardOnce(); + mAnm[Z_BTN_ANIM_INPUT].setToEnd2(); + mAnm[Z_BTN_ANIM_INPUT].setAnimEnable(true); + mStateMgr.changeState(StateID_Off); + } + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_Z, LytDoButtonRelated::DO_NONE); + return true; + } + field_0x1C4 = true; + if ((!fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu") || AttentionManager::GetInstance()->checkLink2()) && + LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_Z) == 0x67) { + field_0x1C4 = false; + LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_Z, LytDoButtonRelated::DO_NONE); + } + field_0x1B4 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_Z); + field_0x1B8 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_Z) && + dLytMeter_c::GetInstance()->checkAllFlags(0x800); + mStateMgr.executeState(); + + for (int i = 0; i < Z_BTN_NUM_ANIMS; i++) { + if (i != 1 && mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + + if (dLytControlGame_c::getInstance()->isStateNormal()) { + if (StoryflagManager::sInstance->getCounterOrFlag(565)) { + if (dPad::checkButtonZPressed()) { + field_0x1C5 = 0; + StoryflagManager::sInstance->unsetFlag(565); + } else { + field_0x1C5 = 1; + } + } + } else { + field_0x1C5 = 0; + } + + if (field_0x1C5 != 0 && dLytMeter_c::GetInstance()->checkAllFlags(0x800)) { + if (field_0x1C6 == 0) { + mAnm[Z_BTN_ANIM_CALL].setToEnd(); + mAnm[Z_BTN_ANIM_CALL].setAnimEnable(true); + field_0x1C6 = 1; + } + if (mAnm[Z_BTN_ANIM_CALL].isEnabled()) { + mAnm[Z_BTN_ANIM_CALL].play(); + if (dLytMeter_c::GetInstance()->checkAllFlags(0x800) && mAnm[Z_BTN_ANIM_CALL].getFrame() == 1.0f) { + SmallSoundManager::GetInstance()->playSound(SE_S_Z_BUTTON_BLINK); + } + } + } else if (field_0x1C6 == 1) { + mAnm[Z_BTN_ANIM_CALL].setToEnd(); + } else if (mAnm[Z_BTN_ANIM_CALL].isEnabled()) { + mAnm[Z_BTN_ANIM_CALL].setAnimEnable(false); + } + + if (field_0x1C5 == 0) { + field_0x1C6 = field_0x1C5; + } + field_0x1C5 = 0; + + return true; +} + +#include "d/lyt/meter/d_lyt_meter_action_table.inc" + +void dLytMeterZBtn_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]->SetVisible(true); + mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(buf, nullptr); + } + mpWindow[0]->SetVisible(true); + mpWindow[0]->UpdateSize(mpSizeBox[0], 32.0f); + field_0x1BC = id; + } else { + mpTextBoxes[0]->SetVisible(false); + mpTextBoxes[1]->SetVisible(false); + mpWindow[0]->SetVisible(false); + } +} + +bool dLytMeterZBtn_c::isCalling() const { + if (dLytControlGame_c::getInstance()->isStateNormal() && StoryflagManager::sInstance->getCounterOrFlag(565)) { + return true; + } + + return false; +} diff --git a/src/toBeSorted/dowsing_target.cpp b/src/toBeSorted/dowsing_target.cpp index bd375fca..bc474c8f 100644 --- a/src/toBeSorted/dowsing_target.cpp +++ b/src/toBeSorted/dowsing_target.cpp @@ -3,6 +3,7 @@ #include "c/c_math.h" #include "d/flag/itemflag_manager.h" #include "d/flag/storyflag_manager.h" +#include "d/lyt/d_lyt_common_icon_item_maps.h" #include "m/m_mtx.h" #include "toBeSorted/tlist.h" @@ -228,40 +229,40 @@ static bool removeDowsingTarget(DowsingTarget *target) { return false; } -u8 DowsingTarget::getTopDowsingIcon() { +s32 DowsingTarget::getTopDowsingIcon() { if (hasZeldaDowsing()) { - return 19; + return LYT_CMN_DowsingZelda; } else if (hasAnyTrialDowsing()) { - return 20; + return LYT_CMN_DowsingTrialGate; } else if (hasSacredWaterDowsing()) { - return 5; + return LYT_CMN_DowsingHolyWater; } else if (hasSandshipDowsing()) { - return 18; + return LYT_CMN_DowsingSandship; } else if (hasTadtoneDowsing()) { - return 17; + return LYT_CMN_DowsingTadtones; } else if (hasPropellerDowsing()) { - return 10; + return LYT_CMN_DowsingWindmillPropeller; } else if (hasWaterBasinDowsing()) { - return 14; + return LYT_CMN_DowsingWaterBasin; } - return 19; + return LYT_CMN_DowsingZelda; } -u8 DowsingTarget::getLeftDowsingIcon() { +s32 DowsingTarget::getLeftDowsingIcon() { if (hasCrystalBallDowsing()) { - return 15; + return LYT_CMN_DowsingCrystalBall; } else if (hasPumpkinDowsing()) { - return 12; + return LYT_CMN_DowsingPumpkinPatchPlower; } else if (hasNewPlantSpeciesDowsing()) { - return 21; + return LYT_CMN_DowsingNewPlantSpecies; } else if (hasPartyWheelDowsing()) { - return 13; + return LYT_CMN_DowsingPartyWheel; } else if (hasKikwiDowsing()) { - return 8; + return LYT_CMN_DowsingKikwi; } else if (hasKeyPieceDowsing()) { - return 11; + return LYT_CMN_DowsingEarthTempleKey; } else if (hasDesertNodeDowsing()) { - return 7; + return LYT_CMN_DowsingPowerGenerators; } - return 15; + return LYT_CMN_DowsingCrystalBall; } diff --git a/src/toBeSorted/file_manager.cpp b/src/toBeSorted/file_manager.cpp index 752d9f89..266c6e45 100644 --- a/src/toBeSorted/file_manager.cpp +++ b/src/toBeSorted/file_manager.cpp @@ -174,17 +174,17 @@ u16 *FileManager::getStoryFlagsMut() { /* 8000B6A0 */ u8 FileManager::getShieldPouchSlot() {} /* 8000B6F0 */ void FileManager::setAirPotionTimer(u16 time) {} -/* 8000B720 */ u16 FileManager::getAirPotionTimer() {} +/* 8000B720 */ u16 FileManager::getAirPotionTimer() const {} /* 8000B770 */ void FileManager::setAirPotionPlusTimer(u16 time) {} -/* 8000B7A0 */ u16 FileManager::getAirPotionPlusTimer() {} +/* 8000B7A0 */ u16 FileManager::getAirPotionPlusTimer() const {} /* 8000B7F0 */ void FileManager::setStaminaPotionTimer(u16 time) {} -/* 8000B820 */ u16 FileManager::getStaminaPotionTimer() {} +/* 8000B820 */ u16 FileManager::getStaminaPotionTimer() const {} /* 8000B870 */ void FileManager::setStaminaPotionPlusTimer(u16 time) {} -/* 8000B8A0 */ u16 FileManager::getStaminaPotionPlusTimer() {} +/* 8000B8A0 */ u16 FileManager::getStaminaPotionPlusTimer() const {} /* 8000B8F0 */ void FileManager::setGuardianPotionTimer(u16 time) {} -/* 8000B920 */ u16 FileManager::getGuardianPotionTimer() {} +/* 8000B920 */ u16 FileManager::getGuardianPotionTimer() const {} /* 8000B970 */ void FileManager::setGuardianPotionPlusTimer(u16 time) {} -/* 8000B9A0 */ u16 FileManager::getGuardianPotionPlusTimer() {} +/* 8000B9A0 */ u16 FileManager::getGuardianPotionPlusTimer() const {} /* 8000B9F0 */ void FileManager::setDowsingSlotIdx(u8 idx) {} /* 8000BA20 */ u8 FileManager::getDowsingSlotIdx() {} diff --git a/src/toBeSorted/special_item_drop_mgr.cpp b/src/toBeSorted/special_item_drop_mgr.cpp index add2324c..86906f3e 100644 --- a/src/toBeSorted/special_item_drop_mgr.cpp +++ b/src/toBeSorted/special_item_drop_mgr.cpp @@ -385,8 +385,6 @@ static const struct { }; static const u16 RAND_RUPEE_ARRAY[3] = {ITEM_GREEN_RUPEE, ITEM_BLUE_RUPEE, ITEM_RED_RUPEE}; -extern "C" int getCurrentBowType(); -extern "C" int getCurrentSlingshotType(); extern "C" bool isHeroMode(); // 800c7bb0 @@ -402,12 +400,12 @@ int SpecialItemDropMgr::fn_800C7BB0(int specialItemId) { int weight = e->mDropChance; if (entryIdx == 9 || entryIdx == 10) { - if (getCurrentBowType() == 0) { + if (dAcPy_c::getCurrentBowType() == 0) { // No arrows until you get the Bow weight = 0; } } else if (entryIdx == 11) { - if (getCurrentSlingshotType() == 0) { + if (dAcPy_c::getCurrentSlingshotType() == 0) { // No seeds until you get the Slingshot weight = 0; }