diff options
| author | robojumper <robojumper@gmail.com> | 2025-03-31 00:10:04 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-03-31 11:53:17 +0200 |
| commit | 2368524c571b1415cd28bb400b757293a700ce7b (patch) | |
| tree | fd8e12f8e68afb200e06d74147bfb51c9dfa216b /src | |
| parent | daadae488119c7a8cd28548e5d502abdafbf68e0 (diff) | |
d_lyt_common_icon_item OK
Diffstat (limited to 'src')
| -rw-r--r-- | src/d/d_cs_game.cpp | 10 | ||||
| -rw-r--r-- | src/d/lyt/d2d.cpp | 17 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_area_caption.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_battery.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_bird_gauge.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_common_icon_item.cpp | 886 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_fader.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_note.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_pause_disp_00.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_sky_gauge.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter.cpp | 20 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter_a_btn.cpp | 11 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter_drink.cpp | 42 | ||||
| -rw-r--r-- | src/m/m2d.cpp | 4 |
14 files changed, 950 insertions, 58 deletions
diff --git a/src/d/d_cs_game.cpp b/src/d/d_cs_game.cpp index 21ebf775..3ed7ea18 100644 --- a/src/d/d_cs_game.cpp +++ b/src/d/d_cs_game.cpp @@ -362,7 +362,7 @@ void dCsGame_c::lytItemCursor_c::lytBowCsr_c::initializeState_AimStart() { mAnm[MAIN_ANIM_ARROW_ON].setFrame(0.0f); } void dCsGame_c::lytItemCursor_c::lytBowCsr_c::executeState_AimStart() { - if (mAnm[MAIN_ANIM_ARROW_ON].isFlag2()) { + if (mAnm[MAIN_ANIM_ARROW_ON].isEnabled()) { mAnm[MAIN_ANIM_ARROW_ON].play(); if (mAnm[MAIN_ANIM_ARROW_ON].isEndReached()) { mpLyt->calc(); @@ -404,7 +404,7 @@ void dCsGame_c::lytItemCursor_c::lytBowCsr_c::initializeState_Charge() { } void dCsGame_c::lytItemCursor_c::lytBowCsr_c::executeState_Charge() { if (field_0x54 >= 1.0f) { - if (!mAnm[MAIN_ANIM_ARROW_PEAK].isFlag2()) { + if (!mAnm[MAIN_ANIM_ARROW_PEAK].isEnabled()) { mAnm[MAIN_ANIM_ARROW_PEAK].setAnimEnable(true); mAnm[MAIN_ANIM_ARROW_PEAK].setFrame(0.0f); SmallSoundManager::GetInstance()->playSound(SE_S_BW_ALIGN_SIGHT); @@ -521,7 +521,7 @@ void dCsGame_c::lytItemCursor_c::lytPachinkoCsr_c::executeState_ChargeFull() { if (field_0x50) { if (mAnm[MAIN_ANIM_SLING_PEAK].isEndReached()) { mpLyt->calc(); - } else if (mAnm[MAIN_ANIM_SLING_PEAK].isFlag2()) { + } else if (mAnm[MAIN_ANIM_SLING_PEAK].isEnabled()) { mAnm[MAIN_ANIM_SLING_PEAK].play(); } } else { @@ -555,7 +555,7 @@ void dCsGame_c::lytItemCursor_c::lytVacuumCsr_c::executeState_Normal() { if (field_0x5C) { mAnm[MAIN_ANIM_VACUUM_LOCK].setAnimEnable(true); mAnm[MAIN_ANIM_VACUUM_LOCK].setForward(); - mAnm[MAIN_ANIM_VACUUM_LOCK].setToEnd2(); + mAnm[MAIN_ANIM_VACUUM_LOCK].setToStart(); mAnm[MAIN_ANIM_LOOP].setAnimEnable(false); mStateMgr.changeState(StateID_ToLock); } else { @@ -583,7 +583,7 @@ void dCsGame_c::lytItemCursor_c::lytVacuumCsr_c::executeState_Lock() { if (!field_0x5C) { mAnm[MAIN_ANIM_VACUUM_LOCK].setAnimEnable(true); mAnm[MAIN_ANIM_VACUUM_LOCK].setBackward(); - mAnm[MAIN_ANIM_VACUUM_LOCK].setToEnd2(); + mAnm[MAIN_ANIM_VACUUM_LOCK].setToStart(); mAnm[MAIN_ANIM_LOCK_LOOP].setAnimEnable(false); mStateMgr.changeState(StateID_ToNormal); } else { diff --git a/src/d/lyt/d2d.cpp b/src/d/lyt/d2d.cpp index 4a550e83..41551895 100644 --- a/src/d/lyt/d2d.cpp +++ b/src/d/lyt/d2d.cpp @@ -441,8 +441,7 @@ void LytBase_c::setPropertiesRecursive(nw4r::lyt::Pane *pane, f32 posX, f32 posY } } -extern "C" const char *fn_801B2600(const char *); -extern "C" void fn_800AF930(dTextBox_c *, const char *); +extern "C" const wchar_t *fn_801B2600(const char *); extern "C" void fn_800B0F40(dTextBox_c *); void LytBase_c::setProperties(nw4r::lyt::Pane *pane, f32 posX, f32 posY, f32 scale, f32 spaceX, f32 spaceY) { @@ -612,7 +611,7 @@ bool LytBase_c::fn_800ABCE0( return false; } - fn_800AF930(textbox1, fn_801B2600(text)); + textbox1->fn_800AF930(fn_801B2600(text)); return true; } @@ -823,11 +822,11 @@ bool AnmGroupBase_c::setDirection(bool b) { } nw4r::lyt::BindAnimation(mpGroup, anmTransform, false, b); - mFlags |= 1; + mFlags |= ANMGROUP_FLAG_BOUND; if (b) { - mFlags = (mFlags & ~2); + mFlags = (mFlags & ~ANMGROUP_FLAG_ENABLE); } else { - mFlags |= 2; + mFlags |= ANMGROUP_FLAG_ENABLE; } u32 flags = 1; @@ -852,7 +851,7 @@ bool AnmGroupBase_c::unbind() { } nw4r::lyt::UnbindAnimation(group, anmTransform, mAnmResource.IsDescendingBind()); - mFlags = (mFlags & ~1); + mFlags = (mFlags & ~ANMGROUP_FLAG_BOUND); return true; } @@ -865,9 +864,9 @@ void AnmGroupBase_c::setAnimEnable(bool b) { nw4r::lyt::AnimTransform *anmTransform = mpAnmTransform; nw4r::lyt::SetAnimationEnable(group, anmTransform, b, mAnmResource.IsDescendingBind()); if (b) { - mFlags |= 2; + mFlags |= ANMGROUP_FLAG_ENABLE; } else { - mFlags = mFlags & ~2; + mFlags = mFlags & ~ANMGROUP_FLAG_ENABLE; } } diff --git a/src/d/lyt/d_lyt_area_caption.cpp b/src/d/lyt/d_lyt_area_caption.cpp index a6cc41d2..e9d5eaf5 100644 --- a/src/d/lyt/d_lyt_area_caption.cpp +++ b/src/d/lyt/d_lyt_area_caption.cpp @@ -89,7 +89,7 @@ bool dLytAreaCaptionParts_c::update() { mStateMgr.executeState(); if (*mStateMgr.getStateID() != StateID_Wait) { for (int i = 0; i < 4; i++) { - if (mAnmCtrlInUse[i] && mAnmGroups[i].isFlag2()) { + if (mAnmCtrlInUse[i] && mAnmGroups[i].isEnabled()) { mAnmGroups[i].play(); } } diff --git a/src/d/lyt/d_lyt_battery.cpp b/src/d/lyt/d_lyt_battery.cpp index 8fd26006..1b1f5f16 100644 --- a/src/d/lyt/d_lyt_battery.cpp +++ b/src/d/lyt/d_lyt_battery.cpp @@ -65,7 +65,7 @@ bool dLytBattery_c::doDraw() { mStateMgr.executeState(); if (*mStateMgr.getStateID() != StateID_Off) { for (int i = 0; i < 4; i++) { - if (mAnmGroups[i].isFlag2()) { + if (mAnmGroups[i].isEnabled()) { mAnmGroups[i].play(); } } diff --git a/src/d/lyt/d_lyt_bird_gauge.cpp b/src/d/lyt/d_lyt_bird_gauge.cpp index 871ddc31..5fd5337a 100644 --- a/src/d/lyt/d_lyt_bird_gauge.cpp +++ b/src/d/lyt/d_lyt_bird_gauge.cpp @@ -137,7 +137,7 @@ bool dLytBirdGaugeMain_c::build(d2d::ResAccIf_c *resAcc) { bool dLytBirdGaugeMain_c::execute() { mStateMgr.executeState(); for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) { - if (mAnmGroups[i].isFlag2()) { + if (mAnmGroups[i].isEnabled()) { mAnmGroups[i].play(); } } diff --git a/src/d/lyt/d_lyt_common_icon_item.cpp b/src/d/lyt/d_lyt_common_icon_item.cpp index 54e3d1da..379bdb3a 100644 --- a/src/d/lyt/d_lyt_common_icon_item.cpp +++ b/src/d/lyt/d_lyt_common_icon_item.cpp @@ -1,6 +1,892 @@ #include "d/lyt/d_lyt_common_icon_item.h" +#include "common.h" +#include "d/d_cs_base.h" +#include "d/lyt/d_structd.h" + +#include <cstring> + STATE_DEFINE(dLytCommonIconItem_c, None); STATE_DEFINE(dLytCommonIconItem_c, In); STATE_DEFINE(dLytCommonIconItem_c, Wait); STATE_DEFINE(dLytCommonIconItem_c, Out); + +static const d2d::LytBrlanMapping brlanMapPart1[] = { + { "commonIcon_02_size.brlan", "G_size_00"}, + {"commonIcon_02_bocoburin.brlan", "G_bocoburin_00"}, + { "commonIcon_02_numberV.brlan", "G_numberV_00"}, + { "commonIcon_02_item.brlan", "G_icon_00"}, + {"commonIcon_02_textColor.brlan", "G_textColor_00"}, + { "commonIcon_02_onOff.brlan", "G_btn_00"}, + { "commonIcon_02_decide.brlan", "G_btn_00"}, +}; + +// S = shadow +static const char *part1TextBoxes[] = { + "T_comNumberS_01", + "T_comNumber_01", +}; + +static const char *part1Bounding = "B_item_00"; + +#define LYT_COMMON_ICON_PART_1_ANIM_SIZE 0 +#define LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN 1 +#define LYT_COMMON_ICON_PART_1_ANIM_NUMBERV 2 +#define LYT_COMMON_ICON_PART_1_ANIM_ICON 3 +#define LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR 4 +#define LYT_COMMON_ICON_PART_1_ANIM_ONOFF 5 +#define LYT_COMMON_ICON_PART_1_ANIM_DECIDE 6 + +#define LYT_COMMON_ICON_PART_1_NUM_ANIMS 7 + +bool dLytCommonIconItemPart1_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("commonIcon_02.brlyt", nullptr); + for (int i = 0; i < LYT_COMMON_ICON_PART_1_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapPart1[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart1[i].mName); + mAnm[i].setDirection(false); + mAnm[i].setRate(1.0f); + } + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(part1TextBoxes[i]); + } + + mpBounding = mLyt.findBounding(part1Bounding); + reset(); + return true; +} + +bool dLytCommonIconItemPart1_c::remove() { + for (int i = 0; i < LYT_COMMON_ICON_PART_1_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].afterUnbind(); + } + return true; +} + +bool dLytCommonIconItemPart1_c::execute() { + if (mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].isEnabled() && mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].isStop2()) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setAnimEnable(false); + } + + if (mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].isEnabled() && mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].isStop2()) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setAnimEnable(false); + } + + for (int i = 0; i < LYT_COMMON_ICON_PART_1_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + return true; +} + +void dLytCommonIconItemPart1_c::reset() { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setFrame(1.0f); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setBackwardsOnce(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setToEnd2(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setToEnd2(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setAnimEnable(true); + + mLyt.calc(); + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setAnimEnable(false); +} + +void dLytCommonIconItemPart1_c::setItem(u8 item) { + realizeUnk(); + realizeNumber(); + realizeSize(); + realizeBocoburin(); + realizeItem(item); +} + +void dLytCommonIconItemPart1_c::realizeUnk() { + // Probably related to field_0x2B4 +} + +void dLytCommonIconItemPart1_c::realizeNumber() { + if (mHasNumber) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setFrame(1.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setFrame(0.0f); + } + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_NUMBERV].setAnimEnable(false); +} + +void dLytCommonIconItemPart1_c::realizeSize() { + if (mSize) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setFrame(0.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setFrame(1.0f); + } + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_SIZE].setAnimEnable(false); +} + +void dLytCommonIconItemPart1_c::realizeBocoburin() { + if (mBocoburinLocked) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setFrame(1.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setFrame(0.0f); + } + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_BOCOBURIN].setAnimEnable(false); +} + +void dLytCommonIconItemPart1_c::realizeItem(u8 item) { + // Inline? + if (mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].getEndFrameRaw() - 1.0f < item) { + field_0x28C = 0; + } else { + field_0x28C = item; + } + + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setFrame(field_0x28C); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ICON].setAnimEnable(false); + mpBounding->SetVisible(true); +} + +void dLytCommonIconItemPart1_c::setNumber(s32 number) { + std::memset(mNumberBuf, 0, sizeof(mNumberBuf)); + swprintf(mNumberBuf, ARRAY_LENGTH(mNumberBuf), L"%d", number); + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->fn_800AF930(mNumberBuf); + } +} + +void dLytCommonIconItemPart1_c::setNumberColor(u8 color) { + mColor = color; + switch (mColor) { + case 0: mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setFrame(0.0f); break; + case 1: mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setFrame(1.0f); break; + case 2: mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setFrame(2.0f); break; + } + mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_TEXTCOLOR].setAnimEnable(false); +} + +void dLytCommonIconItemPart1_c::setOn() { + if (mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].isPlayingBackwardsOnce()) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setAnimEnable(true); + } +} + +void dLytCommonIconItemPart1_c::setOff() { + if (mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].isPlayingForwardsOnce()) { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setBackwardsOnce(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_ONOFF].setAnimEnable(true); + } +} + +void dLytCommonIconItemPart1_c::startDecide() { + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setToStart(); + mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].setAnimEnable(true); +} + +bool dLytCommonIconItemPart1_c::isDoneDeciding() const { + return mAnm[LYT_COMMON_ICON_PART_1_ANIM_DECIDE].isStop2(); +} + +bool dLytCommonIconItemPart1_c::isCursorOver() const { + d2d::dLytStructD *d = dCsBase_c::GetInstance()->getUnk(); + if (d != nullptr && d->getType() == 'lyt ' && d->field_0x24 == mpBounding) { + return true; + } + return false; +} + +void dLytCommonIconItemPart1_c::setVisible(bool visible) { + if (visible) { + mpBounding->SetVisible(true); + } else { + mpBounding->SetVisible(false); + } +} + +static const d2d::LytBrlanMapping brlanMapPart2[] = { + { "commonIcon_03_shieldOnOff.brlan", "G_shiledOnOff_00"}, + { "commonIcon_03_shieldType.brlan", "G_type_00"}, + {"commonIcon_03_shieldUpDown.brlan", "G_gauge_00"}, + { "commonIcon_03_size.brlan", "G_size_00"}, + { "commonIcon_03_bocoburin.brlan", "G_bocoburin_00"}, + { "commonIcon_03_numberV.brlan", "G_numberV_00"}, + { "commonIcon_03_poach.brlan", "G_icon_00"}, + { "commonIcon_03_textColor.brlan", "G_textColor_00"}, + { "commonIcon_03_onOff.brlan", "G_btn_00"}, + { "commonIcon_03_decide.brlan", "G_btn_00"}, +}; + +static const char *part2TextBoxes[] = { + "T_comNumberS_01", + "T_comNumber_01", +}; + +static const char *part2Bounding = "B_poach_00"; + +#define LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF 0 +#define LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE 1 +#define LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE 2 +#define LYT_COMMON_ICON_PART_2_ANIM_SIZE 3 +#define LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN 4 +#define LYT_COMMON_ICON_PART_2_ANIM_NUMBERV 5 +#define LYT_COMMON_ICON_PART_2_ANIM_ICON 6 +#define LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR 7 +#define LYT_COMMON_ICON_PART_2_ANIM_ONOFF 8 +#define LYT_COMMON_ICON_PART_2_ANIM_DECIDE 9 + +#define LYT_COMMON_ICON_PART_2_NUM_ANIMS 10 + +bool dLytCommonIconItemPart2_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("commonIcon_03.brlyt", nullptr); + for (int i = 0; i < LYT_COMMON_ICON_PART_2_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapPart2[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart2[i].mName); + mAnm[i].setDirection(false); + mAnm[i].setRate(1.0f); + } + + for (int i = 0; i < 2; i++) { + mpTextBoxes[i] = mLyt.getTextBox(part2TextBoxes[i]); + } + + mpBounding = mLyt.findBounding(part2Bounding); + reset(); + return true; +} + +bool dLytCommonIconItemPart2_c::remove() { + for (int i = 0; i < LYT_COMMON_ICON_PART_2_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].afterUnbind(); + } + return true; +} + +bool dLytCommonIconItemPart2_c::execute() { + if (mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].isEnabled() && mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].isStop2()) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setAnimEnable(false); + } + + if (mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].isEnabled() && mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].isStop2()) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setAnimEnable(false); + } + + for (int i = 0; i < LYT_COMMON_ICON_PART_2_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + return true; +} + +void dLytCommonIconItemPart2_c::reset() { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setFrame(1.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setBackwardsOnce(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setToEnd2(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setToEnd2(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setAnimEnable(true); + + mLyt.calc(); + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setAnimEnable(false); +} + +void dLytCommonIconItemPart2_c::setShieldOnOff(bool onOff) { + if (getShieldType() != 4) { + mOnOff = onOff; + realizeShieldOnOff(mOnOff); + } +} + +void dLytCommonIconItemPart2_c::setItem(u8 item) { + if (item == 32) { + return; + } + + u8 mappedItem = item; + realizeUnk(); + if (item == 9) { + if (mNumber == 1) { + mappedItem = 50; + } else if (mNumber == 2) { + mappedItem = 9; + } + mHasNumber = false; + realizeNumber(); + } else if (item == 43) { + if (mNumber == 1) { + mappedItem = 51; + } else if (mNumber == 2) { + mappedItem = 43; + } + mHasNumber = false; + realizeNumber(); + } else { + realizeNumber(); + } + + realizeSize(); + realizeBocoburin(); + realizeItem(mappedItem); + u8 shieldType = getShieldType(); + if (shieldType != 4) { + realizeShieldOnOff(true); + } else { + realizeShieldOnOff(false); + } + + if (shieldType != 4) { + realizeShieldType(shieldType); + setDurability(0.0f); + } +} + +void dLytCommonIconItemPart2_c::realizeUnk() { + // Probably related to field_0x??? +} + +void dLytCommonIconItemPart2_c::realizeNumber() { + if (mHasNumber) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setFrame(1.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setFrame(0.0f); + } + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_NUMBERV].setAnimEnable(false); +} + +void dLytCommonIconItemPart2_c::realizeSize() { + if (mSize) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setFrame(0.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setFrame(1.0f); + } + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SIZE].setAnimEnable(false); +} + +void dLytCommonIconItemPart2_c::realizeBocoburin() { + if (mBocoburinLocked) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setFrame(1.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setFrame(0.0f); + } + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_BOCOBURIN].setAnimEnable(false); +} + +void dLytCommonIconItemPart2_c::realizeItem(u8 item) { + // Inline? + if (mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].getEndFrameRaw() - 1.0f < item) { + mItem = 0; + } else { + mItem = item; + } + + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setFrame(mItem); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ICON].setAnimEnable(false); + mpBounding->SetVisible(true); +} + +void dLytCommonIconItemPart2_c::realizeShieldOnOff(bool onOff) { + mOnOff = onOff; + if (onOff) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setFrame(0.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setFrame(1.0f); + } + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_ONOFF].setAnimEnable(false); +} + +u8 dLytCommonIconItemPart2_c::getShieldType() const { + switch (mItem) { + case 2: + case 15: + case 16: return 0; // Wooden Shield + case 3: + case 17: + case 18: return 1; // Iron Shield + case 4: + case 19: + case 20: return 2; // Goddess Shield + case 5: return 3; // Hylia's Shield + default: return 4; + } +} + +void dLytCommonIconItemPart2_c::realizeShieldType(u8 type) { + if (mOnOff) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setFrame(type); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_TYPE].setAnimEnable(false); + } +} + +void dLytCommonIconItemPart2_c::setNumber(s32 number) { + mNumber = number; + std::memset(mNumberBuf, 0, sizeof(mNumberBuf)); + swprintf(mNumberBuf, ARRAY_LENGTH(mNumberBuf), L"%d", number); + for (int i = 0; i < 2; i++) { + mpTextBoxes[i]->fn_800AF930(mNumberBuf); + } +} + +void dLytCommonIconItemPart2_c::setNumberColor(u8 color) { + mColor = color; + switch (mColor) { + case 0: mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setFrame(0.0f); break; + case 1: mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setFrame(1.0f); break; + case 2: mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setFrame(2.0f); break; + } + mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_TEXTCOLOR].setAnimEnable(false); +} + +void dLytCommonIconItemPart2_c::setOn() { + if (mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].isPlayingBackwardsOnce()) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setAnimEnable(true); + } +} + +void dLytCommonIconItemPart2_c::setOff() { + if (mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].isPlayingForwardsOnce()) { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setBackwardsOnce(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_ONOFF].setAnimEnable(true); + } +} + +void dLytCommonIconItemPart2_c::startDecide() { + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setForwardOnce(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setToStart(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].setAnimEnable(true); +} + +bool dLytCommonIconItemPart2_c::isDoneDeciding() const { + return mAnm[LYT_COMMON_ICON_PART_2_ANIM_DECIDE].isStop2(); +} + +bool dLytCommonIconItemPart2_c::isCursorOver() const { + d2d::dLytStructD *d = dCsBase_c::GetInstance()->getUnk(); + if (d != nullptr && d->getType() == 'lyt ' && d->field_0x24 == mpBounding) { + return true; + } + return false; +} + +void dLytCommonIconItemPart2_c::setVisible(bool visible) { + if (visible) { + mpBounding->SetVisible(true); + } else { + mpBounding->SetVisible(false); + } +} + +void dLytCommonIconItemPart2_c::setDurability(f32 durability) { + if (mOnOff) { + mDurability = durability; + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setFrameRatio(durability); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_2_ANIM_SHIELD_GAUGE].setAnimEnable(false); + } +} + +static const d2d::LytBrlanMapping brlanMapPart3[] = { + { "commonIcon_04_size.brlan", "G_size_00"}, + {"commonIcon_04_bocoburin.brlan", "G_bocoburin_00"}, + { "commonIcon_04_dauzing.brlan", "G_icon_00"}, +}; + +static const char *part3Bounding = "B_dauz_00"; + +#define LYT_COMMON_ICON_PART_3_ANIM_SIZE 0 +#define LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN 1 +#define LYT_COMMON_ICON_PART_3_ANIM_ICON 2 + +#define LYT_COMMON_ICON_PART_3_NUM_ANIMS 3 + +bool dLytCommonIconItemPart3_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("commonIcon_04.brlyt", nullptr); + for (int i = 0; i < LYT_COMMON_ICON_PART_3_NUM_ANIMS; i++) { + mAnm[i].init(brlanMapPart3[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart3[i].mName); + mAnm[i].setDirection(false); + mAnm[i].setRate(1.0f); + } + + mpBounding = mLyt.findBounding(part3Bounding); + reset(); + return true; +} + +bool dLytCommonIconItemPart3_c::remove() { + for (int i = 0; i < LYT_COMMON_ICON_PART_3_NUM_ANIMS; i++) { + mAnm[i].unbind(); + mAnm[i].afterUnbind(); + } + return true; +} + +bool dLytCommonIconItemPart3_c::execute() { + for (int i = 0; i < LYT_COMMON_ICON_PART_3_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + return true; +} + +void dLytCommonIconItemPart3_c::reset() { + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setFrame(1.0f); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setAnimEnable(true); + + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setFrame(0.0f); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setAnimEnable(true); + + mLyt.calc(); + + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setAnimEnable(false); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setAnimEnable(false); +} + +void dLytCommonIconItemPart3_c::setItem(u8 item) { + realizeSize(); + realizeBocoburin(); + realizeItem(item); +} + +void dLytCommonIconItemPart3_c::realizeSize() { + if (mSize) { + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setFrame(0.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setFrame(1.0f); + } + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_SIZE].setAnimEnable(false); +} + +void dLytCommonIconItemPart3_c::realizeBocoburin() { + if (mBocoburinLocked) { + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setFrame(1.0f); + } else { + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setFrame(0.0f); + } + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_BOCOBURIN].setAnimEnable(false); +} + +void dLytCommonIconItemPart3_c::realizeItem(u8 item) { + if (mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].getEndFrameRaw() - 1.0f < item) { + mItem = 0; + } else { + mItem = item; + } + // @bug ignoring the check above + mItem = item; + + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setFrame(mItem); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setAnimEnable(true); + mLyt.calc(); + mAnm[LYT_COMMON_ICON_PART_3_ANIM_ICON].setAnimEnable(false); + mpBounding->SetVisible(true); +} + +bool dLytCommonIconItemPart3_c::isCursorOver() const { + d2d::dLytStructD *d = dCsBase_c::GetInstance()->getUnk(); + if (d != nullptr && d->getType() == 'lyt ' && d->field_0x24 == mpBounding) { + return true; + } + return false; +} + +void dLytCommonIconItemPart3_c::setVisible(bool visible) { + if (visible) { + mpBounding->SetVisible(true); + } else { + mpBounding->SetVisible(false); + } +} + +// Incredible use of the state manager here +void dLytCommonIconItem_c::initializeState_None() {} +void dLytCommonIconItem_c::executeState_None() {} +void dLytCommonIconItem_c::finalizeState_None() {} + +void dLytCommonIconItem_c::initializeState_In() {} +void dLytCommonIconItem_c::executeState_In() {} +void dLytCommonIconItem_c::finalizeState_In() {} + +void dLytCommonIconItem_c::initializeState_Wait() {} +void dLytCommonIconItem_c::executeState_Wait() {} +void dLytCommonIconItem_c::finalizeState_Wait() {} + +void dLytCommonIconItem_c::initializeState_Out() {} +void dLytCommonIconItem_c::executeState_Out() {} +void dLytCommonIconItem_c::finalizeState_Out() {} + +bool dLytCommonIconItem_c::build(d2d::ResAccIf_c *resAcc) { + build(resAcc, 1); + return true; +} + +bool dLytCommonIconItem_c::build(d2d::ResAccIf_c *resAcc, u8 variant) { + mPart = variant; + switch (mPart) { + case 0: mPart1.build(resAcc); break; + case 1: mPart2.build(resAcc); break; + case 2: mPart3.build(resAcc); break; + } + return true; +} + +bool dLytCommonIconItem_c::remove() { + switch (mPart) { + case 0: mPart1.remove(); break; + case 1: mPart2.remove(); break; + case 2: mPart3.remove(); break; + } + return true; +} + +bool dLytCommonIconItem_c::execute() { + switch (mPart) { + case 0: mPart1.execute(); break; + case 1: mPart2.execute(); break; + case 2: mPart3.execute(); break; + } + return true; +} + +void dLytCommonIconItem_c::reset() { + switch (mPart) { + case 0: mPart1.reset(); break; + case 1: mPart2.reset(); break; + case 2: mPart3.reset(); break; + } +} + +void dLytCommonIconItem_c::setUnk(bool unk) { + switch (mPart) { + case 0: mPart1.setUnk(unk); break; + case 1: mPart2.setUnk(unk); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setHasNumber(bool hasNumber) { + switch (mPart) { + case 0: mPart1.setHasNumber(hasNumber); break; + case 1: mPart2.setHasNumber(hasNumber); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setSize(bool size) { + switch (mPart) { + case 0: mPart1.setSize(size); break; + case 1: mPart2.setSize(size); break; + case 2: mPart3.setSize(size); break; + } +} + +void dLytCommonIconItem_c::setBocoburinLocked(bool locked) { + switch (mPart) { + case 0: mPart1.setBocoburinLocked(locked); break; + case 1: mPart2.setBocoburinLocked(locked); break; + case 2: mPart3.setBocoburinLocked(locked); break; + } +} + +void dLytCommonIconItem_c::setItem(u8 item) { + switch (mPart) { + case 0: mPart1.setItem(item); break; + case 1: mPart2.setItem(item); break; + case 2: mPart3.setItem(item); break; + } +} + +void dLytCommonIconItem_c::setShieldDurability(f32 durability) { + switch (mPart) { + case 0: break; + case 1: mPart2.setDurability(durability); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setShieldOnOff(bool onOff) { + switch (mPart) { + case 0: break; + case 1: mPart2.setShieldOnOff(onOff); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setNumber(s32 number) { + switch (mPart) { + case 0: mPart1.setNumber(number); break; + case 1: mPart2.setNumber(number); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setNumberColor(u8 color) { + switch (mPart) { + case 0: mPart1.setNumberColor(color); break; + case 1: mPart2.setNumberColor(color); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setOn() { + switch (mPart) { + case 0: mPart1.setOn(); break; + case 1: mPart2.setOn(); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::setOff() { + switch (mPart) { + case 0: mPart1.setOff(); break; + case 1: mPart2.setOff(); break; + case 2: break; + } +} + +void dLytCommonIconItem_c::startDecide() { + switch (mPart) { + case 0: mPart1.startDecide(); break; + case 1: mPart2.startDecide(); break; + case 2: break; + } +} + +bool dLytCommonIconItem_c::isDoneDeciding() const { + switch (mPart) { + case 0: + if (mPart1.isDoneDeciding()) { + return true; + } + break; + case 1: + if (mPart2.isDoneDeciding()) { + return true; + } + break; + } + return false; +} + +bool dLytCommonIconItem_c::isCursorOver() const { + switch (mPart) { + case 0: + if (mPart1.isCursorOver()) { + return true; + } + break; + case 1: + if (mPart2.isCursorOver()) { + return true; + } + break; + case 2: + if (mPart3.isCursorOver()) { + return true; + } + break; + } + return false; +} + +void dLytCommonIconItem_c::setVisible(bool visible) { + switch (mPart) { + case 0: mPart1.setVisible(visible); break; + case 1: mPart2.setVisible(visible); break; + case 2: mPart3.setVisible(visible); break; + } +} diff --git a/src/d/lyt/d_lyt_fader.cpp b/src/d/lyt/d_lyt_fader.cpp index b0488618..8e215e89 100644 --- a/src/d/lyt/d_lyt_fader.cpp +++ b/src/d/lyt/d_lyt_fader.cpp @@ -39,7 +39,7 @@ void dLytFader_c::setStatus(EStatus status) { mLytBase.unbindAnims(); d2d::AnmGroup_c *s = &mLytStructAs[0]; s->setDirection(false); - s->setToStart(); + s->setFrame(0.0f); s->setAnimEnable(true); mLytBase.calc(); fn_80175BC0(2); @@ -112,6 +112,7 @@ void dLytFader_c::fn_801758F0() { s->setDirection(false); s->setFrame(0.0f); s->setRate(20.0f / (mFrame - 1)); + s->setAnimEnable(true); mLytBase.getLayout()->GetRootPane()->SetVisible(true); } @@ -132,6 +133,7 @@ void dLytFader_c::fn_80175A50() { s->setDirection(false); s->setFrame(0.0f); s->setRate(20.0f / (mFrame - 1)); + s->setAnimEnable(true); mLytBase.getLayout()->GetRootPane()->SetVisible(true); } diff --git a/src/d/lyt/d_lyt_note.cpp b/src/d/lyt/d_lyt_note.cpp index e31767ed..e4b83f07 100644 --- a/src/d/lyt/d_lyt_note.cpp +++ b/src/d/lyt/d_lyt_note.cpp @@ -60,7 +60,7 @@ void dLytNote_c::executeState_In() { mStateMgr.changeState(StateID_Move); } - if (mAnmGroups[NOTE_ANIM_GET].isFlag2()) { + if (mAnmGroups[NOTE_ANIM_GET].isEnabled()) { mAnmGroups[NOTE_ANIM_GET].play(); } } @@ -129,7 +129,7 @@ void dLytNote_c::executeState_Out() { mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[mOutAnim].isFlag2()) { + if (mAnmGroups[mOutAnim].isEnabled()) { mAnmGroups[mOutAnim].play(); } } diff --git a/src/d/lyt/d_lyt_pause_disp_00.cpp b/src/d/lyt/d_lyt_pause_disp_00.cpp index cd0ecb45..2e94dcfb 100644 --- a/src/d/lyt/d_lyt_pause_disp_00.cpp +++ b/src/d/lyt/d_lyt_pause_disp_00.cpp @@ -27,7 +27,7 @@ void dLytPauseDisp00_c::init() { } for (int i = 0; i < 0x18; i++) { - field_0x2050[i].init(nullptr, lbl_804E8898[i]); + field_0x2050[i].build(nullptr, lbl_804E8898[i]); mSubpanes.PushBack(&field_0xE11C[i]); } diff --git a/src/d/lyt/d_lyt_sky_gauge.cpp b/src/d/lyt/d_lyt_sky_gauge.cpp index 696e9736..7e961ec3 100644 --- a/src/d/lyt/d_lyt_sky_gauge.cpp +++ b/src/d/lyt/d_lyt_sky_gauge.cpp @@ -85,7 +85,7 @@ bool dLytSkyGaugeMain_c::execute() { mStateMgr.executeState(); for (int i = 0; i < 2; i++) { - if (mAnmGroups[i].isFlag2()) { + if (mAnmGroups[i].isEnabled()) { if (mAnmGroups[i].isStop()) { mAnmGroups[i].setAnimEnable(false); if (i == 0) { diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 637deee9..2ce06aab 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -37,7 +37,8 @@ void dLytMeter1Button_c::executeState_Wait() { void dLytMeter1Button_c::finalizeState_Wait() {} void dLytMeter1Button_c::initializeState_ToUse() { - mAnmGroups[0].playBackwardsOnce(); + mAnmGroups[0].setBackwardsOnce(); + mAnmGroups[0].setToStart(); mAnmGroups[0].setAnimEnable(true); } void dLytMeter1Button_c::executeState_ToUse() { @@ -45,7 +46,7 @@ void dLytMeter1Button_c::executeState_ToUse() { mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[0].isFlag2()) { + if (mAnmGroups[0].isEnabled()) { mAnmGroups[0].play(); } } @@ -54,7 +55,8 @@ void dLytMeter1Button_c::finalizeState_ToUse() { } void dLytMeter1Button_c::initializeState_ToUnuse() { - mAnmGroups[0].playLoop(); + mAnmGroups[0].setForwardOnce(); + mAnmGroups[0].setToStart(); mAnmGroups[0].setAnimEnable(true); } void dLytMeter1Button_c::executeState_ToUnuse() { @@ -62,7 +64,7 @@ void dLytMeter1Button_c::executeState_ToUnuse() { mStateMgr.changeState(StateID_Unuse); } - if (mAnmGroups[0].isFlag2()) { + if (mAnmGroups[0].isEnabled()) { mAnmGroups[0].play(); } } @@ -148,7 +150,8 @@ void dLytMeter2Button_c::executeState_Wait() { void dLytMeter2Button_c::finalizeState_Wait() {} void dLytMeter2Button_c::initializeState_ToUse() { - mAnmGroups[0].playBackwardsOnce(); + mAnmGroups[0].setBackwardsOnce(); + mAnmGroups[0].setToStart(); mAnmGroups[0].setAnimEnable(true); } void dLytMeter2Button_c::executeState_ToUse() { @@ -156,7 +159,7 @@ void dLytMeter2Button_c::executeState_ToUse() { mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[0].isFlag2()) { + if (mAnmGroups[0].isEnabled()) { mAnmGroups[0].play(); } } @@ -165,7 +168,8 @@ void dLytMeter2Button_c::finalizeState_ToUse() { } void dLytMeter2Button_c::initializeState_ToUnuse() { - mAnmGroups[0].playLoop(); + mAnmGroups[0].setForwardOnce(); + mAnmGroups[0].setToStart(); mAnmGroups[0].setAnimEnable(true); } void dLytMeter2Button_c::executeState_ToUnuse() { @@ -173,7 +177,7 @@ void dLytMeter2Button_c::executeState_ToUnuse() { mStateMgr.changeState(StateID_Unuse); } - if (mAnmGroups[0].isFlag2()) { + if (mAnmGroups[0].isEnabled()) { mAnmGroups[0].play(); } } 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 6b87fc34..204f31fc 100644 --- a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp @@ -26,23 +26,24 @@ void dLytMeterABtn_c::executeState_InvisibleWait() { void dLytMeterABtn_c::finalizeState_InvisibleWait() {} void dLytMeterABtn_c::initializeState_In() { - mpContainerAnmGroup1->setToEnd2(); + mpContainerAnmGroup1->setToStart(); mpContainerAnmGroup1->setAnimEnable(true); - mAnmGroups[0].playBackwardsOnce(); + mAnmGroups[0].setBackwardsOnce(); + mAnmGroups[0].setToStart(); } void dLytMeterABtn_c::executeState_In() { if (mpContainerAnmGroup1->isEndReached()) { mpContainerAnmGroup1->setAnimEnable(false); mStateMgr.changeState(StateID_Wait); } - if (mpContainerAnmGroup1->isFlag2()) { + if (mpContainerAnmGroup1->isEnabled()) { mpContainerAnmGroup1->play(); } } void dLytMeterABtn_c::finalizeState_In() {} void dLytMeterABtn_c::initializeState_Out() { - mpContainerAnmGroup2->setToEnd2(); + mpContainerAnmGroup2->setToStart(); mpContainerAnmGroup2->setAnimEnable(true); } void dLytMeterABtn_c::executeState_Out() { @@ -50,7 +51,7 @@ void dLytMeterABtn_c::executeState_Out() { mpContainerAnmGroup2->setAnimEnable(false); mStateMgr.changeState(StateID_InvisibleWait); } - if (mpContainerAnmGroup2->isFlag2()) { + if (mpContainerAnmGroup2->isEnabled()) { mpContainerAnmGroup2->play(); } } diff --git a/src/d/lyt/meter/d_lyt_meter_drink.cpp b/src/d/lyt/meter/d_lyt_meter_drink.cpp index a935ee46..2715fc8b 100644 --- a/src/d/lyt/meter/d_lyt_meter_drink.cpp +++ b/src/d/lyt/meter/d_lyt_meter_drink.cpp @@ -19,10 +19,10 @@ STATE_DEFINE(dLytMeterDrink_c, Out); void dLytMeterDrinkParts_c::initializeState_Invisible() { if (field_0x51) { - if (mAnmGroups[2]->isFlag2()) { + if (mAnmGroups[2]->isEnabled()) { mAnmGroups[2]->setAnimEnable(false); } - if (!mAnmGroups[0]->isFlag2()) { + if (!mAnmGroups[0]->isEnabled()) { mAnmGroups[0]->setAnimEnable(true); } mAnmGroups[0]->setFrame(0.0f); @@ -32,7 +32,7 @@ void dLytMeterDrinkParts_c::initializeState_Invisible() { } } void dLytMeterDrinkParts_c::executeState_Invisible() { - if (mAnmGroups[0]->isFlag2()) { + if (mAnmGroups[0]->isEnabled()) { mAnmGroups[0]->setAnimEnable(false); } if (field_0x50) { @@ -43,7 +43,7 @@ void dLytMeterDrinkParts_c::finalizeState_Invisible() {} void dLytMeterDrinkParts_c::initializeState_In() { if (field_0x51) { - if (mAnmGroups[2]->isFlag2()) { + if (mAnmGroups[2]->isEnabled()) { mAnmGroups[2]->setAnimEnable(false); } mAnmGroups[0]->setToEnd(); @@ -59,7 +59,7 @@ void dLytMeterDrinkParts_c::executeState_In() { mStateMgr.changeState(StateID_Visible); } - if (mAnmGroups[0]->isFlag2()) { + if (mAnmGroups[0]->isEnabled()) { mAnmGroups[0]->play(); } } @@ -67,7 +67,7 @@ void dLytMeterDrinkParts_c::finalizeState_In() {} void dLytMeterDrinkParts_c::initializeState_Visible() { if (field_0x51) { - if (mAnmGroups[2]->isFlag2()) { + if (mAnmGroups[2]->isEnabled()) { mAnmGroups[2]->setAnimEnable(false); } mAnmGroups[0]->setAnimEnable(true); @@ -77,7 +77,7 @@ void dLytMeterDrinkParts_c::initializeState_Visible() { } void dLytMeterDrinkParts_c::executeState_Visible() { - if (mAnmGroups[0]->isFlag2()) { + if (mAnmGroups[0]->isEnabled()) { mAnmGroups[0]->setAnimEnable(false); } @@ -89,7 +89,7 @@ void dLytMeterDrinkParts_c::finalizeState_Visible() {} void dLytMeterDrinkParts_c::initializeState_Out() { if (field_0x51) { - if (mAnmGroups[0]->isFlag2()) { + if (mAnmGroups[0]->isEnabled()) { mAnmGroups[0]->setAnimEnable(false); } mAnmGroups[2]->setToEnd(); @@ -108,7 +108,7 @@ void dLytMeterDrinkParts_c::executeState_Out() { field_0x50 = 0; mStateMgr.changeState(StateID_Invisible); } - if (mAnmGroups[2]->isFlag2()) { + if (mAnmGroups[2]->isEnabled()) { mAnmGroups[2]->play(); } } @@ -255,7 +255,7 @@ void dLytMeterDrink_c::executeState_In() { mAnmGroups[0].setAnimEnable(false); mStateMgr.changeState(StateID_Wait); } - if (mAnmGroups[0].isFlag2()) { + if (mAnmGroups[0].isEnabled()) { mAnmGroups[0].play(); } } @@ -336,7 +336,7 @@ void dLytMeterDrink_c::executeState_Move() { mLyt.calc(); for (int i = 0; i < 3; i++) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].isEnabled()) { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].setAnimEnable(false); } } @@ -344,7 +344,7 @@ void dLytMeterDrink_c::executeState_Move() { } for (int i = 0; i < 3; i++) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].isEnabled()) { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_MOVE + i].play(); } } @@ -360,7 +360,7 @@ void dLytMeterDrink_c::executeState_Out() { mAnmGroups[LYT_METER_DRINK_ANIM_DEMO_OUT].setAnimEnable(false); mStateMgr.changeState(StateID_Invisible); } - if (mAnmGroups[LYT_METER_DRINK_ANIM_DEMO_OUT].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_ANIM_DEMO_OUT].isEnabled()) { mAnmGroups[LYT_METER_DRINK_ANIM_DEMO_OUT].play(); } } @@ -474,13 +474,13 @@ void dLytMeterDrink_c::executeInternal() { if (!mParts[i].isDrinkAboutToExpire()) { drinksLast[i] = true; bHasNotSoonExpiringDrink = true; - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isEnabled()) { frameLoop = mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].getNextFrame(); } } else { drinksLast[i] = false; bHasSoonExpiringDrink = true; - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isEnabled()) { frameCaution = mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].getNextFrame(); } } @@ -489,14 +489,14 @@ void dLytMeterDrink_c::executeInternal() { if (bHasNotSoonExpiringDrink) { for (int i = 0; i < 3; i++) { if (drinksLast[i] == true) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isEnabled()) { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].play(); } else { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].setAnimEnable(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].setFrame(frameLoop); } - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isEnabled()) { bool oldVisible = mpPartPanes[i]->IsVisible(); mpPartPanes[i]->SetVisible(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].setFrame(0.0f); @@ -508,7 +508,7 @@ void dLytMeterDrink_c::executeInternal() { } } else { for (int i = 0; i < 3; i++) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isEnabled()) { bool oldVisible = mpPartPanes[i]->IsVisible(); mpPartPanes[i]->SetVisible(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].setFrame(0.0f); @@ -522,14 +522,14 @@ void dLytMeterDrink_c::executeInternal() { if (bHasSoonExpiringDrink) { for (int i = 0; i < 3; i++) { if (drinksLast[i] == false) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isEnabled()) { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].play(); } else { mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].setAnimEnable(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].setFrame(frameCaution); } - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].isEnabled()) { bool oldVisible = mpPartPanes[i]->IsVisible(); mpPartPanes[i]->SetVisible(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_LOOP + i].setFrame(0.0f); @@ -541,7 +541,7 @@ void dLytMeterDrink_c::executeInternal() { } } else { for (int i = 0; i < 3; i++) { - if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isFlag2()) { + if (mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].isEnabled()) { bool oldVisible = mpPartPanes[i]->IsVisible(); mpPartPanes[i]->SetVisible(true); mAnmGroups[LYT_METER_DRINK_OFFSET_ANIM_CAUTION + i].setFrame(0.0f); diff --git a/src/m/m2d.cpp b/src/m/m2d.cpp index 3f2ec24d..ed5a306f 100644 --- a/src/m/m2d.cpp +++ b/src/m/m2d.cpp @@ -153,7 +153,7 @@ bool FrameCtrl_c::isStop() const { } } -f32 FrameCtrl_c::getEndFrame() const { +f32 FrameCtrl_c::getStartFrame() const { if (isBackwards()) { if (notLooping()) { return mEndFrame - 1.0f; @@ -164,7 +164,7 @@ f32 FrameCtrl_c::getEndFrame() const { return 0.0f; } -f32 FrameCtrl_c::getEndFrame2() const { +f32 FrameCtrl_c::getEndFrame() const { if (isBackwards()) { return 0.0f; } |
