diff options
| author | robojumper <robojumper@gmail.com> | 2025-04-01 23:08:44 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-04-07 22:12:36 +0200 |
| commit | fc89f2b34a626b5d0e0520ad7d0b1afc3ea46f7f (patch) | |
| tree | 0bcd658995e6b639dba4f2741b88282675495c4d /src | |
| parent | 17fe773653dffb5463d3ba4cf7d2f30038f34855 (diff) | |
d_lyt_msg_window_wood OK, d_lyt_common_a_btn OK
Diffstat (limited to 'src')
| -rw-r--r-- | src/d/d_cs_game.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d2d.cpp | 8 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_area_caption.cpp | 6 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_battery.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_bird_gauge.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_common_a_btn.cpp | 244 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_common_arrow.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_common_icon_item.cpp | 12 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_common_icon_material.cpp | 8 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_fader.cpp | 10 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_map.cpp | 10 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_note.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/d_lyt_sky_gauge.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter.cpp | 12 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter_a_btn.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter_drink.cpp | 4 | ||||
| -rw-r--r-- | src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp | 2 | ||||
| -rw-r--r-- | src/d/lyt/msg_window/d_lyt_msg_window_wood.cpp | 191 |
18 files changed, 482 insertions, 47 deletions
diff --git a/src/d/d_cs_game.cpp b/src/d/d_cs_game.cpp index 3ed7ea18..bc153463 100644 --- a/src/d/d_cs_game.cpp +++ b/src/d/d_cs_game.cpp @@ -234,7 +234,7 @@ bool dCsGame_c::lytItemCursor_c::doInit() { mAnm.init(mAnmGroups.tmp.mAnmGroups, lytItemCursorMap, 0x17, mpResAcc, mLyt.getLayout()); for (int i = 0; i < 0x17; i++) { - mAnmGroups.tmp.mAnmGroups[i].setDirection(false); + mAnmGroups.tmp.mAnmGroups[i].bind(false); mAnmGroups.tmp.mAnmGroups[i].setAnimEnable(false); } diff --git a/src/d/lyt/d2d.cpp b/src/d/lyt/d2d.cpp index 41551895..6e3f4f5c 100644 --- a/src/d/lyt/d2d.cpp +++ b/src/d/lyt/d2d.cpp @@ -811,7 +811,7 @@ bool AnmGroupBase_c::init( return true; } -bool AnmGroupBase_c::setDirection(bool b) { +bool AnmGroupBase_c::bind(bool bDisable) { nw4r::lyt::AnimTransform *anmTransform = mpAnmTransform; if (anmTransform == nullptr) { return false; @@ -823,7 +823,7 @@ bool AnmGroupBase_c::setDirection(bool b) { nw4r::lyt::BindAnimation(mpGroup, anmTransform, false, b); mFlags |= ANMGROUP_FLAG_BOUND; - if (b) { + if (bDisable) { mFlags = (mFlags & ~ANMGROUP_FLAG_ENABLE); } else { mFlags |= ANMGROUP_FLAG_ENABLE; @@ -855,7 +855,7 @@ bool AnmGroupBase_c::unbind() { return true; } -bool AnmGroupBase_c::afterUnbind() { +bool AnmGroupBase_c::remove() { return true; } @@ -905,7 +905,7 @@ bool AnmGroups::init( void AnmGroups::remove() { for (int i = 0; i < mNumAnmGroups; i++) { - mpAnmGroups[i].afterUnbind(); + mpAnmGroups[i].remove(); } } diff --git a/src/d/lyt/d_lyt_area_caption.cpp b/src/d/lyt/d_lyt_area_caption.cpp index e9d5eaf5..97145059 100644 --- a/src/d/lyt/d_lyt_area_caption.cpp +++ b/src/d/lyt/d_lyt_area_caption.cpp @@ -43,7 +43,7 @@ bool dLytAreaCaptionParts_c::init(int first) { mAnmCtrlInUse[i] = false; } else { mAnmGroups[i].init(brlanMap1[i].mFile, &mResAcc, mLyt.getLayout(), brlanMap1[i].mName); - mAnmGroups[i].setDirection(false); + mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); mAnmCtrlInUse[i] = true; } @@ -56,7 +56,7 @@ bool dLytAreaCaptionParts_c::init(int first) { mAnmCtrlInUse[i] = false; } else { mAnmGroups[i].init(brlanMap2[i].mFile, &mResAcc, mLyt.getLayout(), brlanMap2[i].mName); - mAnmGroups[i].setDirection(false); + mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); mAnmCtrlInUse[i] = true; } @@ -78,7 +78,7 @@ bool dLytAreaCaptionParts_c::remove() { for (int i = 0; i < 4; i++) { if (mAnmCtrlInUse[i]) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } } mResAcc.detach(); diff --git a/src/d/lyt/d_lyt_battery.cpp b/src/d/lyt/d_lyt_battery.cpp index 1b1f5f16..0f8681d9 100644 --- a/src/d/lyt/d_lyt_battery.cpp +++ b/src/d/lyt/d_lyt_battery.cpp @@ -48,7 +48,7 @@ bool dLytBattery_c::init() { for (int i = 0; i < 4; i++) { mAnmGroups[i].init(brlanMap[i].mFile, &mResAcc, mLyt.getLayout(), brlanMap[i].mName); - mAnmGroups[i].setDirection(false); + mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); } diff --git a/src/d/lyt/d_lyt_bird_gauge.cpp b/src/d/lyt/d_lyt_bird_gauge.cpp index 5fd5337a..9ed904f1 100644 --- a/src/d/lyt/d_lyt_bird_gauge.cpp +++ b/src/d/lyt/d_lyt_bird_gauge.cpp @@ -109,7 +109,7 @@ bool dLytBirdGaugeMain_c::build(d2d::ResAccIf_c *resAcc) { for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) { mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); - mAnmGroups[i].setDirection(false); + mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -148,7 +148,7 @@ bool dLytBirdGaugeMain_c::execute() { bool dLytBirdGaugeMain_c::remove() { mLyt.unbindAnims(); for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) { - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_common_a_btn.cpp b/src/d/lyt/d_lyt_common_a_btn.cpp new file mode 100644 index 00000000..056e6397 --- /dev/null +++ b/src/d/lyt/d_lyt_common_a_btn.cpp @@ -0,0 +1,244 @@ + + +#include "d/lyt/d_lyt_common_a_btn.h" + +#include "common.h" +#include "d/d_sys.h" +#include "d/lyt/d2d.h" +#include "toBeSorted/small_sound_mgr.h" + +static const d2d::LytBrlanMapping brlanMap[] = { + { "aBtn_00_in.brlan", "G_inOut_00"}, + { "aBtn_00_loop.brlan", "G_loopBtn_00"}, + {"aBtn_00_decide.brlan", "G_decide_00"}, + { "aBtn_00_out.brlan", "G_inOut_00"}, +}; + +#define MSG_ABTN_ANIM_IN 0 +#define MSG_ABTN_ANIM_LOOP 1 +#define MSG_ABTN_ANIM_DECIDE 2 +#define MSG_ABTN_ANIM_OUT 3 + +#define MSG_ABTN_NUM_ANIMS 4 + +const dLytCommonABtn_c::executeFunc dLytCommonABtn_c::sExecuteFuncs[4] = { + &dLytCommonABtn_c::executeStateInvisible, + &dLytCommonABtn_c::executeStateIn, + &dLytCommonABtn_c::executeStateVisible, + &dLytCommonABtn_c::executeStateDecideOut, +}; + +bool dLytCommonABtn_c::build(d2d::ResAccIf_c *resAcc) { + mLyt.setResAcc(resAcc); + mLyt.build("aBtn_00.brlyt", nullptr); + + for (int i = 0; i < MSG_ABTN_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + } + + resetToInvisble(); + setSoundVariant(VARIANT_NORMAL); + return true; +} + +bool dLytCommonABtn_c::remove() { + for (int i = 0; i < MSG_ABTN_NUM_ANIMS; i++) { + mAnm[i].remove(); + } + return true; +} + +bool dLytCommonABtn_c::execute() { + runExecuteFunc(); + if (mState == STATE_INVISIBLE) { + return true; + } + mLyt.calc(); + return true; +} + +bool dLytCommonABtn_c::requestIn() { + if (mState != STATE_INVISIBLE) { + return false; + } + mInRequested = true; + return true; +} + +bool dLytCommonABtn_c::requestOut(bool b) { + if (mState != STATE_VISIBLE) { + return false; + } + mOutRequested = true; + field_0x1AC = b; + return true; +} + +void dLytCommonABtn_c::resetToInvisble() { + gotoStateInvisible(); +} + +void dLytCommonABtn_c::setSoundVariant(SoundVariant value) { + mSoundVariant = value; +} + +void dLytCommonABtn_c::runExecuteFunc() { + executeFunc fn = sExecuteFuncs[mState]; + if (fn != nullptr) { + (this->*fn)(); + } +} + +void dLytCommonABtn_c::gotoStateInvisible() { + setState(STATE_INVISIBLE); + mLyt.unbindAnims(); + + d2d::AnmGroup_c &inAnim = mAnm[MSG_ABTN_ANIM_IN]; + field_0x1A8 = 0; + mInRequested = false; + mOutRequested = false; + mIsDoneOut = false; + field_0x1AC = 0; + mNoDecide = false; + + inAnim.bind(false); + inAnim.setAnimEnable(true); + inAnim.setFrame(0.0f); + if (dSys::getFrameRate() == 1) { + inAnim.setRate(0.5f); + } else { + inAnim.setRate(1.0f); + } + mLyt.calc(); +} + +void dLytCommonABtn_c::executeStateInvisible() { + if (mInRequested != true) { + return; + } + + if (field_0x1AC == 1) { + gotoStateInvisible(); + } + mInRequested = false; + field_0x1A8 = 1; + gotoStateIn(); +} + +void dLytCommonABtn_c::gotoStateIn() { + setState(STATE_IN); +} + +void dLytCommonABtn_c::executeStateIn() { + d2d::AnmGroup_c &anm = mAnm[MSG_ABTN_ANIM_IN]; + if (anm.isEndReached() == true) { + goToStateVisible(); + } else { + anm.play(); + } +} + +void dLytCommonABtn_c::goToStateVisible() { + setState(STATE_VISIBLE); + mAnm[MSG_ABTN_ANIM_IN].unbind(); + d2d::AnmGroup_c &anm = mAnm[MSG_ABTN_ANIM_LOOP]; + anm.bind(false); + anm.setFrame(0.0f); + if (dSys::getFrameRate() == 1) { + anm.setRate(0.5f); + } else { + anm.setRate(1.0f); + } +} + +void dLytCommonABtn_c::executeStateVisible() { + if (mOutRequested == true) { + goToStateDecideOut(); + mOutRequested = false; + } else { + d2d::AnmGroup_c &anm = mAnm[MSG_ABTN_ANIM_LOOP]; + anm.play(); + } +} + +void dLytCommonABtn_c::goToStateDecideOut() { + setState(STATE_OUT); + mAnm[MSG_ABTN_ANIM_LOOP].unbind(); + if (mNoDecide == true) { + mNoDecide = false; + d2d::AnmGroup_c &anm = mAnm[MSG_ABTN_ANIM_OUT]; + anm.bind(false); + anm.setFrame(0.0f); + if (dSys::getFrameRate() == 1) { + anm.setRate(0.5f); + } else { + anm.setRate(1.0f); + } + mOutState = OUT_STATE_OUT; + } else { + d2d::AnmGroup_c &anm = mAnm[MSG_ABTN_ANIM_DECIDE]; + anm.bind(false); + anm.setAnimEnable(true); + anm.setFrame(0.0f); + if (dSys::getFrameRate() == 1) { + anm.setRate(0.5f); + } else { + anm.setRate(1.0f); + } + if (mSoundVariant == VARIANT_NORMAL) { + SmallSoundManager::GetInstance()->playSound(SE_S_WINDOW_PRESS_A); + } else { + SmallSoundManager::GetInstance()->playSound(SE_S_TITLE_PRESS_START); + } + } +} + +void dLytCommonABtn_c::executeStateDecideOut() { + d2d::AnmGroup_c &decideAnm = mAnm[MSG_ABTN_ANIM_DECIDE]; + switch (mOutState) { + case OUT_STATE_DECIDING: { + if (decideAnm.isEndReached() == true) { + mOutState = OUT_STATE_GOTO_OUT; + if (field_0x1AC == 1) { + mIsDoneOut = true; + setState(STATE_INVISIBLE); + break; + } + } + decideAnm.play(); + break; + } + case OUT_STATE_GOTO_OUT: { + decideAnm.unbind(); + d2d::AnmGroup_c &anmOut = mAnm[MSG_ABTN_ANIM_OUT]; + anmOut.bind(false); + anmOut.setAnimEnable(true); + anmOut.setFrame(0.0f); + if (dSys::getFrameRate() == 1) { + anmOut.setRate(0.5f); + } else { + anmOut.setRate(1.0f); + } + mOutState = OUT_STATE_OUT; + break; + } + case OUT_STATE_OUT: { + d2d::AnmGroup_c &anmOut = mAnm[MSG_ABTN_ANIM_OUT]; + if (anmOut.isEndReached() == true) { + mOutState = OUT_STATE_GOTO_INVISIBLE; + mIsDoneOut = true; + } + anmOut.play(); + break; + } + case OUT_STATE_GOTO_INVISIBLE: { + gotoStateInvisible(); + break; + } + } +} + +void dLytCommonABtn_c::setState(ABtnState state) { + mState = state; + mOutState = OUT_STATE_DECIDING; +} diff --git a/src/d/lyt/d_lyt_common_arrow.cpp b/src/d/lyt/d_lyt_common_arrow.cpp index 5126fbba..2590df0a 100644 --- a/src/d/lyt/d_lyt_common_arrow.cpp +++ b/src/d/lyt/d_lyt_common_arrow.cpp @@ -60,7 +60,7 @@ bool dLytCommonArrow_c::fn_80168490() { d2d::dLytStructDList::GetInstance()->removeFromList2(&mStructD); mLytBase.unbindAnims(); for (int i = 0; i < 9; i++) { - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_common_icon_item.cpp b/src/d/lyt/d_lyt_common_icon_item.cpp index c4fc6a66..fd0ea926 100644 --- a/src/d/lyt/d_lyt_common_icon_item.cpp +++ b/src/d/lyt/d_lyt_common_icon_item.cpp @@ -45,7 +45,7 @@ bool dLytCommonIconItemPart1_c::build(d2d::ResAccIf_c *resAcc) { mLyt.build("commonIcon_02.brlyt", nullptr); for (int i = 0; i < ITEM_PART_1_NUM_ANIMS; i++) { mAnm[i].init(brlanMapPart1[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart1[i].mName); - mAnm[i].setDirection(false); + mAnm[i].bind(false); mAnm[i].setRate(1.0f); } @@ -61,7 +61,7 @@ bool dLytCommonIconItemPart1_c::build(d2d::ResAccIf_c *resAcc) { bool dLytCommonIconItemPart1_c::remove() { for (int i = 0; i < ITEM_PART_1_NUM_ANIMS; i++) { mAnm[i].unbind(); - mAnm[i].afterUnbind(); + mAnm[i].remove(); } return true; } @@ -276,7 +276,7 @@ bool dLytCommonIconItemPart2_c::build(d2d::ResAccIf_c *resAcc) { mLyt.build("commonIcon_03.brlyt", nullptr); for (int i = 0; i < ITEM_PART_2_NUM_ANIMS; i++) { mAnm[i].init(brlanMapPart2[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart2[i].mName); - mAnm[i].setDirection(false); + mAnm[i].bind(false); mAnm[i].setRate(1.0f); } @@ -292,7 +292,7 @@ bool dLytCommonIconItemPart2_c::build(d2d::ResAccIf_c *resAcc) { bool dLytCommonIconItemPart2_c::remove() { for (int i = 0; i < ITEM_PART_2_NUM_ANIMS; i++) { mAnm[i].unbind(); - mAnm[i].afterUnbind(); + mAnm[i].remove(); } return true; } @@ -600,7 +600,7 @@ bool dLytCommonIconItemPart3_c::build(d2d::ResAccIf_c *resAcc) { mLyt.build("commonIcon_04.brlyt", nullptr); for (int i = 0; i < ITEM_PART_3_NUM_ANIMS; i++) { mAnm[i].init(brlanMapPart3[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart3[i].mName); - mAnm[i].setDirection(false); + mAnm[i].bind(false); mAnm[i].setRate(1.0f); } @@ -612,7 +612,7 @@ bool dLytCommonIconItemPart3_c::build(d2d::ResAccIf_c *resAcc) { bool dLytCommonIconItemPart3_c::remove() { for (int i = 0; i < ITEM_PART_3_NUM_ANIMS; i++) { mAnm[i].unbind(); - mAnm[i].afterUnbind(); + mAnm[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_common_icon_material.cpp b/src/d/lyt/d_lyt_common_icon_material.cpp index 72799255..9463bbbc 100644 --- a/src/d/lyt/d_lyt_common_icon_material.cpp +++ b/src/d/lyt/d_lyt_common_icon_material.cpp @@ -41,7 +41,7 @@ bool dLytCommonIconMaterialPart1_c::build(d2d::ResAccIf_c *resAcc) { mLyt.build("commonIcon_00.brlyt", nullptr); for (int i = 0; i < MATERIAL_PART_1_NUM_ANIMS; i++) { mAnm[i].init(brlanMapPart1[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart1[i].mName); - mAnm[i].setDirection(false); + mAnm[i].bind(false); mAnm[i].setRate(1.0f); } @@ -57,7 +57,7 @@ bool dLytCommonIconMaterialPart1_c::build(d2d::ResAccIf_c *resAcc) { bool dLytCommonIconMaterialPart1_c::remove() { for (int i = 0; i < MATERIAL_PART_1_NUM_ANIMS; i++) { mAnm[i].unbind(); - mAnm[i].afterUnbind(); + mAnm[i].remove(); } return true; } @@ -240,7 +240,7 @@ bool dLytCommonIconMaterialPart2_c::build(d2d::ResAccIf_c *resAcc) { mLyt.build("commonIcon_01.brlyt", nullptr); for (int i = 0; i < MATERIAL_PART_2_NUM_ANIMS; i++) { mAnm[i].init(brlanMapPart2[i].mFile, resAcc, mLyt.getLayout(), brlanMapPart2[i].mName); - mAnm[i].setDirection(false); + mAnm[i].bind(false); mAnm[i].setRate(1.0f); } @@ -256,7 +256,7 @@ bool dLytCommonIconMaterialPart2_c::build(d2d::ResAccIf_c *resAcc) { bool dLytCommonIconMaterialPart2_c::remove() { for (int i = 0; i < MATERIAL_PART_2_NUM_ANIMS; i++) { mAnm[i].unbind(); - mAnm[i].afterUnbind(); + mAnm[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_fader.cpp b/src/d/lyt/d_lyt_fader.cpp index 8e215e89..4b27ae73 100644 --- a/src/d/lyt/d_lyt_fader.cpp +++ b/src/d/lyt/d_lyt_fader.cpp @@ -16,7 +16,7 @@ dLytFader_c::~dLytFader_c() { if (field_0x4DD == true) { for (int i = 0; i < 3; i++) { - mLytStructAs[i].afterUnbind(); + mLytStructAs[i].remove(); } mResAcc.detach(); } @@ -27,7 +27,7 @@ void dLytFader_c::setStatus(EStatus status) { mStatus = FADED_OUT; mLytBase.unbindAnims(); d2d::AnmGroup_c *s = &mLytStructAs[0]; - s->setDirection(false); + s->bind(false); s->setToEnd(); s->setAnimEnable(true); s->play(); @@ -38,7 +38,7 @@ void dLytFader_c::setStatus(EStatus status) { mStatus = FADED_IN; mLytBase.unbindAnims(); d2d::AnmGroup_c *s = &mLytStructAs[0]; - s->setDirection(false); + s->bind(false); s->setFrame(0.0f); s->setAnimEnable(true); mLytBase.calc(); @@ -109,7 +109,7 @@ void dLytFader_c::fn_801758F0() { fn_80175BC0(0); mLytBase.unbindAnims(); d2d::AnmGroup_c *s = &mLytStructAs[0]; - s->setDirection(false); + s->bind(false); s->setFrame(0.0f); s->setRate(20.0f / (mFrame - 1)); s->setAnimEnable(true); @@ -130,7 +130,7 @@ void dLytFader_c::fn_80175A50() { fn_80175BC0(1); mLytBase.unbindAnims(); d2d::AnmGroup_c *s = &mLytStructAs[1]; - s->setDirection(false); + s->bind(false); s->setFrame(0.0f); s->setRate(20.0f / (mFrame - 1)); s->setAnimEnable(true); diff --git a/src/d/lyt/d_lyt_map.cpp b/src/d/lyt/d_lyt_map.cpp index 38d5335d..d01e6942 100644 --- a/src/d/lyt/d_lyt_map.cpp +++ b/src/d/lyt/d_lyt_map.cpp @@ -207,7 +207,7 @@ void dLytMapPinIcon_c::finalizeState_Wait() {} void dLytMapPinIcon_c::initializeState_ToSelect() { d2d::AnmGroup_c *m = &mAnmGroups[1]; - m->setDirection(false); + m->bind(false); m->setFrame(0.0f); } void dLytMapPinIcon_c::executeState_ToSelect() { @@ -255,7 +255,7 @@ bool dLytMapPinIcon_c::build(d2d::ResAccIf_c *resAcc) { for (int i = 0; i < 3; i++) { pAnmGroups[i].init(sMapPinIconBrlanMap[i].mFile, resAcc, mLyt.getLayout(), sMapPinIconBrlanMap[i].mName); - pAnmGroups[i].setDirection(false); + pAnmGroups[i].bind(false); pAnmGroups[i].setFrame(0.0f); } @@ -269,8 +269,8 @@ bool dLytMapPinIcon_c::build(d2d::ResAccIf_c *resAcc) { mStructD.fn_80065E70(mpBounding, 2, 1, 0); d2d::dLytStructDList::GetInstance()->appendToList2(&mStructD); - mAnmGroups[LYT_MAP_PIN_ICON_ANIM_SCALE].setDirection(false); - mAnmGroups[LYT_MAP_PIN_ICON_ANIM_LOOP].setDirection(false); + mAnmGroups[LYT_MAP_PIN_ICON_ANIM_SCALE].bind(false); + mAnmGroups[LYT_MAP_PIN_ICON_ANIM_LOOP].bind(false); mLyt.calc(); @@ -284,7 +284,7 @@ bool dLytMapPinIcon_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMapPinIcon_c::remove() { d2d::dLytStructDList::GetInstance()->removeFromList2(&mStructD); for (int i = 0; i < 3; i++) { - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_note.cpp b/src/d/lyt/d_lyt_note.cpp index e4b83f07..5bde50d7 100644 --- a/src/d/lyt/d_lyt_note.cpp +++ b/src/d/lyt/d_lyt_note.cpp @@ -142,7 +142,7 @@ bool dLytNote_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -168,7 +168,7 @@ bool dLytNote_c::build(d2d::ResAccIf_c *resAcc) { bool dLytNote_c::remove() { for (int i = 0; i < 6; i++) { // @bug? .unbind call is missing - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/d_lyt_sky_gauge.cpp b/src/d/lyt/d_lyt_sky_gauge.cpp index 7e961ec3..b75541f6 100644 --- a/src/d/lyt/d_lyt_sky_gauge.cpp +++ b/src/d/lyt/d_lyt_sky_gauge.cpp @@ -68,7 +68,7 @@ bool dLytSkyGaugeMain_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -104,7 +104,7 @@ bool dLytSkyGaugeMain_c::execute() { bool dLytSkyGaugeMain_c::remove() { mLyt.unbindAnims(); for (int i = 0; i < 3; i++) { - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 2ce06aab..3e8cfa7a 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -102,7 +102,7 @@ bool dLytMeter1Button_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } // TODO @@ -127,7 +127,7 @@ bool dLytMeter1Button_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeter1Button_c::remove() { for (int i = 0; i < 3; i++) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } @@ -215,7 +215,7 @@ bool dLytMeter2Button_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } mpWindow = mLyt.getWindow(sWindowName2); @@ -237,7 +237,7 @@ bool dLytMeter2Button_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeter2Button_c::remove() { for (int i = 0; i < 3; i++) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } @@ -333,7 +333,7 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -460,7 +460,7 @@ bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeter_c::remove() { for (int i = 0; i < 34; i++) { - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } 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 204f31fc..9383d1c8 100644 --- a/src/d/lyt/meter/d_lyt_meter_a_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_a_btn.cpp @@ -94,7 +94,7 @@ bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) { 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].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -133,7 +133,7 @@ bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeterABtn_c::remove() { for (int i = 0; i < 3; i++) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/meter/d_lyt_meter_drink.cpp b/src/d/lyt/meter/d_lyt_meter_drink.cpp index 2715fc8b..7682488f 100644 --- a/src/d/lyt/meter/d_lyt_meter_drink.cpp +++ b/src/d/lyt/meter/d_lyt_meter_drink.cpp @@ -375,7 +375,7 @@ bool dLytMeterDrink_c::build(d2d::ResAccIf_c *resAcc) { for (int i = 0; i < 20; i++) { mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); - mAnmGroups[i].setDirection(false); + mAnmGroups[i].bind(false); mAnmGroups[i].setAnimEnable(false); } @@ -409,7 +409,7 @@ bool dLytMeterDrink_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeterDrink_c::remove() { for (int i = 0; i < 20; i++) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; diff --git a/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp index e87ac199..259e9483 100644 --- a/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp +++ b/src/d/lyt/meter/d_lyt_meter_shield_gauge.cpp @@ -24,7 +24,7 @@ bool dLytMeterShieldGauge_c::build(d2d::ResAccIf_c *resAcc) { bool dLytMeterShieldGauge_c::remove() { for (int i = 0; i < 8; i++) { mAnmGroups[i].unbind(); - mAnmGroups[i].afterUnbind(); + mAnmGroups[i].remove(); } return true; } diff --git a/src/d/lyt/msg_window/d_lyt_msg_window_wood.cpp b/src/d/lyt/msg_window/d_lyt_msg_window_wood.cpp new file mode 100644 index 00000000..2727e7cf --- /dev/null +++ b/src/d/lyt/msg_window/d_lyt_msg_window_wood.cpp @@ -0,0 +1,191 @@ +#include "d/lyt/msg_window/d_lyt_msg_window_wood.h" + +#include "common.h" +#include "d/d_tag_processor.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_textbox.h" +#include "nw4r/lyt/lyt_group.h" +#include "nw4r/lyt/lyt_pane.h" +#include "s/s_State.hpp" + +STATE_DEFINE(dLytMsgWindowWood_c, Invisible); +STATE_DEFINE(dLytMsgWindowWood_c, In); +STATE_DEFINE(dLytMsgWindowWood_c, Visible); +STATE_DEFINE(dLytMsgWindowWood_c, Out); + +static const d2d::LytBrlanMapping brlanMap[] = { + { "kanbanWindow_00_in.brlan", "G_inOut_00"}, + {"kanbanWindow_00_loop.brlan", "G_loop_00"}, + { "kanbanWindow_00_out.brlan", "G_inOut_00"}, +}; + +#define KANBAN_ANIM_IN 0 +#define KANBAN_ANIM_LOOP 1 +#define KANBAN_ANIM_OUT 2 + +#define KANBAN_NUM_ANIMS 3 + +static const char *sPanes[] = { + "N_aBtn_00", + "N_inOut_00", +}; + +static const char *sTextBoxes[] = { + "T_message_00", + "T_messageS_00", +}; + +static const char *sGroupName = "G_ref_00"; + +bool dLytMsgWindowWood_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) { + mLyt.setResAcc(resAcc); + mLyt.build("kanbanWindow_00.brlyt", nullptr); + mLyt.setPriority(0x8A); + + for (int i = 0; i < KANBAN_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + mAnm[i].bind(false); + mAnm[i].setAnimEnable(false); + } + + mAnm[KANBAN_ANIM_LOOP].setAnimEnable(true); + mAnm[KANBAN_ANIM_OUT].setAnimEnable(true); + mAnm[KANBAN_ANIM_OUT].setToEnd(); + mLyt.calc(); + mAnm[KANBAN_ANIM_OUT].setAnimEnable(false); + + for (int i = 0; i < 2; i++) { + mpPanes[i] = mLyt.findPane(sPanes[i]); + } + + for (int i = 0; i < 2; i++) { + mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]); + mpTextboxes[i]->SetTextPositionH(0); + mpTextboxes[i]->SetTextPositionV(0); + } + + mpTextboxes[1]->set0x1F6(1); + + for (int i = 0; i < 1; i++) { + mNodes[i].mpLytPane = &mCommon; + mCommon.build(resAcc); + mSubpaneList.PushBack(&mNodes[i]); + } + + if (mLyt.getLayout()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + d2d::dSubPane::linkMeters(g, &mSubpaneList); + } + } + + mpPanes[1]->SetVisible(true); + mLyt.calc(); + mpPanes[1]->SetVisible(false); + mpTagProcessor = tagProcessor; + mStateMgr.changeState(StateID_Invisible); + return true; +} + +bool dLytMsgWindowWood_c::remove() { + for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) { + d2d::dSubPane *subPane = it->mpLytPane; + if (subPane != nullptr) { + nw4r::lyt::Pane *parent = subPane->getPane()->GetParent(); + parent->RemoveChild(subPane->getPane()); + } + } + + for (int i = 0; i < 1; i++) { + mNodes[i].mpLytPane->remove(); + } + mCommon.remove(); + for (int i = 0; i < KANBAN_NUM_ANIMS; i++) { + mAnm[i].remove(); + } + return true; +} + +void dLytMsgWindowWood_c::initializeState_Invisible() { + mCommon.resetToInvisble(); +} +void dLytMsgWindowWood_c::executeState_Invisible() { + if (mCommon.shouldBeOpen()) { + mStateMgr.changeState(StateID_In); + } +} +void dLytMsgWindowWood_c::finalizeState_Invisible() {} + +void dLytMsgWindowWood_c::initializeState_In() { + mAnm[KANBAN_ANIM_IN].setAnimEnable(true); + mAnm[KANBAN_ANIM_IN].setFrame(0.0f); +} +void dLytMsgWindowWood_c::executeState_In() { + if (mAnm[KANBAN_ANIM_IN].isEndReached()) { + mAnm[KANBAN_ANIM_IN].setAnimEnable(false); + mStateMgr.changeState(StateID_Visible); + } +} +void dLytMsgWindowWood_c::finalizeState_In() {} + +void dLytMsgWindowWood_c::initializeState_Visible() {} +void dLytMsgWindowWood_c::executeState_Visible() { + if (!mCommon.shouldBeOpen()) { + mStateMgr.changeState(StateID_Out); + } +} +void dLytMsgWindowWood_c::finalizeState_Visible() {} + +void dLytMsgWindowWood_c::initializeState_Out() { + mAnm[KANBAN_ANIM_OUT].setAnimEnable(true); + mAnm[KANBAN_ANIM_OUT].setFrame(0.0f); +} +void dLytMsgWindowWood_c::executeState_Out() { + if (mAnm[KANBAN_ANIM_OUT].isEndReached()) { + mAnm[KANBAN_ANIM_OUT].setAnimEnable(false); + mStateMgr.changeState(StateID_Invisible); + } +} +void dLytMsgWindowWood_c::finalizeState_Out() {} + +bool dLytMsgWindowWood_c::execute() { + mStateMgr.executeState(); + for (int i = 0; i < KANBAN_NUM_ANIMS; i++) { + if (mAnm[i].isEnabled()) { + mAnm[i].play(); + } + } + mLyt.calc(); + for (int i = 0; i < 1; i++) { + mNodes[i].mpLytPane->execute(); + } + return true; +} + +void dLytMsgWindowWood_c::draw() { + mLyt.draw(); +} + +void dLytMsgWindowWood_c::vt_0x1C() { + mCommon.openMaybe(); +} + +bool dLytMsgWindowWood_c::vt_0x20() const { + return !(*mStateMgr.getStateID() == StateID_In); +} + +void dLytMsgWindowWood_c::vt_0x24() { + mCommon.closeMaybe(); +} + +bool dLytMsgWindowWood_c::vt_0x28() const { + return !(*mStateMgr.getStateID() == StateID_Out); +} + +bool dLytMsgWindowWood_c::setText(const wchar_t *text) { + mpTextboxes[0]->SetTagProcessor(mpTagProcessor); + mpTextboxes[1]->SetTagProcessor(mpTagProcessor); + mpTextboxes[0]->fn_800AF540(text, mpTagProcessor, 0); + mpTextboxes[1]->fn_800AF540(text, mpTagProcessor, 0); + return true; +} |
