This commit is contained in:
robojumper
2025-04-10 23:21:56 +02:00
parent d19adefd7a
commit bb3f154aa9
8 changed files with 222 additions and 154 deletions
+4
View File
@@ -424,6 +424,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
+3 -3
View File
@@ -5814,7 +5814,7 @@ fn_800EF580__21dLytMeterItemSelect_cFv = .text:0x800EF580; // type:function size
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_cFl = .text:0x800EF720; // type:function size:0x7C
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
@@ -5826,7 +5826,7 @@ fn_800EFDF0__21dLytMeterItemSelect_cCFb = .text:0x800EFDF0; // type:function siz
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
fn_800F0190__21dLytMeterItemSelect_cCFl = .text:0x800F0190; // type:function size:0x18
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
@@ -5838,7 +5838,7 @@ setBtnItem__21dLytMeterItemSelect_cFl = .text:0x800F0680; // type:function size:
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
getBaseItemLytIndexforUnkId__21dLytMeterItemSelect_cCFl = .text:0x800F0990; // type:function size:0x44
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
+1
View File
@@ -405,6 +405,7 @@ config.libs = [
Object(NonMatching, "d/lyt/meter/d_lyt_meter_heart.cpp"),
Object(NonMatching, "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"),
+32 -10
View File
@@ -15,26 +15,48 @@ public:
return sInstance;
}
void set0x08(s32 value) {
field_0x08 = value;
field_0x35 = 1;
enum Action_e {
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_B = 1
};
void set(DoButton_e button, Action_e value) {
field_0x04[button] = value;
field_0x34[button] = 1;
}
static s32 get0x08() {
static Action_e get(DoButton_e button) {
if (sInstance != nullptr) {
return sInstance->field_0x08;
return sInstance->field_0x04[button];
} else {
return 0x98;
return DO_NONE;
}
}
static Action_e get0x08() {
if (sInstance != nullptr) {
return sInstance->field_0x04[1];
} else {
return DO_NONE;
}
}
private:
static LytDoButtonRelated *sInstance;
/* 0x04 */ u8 field_0x04[0x08 - 0x04];
/* 0x08 */ s32 field_0x08;
/* 0x0C */ u8 _0x08[0x35 - 0x0C];
/* 0x35 */ u8 field_0x35;
/* 0x04 */ Action_e field_0x04[12];
/* 0x34 */ u8 field_0x34[12];
};
// size 0x27C
+29 -13
View File
@@ -172,19 +172,35 @@ public:
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(s32);
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);
private:
void setBtnItem(s32 unkId);
void setBtnItem(s32 internalItem);
void realizeSelectedWheelItem();
void fn_800EF8C0(bool);
bool isWheelBlockedByCurrentAction();
@@ -195,7 +211,7 @@ private:
void fn_800F0310();
bool fn_800F0030() const;
s32 fn_800F0170(s32) const;
u8 fn_800F0190(s32) const;
u8 getInternalBaseItemForSlot(s32) const;
bool isWheelIndexLocked(s32 idx);
@@ -209,7 +225,7 @@ private:
static ITEM_ID getBaseItemForBWheelSlot(s32 idx);
ITEM_ID baseItemIdToCurrentVariant(ITEM_ID baseItem) const;
s32 baseItemLytIndexToCurrentVariant(s32 lytIndex) const;
s32 getBaseItemLytIndexforUnkId(s32 idx) const;
s32 getBaseItemLytIndexforInternalId(s32 idx) const;
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, InitWait);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Wait);
@@ -253,19 +269,19 @@ private:
/* 0x5688 */ d2d::SubPaneListNode mSubpanes[9];
/* 0x5718 */ EffectsStruct mEffects;
/* 0x574C */ s32 field_0x574C;
/* 0x5750 */ s32 field_0x5750;
/* 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 field_0x576C;
/* 0x576C */ s32 mLastDoButtonRelatedAction;
/* 0x5770 */ s32 field_0x5770;
/* 0x5774 */ s32 field_0x5774;
/* 0x5778 */ f32 field_0x5778;
/* 0x577C */ f32 field_0x577C;
/* 0x5778 */ f32 mArrowRotation;
/* 0x577C */ f32 mArrowLength;
/* 0x5780 */ f32 field_0x5780;
/* 0x5784 */ f32 field_0x5784;
/* 0x5788 */ s32 field_0x5788;
@@ -279,10 +295,10 @@ private:
/* 0x5799 */ u8 field_0x5799;
/* 0x579A */ u8 field_0x579A;
/* 0x579B */ u8 field_0x579B;
/* 0x579C */ u8 field_0x579C;
/* 0x579C */ u8 field_0x579D;
/* 0x579C */ u8 field_0x579E;
/* 0x579C */ u8 field_0x579F;
/* 0x579C */ u8 mStoredBowVariant;
/* 0x579C */ u8 mStoredSlingshotVariant;
/* 0x579C */ u8 mStoredBeetleVariant;
/* 0x579C */ u8 mStoredBugNetVariant;
/* 0x57A0 */ u8 field_0x57A0;
/* 0x57A1 */ u8 field_0x57A1;
/* 0x57A2 */ u8 field_0x57A2;
@@ -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:
+19
View File
@@ -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;
}
+134 -127
View File
@@ -489,8 +489,8 @@ static const char *sWindowNames[] = {
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;
@@ -514,12 +514,12 @@ void dLytMeterItemSelect_c::executeState_InitWait() {
if (field_0x57B5 == 0) {
return;
}
if (field_0x5794 == 2 || field_0x5794 == 9 || field_0x5794 == 10) {
if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) {
field_0x579A = field_0x5794;
}
bool blocked = isWheelBlockedByCurrentAction();
if ((field_0x574C != 11 && field_0x5794 != 11 && !blocked) || field_0x579A != 11) {
if ((field_0x574C != I_INVALID && field_0x5794 != I_INVALID && !blocked) || field_0x579A != I_INVALID) {
realizeSelectedWheelItem();
fn_800EF8C0(true);
if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10)) {
@@ -666,10 +666,10 @@ void dLytMeterItemSelect_c::initializeState_Wait() {
}
}
void dLytMeterItemSelect_c::executeState_Wait() {
if (field_0x57B3 == 1 && (field_0x5794 == 11 || LytDoButtonRelated::get0x08() == 0x84)) {
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 == 11 &&
(field_0x579A == 2 || field_0x579A == 9 || field_0x579A == 10)) {
} 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);
@@ -681,14 +681,14 @@ void dLytMeterItemSelect_c::executeState_Wait() {
} else if (isWheelBlockedByCurrentAction()) {
field_0x5768 = 0;
mStateMgr.changeState(StateID_FrameOffIn);
} else if ((field_0x5794 == 2 || (field_0x5794 == 9 || field_0x5794 == 10)) && field_0x579A == 11) {
} 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 (!dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10)) {
mStateMgr.changeState(StateID_ToUnuse);
} else if (!dLytMeterContainer_c::GetMeter()->fn_800D5650() && !dLytMeterContainer_c::GetMeter()->fn_800D5680() &&
LytDoButtonRelated::get0x08() != 0x85 && LytDoButtonRelated::get0x08() != 0x7F &&
LytDoButtonRelated::get0x08() != 0x87 && LytDoButtonRelated::get0x08() != 0x84 &&
(field_0x5794 != 9 && field_0x5794 != 10 && field_0x5794 != 11 && field_0x5794 != 2)) {
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);
}
}
@@ -787,14 +787,14 @@ void dLytMeterItemSelect_c::finalizeState_SelectIn() {
void dLytMeterItemSelect_c::initializeState_Select() {}
void dLytMeterItemSelect_c::executeState_Select() {
if (dLytMeterContainer_c::getCrossBtn0x7BF8() == 0 && dPad::checkButtonDpadDownPressed()) {
if (field_0x5794 != 11) {
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 != 11) {
if (field_0x57A0 != 0 || field_0x5794 != I_INVALID) {
field_0x5780 = 0.0f;
mStateMgr.changeState(StateID_SetIn);
} else {
@@ -891,7 +891,7 @@ void dLytMeterItemSelect_c::initializeState_SetSpecialItemIn() {
mAnm[ITEM_SELECT_ANIM_OUT].setToStart();
} else {
mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2();
if (field_0x5798 == 11) {
if (field_0x5798 == I_INVALID) {
mAnm[ITEM_SELECT_ANIM_RESET].setBackwardsOnce();
mAnm[ITEM_SELECT_ANIM_RESET].setToStart();
mBtn[2].setVisible(false);
@@ -936,16 +936,16 @@ void dLytMeterItemSelect_c::executeState_SetSpecialItemIn() {
void dLytMeterItemSelect_c::finalizeState_SetSpecialItemIn() {}
void dLytMeterItemSelect_c::initializeState_Set() {
if (field_0x5794 == 10 && field_0x5790 <= 0) {
if (field_0x5794 == I_HARP && field_0x5790 <= 0) {
field_0x5790 = 10;
}
if (field_0x5794 == 2 || field_0x5794 == 9 || field_0x5794 == 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 == 11) {
if (field_0x5794 == I_INVALID) {
mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true);
mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f);
mLyt.calc();
@@ -963,10 +963,10 @@ void dLytMeterItemSelect_c::executeState_Set() {
mStateMgr.changeState(StateID_SetOut);
}
} else {
if ((field_0x5794 == 2 || field_0x5794 == 9 || field_0x5794 == 10) && field_0x579A != field_0x5794) {
if ((field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) && field_0x579A != field_0x5794) {
mStateMgr.changeState(StateID_SetSpecialItemIn);
} else if (!dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && field_0x5790 <= 0 &&
(field_0x5794 == 9 || field_0x5794 == 10)) {
(field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP)) {
mStateMgr.changeState(StateID_ToUnuse);
} else if (field_0x57A2 != 0) {
mStateMgr.changeState(StateID_SelectIn);
@@ -983,7 +983,7 @@ void dLytMeterItemSelect_c::executeState_SetOut() {
if (mAnm[ITEM_SELECT_ANIM_OUT].isStop2()) {
mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false);
field_0x57B3 = 0;
field_0x579A = 11;
field_0x579A = I_INVALID;
mStateMgr.changeState(StateID_Wait);
}
@@ -996,7 +996,7 @@ 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 == 2 || field_0x5795 == 9 || field_0x5795 == 10) {
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);
@@ -1019,7 +1019,7 @@ void dLytMeterItemSelect_c::executeState_SetNone() {
if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2() && mBtn[0].isSettled()) {
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
field_0x57B3 = 0;
field_0x579A = 11;
field_0x579A = I_INVALID;
mStateMgr.changeState(StateID_Wait);
}
@@ -1035,7 +1035,7 @@ void dLytMeterItemSelect_c::initializeState_SelectOut() {
mAnm[ITEM_SELECT_ANIM_IN].setToStart();
mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true);
field_0x57B3 = 0;
if (field_0x5796 != 11) {
if (field_0x5796 != I_INVALID) {
mBtn[2].setVisible(false, false);
} else {
mBtn[2].setVisible(true, false);
@@ -1089,7 +1089,7 @@ void dLytMeterItemSelect_c::initializeState_ResetIn() {
mAnm[ITEM_SELECT_ANIM_RESET].setToStart();
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true);
mBtn[2].setVisible(true);
setBtnText(field_0x576C);
setBtnText(mLastDoButtonRelatedAction);
}
void dLytMeterItemSelect_c::executeState_ResetIn() {
if (mAnm[ITEM_SELECT_ANIM_RESET].isStop2()) {
@@ -1108,17 +1108,17 @@ void dLytMeterItemSelect_c::initializeState_Reset() {}
void dLytMeterItemSelect_c::executeState_Reset() {
if (field_0x57A2 != 0 || field_0x5754 == 1 ||
(field_0x57A0 != 0 &&
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (field_0x5794 != 10 && field_0x5794 != 9)))) {
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (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 == 2 || field_0x5794 == 9 || field_0x5794 == 10) {
} else if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) {
mStateMgr.changeState(StateID_SetSpecialItemIn);
} else if (LytDoButtonRelated::get0x08() == 0x85 || LytDoButtonRelated::get0x08() == 0x7F ||
LytDoButtonRelated::get0x08() == 0x87 || LytDoButtonRelated::get0x08() == 0x84 || field_0x5794 == 11 ||
} 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 ||
!dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || field_0x5754 == 1) {
mStateMgr.changeState(StateID_ResetOut);
}
@@ -1134,7 +1134,7 @@ void dLytMeterItemSelect_c::initializeState_ResetOut() {
void dLytMeterItemSelect_c::executeState_ResetOut() {
if (field_0x57A2 != 0 || field_0x5754 == 1 ||
(field_0x57A0 != 0 &&
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (field_0x5794 != 10 && field_0x5794 != 9)))) {
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) {
mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2();
mBtn[2].setVisible(false, true);
mLyt.calc();
@@ -1154,7 +1154,7 @@ void dLytMeterItemSelect_c::executeState_ResetOut() {
void dLytMeterItemSelect_c::finalizeState_ResetOut() {}
void dLytMeterItemSelect_c::initializeState_ToUse() {
if (field_0x5796 != 11) {
if (field_0x5796 != I_INVALID) {
field_0x57B4 = 0;
}
field_0x57C4 = 0;
@@ -1162,7 +1162,7 @@ void dLytMeterItemSelect_c::initializeState_ToUse() {
mBtn[0].setVisible(true, false);
if (field_0x57B3 == 0) {
if (field_0x5796 != 11) {
if (field_0x5796 != I_INVALID) {
mBtn[2].setVisible(false, false);
} else {
mBtn[2].setVisible(true, false);
@@ -1173,7 +1173,7 @@ void dLytMeterItemSelect_c::initializeState_ToUse() {
mAnm[ITEM_SELECT_ANIM_RESET].setToStart();
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true);
}
} else if (field_0x5794 != 11 && (field_0x5795 == 9 || field_0x5795 == 10)) {
} 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();
@@ -1184,7 +1184,7 @@ void dLytMeterItemSelect_c::initializeState_ToUse() {
void dLytMeterItemSelect_c::executeState_ToUse() {
if (field_0x57A2 != 0 || field_0x5754 == 1 ||
(field_0x57A0 != 0 &&
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (field_0x5794 != 10 && field_0x5794 != 9)))) {
(dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || (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();
@@ -1243,7 +1243,7 @@ void dLytMeterItemSelect_c::initializeState_ToUnuse() {
mBtn[1].setVisible(false, false);
mBtn[0].setVisible(false, false);
if (field_0x57B3 == 0) {
if (field_0x5794 != 11) {
if (field_0x5794 != I_INVALID) {
mBtn[2].setVisible(false, false);
} else {
mBtn[2].setVisible(true, false);
@@ -1253,18 +1253,18 @@ void dLytMeterItemSelect_c::initializeState_ToUnuse() {
field_0x57A1 = field_0x57A0;
}
void dLytMeterItemSelect_c::executeState_ToUnuse() {
if (field_0x57B3 == 0 && field_0x5794 == 11 && (field_0x579A == 2 || field_0x579A == 9 || field_0x579A == 10)) {
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 && (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) ||
(field_0x5794 != 10 && field_0x5794 != 9)))) {
(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 == 11) {
if (field_0x5794 == I_INVALID) {
mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true);
mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f);
mLyt.calc();
@@ -1287,7 +1287,7 @@ void dLytMeterItemSelect_c::executeState_ToUnuse() {
mBtn[0].setVisible(false);
if (field_0x57B3 == 0) {
if (mBtn[2].isSettled()) {
if (field_0x5794 != 11) {
if (field_0x5794 != I_INVALID) {
mBtn[2].setVisible(false);
} else {
mBtn[2].setVisible(true);
@@ -1309,11 +1309,11 @@ void dLytMeterItemSelect_c::executeState_Unuse() {
mStateMgr.changeState(StateID_FrameOffIn);
} else if (field_0x57A2 != 0 || field_0x5754 == 1 ||
(field_0x57A0 != 0 && (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) ||
(field_0x5794 != 10 && field_0x5794 != 9)))) {
(field_0x5794 != I_HARP && field_0x5794 != I_BOAT_CANNON)))) {
fn_800F0310();
} else if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) || field_0x5754 == 1) {
if (field_0x5794 != 11) {
if (field_0x5794 == 2 || field_0x5794 == 9 || field_0x5794 == 10) {
if (field_0x5794 != I_INVALID) {
if (field_0x5794 == I_SAILCLOTH || field_0x5794 == I_BOAT_CANNON || field_0x5794 == I_HARP) {
mStateMgr.changeState(StateID_SetSpecialItemIn);
return;
}
@@ -1405,9 +1405,9 @@ void dLytMeterItemSelect_c::executeState_DemoMove() {
if (mIsBocoburinLocked[i]) {
mIsBocoburinLocked[i] = false;
field_0x5799 = 11;
field_0x5799 = I_INVALID;
} else {
field_0x5799 = fn_800F0190(i);
field_0x5799 = getInternalBaseItemForSlot(i);
field_0x5794 = field_0x5799;
}
}
@@ -1425,7 +1425,7 @@ void dLytMeterItemSelect_c::executeState_DemoMove() {
void dLytMeterItemSelect_c::finalizeState_DemoMove() {}
void dLytMeterItemSelect_c::initializeState_DemoOut0() {
if (field_0x5799 != 11) {
if (field_0x5799 != I_INVALID) {
mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true);
mAnm[ITEM_SELECT_ANIM_DECIDE].setFrame(0.0f);
} else {
@@ -1435,7 +1435,7 @@ void dLytMeterItemSelect_c::initializeState_DemoOut0() {
}
}
void dLytMeterItemSelect_c::executeState_DemoOut0() {
if (field_0x5799 != 11) {
if (field_0x5799 != I_INVALID) {
if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEndReached()) {
if (!mBtn[1].getShouldBeVisible()) {
mBtn[1].setVisible(true, true);
@@ -1471,7 +1471,7 @@ void dLytMeterItemSelect_c::executeState_DemoOut1() {
mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false);
field_0x57B3 = 1;
field_0x5754 = 4;
field_0x5799 = 11;
field_0x5799 = I_INVALID;
mStateMgr.changeState(StateID_Wait);
}
@@ -1493,7 +1493,7 @@ void dLytMeterItemSelect_c::initializeState_FrameOffIn() {
}
if (field_0x57B3 == 0) {
if (field_0x5794 == 11) {
if (field_0x5794 == I_INVALID) {
mBtn[2].setVisible(false, false);
} else if (field_0x57B4 == 0) {
field_0x57C2 = 1;
@@ -1501,7 +1501,7 @@ void dLytMeterItemSelect_c::initializeState_FrameOffIn() {
}
}
if (field_0x57B3 == 0 && field_0x5794 != 11) {
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);
@@ -1557,7 +1557,7 @@ void dLytMeterItemSelect_c::initializeState_FrameOffOut() {
mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(true);
}
if (field_0x57B3 == 0 && field_0x5794 != 11) {
if (field_0x57B3 == 0 && field_0x5794 != I_INVALID) {
if (field_0x57A0 != 0) {
field_0x57B3 = 1;
mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(true);
@@ -1584,7 +1584,7 @@ void dLytMeterItemSelect_c::initializeState_FrameOffOut() {
mBtn[0].setVisible(true, false);
mBtn[1].setVisible(true, false);
mBtn[3].setVisible(true);
if (field_0x5794 != 11) {
if (field_0x5794 != I_INVALID) {
mBtn[2].setVisible(false, false);
} else {
mBtn[2].setVisible(true, false);
@@ -1626,7 +1626,7 @@ void dLytMeterItemSelect_c::executeState_FrameOffOut() {
mBtn[0].setVisible(true);
mBtn[1].setVisible(true);
mBtn[3].setVisible(true);
if (field_0x5794 != 11) {
if (field_0x5794 != I_INVALID) {
mBtn[2].setVisible(false);
} else {
mBtn[2].setVisible(true);
@@ -1719,18 +1719,18 @@ bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) {
mItemIcons[i].setSize(true);
}
field_0x5794 = 11;
field_0x5795 = 11;
field_0x5796 = 11;
field_0x5797 = 11;
field_0x5798 = 11;
field_0x5799 = 11;
field_0x579A = 11;
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;
field_0x579C = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(1));
field_0x579D = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(5));
field_0x579E = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(4));
field_0x579F = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(7));
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;
@@ -1769,8 +1769,8 @@ bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) {
field_0x57A0 = 0;
field_0x57A1 = 0;
field_0x5778 = 0.0f;
field_0x577C = 0.0f;
mArrowRotation = 0.0f;
mArrowLength = 0.0f;
field_0x5780 = 0.0f;
mpOwnerPane = nullptr;
@@ -1780,10 +1780,10 @@ bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) {
field_0x57BB = 0;
field_0x57BC = 0;
field_0x5774 = 0;
field_0x576C = 0x98;
mLastDoButtonRelatedAction = LytDoButtonRelated::DO_NONE;
field_0x5770 = 5;
setBtnText(0x98);
setBtnText(LytDoButtonRelated::DO_NONE);
mStateMgr.changeState(StateID_InitWait);
@@ -1817,7 +1817,7 @@ bool dLytMeterItemSelect_c::remove() {
bool dLytMeterItemSelect_c::execute() {
if (StoryflagManager::sInstance->getCounterOrFlag(569) != 0) {
if (field_0x57A2 != 0 || (field_0x57A0 != 0 && field_0x5794 != 2 && field_0x5794 != 9 && field_0x5794 != 10)) {
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 {
@@ -1848,8 +1848,8 @@ bool dLytMeterItemSelect_c::execute() {
mAnm[ITEM_SELECT_ANIM_DECIDE].setToEnd2();
}
if (field_0x5798 != 11) {
if (field_0x5794 != 11) {
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();
@@ -1858,7 +1858,7 @@ bool dLytMeterItemSelect_c::execute() {
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true);
mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2();
}
} else if (field_0x5794 != 11) {
} 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();
@@ -1892,13 +1892,13 @@ bool dLytMeterItemSelect_c::execute() {
field_0x57B3 = 0;
if (field_0x5798 != 11) {
if (field_0x5794 != 11) {
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 != 11) {
} else if (field_0x5794 != I_INVALID) {
mBtn[2].setVisible(false, true);
} else {
mBtn[2].setVisible(true, true);
@@ -1940,7 +1940,7 @@ bool dLytMeterItemSelect_c::execute() {
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
field_0x57B3 = 0;
field_0x579A = 11;
field_0x579A = I_INVALID;
mStateMgr.changeState(StateID_Wait);
}
if (*mStateMgr.getStateID() == StateID_SetSpecialItemIn) {
@@ -1967,7 +1967,7 @@ bool dLytMeterItemSelect_c::execute() {
mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
mpPanes[ITEM_SELECT_PANE_SET_BTN]->SetVisible(false);
field_0x57B3 = 0;
field_0x579A = 11;
field_0x579A = I_INVALID;
mStateMgr.changeState(StateID_Wait);
}
}
@@ -2003,7 +2003,7 @@ bool dLytMeterItemSelect_c::execute() {
if (field_0x5794 != field_0x5796) {
field_0x5796 = field_0x5794;
a = true;
if (field_0x5794 != 11) {
if (field_0x5794 != I_INVALID) {
field_0x5797 = field_0x5794;
field_0x57B4 = 0;
} else {
@@ -2011,26 +2011,28 @@ bool dLytMeterItemSelect_c::execute() {
}
setBtnItem(field_0x5796);
b = true;
} else if (field_0x579C != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(1))) {
field_0x579C = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(1));
// 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 (field_0x579D != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(5))) {
field_0x579D = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(5));
} else if (mStoredSlingshotVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_SLINGSHOT))) {
mStoredSlingshotVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_SLINGSHOT));
setBtnItem(field_0x5796);
b = true;
} else if (field_0x579E != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(4))) {
field_0x579E = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(4));
} else if (mStoredBeetleVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BEETLE))) {
mStoredBeetleVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BEETLE));
setBtnItem(field_0x5796);
b = true;
} else if (field_0x579F != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(7))) {
field_0x579F = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(7));
} else if (mStoredBugNetVariant != baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BUG_NET))) {
mStoredBugNetVariant = baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(I_BUG_NET));
setBtnItem(field_0x5796);
b = true;
}
if (field_0x5797 != 11) {
realizeBtnNumberForLytIndex(baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(field_0x5797)), a);
if (field_0x5797 != I_INVALID) {
realizeBtnNumberForLytIndex(baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(field_0x5797)), a);
}
if (field_0x57B6) {
@@ -2045,11 +2047,11 @@ bool dLytMeterItemSelect_c::execute() {
if (!mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) {
mAnm[ITEM_SELECT_ANIM_FULL].setFrame(0.0f);
mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(true);
if (field_0x5797 == 0) {
if (field_0x5797 == I_BOMB_BAG) {
SmallSoundManager::GetInstance()->playSound(SE_S_BM_MAX);
} else if (field_0x5797 == 1) {
} else if (field_0x5797 == I_BOW) {
SmallSoundManager::GetInstance()->playSound(SE_S_AW_MAX);
} else if (field_0x5797 == 5) {
} else if (field_0x5797 == I_SLINGSHOT) {
SmallSoundManager::GetInstance()->playSound(SE_S_PC_MAX);
}
}
@@ -2077,7 +2079,7 @@ bool dLytMeterItemSelect_c::execute() {
}
bool b2 = false;
if (field_0x57B9 != 0 && dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && field_0x576C == 0x85) {
if (field_0x57B9 != 0 && dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && mLastDoButtonRelatedAction == 0x85) {
if (field_0x57BA == 0) {
mAnm[ITEM_SELECT_ANIM_CALL].setToEnd();
mAnm[ITEM_SELECT_ANIM_CALL].setRate(1.0f);
@@ -2153,22 +2155,25 @@ bool dLytMeterItemSelect_c::execute() {
mLyt.getLayout()->Animate(0);
}
// Rotate the arrow
mVec3_c t1(0.0f, 0.0f, 0.0f);
t1.z = field_0x5778;
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 = -field_0x5778;
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 (field_0x577C < 0.0f) {
field_0x577C = 0.0f;
if (mArrowLength < 0.0f) {
mArrowLength = 0.0f;
}
if (field_0x577C > 1.0f) {
field_0x577C = 1.0f;
if (mArrowLength > 1.0f) {
mArrowLength = 1.0f;
}
mAnm[ITEM_SELECT_ANIM_ARROW].setFrame(frame * field_0x577C);
mAnm[ITEM_SELECT_ANIM_ARROW].setFrame(frame * mArrowLength);
mAnm[ITEM_SELECT_ANIM_ARROW].setAnimEnable(true);
if (mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].isEnabled()) {
@@ -2197,18 +2202,18 @@ bool dLytMeterItemSelect_c::execute() {
mSubpanes[i].mpLytPane->execute();
}
if (field_0x5794 == 2) {
if (field_0x5794 == I_SAILCLOTH) {
if (LytDoButtonRelated::GetInstance() != nullptr) {
LytDoButtonRelated::GetInstance()->set0x08(0x91);
LytDoButtonRelated::GetInstance()->set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_SAILCLOTH);
}
} else if (field_0x5794 == 9) {
} else if (field_0x5794 == I_BOAT_CANNON) {
if (field_0x57B3 != 0) {
if (LytDoButtonRelated::GetInstance() != nullptr) {
LytDoButtonRelated::GetInstance()->set0x08(0x90);
LytDoButtonRelated::GetInstance()->set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_STOW_CANNON);
}
} else {
if (LytDoButtonRelated::GetInstance() != nullptr) {
LytDoButtonRelated::GetInstance()->set0x08(0x8F);
LytDoButtonRelated::GetInstance()->set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_READY_CANNON);
}
}
}
@@ -2216,14 +2221,14 @@ bool dLytMeterItemSelect_c::execute() {
if (field_0x578C <= 0 && *mStateMgr.getStateID() != StateID_SetIn &&
*mStateMgr.getStateID() != StateID_SetOut && *mStateMgr.getStateID() != StateID_ToUnuse &&
*mStateMgr.getStateID() != StateID_Unuse) {
if (field_0x576C != LytDoButtonRelated::get0x08()) {
field_0x576C = LytDoButtonRelated::get0x08();
setBtnText(field_0x576C);
if (mLastDoButtonRelatedAction != LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B)) {
mLastDoButtonRelatedAction = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B);
setBtnText(mLastDoButtonRelatedAction);
}
} else {
if (field_0x576C != 0x98) {
field_0x576C = 0x98;
setBtnText(field_0x576C);
if (mLastDoButtonRelatedAction != LytDoButtonRelated::DO_NONE) {
mLastDoButtonRelatedAction = LytDoButtonRelated::DO_NONE;
setBtnText(mLastDoButtonRelatedAction);
}
if (field_0x578C > 0) {
@@ -2232,7 +2237,7 @@ bool dLytMeterItemSelect_c::execute() {
}
if (LytDoButtonRelated::GetInstance() != nullptr) {
LytDoButtonRelated::GetInstance()->set0x08(0x98);
LytDoButtonRelated::GetInstance()->set(LytDoButtonRelated::DO_BUTTON_B, LytDoButtonRelated::DO_NONE);
}
}
@@ -2262,7 +2267,7 @@ void dLytMeterItemSelect_c::fn_800EF580() {
}
void dLytMeterItemSelect_c::fn_800EF6B0(u8 arg) {
if (field_0x5794 != 2 && field_0x5794 != 9 && field_0x5794 != 10) {
if (field_0x5794 != I_SAILCLOTH && field_0x5794 != I_BOAT_CANNON && field_0x5794 != I_HARP) {
field_0x5798 = field_0x5794;
}
@@ -2283,7 +2288,7 @@ void dLytMeterItemSelect_c::fn_800EF710(u8 arg) {
field_0x57A0 = arg;
}
void dLytMeterItemSelect_c::fn_800EF720(s32 arg) {
void dLytMeterItemSelect_c::fn_800EF720(InternalItem_e arg) {
if (field_0x57B5 == 0 || *mStateMgr.getStateID() != StateID_InitWait) {
field_0x57B5 = 1;
field_0x574C = arg;
@@ -2379,7 +2384,7 @@ void dLytMeterItemSelect_c::realizeWheelNumberForLytIndex(s32 iconIdx, s32 lytIt
break;
}
u8 color = 0;
s32 color = 0;
if (num == 0) {
color = 1;
} else if (num == max) {
@@ -2502,16 +2507,18 @@ 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];
}
static s32 sUnkArray2[] = {1, 0, 4, 7, 5, 3, 8, 6};
u8 dLytMeterItemSelect_c::fn_800F0190(s32 idx) const {
return sUnkArray2[idx];
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);
@@ -2536,8 +2543,8 @@ bool dLytMeterItemSelect_c::fn_800F0220(s32 arg) {
field_0x5758 = arg;
field_0x575C = 0;
field_0x5778 = 0.0f;
field_0x577C = 0.0f;
mArrowRotation = 0.0f;
mArrowLength = 0.0f;
mpPanes[4]->SetVisible(false);
mpPanes[5]->SetVisible(false);
mpPanes[3]->SetVisible(false);
@@ -2593,7 +2600,7 @@ static const s32 sActIds[] = {
void dLytMeterItemSelect_c::setBtnText(s32 unkId) {
SizedString<16> id;
if (unkId < 0x98) {
if (unkId < LytDoButtonRelated::DO_NONE) {
mpTextBoxes[8]->SetVisible(true);
mpTextBoxes[9]->SetVisible(true);
mpWindows[0]->SetVisible(true);
@@ -2627,15 +2634,15 @@ void dLytMeterItemSelect_c::setBtnText(s32 unkId) {
}
}
void dLytMeterItemSelect_c::setBtnItem(s32 unkId) {
if (unkId == 2 || unkId == 9 || unkId == 10) {
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 (unkId != 11) {
mItemIcons[8].setItem(baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforUnkId(unkId)));
if (item != I_INVALID) {
mItemIcons[8].setItem(baseItemLytIndexToCurrentVariant(getBaseItemLytIndexforInternalId(item)));
}
}
@@ -2707,17 +2714,17 @@ ITEM_ID dLytMeterItemSelect_c::baseItemIdToCurrentVariant(ITEM_ID baseItem) cons
return baseItem;
}
static const s32 sUnkIdItemLytIndex[] = {
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::getBaseItemLytIndexforUnkId(s32 idx) const {
s32 dLytMeterItemSelect_c::getBaseItemLytIndexforInternalId(s32 idx) const {
if (idx < 11) {
return sUnkIdItemLytIndex[idx];
} else if (field_0x5797 != 11) {
return sUnkIdItemLytIndex[field_0x5797];
return sInternalItemToLytIndex[idx];
} else if (field_0x5797 != I_INVALID) {
return sInternalItemToLytIndex[field_0x5797];
}
return LYT_CMN_ItemNone;