diff options
| author | robojumper <robojumper@gmail.com> | 2024-10-17 23:58:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-17 17:58:38 -0400 |
| commit | b96e6ee19f4f8538e3162b16177a4d066eacdae5 (patch) | |
| tree | e47be5e74d6dce873a74417a1a8583c858030899 /src | |
| parent | 22a5cadd578840f592b41a6d341e8cf7afb7ebbe (diff) | |
Meter madness (#64)
* Meter Madness Part 1
* progress
* maybe
* ::build meters too
* vtables labeling, small order problems
* Moar symbols
* Renames
* some dLytNote_c
* Fixes
* Checkpoint
* ::remove funcs
* Fix includes
* Move code around
* rm dead code
* rm dead include
* Draw functions
* Update include/s/s_State.hpp
* Update include/toBeSorted/scgame.h
Diffstat (limited to 'src')
28 files changed, 1334 insertions, 15 deletions
diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef.h index 09870064..121e4ac6 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/stddef.h @@ -13,7 +13,11 @@ typedef unsigned long size_t; typedef long ptrdiff_t; #endif +#ifdef __MWERKS__ #define offsetof(type, member) ((size_t) & (((type *)0)->member)) +#else +#define offsetof(type, member) __builtin_offsetof(type, member) +#endif #ifndef NULL #define NULL (0) diff --git a/src/d/lyt/d2d.cpp b/src/d/lyt/d2d.cpp index 90e13ff7..5a36550b 100644 --- a/src/d/lyt/d2d.cpp +++ b/src/d/lyt/d2d.cpp @@ -754,10 +754,10 @@ bool hasSameBaseName(const char *left, const char *right) { char *sRef = "ref"; -void LytBase_c::linkMeters(nw4r::lyt::Group *group, LytMeterGroup *meterGroup) { +void dSubPane::linkMeters(nw4r::lyt::Group *group, d2d::SubPaneList *meterGroup) { // single regswap - nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator beginIt = meterGroup->GetBeginIter(); - nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator endIt = meterGroup->GetEndIter(); + nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator beginIt = meterGroup->GetBeginIter(); + nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator endIt = meterGroup->GetEndIter(); for (nw4r::lyt::PaneList::Iterator paneIt = group->GetPaneList()->GetBeginIter(); paneIt != group->GetPaneList()->GetEndIter(); ++paneIt) { @@ -766,8 +766,8 @@ void LytBase_c::linkMeters(nw4r::lyt::Group *group, LytMeterGroup *meterGroup) { if (num != 0) { const nw4r::lyt::res::ExtUserData *dat = pane->FindExtUserDataByName(sRef); if (dat != nullptr && dat->GetType() == nw4r::lyt::res::TYPE_STRING) { - for (nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator it = beginIt; it != endIt; ++it) { - dLytMeterBase *meter = it->mpMeter; + for (nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator it = beginIt; it != endIt; ++it) { + d2d::dSubPane *meter = it->mpLytPane; if (!meter->LytMeter0x24()) { if (hasSameBaseName(dat->GetString(), meter->getName())) { it->mpPane = pane; diff --git a/src/d/lyt/d_lyt_bird_gauge.cpp b/src/d/lyt/d_lyt_bird_gauge.cpp new file mode 100644 index 00000000..28095237 --- /dev/null +++ b/src/d/lyt/d_lyt_bird_gauge.cpp @@ -0,0 +1,13 @@ +#include "d/lyt/d_lyt_bird_gauge.h" + +STATE_DEFINE(dLytBirdGaugeMain_c, ModeNone); +STATE_DEFINE(dLytBirdGaugeMain_c, ModeIn); +STATE_DEFINE(dLytBirdGaugeMain_c, ModeDash); +STATE_DEFINE(dLytBirdGaugeMain_c, ModeRecovery); +STATE_DEFINE(dLytBirdGaugeMain_c, ModeOut); + +STATE_DEFINE(dLytBirdGauge_c, In); +STATE_DEFINE(dLytBirdGauge_c, None); +STATE_DEFINE(dLytBirdGauge_c, Dash); +STATE_DEFINE(dLytBirdGauge_c, Recovery); +STATE_DEFINE(dLytBirdGauge_c, Out); diff --git a/src/d/lyt/d_lyt_boss_gauge.cpp b/src/d/lyt/d_lyt_boss_gauge.cpp new file mode 100644 index 00000000..990dd989 --- /dev/null +++ b/src/d/lyt/d_lyt_boss_gauge.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/d_lyt_boss_gauge.h" + +STATE_DEFINE(dLytBossGauge_c, None); +STATE_DEFINE(dLytBossGauge_c, In); +STATE_DEFINE(dLytBossGauge_c, Move); +STATE_DEFINE(dLytBossGauge_c, Out); diff --git a/src/d/lyt/d_lyt_common_icon_item.cpp b/src/d/lyt/d_lyt_common_icon_item.cpp new file mode 100644 index 00000000..54e3d1da --- /dev/null +++ b/src/d/lyt/d_lyt_common_icon_item.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/d_lyt_common_icon_item.h" + +STATE_DEFINE(dLytCommonIconItem_c, None); +STATE_DEFINE(dLytCommonIconItem_c, In); +STATE_DEFINE(dLytCommonIconItem_c, Wait); +STATE_DEFINE(dLytCommonIconItem_c, Out); diff --git a/src/d/lyt/d_lyt_note.cpp b/src/d/lyt/d_lyt_note.cpp new file mode 100644 index 00000000..c9cc356a --- /dev/null +++ b/src/d/lyt/d_lyt_note.cpp @@ -0,0 +1,104 @@ +#include "d/lyt/d_lyt_note.h" + +STATE_DEFINE(dLytNote_c, Wait); +STATE_DEFINE(dLytNote_c, In); +STATE_DEFINE(dLytNote_c, Move); +STATE_DEFINE(dLytNote_c, Out); + +void dLytNote_c::initializeState_Wait() { + field_0x273 = 0; +} +void dLytNote_c::executeState_Wait() { + if (field_0x270 != 0) { + mStateMgr.changeState(StateID_In); + } +} +void dLytNote_c::finalizeState_Wait() {} + +void dLytNote_c::initializeState_In() {} +void dLytNote_c::executeState_In() {} +void dLytNote_c::finalizeState_In() {} + +void dLytNote_c::initializeState_Move() { + field_0x273 = 1; +} +void dLytNote_c::executeState_Move() {} +void dLytNote_c::finalizeState_Move() {} + +void dLytNote_c::initializeState_Out() {} +void dLytNote_c::executeState_Out() {} +void dLytNote_c::finalizeState_Out() {} + +static const d2d::LytBrlanMapping brlanMap[] = { + { "suiryuScore_00_noteGet.brlan", "G_mark_00"}, + { "suiryuScore_00_noteGetLoop.brlan", "G_mark_00"}, + {"suiryuScore_00_noteLostLoop.brlan", "G_mark_00"}, + { "suiryuScore_00_noteLost.brlan", "G_mark_00"}, + { "suiryuScore_00_noteFix.brlan", "G_mark_00"}, + { "suiryuScore_00_noteColor.brlan", "G_color_00"}, +}; + +#define NOTE_ANIM_GET 0 +#define NOTE_ANIM_GET_LOOP 1 +#define NOTE_ANIM_LOST_LOOP 2 +#define NOTE_ANIM_LOST 3 +#define NOTE_ANIM_FIX 4 +#define NOTE_ANIM_COLOR 5 + +bool dLytNote_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("suiryuScore_00.brlyt", nullptr); + + for (int i = 0; i < 6; i++) { + mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnmGroups[i].setDirection(false); + mAnmGroups[i].setAnimEnable(false); + } + + mAnmGroups[NOTE_ANIM_COLOR].setAnimEnable(true); + static const char *sPaneName = "N_inOutAll_00"; + mpPane = mLyt.findPane(sPaneName); + mpPane->SetVisible(false); + // FPR Regswap + const nw4r::math::VEC3 &translate = mpPane->GetTranslate(); + mTranslate.set(translate.x, translate.y, translate.z); + field_0x268 = 6; + field_0x264 = 4; + field_0x260 = 0.0f; + field_0x270 = 0; + field_0x271 = 0; + field_0x272 = 0; + field_0x273 = 0; + field_0x274 = 0; + field_0x26C = 0; + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytNote_c::remove() { + for (int i = 0; i < 6; i++) { + // @bug? .unbind call is missing + mAnmGroups[i].afterUnbind(); + } + return true; +} + +void dLytNote_c::execute() { + // TODO +} + +void dLytNote_c::draw() { + mLyt.addToDrawList(); +} + +f32 dLytNote_c::getField0x260() const { + return field_0x260; +} + +void dLytNote_c::setFrame(f32 arg) { + if (field_0x268 != 6) { + // mysterious frsp here + field_0x260 = arg; + mAnmGroups[field_0x268].setFrame(arg); + } +} diff --git a/src/d/lyt/d_lyt_pause_disp_00.cpp b/src/d/lyt/d_lyt_pause_disp_00.cpp index e5205160..b4338f8b 100644 --- a/src/d/lyt/d_lyt_pause_disp_00.cpp +++ b/src/d/lyt/d_lyt_pause_disp_00.cpp @@ -28,13 +28,13 @@ void dLytPauseDisp00_c::init() { for (int i = 0; i < 0x18; i++) { field_0x2050[i].init(nullptr, lbl_804E8898[i]); - mLytMeterGroup.PushBack(&field_0xE11C[i]); + mSubpanes.PushBack(&field_0xE11C[i]); } if (mLytBase.getLayout()->GetGroupContainer() != nullptr) { nw4r::lyt::Group *group = mLytBase.getLayout()->GetGroupContainer()->FindGroupByName("G_ref_00"); if (group != nullptr) { - mLytBase.linkMeters(group, &mLytMeterGroup); + d2d::dSubPane::linkMeters(group, &mSubpanes); } } diff --git a/src/d/lyt/d_lyt_sky_gauge.cpp b/src/d/lyt/d_lyt_sky_gauge.cpp new file mode 100644 index 00000000..e1d09e5c --- /dev/null +++ b/src/d/lyt/d_lyt_sky_gauge.cpp @@ -0,0 +1,11 @@ +#include "d/lyt/d_lyt_sky_gauge.h" + +STATE_DEFINE(dLytSkyGaugeMain_c, ModeNone); +STATE_DEFINE(dLytSkyGaugeMain_c, ModeIn); +STATE_DEFINE(dLytSkyGaugeMain_c, ModeMove); +STATE_DEFINE(dLytSkyGaugeMain_c, ModeOut); + +STATE_DEFINE(dLytSkyGauge_c, ModeNone); +STATE_DEFINE(dLytSkyGauge_c, ModeIn); +STATE_DEFINE(dLytSkyGauge_c, ModeMove); +STATE_DEFINE(dLytSkyGauge_c, ModeOut); diff --git a/src/d/lyt/d_structd.cpp b/src/d/lyt/d_structd.cpp index dd249f22..37f3c84e 100644 --- a/src/d/lyt/d_structd.cpp +++ b/src/d/lyt/d_structd.cpp @@ -27,4 +27,9 @@ void dLytStructDList::removeFromList2(dLytStructD *other) { mList2.remove(other); } +dLytStructD::~dLytStructD() { + delete[] field_0x1C; + field_0x1C = nullptr; +} + } // namespace d2d diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 2b5c6020..f86fb2fe 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -1,6 +1,684 @@ +// clang-format off +#include "common.h" +#include "d/lyt/d_lyt_area_caption.h" +#include "d/lyt/d_lyt_meter_configuration.h" +#include "d/lyt/d_window.h" #include "d/lyt/meter/d_lyt_meter.h" +#include "toBeSorted/arc_managers/layout_arc_manager.h" +#include "toBeSorted/scgame.h" +// clang-format on +static dLytMeterConfiguration_c sConf; + +STATE_DEFINE(dLytMeter1Button_c, Wait); +STATE_DEFINE(dLytMeter1Button_c, ToUse); +STATE_DEFINE(dLytMeter1Button_c, ToUnuse); +STATE_DEFINE(dLytMeter1Button_c, Unuse); + +STATE_DEFINE(dLytMeter2Button_c, Wait); +STATE_DEFINE(dLytMeter2Button_c, ToUse); +STATE_DEFINE(dLytMeter2Button_c, ToUnuse); +STATE_DEFINE(dLytMeter2Button_c, Unuse); + +STATE_DEFINE(dLytMeterParts_c, Invisible); +STATE_DEFINE(dLytMeterParts_c, In); +STATE_DEFINE(dLytMeterParts_c, Visible); +STATE_DEFINE(dLytMeterParts_c, Out); + +void dLytMeter1Button_c::initializeState_Wait() {} +void dLytMeter1Button_c::executeState_Wait() { + if (dLytMeterContainer_c::sInstance->isButtonFlag(0x80)) { + return; + } + mStateMgr.changeState(StateID_ToUnuse); +} +void dLytMeter1Button_c::finalizeState_Wait() {} + +void dLytMeter1Button_c::initializeState_ToUse() { + mAnmGroups[0].playBackwardsOnce(); + mAnmGroups[0].setAnimEnable(true); +} +void dLytMeter1Button_c::executeState_ToUse() { + if (mAnmGroups[0].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + + if (mAnmGroups[0].isFlag2()) { + mAnmGroups[0].play(); + } +} +void dLytMeter1Button_c::finalizeState_ToUse() { + mAnmGroups[0].setAnimEnable(false); +} + +void dLytMeter1Button_c::initializeState_ToUnuse() { + mAnmGroups[0].playLoop(); + mAnmGroups[0].setAnimEnable(true); +} +void dLytMeter1Button_c::executeState_ToUnuse() { + if (mAnmGroups[0].isStop2()) { + mStateMgr.changeState(StateID_Unuse); + } + + if (mAnmGroups[0].isFlag2()) { + mAnmGroups[0].play(); + } +} +void dLytMeter1Button_c::finalizeState_ToUnuse() { + mAnmGroups[0].setAnimEnable(false); +} + +void dLytMeter1Button_c::initializeState_Unuse() { + field_0x1A4 = 15; +} +void dLytMeter1Button_c::executeState_Unuse() { + if (dLytMeterContainer_c::sInstance->isButtonFlag(0x80)) { + if (!(field_0x1A4 > 0)) { + mStateMgr.changeState(StateID_ToUse); + return; + } + field_0x1A4 -= 1; + } else { + field_0x1A4 = 15; + } +} +void dLytMeter1Button_c::finalizeState_Unuse() {} + +static const d2d::LytBrlanMapping btn1BrlanMap[] = { + {"remoConBtn_04_input.brlan", "G_input_00"}, + { "remoConBtn_04_call.brlan", "G_call_00"}, + { "remoConBtn_04_loop.brlan", "G_loop_00"}, +}; + +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].setDirection(false); + mAnmGroups[i].setAnimEnable(false); + } + // TODO + mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtnS_00"), nullptr); + mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtn_00"), nullptr); + 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); + mLyt.calc(); + mAnmGroups[1].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeter1Button_c::remove() { + for (int i = 0; i < 3; i++) { + mAnmGroups[i].unbind(); + mAnmGroups[i].afterUnbind(); + } + return true; +} + +bool dLytMeter1Button_c::LytMeter0x14() { + if (*mStateMgr.getStateID() == StateID_ToUnuse) { + // TODO + } else { + mStateMgr.executeState(); + } +} + +void dLytMeter2Button_c::initializeState_Wait() {} +void dLytMeter2Button_c::executeState_Wait() { + if (dLytMeterContainer_c::sInstance->isButtonFlag(0x100)) { + return; + } + mStateMgr.changeState(StateID_ToUnuse); +} +void dLytMeter2Button_c::finalizeState_Wait() {} + +void dLytMeter2Button_c::initializeState_ToUse() { + mAnmGroups[0].playBackwardsOnce(); + mAnmGroups[0].setAnimEnable(true); +} +void dLytMeter2Button_c::executeState_ToUse() { + if (mAnmGroups[0].isStop2()) { + mStateMgr.changeState(StateID_Wait); + } + + if (mAnmGroups[0].isFlag2()) { + mAnmGroups[0].play(); + } +} +void dLytMeter2Button_c::finalizeState_ToUse() { + mAnmGroups[0].setAnimEnable(false); +} + +void dLytMeter2Button_c::initializeState_ToUnuse() { + mAnmGroups[0].playLoop(); + mAnmGroups[0].setAnimEnable(true); +} +void dLytMeter2Button_c::executeState_ToUnuse() { + if (mAnmGroups[0].isStop2()) { + mStateMgr.changeState(StateID_Unuse); + } + + if (mAnmGroups[0].isFlag2()) { + mAnmGroups[0].play(); + } +} +void dLytMeter2Button_c::finalizeState_ToUnuse() { + mAnmGroups[0].setAnimEnable(false); +} + +void dLytMeter2Button_c::initializeState_Unuse() { + field_0x1A4 = 15; +} +void dLytMeter2Button_c::executeState_Unuse() { + if (dLytMeterContainer_c::sInstance->isButtonFlag(0x100)) { + if (!(field_0x1A4 > 0)) { + mStateMgr.changeState(StateID_ToUse); + return; + } + field_0x1A4 -= 1; + } else { + field_0x1A4 = 15; + } +} +void dLytMeter2Button_c::finalizeState_Unuse() {} + +static const d2d::LytBrlanMapping btn2BrlanMap[] = { + {"remoConBtn_05_input.brlan", "G_input_00"}, + { "remoConBtn_05_call.brlan", "G_call_00"}, + { "remoConBtn_05_loop.brlan", "G_loop_00"}, +}; + +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].setDirection(false); + mAnmGroups[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); + mLyt.calc(); + mAnmGroups[1].setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + return true; +} + +bool dLytMeter2Button_c::remove() { + for (int i = 0; i < 3; i++) { + mAnmGroups[i].unbind(); + mAnmGroups[i].afterUnbind(); + } + return true; +} + +bool dLytMeter2Button_c::LytMeter0x14() { + if (*mStateMgr.getStateID() == StateID_ToUnuse) { + // TODO + } else { + mStateMgr.executeState(); + } +} + +void dLytMeterParts_c::initializeState_Invisible() {} +void dLytMeterParts_c::executeState_Invisible() {} +void dLytMeterParts_c::finalizeState_Invisible() {} + +void dLytMeterParts_c::initializeState_In() {} +void dLytMeterParts_c::executeState_In() {} +void dLytMeterParts_c::finalizeState_In() {} + +void dLytMeterParts_c::initializeState_Visible() {} +void dLytMeterParts_c::executeState_Visible() {} +void dLytMeterParts_c::finalizeState_Visible() {} + +void dLytMeterParts_c::initializeState_Out() {} +void dLytMeterParts_c::executeState_Out() {} +void dLytMeterParts_c::finalizeState_Out() {} + +void floats() { + 32.0f; + 1.0f; + 0.0f; + int x = 0; + f32 f = x; +} + +void floats2() { + 5.0f; + 3.0f; +} + +#pragma dont_inline on dLytMeter_c::dLytMeter_c() {} +#pragma dont_inline off + +extern "C" void *GLOBAL_TITLE_RELOADER; +extern "C" void fn_800D97E0(int i); +extern "C" void fn_800D9800(int i); +extern "C" void fn_801B2D10(void *); +extern "C" void *GLOBAL_MESSAGE_RELATED_CONTEXT; + +static const d2d::LytBrlanMapping meterBrlanMap[] = { + { "basicPosition_00_in.brlan", "G_remoConBtn_00"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_01"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_02"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_03"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_04"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_05"}, + { "basicPosition_00_in.brlan", "G_remoConBtn_06"}, + { "basicPosition_00_in.brlan", "G_remoConBg_00"}, + { "basicPosition_00_in.brlan", "G_nunBtn_03"}, + { "basicPosition_00_in.brlan", "G_nunBtn_01"}, + { "basicPosition_00_in.brlan", "G_nunBtn_02"}, + { "basicPosition_00_in.brlan", "G_nunBg_00"}, + { "basicPosition_00_in.brlan", "G_shield_00"}, + { "basicPosition_00_in.brlan", "G_rupy_00"}, + { "basicPosition_00_in.brlan", "G_heart_00"}, + { "basicPosition_00_in.brlan", "G_ganbari_00"}, + + { "basicPosition_00_out.brlan", "G_remoConBtn_00"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_01"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_02"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_03"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_04"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_05"}, + { "basicPosition_00_out.brlan", "G_remoConBtn_06"}, + { "basicPosition_00_out.brlan", "G_remoConBg_00"}, + { "basicPosition_00_out.brlan", "G_nunBtn_03"}, + { "basicPosition_00_out.brlan", "G_nunBtn_01"}, + { "basicPosition_00_out.brlan", "G_nunBtn_02"}, + { "basicPosition_00_out.brlan", "G_nunBg_00"}, + { "basicPosition_00_out.brlan", "G_shield_00"}, + { "basicPosition_00_out.brlan", "G_rupy_00"}, + { "basicPosition_00_out.brlan", "G_heart_00"}, + { "basicPosition_00_out.brlan", "G_ganbari_00"}, + + { "basicPosition_00_position.brlan", "G_position_00"}, + {"basicPosition_00_rupyPosition.brlan", "G_rupyPosi_00"}, +}; + +extern "C" void *STAGE_MANAGER; +extern "C" bool StageManager__isAreaTypeSky(void *stageMgr); +extern "C" bool StageManager__isAreaTypeDungeon(void *stageMgr); + +bool dLytMeter_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++) { + mAnmGroups[i].init(meterBrlanMap[i].mFile, resAcc, mLyt.getLayout(), meterBrlanMap[i].mName); + mAnmGroups[i].setDirection(false); + mAnmGroups[i].setAnimEnable(false); + } + + // in G_remoConBtn_06, out G_remoConBtn_06 + mABtn.setContainerGroups(&mAnmGroups[6], &mAnmGroups[22]); + // out G_shield_00 + mShield.setContainerGroup(&mAnmGroups[28]); + + if (GLOBAL_TITLE_RELOADER == nullptr) { + mp1Button = new dLytMeter1Button_c(); + mp2Button = new dLytMeter2Button_c(); + } else { + mp1Button = nullptr; + 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(); + + mPos1 = mPosArray1[0]; + mPos2 = mPosArray1[1]; + mLyt.findPane("N_rupyAll_00")->SetVisible(true); + mAnmGroups[33].setAnimEnable(true); + + // Advance through some anim's keyframes and store positions in mPosArray2 + for (int i = 0; i < 7; i++) { + mAnmGroups[33].setFrame(i); + mLyt.calc(); + mPosArray2[i] = mLyt.findPane("N_rupy_00")->GetTranslate(); + } + + mAnmGroups[33].setAnimEnable(false); + mLyt.findPane("N_rupyAll_00")->SetVisible(false); + + for (int i = 0; i < 16; i++) { + if (mNodes[i].mpLytPane != nullptr) { + mNodes[i].mpLytPane->build(resAcc); + mMeters.PushBack(&mNodes[i]); + } + } + + if (isSilentRealm()) { + void *sirenData = LayoutArcManager::sInstance->getLoadedData("Siren"); + mResAcc.attach(sirenData, ""); + mpTimer = new dLytMeterTimer_c(); + mpTimerPart1 = new LytMeterTimerPart1_c(); + mpTimerPart2 = new LytMeterTimerPart2_c(); + + mpTimerPart1->build(&mResAcc); + mpTimerPart2->build(&mResAcc); + mpTimer->build(); + } else { + mpTimer = nullptr; + mpTimerPart1 = nullptr; + mpTimerPart2 = nullptr; + } + + if (GLOBAL_TITLE_RELOADER == nullptr && StageManager__isAreaTypeSky(STAGE_MANAGER)) { + mpSkyGauge = new dLytSkyGauge_c(); + mpSkyGauge->build(resAcc); + + mpBirdGauge = new dLytBirdGauge_c(); + mpBirdGauge->build(resAcc); + } else { + mpSkyGauge = nullptr; + mpBirdGauge = nullptr; + } + + if (ScGame::currentSpawnInfo.stageName == "F401") { + mpBossGauge = new dLytBossGauge_c(); + mpBossGauge->build(); + } else { + mpBossGauge = nullptr; + } + + if (ScGame::isCurrentStage("F200") || ScGame::isCurrentStage("F210") || ScGame::isCurrentStage("F211")) { + mpKakeraKey = new dLytMeterKakeraKey_c(); + mpKakeraKey->build(resAcc); + } else { + mpKakeraKey = nullptr; + } + + if (!StageManager__isAreaTypeDungeon(STAGE_MANAGER) || ScGame::currentSpawnInfo.stageName == "F100_1" || + ScGame::currentSpawnInfo.stageName == "F103_1") { + mpBossKey = nullptr; + } else { + mpBossKey = new dLytMeterBossKey_c(); + mpBossKey->build(resAcc); + } + + if (StageManager__isAreaTypeDungeon(STAGE_MANAGER) && + (!(ScGame::currentSpawnInfo.stageName == "F100_1") && !(ScGame::currentSpawnInfo.stageName == "F103_1")) || + ScGame::currentSpawnInfo.stageName == "F302" || ScGame::currentSpawnInfo.stageName == "F302") { + mpSmallKey = new dLytMeterSmallKey_c(); + mpSmallKey->build(resAcc); + } else { + mpSmallKey = nullptr; + } + + if (GLOBAL_TITLE_RELOADER != nullptr) { + mpDrink = nullptr; + } else { + mpDrink = new dLytMeterDrink_c(); + mpDrink->build(resAcc); + } + return true; +} + +bool dLytMeter_c::remove() { + for (int i = 0; i < 34; i++) { + mAnmGroups[i].afterUnbind(); + } + + + for (d2d::SubPaneList::Iterator it = mMeters.GetBeginIter(); it != mMeters.GetEndIter(); ++it) { + d2d::dSubPane *m = it->mpLytPane; + if (m != nullptr) { + m->getPane()->GetParent()->RemoveChild(m->getPane()); + } + } + + for (int i = 0; i < 16; i++) { + if (mNodes[i].mpLytPane != nullptr) { + mNodes[i].mpLytPane->remove(); + } + } + + if (mp1Button != nullptr) { + delete mp1Button; + mp1Button = nullptr; + } + + if (mp2Button != nullptr) { + delete mp2Button; + mp2Button = nullptr; + } + + if (mpTimerPart1 != nullptr) { + mpTimerPart1->remove(); + delete mpTimerPart1; + mpTimerPart1 = nullptr; + } + + if (mpTimerPart2 != nullptr) { + mpTimerPart2->remove(); + delete mpTimerPart2; + mpTimerPart2 = nullptr; + } + + if (mpTimer != nullptr) { + mpTimer->remove(); + delete mpTimer; + mpTimer = nullptr; + // WHY IS THIS HERE??? + mResAcc.detach(); + } + + if (mpSkyGauge != nullptr) { + mpSkyGauge->remove(); + delete mpSkyGauge; + mpSkyGauge = nullptr; + } + + if (mpBirdGauge != nullptr) { + mpBirdGauge->remove(); + delete mpBirdGauge; + mpBirdGauge = nullptr; + } + + if (mpBossGauge != nullptr) { + mpBossGauge->remove(); + delete mpBossGauge; + mpBossGauge = nullptr; + } + + if (mpKakeraKey != nullptr) { + mpKakeraKey->remove(); + delete mpKakeraKey; + mpKakeraKey = nullptr; + } + + if (mpBossKey != nullptr) { + mpBossKey->remove(); + delete mpBossKey; + mpBossKey = nullptr; + } + + if (mpSmallKey != nullptr) { + mpSmallKey->remove(); + delete mpSmallKey; + mpSmallKey = nullptr; + } + + if (mpDrink != nullptr) { + mpDrink->remove(); + delete mpDrink; + mpDrink = nullptr; + } + + + return true; +} + +bool dLytMeter_c::draw() { + mLyt.addToDrawList(); + if (mpTimerPart1 != nullptr) { + mpTimerPart1->getLyt()->addToDrawList(); + } + if (mpTimerPart2 != nullptr) { + mpTimerPart2->getLyt()->addToDrawList(); + } + if (mpSkyGauge != nullptr) { + mpSkyGauge->getLyt()->addToDrawList(); + } + if (mpBirdGauge != nullptr) { + mpBirdGauge->getLyt()->addToDrawList(); + } + + if (mpBossGauge != nullptr) { + mpBossGauge->draw(); + } + + if (mpKakeraKey != nullptr) { + mpKakeraKey->draw(); + } + + if (mpBossKey != nullptr) { + mpBossKey->draw(); + } + + if (mpSmallKey != nullptr) { + mpSmallKey->draw(); + } + + if (mpDrink != nullptr) { + mpDrink->draw(); + } + + return true; +} + +dLytMeterContainer_c::dLytMeterContainer_c() { + sInstance = this; +} + +bool dLytMeterContainer_c::build() { + void *data = LayoutArcManager::sInstance->getLoadedData("DoButton"); + mResAcc.attach(data, ""); + if (GLOBAL_TITLE_RELOADER != nullptr) { + mpEventSkip = nullptr; + } else { + mpEventSkip = new dLytMeterEventSkip_c(); + } + + if (mpEventSkip != nullptr) { + mpEventSkip->build(&mResAcc); + } + + dLytAreaCaption_c::create(); + mMeter.build(&mResAcc); + if (GLOBAL_TITLE_RELOADER != nullptr) { + mpDoButton = nullptr; + mpDoButtonRelated = nullptr; + mpBirdRelated = nullptr; + } else { + mpDoButton = new dLytDobutton_c(); + mpDoButtonRelated = new LytDoButtonRelated(); + mpBirdRelated = new LytBirdButtonRelated(); + } + + if (mpDoButton != nullptr) { + mpDoButton->init(&mResAcc); + } + if (mpDoButtonRelated != nullptr) { + mpDoButtonRelated->build(&mResAcc); + } + if (mpBirdRelated != nullptr) { + mpBirdRelated->build(&mResAcc); + } + + fn_800D97E0(0xb); + fn_800D9800(1); + fn_801B2D10(GLOBAL_MESSAGE_RELATED_CONTEXT); + return true; +} + +bool dLytMeterContainer_c::remove() { + if (mpDoButton != nullptr) { + mpDoButton->remove(); + delete mpDoButton; + mpDoButton = nullptr; + } + if (mpDoButtonRelated != nullptr) { + mpDoButtonRelated->remove(); + delete mpDoButtonRelated; + mpDoButtonRelated = nullptr; + + } + mMeter.remove(); + if (mpEventSkip != nullptr) { + mpEventSkip->remove(); + delete mpEventSkip; + mpEventSkip = nullptr; + } + if (mpBirdRelated != nullptr) { + mpBirdRelated->remove(); + delete mpBirdRelated; + mpBirdRelated = nullptr; + } + dLytAreaCaption_c::remove(); + mResAcc.detach(); + return true; +} + +bool dLytMeterContainer_c::draw() { + if (mVisible) { + mMeter.draw(); + if (mMeter.field_0x13750 != 3) { + if (mpEventSkip != nullptr) { + mpEventSkip->draw(); + } + dLytAreaCaption_c::draw(); + if (mpDoButton != nullptr) { + mpDoButton->draw(); + } + if (mpBirdRelated != nullptr) { + mpBirdRelated->draw(); + } + } + } -dLytMeterRemoconBg_c::dLytMeterRemoconBg_c() : mStateMgr(*this, sStateID::null) {} -dLytMeterRemoconBg_c::~dLytMeterRemoconBg_c() {} + return true; +} diff --git a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp new file mode 100644 index 00000000..6b87fc34 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp @@ -0,0 +1,138 @@ +#include "d/lyt/d_textbox.h" +#include "d/lyt/d_window.h" +#include "d/lyt/meter/d_lyt_meter_a_btn.h" + + +STATE_DEFINE(dLytMeterABtn_c, InvisibleWait); +STATE_DEFINE(dLytMeterABtn_c, In); +STATE_DEFINE(dLytMeterABtn_c, Out); +STATE_DEFINE(dLytMeterABtn_c, Wait); +STATE_DEFINE(dLytMeterABtn_c, On); +STATE_DEFINE(dLytMeterABtn_c, Active); +STATE_DEFINE(dLytMeterABtn_c, Off); + +void dLytMeterABtn_c::initializeState_InvisibleWait() {} +void dLytMeterABtn_c::executeState_InvisibleWait() { + if (field_0x1C8 == 0) { + return; + } + + if (field_0x1CA == 0) { + return; + } + + mStateMgr.changeState(StateID_In); +} +void dLytMeterABtn_c::finalizeState_InvisibleWait() {} + +void dLytMeterABtn_c::initializeState_In() { + mpContainerAnmGroup1->setToEnd2(); + mpContainerAnmGroup1->setAnimEnable(true); + mAnmGroups[0].playBackwardsOnce(); +} +void dLytMeterABtn_c::executeState_In() { + if (mpContainerAnmGroup1->isEndReached()) { + mpContainerAnmGroup1->setAnimEnable(false); + mStateMgr.changeState(StateID_Wait); + } + if (mpContainerAnmGroup1->isFlag2()) { + mpContainerAnmGroup1->play(); + } +} +void dLytMeterABtn_c::finalizeState_In() {} + +void dLytMeterABtn_c::initializeState_Out() { + mpContainerAnmGroup2->setToEnd2(); + mpContainerAnmGroup2->setAnimEnable(true); +} +void dLytMeterABtn_c::executeState_Out() { + if (mpContainerAnmGroup2->isEndReached()) { + mpContainerAnmGroup2->setAnimEnable(false); + mStateMgr.changeState(StateID_InvisibleWait); + } + if (mpContainerAnmGroup2->isFlag2()) { + mpContainerAnmGroup2->play(); + } +} +void dLytMeterABtn_c::finalizeState_Out() {} + +void dLytMeterABtn_c::initializeState_Wait() {} +void dLytMeterABtn_c::executeState_Wait() {} +void dLytMeterABtn_c::finalizeState_Wait() {} + +void dLytMeterABtn_c::initializeState_On() {} +void dLytMeterABtn_c::executeState_On() {} +void dLytMeterABtn_c::finalizeState_On() {} + +void dLytMeterABtn_c::initializeState_Active() {} +void dLytMeterABtn_c::executeState_Active() {} +void dLytMeterABtn_c::finalizeState_Active() {} + +void dLytMeterABtn_c::initializeState_Off() {} +void dLytMeterABtn_c::executeState_Off() {} +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 *sTextBoxes[] = { + "T_aBtn_00", + "T_aBtnS_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].setDirection(false); + mAnmGroups[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); + + field_0x1C4 = 0x5F; + field_0x1B8 = 0x5F; + field_0x1BC = 0x5F; + 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); + mLyt.calc(); + mAnmGroups[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].afterUnbind(); + } + return true; +} diff --git a/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp new file mode 100644 index 00000000..adfc7a09 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp @@ -0,0 +1,11 @@ +#include "d/lyt/meter/d_lyt_meter_cross_btn.h" + +STATE_DEFINE(dLytMeterCrossBtnParts_c, Wait); +STATE_DEFINE(dLytMeterCrossBtnParts_c, On); +STATE_DEFINE(dLytMeterCrossBtnParts_c, Active); +STATE_DEFINE(dLytMeterCrossBtnParts_c, Off); + +STATE_DEFINE(dLytMeterCrossBtn_c, Wait); +STATE_DEFINE(dLytMeterCrossBtn_c, ToUse); +STATE_DEFINE(dLytMeterCrossBtn_c, ToUnuse); +STATE_DEFINE(dLytMeterCrossBtn_c, Unuse); diff --git a/src/d/lyt/meter/d_lyt_meter_dowsing.cpp b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp new file mode 100644 index 00000000..3086fe25 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp @@ -0,0 +1,33 @@ +#include "d/lyt/meter/d_lyt_meter_dowsing.h" + +STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Wait); +STATE_DEFINE(dLytMeterDowsingMenuIcon_c, On); +STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Select); +STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Off); + +STATE_DEFINE(dLytMeterDowsingBlink_c, Wait); +STATE_DEFINE(dLytMeterDowsingBlink_c, On); +STATE_DEFINE(dLytMeterDowsingBlink_c, Select); +STATE_DEFINE(dLytMeterDowsingBlink_c, Off); + +STATE_DEFINE(dLytMeterDowsingInput_c, Wait); +STATE_DEFINE(dLytMeterDowsingInput_c, On); +STATE_DEFINE(dLytMeterDowsingInput_c, Select); +STATE_DEFINE(dLytMeterDowsingInput_c, Off); + +STATE_DEFINE(dLytMeterDowsingText_c, Wait); +STATE_DEFINE(dLytMeterDowsingText_c, On); +STATE_DEFINE(dLytMeterDowsingText_c, Select); +STATE_DEFINE(dLytMeterDowsingText_c, Off); + +STATE_DEFINE(dLytMeterDowsing_c, Invisible); +STATE_DEFINE(dLytMeterDowsing_c, Wait); +STATE_DEFINE(dLytMeterDowsing_c, MenuSelectingIn); +STATE_DEFINE(dLytMeterDowsing_c, MenuSelecting); +STATE_DEFINE(dLytMeterDowsing_c, MenuSelectingOut); +STATE_DEFINE(dLytMeterDowsing_c, Reset); +STATE_DEFINE(dLytMeterDowsing_c, ToUse); +STATE_DEFINE(dLytMeterDowsing_c, ToUnuse); +STATE_DEFINE(dLytMeterDowsing_c, Unuse); +STATE_DEFINE(dLytMeterDowsing_c, DemoMove); +STATE_DEFINE(dLytMeterDowsing_c, DemoOut); diff --git a/src/d/lyt/meter/d_lyt_meter_drink.cpp b/src/d/lyt/meter/d_lyt_meter_drink.cpp new file mode 100644 index 00000000..8e691aab --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_drink.cpp @@ -0,0 +1,12 @@ +#include "d/lyt/meter/d_lyt_meter_drink.h" + +STATE_DEFINE(dLytMeterDrinkParts_c, Invisible); +STATE_DEFINE(dLytMeterDrinkParts_c, In); +STATE_DEFINE(dLytMeterDrinkParts_c, Visible); +STATE_DEFINE(dLytMeterDrinkParts_c, Out); + +STATE_DEFINE(dLytMeterDrink_c, Invisible); +STATE_DEFINE(dLytMeterDrink_c, In); +STATE_DEFINE(dLytMeterDrink_c, Wait); +STATE_DEFINE(dLytMeterDrink_c, Move); +STATE_DEFINE(dLytMeterDrink_c, Out); diff --git a/src/d/lyt/meter/d_lyt_meter_event_skip.cpp b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp new file mode 100644 index 00000000..27cc4ae4 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/meter/d_lyt_meter_event_skip.h" + +STATE_DEFINE(dLytMeterEventSkip_c, Invisible); +STATE_DEFINE(dLytMeterEventSkip_c, In); +STATE_DEFINE(dLytMeterEventSkip_c, Visible); +STATE_DEFINE(dLytMeterEventSkip_c, Out); diff --git a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp new file mode 100644 index 00000000..640465be --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp @@ -0,0 +1,93 @@ +#include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h" + +STATE_DEFINE(dLytMeterGanbariGauge_c, InvisibleWait); +STATE_DEFINE(dLytMeterGanbariGauge_c, In); +STATE_DEFINE(dLytMeterGanbariGauge_c, Wait); +STATE_DEFINE(dLytMeterGanbariGauge_c, OutWait); +STATE_DEFINE(dLytMeterGanbariGauge_c, Out); +STATE_DEFINE(dLytMeterGanbariGauge_c, CameraOut); +STATE_DEFINE(dLytMeterGanbariGauge_c, Full); +STATE_DEFINE(dLytMeterGanbariGauge_c, FullGutsUse); +STATE_DEFINE(dLytMeterGanbariGauge_c, Normal); +STATE_DEFINE(dLytMeterGanbariGauge_c, Caution); +STATE_DEFINE(dLytMeterGanbariGauge_c, ToMin); +STATE_DEFINE(dLytMeterGanbariGauge_c, Recovery); +STATE_DEFINE(dLytMeterGanbariGauge_c, ToMax); + +void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() {} +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_Wait() {} +void dLytMeterGanbariGauge_c::executeState_Wait() {} +void dLytMeterGanbariGauge_c::finalizeState_Wait() {} + +void dLytMeterGanbariGauge_c::initializeState_OutWait() {} +void dLytMeterGanbariGauge_c::executeState_OutWait() {} +void dLytMeterGanbariGauge_c::finalizeState_OutWait() {} + +void dLytMeterGanbariGauge_c::initializeState_Out() {} +void dLytMeterGanbariGauge_c::executeState_Out() {} +void dLytMeterGanbariGauge_c::finalizeState_Out() {} + +void dLytMeterGanbariGauge_c::initializeState_CameraOut() {} +void dLytMeterGanbariGauge_c::executeState_CameraOut() {} +void dLytMeterGanbariGauge_c::finalizeState_CameraOut() {} + +void dLytMeterGanbariGauge_c::initializeState_Full() {} +void dLytMeterGanbariGauge_c::executeState_Full() {} +void dLytMeterGanbariGauge_c::finalizeState_Full() {} + +void dLytMeterGanbariGauge_c::initializeState_FullGutsUse() {} +void dLytMeterGanbariGauge_c::executeState_FullGutsUse() {} +void dLytMeterGanbariGauge_c::finalizeState_FullGutsUse() {} + +void dLytMeterGanbariGauge_c::initializeState_Normal() {} +void dLytMeterGanbariGauge_c::executeState_Normal() {} +void dLytMeterGanbariGauge_c::finalizeState_Normal() {} + +void dLytMeterGanbariGauge_c::initializeState_Caution() {} +void dLytMeterGanbariGauge_c::executeState_Caution() {} +void dLytMeterGanbariGauge_c::finalizeState_Caution() {} + +void dLytMeterGanbariGauge_c::initializeState_ToMin() {} +void dLytMeterGanbariGauge_c::executeState_ToMin() {} +void dLytMeterGanbariGauge_c::finalizeState_ToMin() {} + +void dLytMeterGanbariGauge_c::initializeState_Recovery() {} +void dLytMeterGanbariGauge_c::executeState_Recovery() {} +void dLytMeterGanbariGauge_c::finalizeState_Recovery() {} + +void dLytMeterGanbariGauge_c::initializeState_ToMax() {} +void dLytMeterGanbariGauge_c::executeState_ToMax() {} +void dLytMeterGanbariGauge_c::finalizeState_ToMax() {} + +bool dLytMeterGanbariGauge_c::build(d2d::ResAccIf_c *resAcc) { + // TODO + return true; +} + +bool dLytMeterGanbariGauge_c::remove() { + return true; +} + +bool dLytMeterGanbariGauge_c::LytMeter0x14() { + // TODO + return true; +} + +const char *dLytMeterGanbariGauge_c::getName() const { + return mLyt.getName(); +} + +d2d::LytBase_c *dLytMeterGanbariGauge_c::getLyt() { + return &mLyt; +} + +nw4r::lyt::Pane *dLytMeterGanbariGauge_c::getPane() { + return mLyt.getLayout()->GetRootPane(); +} diff --git a/src/d/lyt/meter/d_lyt_meter_item_select.cpp b/src/d/lyt/meter/d_lyt_meter_item_select.cpp new file mode 100644 index 00000000..4f57a478 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_item_select.cpp @@ -0,0 +1,12 @@ +#include "d/lyt/meter/d_lyt_meter_item_select.h" + +dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null) { + field_0x574C = 11; + field_0x5750 = 11; + field_0x5754 = 0; + field_0x5758 = -1; + field_0x575C = 0; + field_0x5760 = 0; + field_0x5764 = -1; + field_0x5768 = 2; +} diff --git a/src/d/lyt/meter/d_lyt_meter_key.cpp b/src/d/lyt/meter/d_lyt_meter_key.cpp new file mode 100644 index 00000000..d9bd35fc --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_key.cpp @@ -0,0 +1,69 @@ +#include "d/lyt/meter/d_lyt_meter_key.h" + +STATE_DEFINE(dLytMeterKakeraKey_c, Wait); +STATE_DEFINE(dLytMeterKakeraKey_c, On); +STATE_DEFINE(dLytMeterKakeraKey_c, Increase); +STATE_DEFINE(dLytMeterKakeraKey_c, Active); +STATE_DEFINE(dLytMeterKakeraKey_c, Off); + +STATE_DEFINE(dLytMeterBossKey_c, Wait); +STATE_DEFINE(dLytMeterBossKey_c, On); +STATE_DEFINE(dLytMeterBossKey_c, Active); +STATE_DEFINE(dLytMeterBossKey_c, Off); + +STATE_DEFINE(dLytMeterSmallKey_c, Wait); +STATE_DEFINE(dLytMeterSmallKey_c, On); +STATE_DEFINE(dLytMeterSmallKey_c, Active); +STATE_DEFINE(dLytMeterSmallKey_c, Off); + +void dLytMeterKakeraKey_c::initializeState_Wait() {} +void dLytMeterKakeraKey_c::executeState_Wait() {} +void dLytMeterKakeraKey_c::finalizeState_Wait() {} + +void dLytMeterKakeraKey_c::initializeState_On() {} +void dLytMeterKakeraKey_c::executeState_On() {} +void dLytMeterKakeraKey_c::finalizeState_On() {} + +void dLytMeterKakeraKey_c::initializeState_Increase() {} +void dLytMeterKakeraKey_c::executeState_Increase() {} +void dLytMeterKakeraKey_c::finalizeState_Increase() {} + +void dLytMeterKakeraKey_c::initializeState_Active() {} +void dLytMeterKakeraKey_c::executeState_Active() {} +void dLytMeterKakeraKey_c::finalizeState_Active() {} + +void dLytMeterKakeraKey_c::initializeState_Off() {} +void dLytMeterKakeraKey_c::executeState_Off() {} +void dLytMeterKakeraKey_c::finalizeState_Off() {} + +void dLytMeterBossKey_c::initializeState_Wait() {} +void dLytMeterBossKey_c::executeState_Wait() {} +void dLytMeterBossKey_c::finalizeState_Wait() {} + +void dLytMeterBossKey_c::initializeState_On() {} +void dLytMeterBossKey_c::executeState_On() {} +void dLytMeterBossKey_c::finalizeState_On() {} + +void dLytMeterBossKey_c::initializeState_Active() {} +void dLytMeterBossKey_c::executeState_Active() {} +void dLytMeterBossKey_c::finalizeState_Active() {} + +void dLytMeterBossKey_c::initializeState_Off() {} +void dLytMeterBossKey_c::executeState_Off() {} +void dLytMeterBossKey_c::finalizeState_Off() {} + +void dLytMeterSmallKey_c::initializeState_Wait() {} +void dLytMeterSmallKey_c::executeState_Wait() {} +void dLytMeterSmallKey_c::finalizeState_Wait() {} + +void dLytMeterSmallKey_c::initializeState_On() {} +void dLytMeterSmallKey_c::executeState_On() {} +void dLytMeterSmallKey_c::finalizeState_On() {} + +void dLytMeterSmallKey_c::initializeState_Active() {} +void dLytMeterSmallKey_c::executeState_Active() {} +void dLytMeterSmallKey_c::finalizeState_Active() {} + +void dLytMeterSmallKey_c::initializeState_Off() {} +void dLytMeterSmallKey_c::executeState_Off() {} +void dLytMeterSmallKey_c::finalizeState_Off() {} diff --git a/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp b/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp new file mode 100644 index 00000000..2e388799 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_minus_btn.cpp @@ -0,0 +1,26 @@ +#include "d/lyt/meter/d_lyt_meter_minus_btn.h" + +STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Wait); +STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, On); +STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Select); +STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Off); + +STATE_DEFINE(dLytMeterMinusBtnBlink_c, Wait); +STATE_DEFINE(dLytMeterMinusBtnBlink_c, On); +STATE_DEFINE(dLytMeterMinusBtnBlink_c, Select); +STATE_DEFINE(dLytMeterMinusBtnBlink_c, Off); + +STATE_DEFINE(dLytMeterMinusBtnText_c, Wait); +STATE_DEFINE(dLytMeterMinusBtnText_c, On); +STATE_DEFINE(dLytMeterMinusBtnText_c, Select); +STATE_DEFINE(dLytMeterMinusBtnText_c, Off); + +STATE_DEFINE(dLytMeterMinusBtn_c, Wait); +STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelectingIn); +STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelecting); +STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelectingOut); +STATE_DEFINE(dLytMeterMinusBtn_c, ToUse); +STATE_DEFINE(dLytMeterMinusBtn_c, ToUnuse); +STATE_DEFINE(dLytMeterMinusBtn_c, Unuse); +STATE_DEFINE(dLytMeterMinusBtn_c, DemoMove); +STATE_DEFINE(dLytMeterMinusBtn_c, DemoOut); diff --git a/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp b/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp new file mode 100644 index 00000000..44f22d05 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_nun_stk.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/meter/d_lyt_meter_nun_stk.h" + +STATE_DEFINE(dLytMeterNunStk_c, Wait); +STATE_DEFINE(dLytMeterNunStk_c, On); +STATE_DEFINE(dLytMeterNunStk_c, Active); +STATE_DEFINE(dLytMeterNunStk_c, Off); diff --git a/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp new file mode 100644 index 00000000..1d53431e --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/meter/d_lyt_meter_nunchaku_bg.h" + +STATE_DEFINE(dLytMeterNunchakuBg_c, Wait); +STATE_DEFINE(dLytMeterNunchakuBg_c, On); +STATE_DEFINE(dLytMeterNunchakuBg_c, Active); +STATE_DEFINE(dLytMeterNunchakuBg_c, Off); diff --git a/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp b/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp new file mode 100644 index 00000000..58601775 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_plus_btn.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/meter/d_lyt_meter_plus_btn.h" + +STATE_DEFINE(dLytMeterPlusBtn_c, Wait); +STATE_DEFINE(dLytMeterPlusBtn_c, ToUse); +STATE_DEFINE(dLytMeterPlusBtn_c, ToUnuse); +STATE_DEFINE(dLytMeterPlusBtn_c, Unuse); 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 e2125a52..ad4ca4dc 100644 --- a/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp +++ b/src/d/lyt/meter/d_lyt_meter_remocon_bg.cpp @@ -1,8 +1,8 @@ #include "d/lyt/meter/d_lyt_meter_remocon_bg.h" - +#include "d/lyt/d_lyt_do_button.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "toBeSorted/event_manager.h" - STATE_DEFINE(dLytMeterRemoconBg_c, Wait); STATE_DEFINE(dLytMeterRemoconBg_c, On); STATE_DEFINE(dLytMeterRemoconBg_c, Active); @@ -24,11 +24,11 @@ void dLytMeterRemoconBg_c::initializeState_Off() {} void dLytMeterRemoconBg_c::executeState_Off() {} void dLytMeterRemoconBg_c::finalizeState_Off() {} -static const char *n1 = "N_remoConBg_00"; 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); field_0xE8 = 0x61; field_0xDC = 0x61; @@ -39,7 +39,7 @@ bool dLytMeterRemoconBg_c::build(d2d::ResAccIf_c *resAcc) { return true; } -bool dLytMeterRemoconBg_c::LytMeter0x10() { +bool dLytMeterRemoconBg_c::remove() { return true; } @@ -52,7 +52,7 @@ const char *dLytMeterRemoconBg_c::getName() const { return mLyt.getName(); } -void *dLytMeterRemoconBg_c::LytMeter0x1C() { +d2d::LytBase_c *dLytMeterRemoconBg_c::getLyt() { return &mLyt; } diff --git a/src/d/lyt/meter/d_lyt_meter_rupy.cpp b/src/d/lyt/meter/d_lyt_meter_rupy.cpp new file mode 100644 index 00000000..d6eb5895 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_rupy.cpp @@ -0,0 +1,12 @@ +#include "d/lyt/meter/d_lyt_meter_rupy.h" + +STATE_DEFINE(dLytMeterRupyStart_c, Wait); +STATE_DEFINE(dLytMeterRupyStart_c, Start); + +STATE_DEFINE(dLytMeterRupyBlink_c, Wait); +STATE_DEFINE(dLytMeterRupyBlink_c, Flash); + +STATE_DEFINE(dLytMeterRupy_c, In); +STATE_DEFINE(dLytMeterRupy_c, Active); +STATE_DEFINE(dLytMeterRupy_c, Start); +STATE_DEFINE(dLytMeterRupy_c, Out); diff --git a/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp new file mode 100644 index 00000000..0611be14 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp @@ -0,0 +1,47 @@ +#include "d/lyt/meter/d_lyt_meter_shield_gauge.h" + +STATE_DEFINE(dLytMeterShieldGauge_c, Normal); +STATE_DEFINE(dLytMeterShieldGauge_c, Use); +STATE_DEFINE(dLytMeterShieldGauge_c, ToMax); + +void dLytMeterShieldGauge_c::initializeState_Normal() {} +void dLytMeterShieldGauge_c::executeState_Normal() {} +void dLytMeterShieldGauge_c::finalizeState_Normal() {} + +void dLytMeterShieldGauge_c::initializeState_Use() {} +void dLytMeterShieldGauge_c::executeState_Use() {} +void dLytMeterShieldGauge_c::finalizeState_Use() {} + +void dLytMeterShieldGauge_c::initializeState_ToMax() {} +void dLytMeterShieldGauge_c::executeState_ToMax() {} +void dLytMeterShieldGauge_c::finalizeState_ToMax() {} + +bool dLytMeterShieldGauge_c::build(d2d::ResAccIf_c *resAcc) { + // TODO + return true; +} + +bool dLytMeterShieldGauge_c::remove() { + for (int i = 0; i < 8; i++) { + mAnmGroups[i].unbind(); + mAnmGroups[i].afterUnbind(); + } + return true; +} + +bool dLytMeterShieldGauge_c::LytMeter0x14() { + // TODO + return true; +} + +const char *dLytMeterShieldGauge_c::getName() const { + return mLyt.getName(); +} + +d2d::LytBase_c *dLytMeterShieldGauge_c::getLyt() { + return &mLyt; +} + +nw4r::lyt::Pane *dLytMeterShieldGauge_c::getPane() { + return mLyt.getLayout()->GetRootPane(); +} diff --git a/src/d/lyt/meter/d_lyt_meter_timer.cpp b/src/d/lyt/meter/d_lyt_meter_timer.cpp new file mode 100644 index 00000000..91a216dc --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_timer.cpp @@ -0,0 +1,9 @@ +#include "d/lyt/meter/d_lyt_meter_timer.h" + +STATE_DEFINE(dLytMeterTimer_c, ChangeSiren); +STATE_DEFINE(dLytMeterTimer_c, Siren); +STATE_DEFINE(dLytMeterTimer_c, ChangeSafeBloom); +STATE_DEFINE(dLytMeterTimer_c, ChangeSafe); +STATE_DEFINE(dLytMeterTimer_c, Safe); +STATE_DEFINE(dLytMeterTimer_c, ChangeFruits); +STATE_DEFINE(dLytMeterTimer_c, Fruits); diff --git a/src/d/lyt/meter/d_lyt_meter_z_btn.cpp b/src/d/lyt/meter/d_lyt_meter_z_btn.cpp new file mode 100644 index 00000000..9a48f924 --- /dev/null +++ b/src/d/lyt/meter/d_lyt_meter_z_btn.cpp @@ -0,0 +1,6 @@ +#include "d/lyt/meter/d_lyt_meter_z_btn.h" + +STATE_DEFINE(dLytMeterZBtn_c, Wait); +STATE_DEFINE(dLytMeterZBtn_c, On); +STATE_DEFINE(dLytMeterZBtn_c, Active); +STATE_DEFINE(dLytMeterZBtn_c, Off); diff --git a/src/m/m2d.cpp b/src/m/m2d.cpp index f5dd3db4..b00cfa65 100644 --- a/src/m/m2d.cpp +++ b/src/m/m2d.cpp @@ -149,7 +149,7 @@ bool FrameCtrl_c::isStop() const { f32 actualEnd; switch (mFlags) { case FLAG_NO_LOOP: actualEnd = mEndFrame - 1.0f; return mCurrFrame >= actualEnd; - case FLAG_NO_LOOP | FLAG_BACKWARDS: return mCurrFrame <= 0; + case FLAG_NO_LOOP | FLAG_BACKWARDS: return mCurrFrame <= 0.0f; default: return false; } } |
