diff options
| author | robojumper <robojumper@gmail.com> | 2025-12-04 00:31:49 +0100 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-12-04 00:31:49 +0100 |
| commit | f8c9af7dc612f635253eb4b75d8b4e802a8e15cd (patch) | |
| tree | 4ddd9d771696cc504683fd252561d27cfbc0318c /src | |
| parent | ba810ccc9e8fd2f43518293339977cf62c9fb7f2 (diff) | |
82%
Diffstat (limited to 'src')
| -rw-r--r-- | src/d/lyt/d_lyt_mini_game.cpp | 608 | ||||
| -rw-r--r-- | src/d/snd/d_snd_small_effect_mgr.cpp | 2 |
2 files changed, 548 insertions, 62 deletions
diff --git a/src/d/lyt/d_lyt_mini_game.cpp b/src/d/lyt/d_lyt_mini_game.cpp index 292d8863..2fdeb81f 100644 --- a/src/d/lyt/d_lyt_mini_game.cpp +++ b/src/d/lyt/d_lyt_mini_game.cpp @@ -8,6 +8,7 @@ #include "d/lyt/d2d.h" #include "d/snd/d_snd_small_effect_mgr.h" #include "d/snd/d_snd_wzsound.h" +#include "f/f_base.h" #include "m/m_vec.h" #include "nw4r/lyt/lyt_pane.h" #include "nw4r/lyt/lyt_types.h" @@ -819,7 +820,7 @@ bool dLytMiniGameTime_c::execute() { } if (mIsVisible) { - switch (mTimerVariant) { + switch (mTimeFormat) { case TIMER_LONG: updateLongTimer(); break; case TIMER_SECONDS: updateSecondsTimer(); break; } @@ -865,14 +866,14 @@ bool dLytMiniGameTime_c::execute() { mLyt.calc(); } - if (mTimerVariant == TIMER_SECONDS) { + if (mTimeFormat == TIMER_SECONDS) { if (mCurrentTimerValueSeconds <= 10 && mLastTimerValueSeconds != mCurrentTimerValueSeconds) { dSndSmallEffectMgr_c::GetInstance()->playMinigameTimeUpSound(mCurrentTimerValueSeconds); } saveSecondsTimer(); } - if (field_0x7F0 == 0) { + if (mVariant == TIME_VARIANT_0) { if (mCurrentTimerValueSeconds >= 590 && mLastTimerValueSeconds != mCurrentTimerValueSeconds && mCurrentTimerValueSeconds != 600) { dSndSmallEffectMgr_c::GetInstance()->playMinigameTimeUpSound(600 - mCurrentTimerValueSeconds); @@ -898,13 +899,13 @@ void dLytMiniGameTime_c::init() { return; } - switch (field_0x7F0) { - case 0: mTimerVariant = TIMER_LONG; break; - case 1: mTimerVariant = TIMER_SECONDS; break; - case 2: mTimerVariant = TIMER_SECONDS; break; - case 3: mTimerVariant = TIMER_LONG; break; - case 4: mTimerVariant = TIMER_LONG; break; - case 5: mTimerVariant = TIMER_LONG; break; + switch (mVariant) { + case TIME_VARIANT_0: mTimeFormat = TIMER_LONG; break; + case TIME_VARIANT_1: mTimeFormat = TIMER_SECONDS; break; + case TIME_VARIANT_2: mTimeFormat = TIMER_SECONDS; break; + case TIME_VARIANT_3: mTimeFormat = TIMER_LONG; break; + case TIME_VARIANT_4: mTimeFormat = TIMER_LONG; break; + case TIME_VARIANT_5: mTimeFormat = TIMER_LONG; break; } resetAlphaIn(); @@ -1267,7 +1268,7 @@ void dLytMiniGameTime_c::resetDigits() { } void dLytMiniGameTime_c::resetPosition() { - switch (mTimerVariant) { + switch (mTimeFormat) { case TIMER_LONG: setTimePosition(false); setBestHasSixDigits(false); @@ -1904,13 +1905,13 @@ bool dLytMiniGameScore_c::execute() { if (mIsVisible) { fn_80291BC0(); if (!field_0x816) { - switch (field_0x818) { - case 0: + switch (mVariant) { + case SCORE_VARIANT_0: if (hasIncreasedScore()) { startGetScore(); } break; - case 2: + case SCORE_VARIANT_2: if (field_0x829) { if (hasIncreasedScore()) { startGetScore(); @@ -1923,15 +1924,15 @@ bool dLytMiniGameScore_c::execute() { field_0x829 = false; } break; - case 1: + case SCORE_VARIANT_1: if (mScore != 1) { if (hasIncreasedScore()) { startGetScore(); } } break; - case 3: - case 4: + case SCORE_VARIANT_3: + case SCORE_VARIANT_4: if (hasIncreasedScore()) { startGetScore(); } @@ -1985,7 +1986,7 @@ bool dLytMiniGameScore_c::execute() { mLyt.calc(); } - if (!field_0x816 && field_0x818 == 0 && hasIncreasedScore()) { + if (!field_0x816 && mVariant == SCORE_VARIANT_0 && hasIncreasedScore()) { dSndSmallEffectMgr_c::GetInstance()->playMinigameScoreUpSound(mScore); } @@ -2050,8 +2051,8 @@ void dLytMiniGameScore_c::init() { mLyt.calc(); mAnm[SCORE_ANIM_IN].setAnimEnable(false); - switch (field_0x818) { - case 0: + switch (mVariant) { + case SCORE_VARIANT_0: field_0x82C = 0; field_0x81C = 21; field_0x7E4 = 4; @@ -2087,7 +2088,7 @@ void dLytMiniGameScore_c::init() { fn_80293450(field_0x81C); break; - case 1: + case SCORE_VARIANT_1: field_0x830 = 0; field_0x82C = 0; field_0x81C = 11; @@ -2148,7 +2149,7 @@ void dLytMiniGameScore_c::init() { } fn_80293450(field_0x81C); break; - case 2: + case SCORE_VARIANT_2: field_0x830 = 0; field_0x82C = 0; field_0x81C = 6; @@ -2167,7 +2168,7 @@ void dLytMiniGameScore_c::init() { fn_80293450(field_0x81C); break; - case 3: + case SCORE_VARIANT_3: field_0x82C = 0; field_0x81C = 21; field_0x7E4 = 4; @@ -2203,7 +2204,7 @@ void dLytMiniGameScore_c::init() { fn_80293450(field_0x81C); break; - case 4: + case SCORE_VARIANT_4: field_0x830 = 0; field_0x82C = 0; field_0x81C = 19; @@ -2265,7 +2266,7 @@ void dLytMiniGameScore_c::fn_80291410() { field_0x820 = true; mIsVisible = true; - if (field_0x818 == 1) { + if (mVariant == SCORE_VARIANT_1) { setScore(1); calcNumDigits(); mAnm[SCORE_ANIM_SET_POSITION].setFrame(field_0x81C); @@ -2455,11 +2456,11 @@ void dLytMiniGameScore_c::fn_80291BC0() { calcNumDigits(); realizePosition(); - if (field_0x818 == 1) { + if (mVariant == SCORE_VARIANT_1) { if (field_0x828) { fn_80291EF0(); } - } else if (field_0x818 == 2) { + } else if (mVariant == SCORE_VARIANT_2) { fn_80292040(); } @@ -2835,8 +2836,8 @@ void dLytMiniGameScore_c::fn_80292C30() { PaneCalc calc; - switch (field_0x818) { - case 0: { + switch (mVariant) { + case SCORE_VARIANT_0: { dMessage_c::getGlobalTagProcessor()->setNumericArg0(mScore); loadTextVariant(1); field_0x7E8 = mpTextBoxes[0]->GetLineWidth(nullptr); @@ -2850,7 +2851,7 @@ void dLytMiniGameScore_c::fn_80292C30() { break; } - case 3: { + case SCORE_VARIANT_3: { dMessage_c::getGlobalTagProcessor()->setNumericArg0(mScore); loadTextVariant(0); field_0x7E8 = mpTextBoxes[0]->GetLineWidth(nullptr); @@ -2948,14 +2949,15 @@ static const d2d::LytBrlanMapping brlanMapScoreSd[] = { { "miniGameScoreSd_00_scoreDown.brlan", "G_animAll_00"}, }; -#define SCORE_SD_ANIM_0_TO_9_0 0 -#define SCORE_SD_ANIM_0_TO_9_1 1 +#define SCORE_SD_ANIM_0_TO_9_OFFSET 0 #define SCORE_SD_ANIM_SET_POSITION 2 #define SCORE_SD_ANIM_SCORE_UP 3 #define SCORE_SD_ANIM_SCORE_DOWN 4 #define SCORE_SD_NUM_ANIMS 5 +#define SCORE_SD_NUM_DIGITS 2 + bool dLytMiniGameScoreSd_c::build(d2d::ResAccIf_c *resAcc) { mLyt.setResAcc(resAcc); mLyt.build("miniGameScoreSd_00.brlyt", nullptr); @@ -2990,13 +2992,13 @@ bool dLytMiniGameScoreSd_c::execute() { } if (mIsVisible) { - if (fn_80294030()) { - fn_80294010(); + if (isScoreUpEndReached()) { + stopScoreUp(); mIsVisible = false; } - if (fn_80294080()) { - fn_80294020(); + if (isScoreDownEndReached()) { + stopScoreDown(); mIsVisible = false; } @@ -3027,11 +3029,11 @@ void dLytMiniGameScoreSd_c::init() { return; } - fn_80293D40(); - fn_80293DC0(); - fn_80293E40(); - fn_80293ED0(); - fn_80293AF0(0); + resetScoreUp(); + resetScoreDown(); + resetDigits(); + resetPosition(); + setScoreInternal(0); mAnm[SCORE_SD_ANIM_SCORE_UP].setToEnd2(); mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(true); @@ -3039,65 +3041,549 @@ void dLytMiniGameScoreSd_c::init() { mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80293A30() { +void dLytMiniGameScoreSd_c::setScoreUp(s32 score) { + if (sInstance == nullptr) { + return; + } + setScoreInternal(score); + startScoreUp(); + dSndSmallEffectMgr_c::GetInstance()->playMinigameScoreUpSound(score); + mIsVisible = true; +} +void dLytMiniGameScoreSd_c::setScoreDown(s32 score) { + if (sInstance == nullptr) { + return; + } + setScoreInternal(score); + startScoreUp(); + dSndSmallEffectMgr_c::GetInstance()->playMinigameScoreDownSound(score); + mIsVisible = true; } -void dLytMiniGameScoreSd_c::fn_80293A90() { +void dLytMiniGameScoreSd_c::setScoreInternal(s32 score) { + s32 digits[2]; + + digits[1] = score / 10; + digits[0] = score % 10; + s32 num = 0; + if (digits[1] != 0) { + num = 1; + } else if (digits[0] != 0) { + num = 0; + } + setHighestDigitIndex(num); + for (int i = 0; i <= num; i++) { + setDigit(i, digits[i]); + } + field_0x1D4 = score; } -void dLytMiniGameScoreSd_c::fn_80293AF0(s32) { +void dLytMiniGameScoreSd_c::setHighestDigitIndex(s32 num) { + f32 frame = num + 6.0f; -} + mAnm[SCORE_SD_ANIM_SET_POSITION].setRate(0.0f); + mAnm[SCORE_SD_ANIM_SET_POSITION].setFrame(frame); + mAnm[SCORE_SD_ANIM_SET_POSITION].setAnimEnable(true); -void dLytMiniGameScoreSd_c::fn_80293BB0() { + mLyt.calc(); + mAnm[SCORE_SD_ANIM_SET_POSITION].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80293C60() { +void dLytMiniGameScoreSd_c::setDigit(s32 digitIndex, s32 number) { + u8 idx = digitIndex + SCORE_SD_ANIM_0_TO_9_OFFSET; + f32 frame = 0.0f; + switch (number) { + case 0: frame = 0.0f; break; + case 1: frame = 1.0f; break; + case 2: frame = 2.0f; break; + case 4: frame = 3.0f; break; + case 6: frame = 4.0f; break; + case 8: frame = 5.0f; break; + } -} + mAnm[idx].setFrame(frame); + mAnm[idx].setAnimEnable(true); -void dLytMiniGameScoreSd_c::fn_80293D40() { + mLyt.calc(); + mAnm[idx].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80293DC0() { +void dLytMiniGameScoreSd_c::resetScoreUp() { + mAnm[SCORE_SD_ANIM_SCORE_UP].setForwardOnce(); + mAnm[SCORE_SD_ANIM_SCORE_UP].setToEnd2(); + mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(true); + + mLyt.calc(); + mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80293E40() { +void dLytMiniGameScoreSd_c::resetScoreDown() { + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setForwardOnce(); + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setToEnd2(); + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setAnimEnable(true); -} + mLyt.calc(); -void dLytMiniGameScoreSd_c::fn_80293ED0() { + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setAnimEnable(false); +} +void dLytMiniGameScoreSd_c::resetDigits() { + // NOTE: includes SCORE_SD_ANIM_SET_POSITION + for (int i = 0; i <= SCORE_SD_NUM_DIGITS; i++) { + mAnm[i + SCORE_SD_ANIM_0_TO_9_OFFSET].setForwardOnce(); + mAnm[i + SCORE_SD_ANIM_0_TO_9_OFFSET].setFrame(0.0f); + mAnm[i + SCORE_SD_ANIM_0_TO_9_OFFSET].setAnimEnable(false); + } } -void dLytMiniGameScoreSd_c::fn_80293F50() { +void dLytMiniGameScoreSd_c::resetPosition() { + mAnm[SCORE_SD_ANIM_SET_POSITION].setForwardOnce(); + mAnm[SCORE_SD_ANIM_SET_POSITION].setFrame(6.0f); + mAnm[SCORE_SD_ANIM_SET_POSITION].setAnimEnable(true); + mLyt.calc(); + + mAnm[SCORE_SD_ANIM_SET_POSITION].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80293FB0() { +void dLytMiniGameScoreSd_c::startScoreUp() { + mAnm[SCORE_SD_ANIM_SCORE_UP].setToStart(); + mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(true); +} +void dLytMiniGameScoreSd_c::startScoreDown() { + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setToStart(); + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setAnimEnable(true); } -void dLytMiniGameScoreSd_c::fn_80294010() { +void dLytMiniGameScoreSd_c::stopScoreUp() { + mAnm[SCORE_SD_ANIM_SCORE_UP].setAnimEnable(false); +} +void dLytMiniGameScoreSd_c::stopScoreDown() { + mAnm[SCORE_SD_ANIM_SCORE_DOWN].setAnimEnable(false); } -void dLytMiniGameScoreSd_c::fn_80294020() { +bool dLytMiniGameScoreSd_c::isScoreUpEndReached() const { + s32 idx = SCORE_SD_ANIM_SCORE_UP; + if (mAnm[idx].isEnabled() && mAnm[idx].isStop2()) { + return true; + } + return false; +} +bool dLytMiniGameScoreSd_c::isScoreDownEndReached() const { + s32 idx = SCORE_SD_ANIM_SCORE_DOWN; + if (mAnm[idx].isEnabled() && mAnm[idx].isStop2()) { + return true; + } + return false; } -bool dLytMiniGameScoreSd_c::fn_80294030() const { +SPECIAL_BASE_PROFILE(LYT_MINI_GAME, dLytMiniGame_c, fProfile::LYT_MINI_GAME, 0x2B4, 0x6F9); -} +static const char *sMiniGame = "MiniGame"; +static const char *sMiniGameScore = "MiniGameScore"; +static const char *sMiniGameTime = "MiniGameTime"; +static const char *sMiniGameBugs = "MiniGameBugs"; +static const char *sMiniGamePumpkin = "MiniGamePumpkin"; +static const char *sMiniGameSd = "MiniGameSd"; + +int dLytMiniGame_c::create() { + mVariant = mParams; + switch (mVariant) { + case VARIANT_1: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameScore)) { + return NOT_READY; + } -bool dLytMiniGameScoreSd_c::fn_80294080() const { + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_0); + mScore.build(&mResAccScore); + mStart.build(&mResAccStart); + break; + } + case VARIANT_2: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameSd, SLOT_MINI_GAME_SCORE_SD) || + loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameSd) || isLoading(sMiniGameScore)) { + return NOT_READY; + } + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameSd, mResAccScoreSd); + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_1); + mScore.build(&mResAccScore); + mScoreSd.build(&mResAccScoreSd); + mStart.build(&mResAccStart); + break; + } + case VARIANT_3: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameScore)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_2); + mScore.build(&mResAccScore); + mStart.build(&mResAccStart); + break; + } + case VARIANT_4: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameBugs, SLOT_MINI_GAME_BUGS) || + loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameBugs) || isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameBugs, mResAccBugs); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_0); + mTime.build(&mResAccTime); + mBugs.build(&mResAccBugs); + mStart.build(&mResAccStart); + break; + } + case VARIANT_5: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE) || + loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameScore) || isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameScore, mResAccScore); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_1); + mTime.build(&mResAccTime); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_4); + mScore.build(&mResAccScore); + mStart.build(&mResAccStart); + break; + } + case VARIANT_6: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGamePumpkin, SLOT_MINI_GAME_PUMPKIN) || + loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGamePumpkin) || isLoading(sMiniGameScore) || + isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGamePumpkin, mResAccPumpkin); + attachLoadedData(sMiniGameScore, mResAccScore); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_2); + mTime.build(&mResAccTime); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_3); + mScore.build(&mResAccScore); + mStart.build(&mResAccStart); + mPumpkin.build(&mResAccPumpkin); + break; + } + case VARIANT_7: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_3); + mTime.build(&mResAccTime); + mStart.build(&mResAccStart); + break; + } + case VARIANT_8: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_4); + mTime.build(&mResAccTime); + mStart.build(&mResAccStart); + break; + } + case VARIANT_9: { + if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGame) || isLoading(sMiniGameTime)) { + return NOT_READY; + } + + attachLoadedData(sMiniGame, mResAccStart); + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_5); + mTime.build(&mResAccTime); + mStart.build(&mResAccStart); + break; + } + case VARIANT_10: { + if (loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGameScore)) { + return NOT_READY; + } + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_0); + mScore.setField_0x816(true); + mScore.build(&mResAccScore); + break; + } + case VARIANT_11: { + if (loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGameScore)) { + return NOT_READY; + } + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_2); + mScore.setField_0x816(true); + mScore.build(&mResAccScore); + break; + } + case VARIANT_12: { + if (loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGameTime)) { + return NOT_READY; + } + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_0); + mTime.setField_0x7EE(true); + mTime.build(&mResAccTime); + break; + } + case VARIANT_13: { + if (loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) { + return NOT_READY; + } + if (isLoading(sMiniGameScore)) { + return NOT_READY; + } + attachLoadedData(sMiniGameScore, mResAccScore); + mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_3); + mScore.setField_0x816(true); + mScore.build(&mResAccScore); + break; + } + case VARIANT_14: { + if (loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGameTime)) { + return NOT_READY; + } + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_3); + mTime.setField_0x7EE(true); + mTime.build(&mResAccTime); + break; + } + case VARIANT_15: { + if (loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGameTime)) { + return NOT_READY; + } + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_4); + mTime.setField_0x7EE(true); + mTime.build(&mResAccTime); + break; + } + case VARIANT_16: { + if (loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) { + return NOT_READY; + } + if (isLoading(sMiniGameTime)) { + return NOT_READY; + } + attachLoadedData(sMiniGameTime, mResAccTime); + mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_5); + mTime.setField_0x7EE(true); + mTime.build(&mResAccTime); + break; + } + } + + init(); + + sInstance = this; + return SUCCEEDED; +} + +int dLytMiniGame_c::doDelete() { + mScore.remove(); + mScoreSd.remove(); + mStart.remove(); + mTime.remove(); + mBugs.remove(); + mPumpkin.remove(); + + switch (mVariant) { + case VARIANT_1: { + mResAccStart.detach(); + mResAccScore.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameScore); + break; + } + case VARIANT_2: { + mResAccStart.detach(); + mResAccScoreSd.detach(); + mResAccScore.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameSd); + unloadData(sMiniGameScore); + break; + } + case VARIANT_3: { + mResAccStart.detach(); + mResAccScore.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameScore); + break; + } + case VARIANT_4: { + mResAccStart.detach(); + mResAccBugs.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameBugs); + unloadData(sMiniGameTime); + break; + } + case VARIANT_5: { + mResAccStart.detach(); + mResAccScore.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameScore); + unloadData(sMiniGameTime); + break; + } + case VARIANT_6: { + mResAccStart.detach(); + mResAccPumpkin.detach(); + mResAccScore.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGamePumpkin); + unloadData(sMiniGameScore); + unloadData(sMiniGameTime); + break; + } + case VARIANT_7: { + mResAccStart.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameTime); + break; + } + case VARIANT_8: { + mResAccStart.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameTime); + break; + } + case VARIANT_9: { + mResAccStart.detach(); + mResAccTime.detach(); + unloadData(sMiniGame); + unloadData(sMiniGameTime); + break; + } + case VARIANT_10: { + mResAccScore.detach(); + unloadData(sMiniGameScore); + break; + } + case VARIANT_11: { + mResAccScore.detach(); + unloadData(sMiniGameScore); + break; + } + case VARIANT_12: { + mResAccTime.detach(); + unloadData(sMiniGameTime); + break; + } + case VARIANT_13: { + mResAccScore.detach(); + unloadData(sMiniGameScore); + break; + } + case VARIANT_14: { + mResAccTime.detach(); + unloadData(sMiniGameTime); + break; + } + case VARIANT_15: { + mResAccTime.detach(); + unloadData(sMiniGameTime); + break; + } + case VARIANT_16: { + mResAccTime.detach(); + unloadData(sMiniGameTime); + break; + } + } + + sInstance = nullptr; + return SUCCEEDED; } +int dLytMiniGame_c::execute() { + return SUCCEEDED; +} -SPECIAL_BASE_PROFILE(LYT_MINI_GAME, dLytMiniGame_c, fProfile::LYT_MINI_GAME, 0x2B4, 0x6F9); +int dLytMiniGame_c::draw() { + return SUCCEEDED; +} + +void dLytMiniGame_c::init() { + mScore.init(); + mScoreSd.init(); + mStart.init(); + mTime.init(); + mBugs.init(); + mPumpkin.init(); +} diff --git a/src/d/snd/d_snd_small_effect_mgr.cpp b/src/d/snd/d_snd_small_effect_mgr.cpp index 0728448f..c1301d31 100644 --- a/src/d/snd/d_snd_small_effect_mgr.cpp +++ b/src/d/snd/d_snd_small_effect_mgr.cpp @@ -544,7 +544,7 @@ bool dSndSmallEffectMgr_c::playMinigameScoreUpSound(s32 param) { return playSoundInternal(soundId); } -bool dSndSmallEffectMgr_c::playMinigameScoreDownSound() { +bool dSndSmallEffectMgr_c::playMinigameScoreDownSound(s32 score) { return playSoundInternal(SE_S_MG_SCORE_DOWN); } |
