summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-04-09 01:53:57 +0200
committerrobojumper <robojumper@gmail.com>2025-04-21 21:51:01 +0200
commit7ac3f3cd036e97e725cc2e2b599152f3061004f0 (patch)
tree56ad3d183aa01c2a5e1b6f353f39024e23eb2d2d /src
parent7fa483e8509e80725a4a6599eaf8c9e2308cfc19 (diff)
d_lyt_meter stuff
Diffstat (limited to 'src')
-rw-r--r--src/d/lyt/meter/d_lyt_meter_a_btn.cpp12
-rw-r--r--src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp394
-rw-r--r--src/d/lyt/meter/d_lyt_meter_item_select.cpp809
3 files changed, 1176 insertions, 39 deletions
diff --git a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp
index 9383d1c8..aec3ca26 100644
--- a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp
@@ -1,7 +1,7 @@
-#include "d/lyt/d_textbox.h"
-#include "d/lyt/d_window.h"
#include "d/lyt/meter/d_lyt_meter_a_btn.h"
+#include "d/lyt/d_textbox.h"
+#include "d/lyt/d_window.h"
STATE_DEFINE(dLytMeterABtn_c, InvisibleWait);
STATE_DEFINE(dLytMeterABtn_c, In);
@@ -105,9 +105,11 @@ bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) {
mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]);
}
- static const char *sWindow = "W_bg_P_00";
- mpWindow = mLyt.getWindow(sWindow);
- mpSizeBox = mLyt.getSizeBoxInWindow(sWindow);
+ static const char *sWindows[] = {"W_bg_P_00"};
+ for (int i = 0; i < 1; i++) {
+ mpWindow[i] = mLyt.getWindow(sWindows[i]);
+ mpSizeBox[i] = mLyt.getSizeBoxInWindow(sWindows[i]);
+ }
field_0x1C4 = 0x5F;
field_0x1B8 = 0x5F;
diff --git a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
index 113af247..4fd6c49b 100644
--- a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
@@ -1,5 +1,9 @@
#include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h"
+#include "common.h"
+#include "d/a/d_a_player.h"
+#include "d/lyt/d_lyt_meter_configuration.h"
+
STATE_DEFINE(dLytMeterGanbariGauge_c, InvisibleWait);
STATE_DEFINE(dLytMeterGanbariGauge_c, In);
STATE_DEFINE(dLytMeterGanbariGauge_c, Wait);
@@ -14,80 +18,402 @@ STATE_DEFINE(dLytMeterGanbariGauge_c, ToMin);
STATE_DEFINE(dLytMeterGanbariGauge_c, Recovery);
STATE_DEFINE(dLytMeterGanbariGauge_c, ToMax);
-void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() {}
+static const d2d::LytBrlanMapping brlanMap[] = {
+ { "guts_00_in.brlan", "G_inOut_00"},
+ { "guts_00_angle.brlan", "G_angle_00"},
+ {"guts_00_ganbariUpDown.brlan", "G_ganbari_00"},
+ {"guts_00_ganbariUpDown.brlan", "G_ganbari_01"},
+ { "guts_00_ganbariUse.brlan", "G_ganbari_01"},
+ { "guts_00_ganbariLoop.brlan", "G_ganbariLoop_00"},
+ { "guts_00_drink.brlan", "G_drink_00"},
+ { "guts_00_mLoop.brlan", "G_mLoop_00"},
+ { "guts_00_mCaution.brlan", "G_mCaution_00"},
+ { "guts_00_caution.brlan", "G_caution_00"},
+ { "guts_00_toMin.brlan", "G_minMax_00"},
+ { "guts_00_toMinLoop.brlan", "G_toMinLoop"},
+ { "guts_00_toMax.brlan", "G_minMax_00"},
+ { "guts_00_color.brlan", "G_color_00"},
+ { "guts_00_out.brlan", "G_inOut_00"},
+ { "guts_00_cameraOut.brlan", "G_inOut_00"},
+};
+
+#define GANBARI_ANIM_IN 0
+#define GANBARI_ANIM_ANGLE 1
+#define GANBARI_ANIM_UPDOWN_0 2
+#define GANBARI_ANIM_UPDOWN_1 3
+#define GANBARI_ANIM_USE 4
+#define GANBARI_ANIM_LOOP 5
+#define GANBARI_ANIM_DRINK 6
+#define GANBARI_ANIM_M_LOOP 7
+#define GANBARI_ANIM_M_CAUTION 8
+#define GANBARI_ANIM_CAUTION 9
+#define GANBARI_ANIM_TO_MIN 10
+#define GANBARI_ANIM_TO_MIN_LOOP 11
+#define GANBARI_ANIM_TO_MAX 12
+#define GANBARI_ANIM_COLOR 13
+#define GANBARI_ANIM_OUT 14
+#define GANBARI_ANIM_CAMERA_OUT 15
+
+#define GANBARI_NUM_ANIMS 16
+
+void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() {
+ mAnm[GANBARI_ANIM_IN].setToStart();
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_OUT].setAnimEnable(false);
+}
void dLytMeterGanbariGauge_c::executeState_InvisibleWait() {}
void dLytMeterGanbariGauge_c::finalizeState_InvisibleWait() {}
-void dLytMeterGanbariGauge_c::initializeState_In() {}
-void dLytMeterGanbariGauge_c::executeState_In() {}
-void dLytMeterGanbariGauge_c::finalizeState_In() {}
+void dLytMeterGanbariGauge_c::initializeState_In() {
+ if (dAcPy_c::GetLink()->getRidingActorType() == 3) {
+ field_0x554 = 3.0f;
+ } else if (swimmingRelated()) {
+ field_0x554 = 1.0f;
+ } else {
+ field_0x554 = 0.0f;
+ }
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_IN].setFrame(0.0f);
+}
+#pragma pool_data off
+void dLytMeterGanbariGauge_c::executeState_In() {
+ if (mAnm[GANBARI_ANIM_IN].getFrame() == 1.0f) {
+ realizeAnimState();
+ if (*mStateMgrWheel.getStateID() == StateID_Caution || *mStateMgrWheel.getStateID() == StateID_ToMin ||
+ *mStateMgrWheel.getStateID() == StateID_Recovery || *mStateMgrWheel.getStateID() == StateID_ToMax) {
+ if (field_0x518 > 0.95f) {
+ mStateMgrWheel.changeState(StateID_Normal);
+ } else {
+ mStateMgrWheel.changeState(*mStateMgrWheel.getStateID());
+ }
+ }
+ }
+
+ if (mAnm[GANBARI_ANIM_IN].isEndReached()) {
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(false);
+ mStateMgrMain.changeState(StateID_Wait);
+ }
+}
+#pragma pool_data on
+void dLytMeterGanbariGauge_c::finalizeState_In() {
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(false);
+}
void dLytMeterGanbariGauge_c::initializeState_Wait() {}
void dLytMeterGanbariGauge_c::executeState_Wait() {}
void dLytMeterGanbariGauge_c::finalizeState_Wait() {}
-void dLytMeterGanbariGauge_c::initializeState_OutWait() {}
-void dLytMeterGanbariGauge_c::executeState_OutWait() {}
+void dLytMeterGanbariGauge_c::initializeState_OutWait() {
+ mOutWaitTimer = 0x1E;
+}
+void dLytMeterGanbariGauge_c::executeState_OutWait() {
+ if (--mOutWaitTimer <= 0) {
+ mStateMgrMain.changeState(StateID_Out);
+ } else if (field_0x518 < 0.9999f) {
+ mStateMgrMain.changeState(StateID_Wait);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_OutWait() {}
-void dLytMeterGanbariGauge_c::initializeState_Out() {}
-void dLytMeterGanbariGauge_c::executeState_Out() {}
-void dLytMeterGanbariGauge_c::finalizeState_Out() {}
+void dLytMeterGanbariGauge_c::initializeState_Out() {
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_OUT].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_OUT].setFrame(0.0f);
+}
+void dLytMeterGanbariGauge_c::executeState_Out() {
+ if (mAnm[GANBARI_ANIM_OUT].isEndReached()) {
+ mLyt.calc();
+ mStateMgrMain.changeState(StateID_InvisibleWait);
+ }
+}
+void dLytMeterGanbariGauge_c::finalizeState_Out() {
+ mAnm[GANBARI_ANIM_OUT].setAnimEnable(false);
+}
-void dLytMeterGanbariGauge_c::initializeState_CameraOut() {}
-void dLytMeterGanbariGauge_c::executeState_CameraOut() {}
-void dLytMeterGanbariGauge_c::finalizeState_CameraOut() {}
+void dLytMeterGanbariGauge_c::initializeState_CameraOut() {
+ mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_CAMERA_OUT].setFrame(0.0f);
+}
+void dLytMeterGanbariGauge_c::executeState_CameraOut() {
+ if (mAnm[GANBARI_ANIM_CAMERA_OUT].isEndReached()) {
+ mLyt.calc();
+ mStateMgrMain.changeState(StateID_InvisibleWait);
+ }
+}
+void dLytMeterGanbariGauge_c::finalizeState_CameraOut() {
+ mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(false);
+}
void dLytMeterGanbariGauge_c::initializeState_Full() {}
-void dLytMeterGanbariGauge_c::executeState_Full() {}
+void dLytMeterGanbariGauge_c::executeState_Full() {
+ if (field_0x518 < 0.9999f) {
+ mStateMgrWheel.changeState(StateID_Normal);
+ } else if (dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20) || field_0x558 != 0) {
+ mStateMgrWheel.changeState(StateID_FullGutsUse);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_Full() {}
void dLytMeterGanbariGauge_c::initializeState_FullGutsUse() {}
-void dLytMeterGanbariGauge_c::executeState_FullGutsUse() {}
+void dLytMeterGanbariGauge_c::executeState_FullGutsUse() {
+ if (field_0x518 < 0.9999f) {
+ mStateMgrWheel.changeState(StateID_Normal);
+ } else if (!dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20) && field_0x558 == 0) {
+ mStateMgrWheel.changeState(StateID_Full);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_FullGutsUse() {}
void dLytMeterGanbariGauge_c::initializeState_Normal() {}
-void dLytMeterGanbariGauge_c::executeState_Normal() {}
+void dLytMeterGanbariGauge_c::executeState_Normal() {
+ if (fn_801034B0(field_0x518)) {
+ mAnm[GANBARI_ANIM_CAUTION].setRate(1.0f);
+ mStateMgrWheel.changeState(StateID_Caution);
+ } else if (fn_80103520(field_0x518)) {
+ mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f);
+ mStateMgrWheel.changeState(StateID_Caution);
+ } else if (field_0x518 >= 0.9999f) {
+ mStateMgrWheel.changeState(StateID_ToMax);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_Normal() {}
-void dLytMeterGanbariGauge_c::initializeState_Caution() {}
-void dLytMeterGanbariGauge_c::executeState_Caution() {}
-void dLytMeterGanbariGauge_c::finalizeState_Caution() {}
+void dLytMeterGanbariGauge_c::initializeState_Caution() {
+ mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_CAUTION].setFrame(0.0f);
+}
+void dLytMeterGanbariGauge_c::executeState_Caution() {
+ if (field_0x518 <= 0.0001f) {
+ mStateMgrWheel.changeState(StateID_ToMin);
+ } else if (fn_80103520(field_0x518)) {
+ mAnm[GANBARI_ANIM_CAUTION].setRate(3.0f);
+ } else if (fn_801034B0(field_0x518)) {
+ mAnm[GANBARI_ANIM_CAUTION].setRate(1.0f);
+ } else {
+ mStateMgrWheel.changeState(StateID_Normal);
+ }
+}
+void dLytMeterGanbariGauge_c::finalizeState_Caution() {
+ mAnm[GANBARI_ANIM_CAUTION].setFrame(0.0f);
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_CAUTION].setAnimEnable(false);
+}
+
+void dLytMeterGanbariGauge_c::initializeState_ToMin() {
+ mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f);
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false);
-void dLytMeterGanbariGauge_c::initializeState_ToMin() {}
-void dLytMeterGanbariGauge_c::executeState_ToMin() {}
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MIN].setToStart();
+}
+void dLytMeterGanbariGauge_c::executeState_ToMin() {
+ if (field_0x518 >= 0.9999f) {
+ mAnm[GANBARI_ANIM_TO_MIN].setToStart();
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false);
+ mStateMgrWheel.changeState(StateID_ToMax);
+ } else if (mAnm[GANBARI_ANIM_TO_MIN].isEndReached()) {
+ mStateMgrWheel.changeState(StateID_Recovery);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_ToMin() {}
-void dLytMeterGanbariGauge_c::initializeState_Recovery() {}
-void dLytMeterGanbariGauge_c::executeState_Recovery() {}
+void dLytMeterGanbariGauge_c::initializeState_Recovery() {
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MIN].setToEnd2();
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false);
+
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f);
+
+ if (dAcPy_c::GetLink()->getRidingActorType() == 3) {
+ field_0x554 = 4.0f;
+ } else if (swimmingRelated()) {
+ field_0x554 = 1.0f;
+ } else {
+ field_0x554 = 2.0f;
+ }
+}
+void dLytMeterGanbariGauge_c::executeState_Recovery() {
+ if (swimmingRelated()) {
+ if (field_0x518 >= 0.0001f) {
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f);
+ mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MAX].setToEnd2();
+ mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_UPDOWN_1].setFrame(0.0f);
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_UPDOWN_1].setAnimEnable(false);
+ mStateMgrWheel.changeState(StateID_Normal);
+ }
+ } else if (field_0x518 >= 0.9999f) {
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f);
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(false);
+ mStateMgrWheel.changeState(StateID_ToMax);
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_Recovery() {}
-void dLytMeterGanbariGauge_c::initializeState_ToMax() {}
-void dLytMeterGanbariGauge_c::executeState_ToMax() {}
+void dLytMeterGanbariGauge_c::initializeState_ToMax() {
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MIN].setToStart();
+ mLyt.calc();
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_TO_MAX].setAnimEnable(true);
+ mAnm[GANBARI_ANIM_TO_MAX].setToStart();
+ if (swimmingRelated()) {
+ field_0x554 = 1.0f;
+ }
+}
+void dLytMeterGanbariGauge_c::executeState_ToMax() {
+ if (mAnm[GANBARI_ANIM_TO_MAX].isStop2()) {
+ realizeAnimState();
+ if (dAcPy_c::GetLink()->checkSwordAndMoreStates(0x200 | 0x40 | 0x20)) {
+ mStateMgrWheel.changeState(StateID_FullGutsUse);
+ } else {
+ mStateMgrWheel.changeState(StateID_Full);
+ }
+ }
+}
void dLytMeterGanbariGauge_c::finalizeState_ToMax() {}
bool dLytMeterGanbariGauge_c::build(d2d::ResAccIf_c *resAcc) {
- // TODO
+ mLyt.setResAcc(resAcc);
+ mLyt.build("guts_00.brlyt", nullptr);
+
+ for (int i = 0; i < GANBARI_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(true);
+ }
+
+ mAnm[GANBARI_ANIM_USE].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_LOOP].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_M_LOOP].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_M_CAUTION].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_OUT].setAnimEnable(false);
+ mAnm[GANBARI_ANIM_CAMERA_OUT].setAnimEnable(false);
+
+ field_0x518 = 1.0f;
+ field_0x51C = 1.0f;
+ field_0x54C = 1.0f;
+ field_0x550 = 1.0f;
+
+ field_0x548 = dLytMeterConfiguration_c::sInstance->field_0x1C8;
+
+ field_0x558 = 0;
+ field_0x559 = 0;
+ field_0x55B = 0;
+ mpPane = nullptr;
+ field_0x55A = 0;
+
+ field_0x554 = 0.0f;
+
+ mOutWaitTimer = 0x1E;
+ field_0x540 = 0;
+ field_0x534 = 0;
+
+ if (dLytMeterConfiguration_c::sInstance->field_0x13C != 0) {
+ field_0x534 = 0;
+ } else {
+ field_0x534 = 1;
+ }
+
+ if (field_0x534 == 0) {
+ mAnm[GANBARI_ANIM_IN].setToStart();
+ } else {
+ mAnm[GANBARI_ANIM_IN].setToEnd2();
+ }
+
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(true);
+ realizeAnimState();
+ mAnm[GANBARI_ANIM_IN].setAnimEnable(false);
+
+ field_0x524.copyFrom(mLyt.getLayout()->GetRootPane()->GetTranslate());
+ field_0x530 = 0;
+ field_0x544 = 0;
+
+ if (field_0x534 == 0) {
+ mStateMgrMain.changeState(StateID_InvisibleWait);
+ } else {
+ mStateMgrMain.changeState(StateID_Wait);
+ }
+
+ mStateMgrWheel.changeState(StateID_Full);
+
return true;
}
bool dLytMeterGanbariGauge_c::remove() {
+ for (int i = 0; i < GANBARI_NUM_ANIMS; i++) {
+ mAnm[i].remove();
+ }
return true;
}
bool dLytMeterGanbariGauge_c::execute() {
- // TODO
+ if (mpPane == nullptr) {
+ return true;
+ }
+
+ if (!mpPane->IsVisible()) {
+ if (!(*mStateMgrMain.getStateID() != StateID_InvisibleWait)) {
+ return true;
+ }
+ mStateMgrMain.changeState(StateID_InvisibleWait);
+ return true;
+ }
+
+ // TODO I really don't like the look of the rest of this function. Depends on a bunch
+ // of player, camera and filemanager stuff with a ton of inlines...
+
return true;
}
-const char *dLytMeterGanbariGauge_c::getName() const {
- return mLyt.getName();
-}
+void dLytMeterGanbariGauge_c::realizeAnimState() {
+ mAnm[GANBARI_ANIM_TO_MIN].setToStart();
+ mAnm[GANBARI_ANIM_TO_MIN].setAnimEnable(true);
-d2d::LytBase_c *dLytMeterGanbariGauge_c::getLyt() {
- return &mLyt;
-}
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setFrame(0.0f);
+ mAnm[GANBARI_ANIM_TO_MIN_LOOP].setAnimEnable(true);
+
+ 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);
-nw4r::lyt::Pane *dLytMeterGanbariGauge_c::getPane() {
- return mLyt.getLayout()->GetRootPane();
+ if (dAcPy_c::GetLink() != nullptr) {
+ if (dAcPy_c::GetLink()->getRidingActorType() == 3) {
+ field_0x554 = 3.0f;
+ } else if (swimmingRelated()) {
+ field_0x554 = 1.0f;
+ } else {
+ field_0x554 = 0.0f;
+ }
+ }
}
diff --git a/src/d/lyt/meter/d_lyt_meter_item_select.cpp b/src/d/lyt/meter/d_lyt_meter_item_select.cpp
index 4f57a478..d3346605 100644
--- a/src/d/lyt/meter/d_lyt_meter_item_select.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_item_select.cpp
@@ -1,5 +1,200 @@
#include "d/lyt/meter/d_lyt_meter_item_select.h"
+#include "common.h"
+#include "d/flag/storyflag_manager.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_lyt_common_icon_item.h"
+#include "d/lyt/d_lyt_do_button.h"
+#include "d/lyt/d_lyt_unknowns.h"
+#include "d/lyt/meter/d_lyt_meter.h"
+#include "m/m_vec.h"
+#include "nw4r/lyt/lyt_group.h"
+#include "nw4r/math/math_types.h"
+#include "toBeSorted/small_sound_mgr.h"
+
+STATE_DEFINE(dLytMeterItemSelectIcon_c, Wait);
+STATE_DEFINE(dLytMeterItemSelectIcon_c, On);
+STATE_DEFINE(dLytMeterItemSelectIcon_c, Select);
+STATE_DEFINE(dLytMeterItemSelectIcon_c, Off);
+
+STATE_DEFINE(dLytMeterItemSelectBlink_c, Wait);
+STATE_DEFINE(dLytMeterItemSelectBlink_c, On);
+STATE_DEFINE(dLytMeterItemSelectBlink_c, Select);
+STATE_DEFINE(dLytMeterItemSelectBlink_c, Off);
+
+STATE_DEFINE(dLytMeterItemSelectText_c, Wait);
+STATE_DEFINE(dLytMeterItemSelectText_c, On);
+STATE_DEFINE(dLytMeterItemSelectText_c, Select);
+STATE_DEFINE(dLytMeterItemSelectText_c, Off);
+
+STATE_DEFINE(dLytMeterItemSelectBtn_c, Invisible);
+STATE_DEFINE(dLytMeterItemSelectBtn_c, On);
+STATE_DEFINE(dLytMeterItemSelectBtn_c, Visible);
+STATE_DEFINE(dLytMeterItemSelectBtn_c, Off);
+
+STATE_DEFINE(dLytMeterItemSelect_c, InitWait);
+STATE_DEFINE(dLytMeterItemSelect_c, Wait);
+STATE_DEFINE(dLytMeterItemSelect_c, SelectIn);
+STATE_DEFINE(dLytMeterItemSelect_c, Select);
+STATE_DEFINE(dLytMeterItemSelect_c, SetIn);
+STATE_DEFINE(dLytMeterItemSelect_c, SetSpecialItemIn);
+STATE_DEFINE(dLytMeterItemSelect_c, Set);
+STATE_DEFINE(dLytMeterItemSelect_c, SetOut);
+STATE_DEFINE(dLytMeterItemSelect_c, SetNone);
+STATE_DEFINE(dLytMeterItemSelect_c, SelectOut);
+STATE_DEFINE(dLytMeterItemSelect_c, ResetIn);
+STATE_DEFINE(dLytMeterItemSelect_c, Reset);
+STATE_DEFINE(dLytMeterItemSelect_c, ResetOut);
+STATE_DEFINE(dLytMeterItemSelect_c, ToUse);
+STATE_DEFINE(dLytMeterItemSelect_c, ToUnuse);
+STATE_DEFINE(dLytMeterItemSelect_c, Unuse);
+STATE_DEFINE(dLytMeterItemSelect_c, DemoMove);
+STATE_DEFINE(dLytMeterItemSelect_c, DemoOut0);
+STATE_DEFINE(dLytMeterItemSelect_c, DemoOut1);
+STATE_DEFINE(dLytMeterItemSelect_c, FrameOffIn);
+STATE_DEFINE(dLytMeterItemSelect_c, FrameOffMove);
+STATE_DEFINE(dLytMeterItemSelect_c, FrameOffOut);
+
+void dLytMeterItemSelectIcon_c::initializeState_Wait() {}
+void dLytMeterItemSelectIcon_c::executeState_Wait() {}
+void dLytMeterItemSelectIcon_c::finalizeState_Wait() {}
+
+void dLytMeterItemSelectIcon_c::initializeState_On() {}
+void dLytMeterItemSelectIcon_c::executeState_On() {}
+void dLytMeterItemSelectIcon_c::finalizeState_On() {}
+
+void dLytMeterItemSelectIcon_c::initializeState_Select() {}
+void dLytMeterItemSelectIcon_c::executeState_Select() {}
+void dLytMeterItemSelectIcon_c::finalizeState_Select() {}
+
+void dLytMeterItemSelectIcon_c::initializeState_Off() {}
+void dLytMeterItemSelectIcon_c::executeState_Off() {}
+void dLytMeterItemSelectIcon_c::finalizeState_Off() {}
+
+void dLytMeterItemSelectBlink_c::initializeState_Wait() {}
+void dLytMeterItemSelectBlink_c::executeState_Wait() {}
+void dLytMeterItemSelectBlink_c::finalizeState_Wait() {}
+
+void dLytMeterItemSelectBlink_c::initializeState_On() {}
+void dLytMeterItemSelectBlink_c::executeState_On() {}
+void dLytMeterItemSelectBlink_c::finalizeState_On() {}
+
+void dLytMeterItemSelectBlink_c::initializeState_Select() {}
+void dLytMeterItemSelectBlink_c::executeState_Select() {}
+void dLytMeterItemSelectBlink_c::finalizeState_Select() {}
+
+void dLytMeterItemSelectBlink_c::initializeState_Off() {}
+void dLytMeterItemSelectBlink_c::executeState_Off() {}
+void dLytMeterItemSelectBlink_c::finalizeState_Off() {}
+
+void dLytMeterItemSelectText_c::initializeState_Wait() {}
+void dLytMeterItemSelectText_c::executeState_Wait() {}
+void dLytMeterItemSelectText_c::finalizeState_Wait() {}
+
+void dLytMeterItemSelectText_c::initializeState_On() {}
+void dLytMeterItemSelectText_c::executeState_On() {}
+void dLytMeterItemSelectText_c::finalizeState_On() {}
+
+void dLytMeterItemSelectText_c::initializeState_Select() {}
+void dLytMeterItemSelectText_c::executeState_Select() {}
+void dLytMeterItemSelectText_c::finalizeState_Select() {}
+
+void dLytMeterItemSelectText_c::initializeState_Off() {}
+void dLytMeterItemSelectText_c::executeState_Off() {}
+void dLytMeterItemSelectText_c::finalizeState_Off() {}
+
+void dLytMeterItemSelectBtn_c::initializeState_Invisible() {}
+void dLytMeterItemSelectBtn_c::executeState_Invisible() {}
+void dLytMeterItemSelectBtn_c::finalizeState_Invisible() {}
+
+void dLytMeterItemSelectBtn_c::initializeState_On() {}
+void dLytMeterItemSelectBtn_c::executeState_On() {}
+void dLytMeterItemSelectBtn_c::finalizeState_On() {}
+
+void dLytMeterItemSelectBtn_c::initializeState_Visible() {}
+void dLytMeterItemSelectBtn_c::executeState_Visible() {}
+void dLytMeterItemSelectBtn_c::finalizeState_Visible() {}
+
+void dLytMeterItemSelectBtn_c::initializeState_Off() {}
+void dLytMeterItemSelectBtn_c::executeState_Off() {}
+void dLytMeterItemSelectBtn_c::finalizeState_Off() {}
+
+static const char *sPaneNames[] = {
+ "N_itemArrow_00", "N_arrowHand_00", "N_bBtn_00", "N_itemSelect_00", "N_setBtn_00", "N_bBtn_01",
+ "N_btnBg_00", "N_btn_00", "N_input_00", "N_iconA_00", "N_iconB_00", "N_iconC_00",
+ "N_iconD_00", "N_iconE_00", "N_iconF_00", "N_iconG_00", "N_iconH_00",
+};
+
+static const d2d::LytBrlanMapping brlanMap[] = {
+ { "remoConBtn_00_in.brlan", "G_inOut_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemA_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemB_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemC_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemD_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemE_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemF_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemG_00"},
+ { "remoConBtn_00_onOff.brlan", "G_itemH_00"},
+ { "remoConBtn_00_onOff.brlan", "G_text_00"},
+ { "remoConBtn_00_onOff.brlan", "G_text_01"},
+ { "remoConBtn_00_have.brlan", "G_itemA_00"},
+ { "remoConBtn_00_have.brlan", "G_itemB_00"},
+ { "remoConBtn_00_have.brlan", "G_itemC_00"},
+ { "remoConBtn_00_have.brlan", "G_itemD_00"},
+ { "remoConBtn_00_have.brlan", "G_itemE_00"},
+ { "remoConBtn_00_have.brlan", "G_itemF_00"},
+ { "remoConBtn_00_have.brlan", "G_itemG_00"},
+ { "remoConBtn_00_have.brlan", "G_itemH_00"},
+ {"remoConBtn_00_selectOnOff.brlan", "G_selectOnOff_00"},
+ { "remoConBtn_00_selectLoop.brlan", "G_selectLoop_00"},
+ { "remoConBtn_00_itemArrow.brlan", "G_itemArrow_00"},
+ { "remoConBtn_00_decide.brlan", "G_decide_00"},
+ { "remoConBtn_00_numberV.brlan", "G_numberV_00"},
+ { "remoConBtn_00_out.brlan", "G_inOut_00"},
+ { "remoConBtn_00_reset.brlan", "G_inOut_00"},
+ { "remoConBtn_00_textColor.brlan", "G_textColor_00"},
+ { "remoConBtn_00_enough.brlan", "G_enough_00"},
+ { "remoConBtn_00_full.brlan", "G_full_00"},
+ { "remoConBtn_00_call.brlan", "G_call_00"},
+ { "remoConBtn_00_input.brlan", "G_input_00"},
+ { "remoConBtn_00_input.brlan", "G_input_01"},
+ { "remoConBtn_00_input.brlan", "G_input_02"},
+ { "remoConBtn_00_input.brlan", "G_input_03"},
+};
+
+#define ITEM_SELECT_ANIM_IN 0
+#define ITEM_SELECT_ANIM_ONOFF_OFFSET 1
+#define ITEM_SELECT_ANIM_TEXT_ONOFF_OFFSET 9
+#define ITEM_SELECT_ANIM_HAVE_OFFSET 11
+#define ITEM_SELECT_ANIM_SELECT_ONOFF 19
+#define ITEM_SELECT_ANIM_SELECT_LOOP 20
+#define ITEM_SELECT_ANIM_ARROW 21
+#define ITEM_SELECT_ANIM_DECIDE 22
+#define ITEM_SELECT_ANIM_NUMBERV 23
+#define ITEM_SELECT_ANIM_OUT 24
+#define ITEM_SELECT_ANIM_RESET 25
+#define ITEM_SELECT_ANIM_TEXTCOLOR 26
+#define ITEM_SELECT_ANIM_ENOUGH 27
+#define ITEM_SELECT_ANIM_FULL 28
+#define ITEM_SELECT_ANIM_CALL 29
+#define ITEM_SELECT_ANIM_INPUT_OFFSET 30
+
+#define ITEM_SELECT_NUM_ANIMS 34
+
+static const char *sTextboxNames[] = {
+ "T_number_00", "T_numberS_00", "T_numberS_01", "T_numberS_02", "T_back_00",
+ "T_backS_00", "T_itemName_00", "T_itemNameS_00", "T_item_00", "T_itemS_00",
+};
+
+static const char *sWindowNames[] = {
+ "W_bgP_00",
+ "W_bgP_01",
+ "W_bgP_02",
+ "W_bgP_04",
+};
+
+static const char *groupName = "G_ref_00";
+
dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null) {
field_0x574C = 11;
field_0x5750 = 11;
@@ -10,3 +205,617 @@ dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null
field_0x5764 = -1;
field_0x5768 = 2;
}
+
+void dLytMeterItemSelect_c::initializeState_InitWait() {}
+void dLytMeterItemSelect_c::executeState_InitWait() {}
+void dLytMeterItemSelect_c::finalizeState_InitWait() {}
+
+void dLytMeterItemSelect_c::initializeState_Wait() {}
+void dLytMeterItemSelect_c::executeState_Wait() {}
+void dLytMeterItemSelect_c::finalizeState_Wait() {}
+
+void dLytMeterItemSelect_c::initializeState_SelectIn() {}
+void dLytMeterItemSelect_c::executeState_SelectIn() {}
+void dLytMeterItemSelect_c::finalizeState_SelectIn() {}
+
+void dLytMeterItemSelect_c::initializeState_Select() {}
+void dLytMeterItemSelect_c::executeState_Select() {}
+void dLytMeterItemSelect_c::finalizeState_Select() {}
+
+void dLytMeterItemSelect_c::initializeState_SetIn() {}
+void dLytMeterItemSelect_c::executeState_SetIn() {}
+void dLytMeterItemSelect_c::finalizeState_SetIn() {}
+
+void dLytMeterItemSelect_c::initializeState_SetSpecialItemIn() {}
+void dLytMeterItemSelect_c::executeState_SetSpecialItemIn() {}
+void dLytMeterItemSelect_c::finalizeState_SetSpecialItemIn() {}
+
+void dLytMeterItemSelect_c::initializeState_Set() {}
+void dLytMeterItemSelect_c::executeState_Set() {}
+void dLytMeterItemSelect_c::finalizeState_Set() {}
+
+void dLytMeterItemSelect_c::initializeState_SetOut() {}
+void dLytMeterItemSelect_c::executeState_SetOut() {}
+void dLytMeterItemSelect_c::finalizeState_SetOut() {}
+
+void dLytMeterItemSelect_c::initializeState_SetNone() {}
+void dLytMeterItemSelect_c::executeState_SetNone() {}
+void dLytMeterItemSelect_c::finalizeState_SetNone() {}
+
+void dLytMeterItemSelect_c::initializeState_SelectOut() {}
+void dLytMeterItemSelect_c::executeState_SelectOut() {}
+void dLytMeterItemSelect_c::finalizeState_SelectOut() {}
+
+void dLytMeterItemSelect_c::initializeState_ResetIn() {}
+void dLytMeterItemSelect_c::executeState_ResetIn() {}
+void dLytMeterItemSelect_c::finalizeState_ResetIn() {}
+
+void dLytMeterItemSelect_c::initializeState_Reset() {}
+void dLytMeterItemSelect_c::executeState_Reset() {}
+void dLytMeterItemSelect_c::finalizeState_Reset() {}
+
+void dLytMeterItemSelect_c::initializeState_ResetOut() {}
+void dLytMeterItemSelect_c::executeState_ResetOut() {}
+void dLytMeterItemSelect_c::finalizeState_ResetOut() {}
+
+void dLytMeterItemSelect_c::initializeState_ToUse() {}
+void dLytMeterItemSelect_c::executeState_ToUse() {}
+void dLytMeterItemSelect_c::finalizeState_ToUse() {}
+
+void dLytMeterItemSelect_c::initializeState_ToUnuse() {}
+void dLytMeterItemSelect_c::executeState_ToUnuse() {}
+void dLytMeterItemSelect_c::finalizeState_ToUnuse() {}
+
+void dLytMeterItemSelect_c::initializeState_Unuse() {}
+void dLytMeterItemSelect_c::executeState_Unuse() {}
+void dLytMeterItemSelect_c::finalizeState_Unuse() {}
+
+void dLytMeterItemSelect_c::initializeState_DemoMove() {}
+void dLytMeterItemSelect_c::executeState_DemoMove() {}
+void dLytMeterItemSelect_c::finalizeState_DemoMove() {}
+
+void dLytMeterItemSelect_c::initializeState_DemoOut0() {}
+void dLytMeterItemSelect_c::executeState_DemoOut0() {}
+void dLytMeterItemSelect_c::finalizeState_DemoOut0() {}
+
+void dLytMeterItemSelect_c::initializeState_DemoOut1() {}
+void dLytMeterItemSelect_c::executeState_DemoOut1() {}
+void dLytMeterItemSelect_c::finalizeState_DemoOut1() {}
+
+void dLytMeterItemSelect_c::initializeState_FrameOffIn() {}
+void dLytMeterItemSelect_c::executeState_FrameOffIn() {}
+void dLytMeterItemSelect_c::finalizeState_FrameOffIn() {}
+
+void dLytMeterItemSelect_c::initializeState_FrameOffMove() {}
+void dLytMeterItemSelect_c::executeState_FrameOffMove() {}
+void dLytMeterItemSelect_c::finalizeState_FrameOffMove() {}
+
+void dLytMeterItemSelect_c::initializeState_FrameOffOut() {}
+void dLytMeterItemSelect_c::executeState_FrameOffOut() {}
+void dLytMeterItemSelect_c::finalizeState_FrameOffOut() {}
+
+bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) {
+ mLyt.setResAcc(resAcc);
+ mLyt.build("remoConBtn_00.brlyt", nullptr);
+
+ for (int i = 0; i < 17; i++) {
+ mpPanes[i] = mLyt.findPane(sPaneNames[i]);
+ }
+
+ for (int i = 0; i < ITEM_SELECT_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ for (int i = 0; i < 8; i++) {
+ mIcon[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_ONOFF_OFFSET]);
+ mIcon[i].init();
+ }
+
+ mBlink.setAnm(&mAnm[ITEM_SELECT_ANIM_NUMBERV]);
+ mBlink.init();
+
+ for (int i = 0; i < 2; i++) {
+ mText[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_TEXT_ONOFF_OFFSET]);
+ mText[i].init();
+ }
+
+ for (int i = 0; i < 4; i++) {
+ mBtn[i].setAnm(&mAnm[i + ITEM_SELECT_ANIM_INPUT_OFFSET]);
+ mBtn[i].init(i, &mLyt, mpPanes[5]);
+ }
+
+ for (int i = 0; i < 10; i++) {
+ mpTextBoxes[i] = mLyt.getTextBox(sTextboxNames[i]);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ mpWindows[i] = mLyt.getWindow(sWindowNames[i]);
+ mpSizeBoxes[i] = mLyt.getSizeBoxInWindow(sWindowNames[i]);
+ mpWindows[i]->UpdateSize(mpSizeBoxes[i], 32.0f);
+ }
+
+ for (int i = 0; i < 9; i++) {
+ mSubpanes[i].mpLytPane = &mItemIcons[i];
+ mItemIcons[i].build(resAcc, dLytCommonIconItem_c::B_WHEEL);
+ mSubpaneList.PushBack(&mSubpanes[i]);
+ }
+
+ if (mLyt.getLayout()->GetRootPane() != nullptr) {
+ nw4r::lyt::Group *g = mLyt.findGroupByName("G_ref_00");
+ linkMeters(g, &mSubpaneList);
+ }
+
+ for (int i = 0; i < 9; i++) {
+ mItemIcons[i].reset();
+ mItemIcons[i].setVisible(false);
+ mItemIcons[i].setSize(true);
+ }
+
+ mStateMgr.changeState(StateID_InitWait);
+
+ return true;
+}
+
+bool dLytMeterItemSelect_c::remove() {
+ for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) {
+ if (!it->mpLytPane->LytMeter0x24()) {
+ continue;
+ }
+ d2d::dSubPane *subPane = it->mpLytPane;
+ if (subPane != nullptr) {
+ nw4r::lyt::Pane *parent = subPane->getPane()->GetParent();
+ parent->RemoveChild(subPane->getPane());
+ }
+ }
+
+ for (int i = 0; i < 9; i++) {
+ mSubpanes[i].mpLytPane->remove();
+ }
+
+ for (int i = 0; i < ITEM_SELECT_NUM_ANIMS; i++) {
+ mAnm[i].unbind();
+ mAnm[i].remove();
+ }
+
+ mEffects.remove(true);
+ return true;
+}
+
+bool dLytMeterItemSelect_c::execute() {
+ if (StoryflagManager::sInstance->getCounterOrFlag(569) != 0) {
+ if (field_0x57A2 != 0 || (field_0x57A0 != 0 && field_0x5794 != 2 && field_0x5794 != 9 && field_0x5794 != 10)) {
+ field_0x57B9 = 0;
+ StoryflagManager::sInstance->unsetFlag(569);
+ } else {
+ field_0x57B9 = 1;
+ }
+ }
+
+ field_0x57BF = field_0x57BE;
+ if (mpSomePane == nullptr) {
+ return true;
+ }
+
+ if (!mpSomePane->IsVisible()) {
+ if (*mStateMgr.getStateID() != StateID_DemoMove && *mStateMgr.getStateID() != StateID_DemoOut0 &&
+ *mStateMgr.getStateID() != StateID_DemoOut1 && field_0x57C5 != 0) {
+ mpPanes[6]->SetVisible(true);
+ mpPanes[7]->SetVisible(true);
+ mpPanes[8]->SetVisible(true);
+ field_0x57C5 = 0;
+ }
+ if ((*mStateMgr.getStateID() == StateID_SetIn) || (*mStateMgr.getStateID() == StateID_Set) ||
+ (*mStateMgr.getStateID() == StateID_SetOut) || (*mStateMgr.getStateID() == StateID_ToUnuse)) {
+ if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_IN].setToEnd2();
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_DECIDE].setToEnd2();
+ }
+
+ if (field_0x5798 != 11) {
+ if (field_0x5794 != 11) {
+ mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce();
+ mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true);
+ mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2();
+ } else {
+ mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce();
+ mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true);
+ mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2();
+ }
+ } else if (field_0x5794 != 11) {
+ mAnm[ITEM_SELECT_ANIM_OUT].setForwardOnce();
+ mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(true);
+ mAnm[ITEM_SELECT_ANIM_OUT].setToEnd2();
+ } else {
+ mAnm[ITEM_SELECT_ANIM_RESET].setForwardOnce();
+ mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(true);
+ mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2();
+ }
+
+ mLyt.getLayout()->Animate(0);
+ mLyt.calc();
+
+ if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false);
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_DECIDE].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_DECIDE].setAnimEnable(false);
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false);
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
+ }
+
+ mBtn[1].fn_800E9E00(1, 1);
+ mBtn[0].fn_800E9E00(1, 1);
+
+ field_0x57B3 = 0;
+
+ if (field_0x5798 != 11) {
+ if (field_0x5794 != 11) {
+ mBtn[2].fn_800E9E00(0, 1);
+ } else {
+ mBtn[2].fn_800E9E00(1, 1);
+ }
+ } else if (field_0x5794 != 11) {
+ mBtn[2].fn_800E9E00(0, 1);
+ } else {
+ mBtn[2].fn_800E9E00(1, 1);
+ }
+
+ mStateMgr.changeState(StateID_Wait);
+ } else if (*mStateMgr.getStateID() == StateID_SelectOut) {
+ if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_IN].setToEnd2();
+ }
+
+ if (field_0x57BD != 0) {
+ field_0x579B = 0;
+ field_0x5784 = 0.8f;
+ mEffects.fn_80027320(0);
+ field_0x57BD = 0;
+ field_0x57BE = 0;
+ mpPanes[11]->SetAlpha(0xFF);
+ }
+
+ mLyt.getLayout()->Animate(0);
+ mLyt.calc();
+
+ if (mAnm[ITEM_SELECT_ANIM_IN].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false);
+ }
+
+ mStateMgr.changeState(StateID_Wait);
+ }
+
+ // LAB_800ee8ec:
+ if (*mStateMgr.getStateID() == StateID_SetNone) {
+ mAnm[ITEM_SELECT_ANIM_RESET].setToEnd2();
+ mBtn[0].fn_800E9E30(1);
+ mBtn[2].fn_800E9E30(1);
+
+ mLyt.getLayout()->Animate(0);
+ mLyt.calc();
+
+ mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
+ field_0x57B3 = 0;
+ field_0x579A = 11;
+ mStateMgr.changeState(StateID_Wait);
+ }
+ if (*mStateMgr.getStateID() == StateID_SetSpecialItemIn) {
+ mBtn[0].fn_800E9E00(1, 1);
+ if (mpSomePane->GetAlpha() != 0xFF) {
+ if (mAnm[ITEM_SELECT_ANIM_OUT].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_OUT].setAnimEnable(false);
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_RESET].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_RESET].setToStart();
+ }
+
+ mpPanes[4]->SetVisible(true);
+
+ mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(true);
+ mAnm[ITEM_SELECT_ANIM_IN].setFrame(0.0f);
+
+ mBtn[1].fn_800E9E00(1, 1);
+ mBtn[2].fn_800E9E00(1, 1);
+ mLyt.calc();
+
+ mAnm[ITEM_SELECT_ANIM_IN].setAnimEnable(false);
+ mAnm[ITEM_SELECT_ANIM_RESET].setAnimEnable(false);
+ mpPanes[4]->SetVisible(false);
+ field_0x57B3 = 0;
+ field_0x579A = 11;
+ mStateMgr.changeState(StateID_Wait);
+ }
+ }
+ // TODO maybe an inline
+ s32 tmp;
+ if (dLytDobutton_c::GetInstance() != nullptr) {
+ tmp = dLytDobutton_c::GetInstance()->getField0x47C();
+ } else {
+ tmp = 0x5E;
+ }
+
+ if (tmp == 0x28) {
+ if (field_0x5774 == 0) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_PARACHUTE_CALL);
+ }
+ field_0x5774++;
+ if (field_0x5774 >= mAnm[ITEM_SELECT_ANIM_CALL].getAnimDuration() / 2.0f) {
+ field_0x5774 = 0;
+ }
+ } else {
+ field_0x5774 = 0;
+ }
+
+ return true;
+ }
+
+ bool a = false;
+ bool b = false;
+ if (field_0x5790 > 0) {
+ field_0x5790--;
+ }
+
+ if (field_0x5794 != field_0x5796) {
+ field_0x5796 = field_0x5794;
+ a = true;
+ if (field_0x5794 != 11) {
+ field_0x5797 = field_0x5794;
+ field_0x57B4 = 0;
+ } else {
+ field_0x57B4 = 1;
+ }
+ fn_800F0680(field_0x5796);
+ b = true;
+ } else if (field_0x579C != fn_800F07D0(fn_800F0990(1))) {
+ field_0x579C = fn_800F07D0(fn_800F0990(1));
+ fn_800F0680(field_0x5796);
+ b = true;
+ } else if (field_0x579D != fn_800F07D0(fn_800F0990(5))) {
+ field_0x579D = fn_800F07D0(fn_800F0990(5));
+ fn_800F0680(field_0x5796);
+ b = true;
+ } else if (field_0x579E != fn_800F07D0(fn_800F0990(4))) {
+ field_0x579E = fn_800F07D0(fn_800F0990(4));
+ fn_800F0680(field_0x5796);
+ b = true;
+ } else if (field_0x579F != fn_800F07D0(fn_800F0990(7))) {
+ field_0x579F = fn_800F07D0(fn_800F0990(7));
+ fn_800F0680(field_0x5796);
+ b = true;
+ }
+
+ if (field_0x5797 != 11) {
+ fn_800EFAD0(fn_800F07D0(fn_800F0990(field_0x5797)), a);
+ }
+
+ if (field_0x57B6) {
+ if (!mAnm[ITEM_SELECT_ANIM_ENOUGH].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_ENOUGH].setFrame(0.0f);
+ mAnm[ITEM_SELECT_ANIM_ENOUGH].setAnimEnable(true);
+ }
+ field_0x57B6 = false;
+ }
+
+ if (field_0x57B7) {
+ if (!mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_FULL].setFrame(0.0f);
+ mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(true);
+ if (field_0x5797 == 0) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_BM_MAX);
+ } else if (field_0x5797 == 1) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_AW_MAX);
+ } else if (field_0x5797 == 5) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_PC_MAX);
+ }
+ }
+ field_0x57B7 = false;
+ }
+
+ fn_800EF7C0();
+ mStateMgr.executeState();
+ fn_800EF8C0(0);
+
+ // TODO maybe an inline
+ s32 tmp;
+ if (dLytDobutton_c::GetInstance() != nullptr) {
+ tmp = dLytDobutton_c::GetInstance()->getField0x47C();
+ } else {
+ tmp = 0x5E;
+ }
+
+ if (tmp == 0x28) {
+ if (field_0x57C3 != 0) {
+ field_0x57BB = 1;
+ }
+ } else {
+ field_0x57C3 = 0;
+ }
+
+ bool b2 = false;
+ if (field_0x57B9 != 0 && dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) && field_0x576C == 0x85) {
+ if (field_0x57BA == 0) {
+ mAnm[ITEM_SELECT_ANIM_CALL].setToEnd();
+ mAnm[ITEM_SELECT_ANIM_CALL].setRate(1.0f);
+ mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(true);
+ field_0x57BA = 1;
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_CALL].play();
+ if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) &&
+ mAnm[ITEM_SELECT_ANIM_CALL].getFrame() == 1.0f) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_B_BUTTON_BLINK);
+ }
+ }
+ b2 = true;
+ } else {
+ if (field_0x57BA == 1) {
+ mAnm[ITEM_SELECT_ANIM_CALL].setToEnd();
+ b2 = true;
+ }
+
+ if (field_0x57BB != 0) {
+ if (field_0x57BC == 0) {
+ mAnm[ITEM_SELECT_ANIM_CALL].setToEnd();
+ mAnm[ITEM_SELECT_ANIM_CALL].setRate(2.0f);
+ mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(true);
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_CALL].play();
+ if (dLytMeterContainer_c::GetInstance()->checkAllFlags(0x10) &&
+ mAnm[ITEM_SELECT_ANIM_CALL].getFrame() == 1.0f) {
+ SmallSoundManager::GetInstance()->playSound(SE_S_PARACHUTE_CALL);
+ }
+ }
+ b2 = true;
+ } else if (field_0x57BC == 1) {
+ mAnm[ITEM_SELECT_ANIM_CALL].setToEnd();
+ b2 = true;
+ }
+ }
+
+ if (!b2 && mAnm[ITEM_SELECT_ANIM_CALL].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_CALL].setAnimEnable(false);
+ }
+
+ if (field_0x57B9 == 0) {
+ field_0x57BA = field_0x57B9;
+ }
+
+ field_0x57B9 = 0;
+ field_0x57BC = field_0x57BB;
+ field_0x57BB = 0;
+
+ if (*mStateMgr.getStateID() != StateID_InitWait) {
+ for (int i = 0; i < 8; i++) {
+ mIcon[i].execute();
+ }
+ mBlink.execute();
+ for (int i = 0; i < 2; i++) {
+ mText[i].execute();
+ }
+
+ for (int i = 0; i < 4; i++) {
+ mBtn[i].execute();
+ if (mBtn[i].getField_0x57() != 0) {
+ mBtn[i].setField_0x57(0);
+ b = true;
+ }
+ }
+
+ if (b) {
+ mLyt.getLayout()->Animate(0);
+ }
+
+ mVec3_c t1(0.0f, 0.0f, 0.0f);
+ t1.z = field_0x5778;
+ mpPanes[0]->SetRotate(t1);
+ mVec3_c t2(0.0f, 0.0f, 0.0f);
+ t2.z = -field_0x5778;
+ mpPanes[1]->SetRotate(t2);
+ mpPanes[2]->SetRotate(t2);
+
+ f32 frame = mAnm[ITEM_SELECT_ANIM_ARROW].getAnimDuration();
+ if (field_0x577C < 0.0f) {
+ field_0x577C = 0.0f;
+ }
+ if (field_0x577C > 1.0f) {
+ field_0x577C = 1.0f;
+ }
+ mAnm[ITEM_SELECT_ANIM_ARROW].setFrame(frame * field_0x577C);
+ mAnm[ITEM_SELECT_ANIM_ARROW].setAnimEnable(true);
+
+ if (mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].isEnabled()) {
+ mAnm[ITEM_SELECT_ANIM_SELECT_LOOP].play();
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_ENOUGH].isEnabled()) {
+ if (mAnm[ITEM_SELECT_ANIM_ENOUGH].isEndReached()) {
+ mAnm[ITEM_SELECT_ANIM_ENOUGH].setFrame(0.0f);
+ mAnm[ITEM_SELECT_ANIM_ENOUGH].setAnimEnable(false);
+ } else {
+ mAnm[ITEM_SELECT_ANIM_ENOUGH].play();
+ }
+ }
+
+ if (mAnm[ITEM_SELECT_ANIM_FULL].isEnabled()) {
+ if (mAnm[ITEM_SELECT_ANIM_FULL].isEndReached()) {
+ mAnm[ITEM_SELECT_ANIM_FULL].setFrame(0.0f);
+ mAnm[ITEM_SELECT_ANIM_FULL].setAnimEnable(false);
+ } else {
+ mAnm[ITEM_SELECT_ANIM_FULL].play();
+ }
+ }
+
+ for (int i = 0; i < 9; i++) {
+ mSubpanes[i].mpLytPane->execute();
+ }
+
+ if (field_0x5794 == 2) {
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ LytDoButtonRelated::GetInstance()->set0x08(0x91);
+ }
+ } else if (field_0x5794 == 9) {
+ if (field_0x57B3 != 0) {
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ LytDoButtonRelated::GetInstance()->set0x08(0x90);
+ }
+ } else {
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ LytDoButtonRelated::GetInstance()->set0x08(0x8F);
+ }
+ }
+ }
+
+ if (field_0x578C <= 0 && *mStateMgr.getStateID() != StateID_SetIn &&
+ *mStateMgr.getStateID() != StateID_SetOut && *mStateMgr.getStateID() != StateID_ToUnuse &&
+ *mStateMgr.getStateID() != StateID_Unuse) {
+ s32 tmp;
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ tmp = LytDoButtonRelated::GetInstance()->get0x08();
+ } else {
+ tmp = 0x98;
+ }
+ if (field_0x576C != tmp) {
+ s32 tmp;
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ tmp = LytDoButtonRelated::GetInstance()->get0x08();
+ } else {
+ tmp = 0x98;
+ }
+ field_0x576C = tmp;
+ fn_800F0440(field_0x576C);
+ }
+ } else {
+ if (field_0x576C != 0x98) {
+ field_0x576C = 0x98;
+ fn_800F0440(field_0x576C);
+ }
+
+ if (field_0x578C > 0) {
+ field_0x578C--;
+ }
+ }
+
+ if (LytDoButtonRelated::GetInstance() != nullptr) {
+ LytDoButtonRelated::GetInstance()->set0x08(0x98);
+ }
+ }
+
+ field_0x57C1 = fn_800F09E0();
+ return true;
+}