summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-12-04 22:49:27 +0100
committerrobojumper <robojumper@gmail.com>2025-12-04 22:50:16 +0100
commit22cff3e05dbcb408d3a792b81547c38ec9b425e9 (patch)
tree5d0bcab72c566d2c1ad19d904583581be62e5d2b /src
parentf8c9af7dc612f635253eb4b75d8b4e802a8e15cd (diff)
95%
Diffstat (limited to 'src')
-rw-r--r--src/REL/d/t/d_t_sword_battle_game.cpp14
-rw-r--r--src/d/d_message.cpp44
-rw-r--r--src/d/lyt/d_lyt_mini_game.cpp788
-rw-r--r--src/d/lyt/meter/d_lyt_meter.cpp2
4 files changed, 755 insertions, 93 deletions
diff --git a/src/REL/d/t/d_t_sword_battle_game.cpp b/src/REL/d/t/d_t_sword_battle_game.cpp
index 5cb2f84a..a5555a1c 100644
--- a/src/REL/d/t/d_t_sword_battle_game.cpp
+++ b/src/REL/d/t/d_t_sword_battle_game.cpp
@@ -68,12 +68,12 @@ int dTgSwordBattleGame_c::actorExecuteInEvent() {
} break;
case 'cndn': {
if (advance) {
- dLytMiniGame_c::GetInstance()->fn_80295940();
+ dLytMiniGame_c::GetInstance()->startCountdown();
- } else if (dLytMiniGame_c::GetInstance()->fn_80295AB0()) {
+ } else if (dLytMiniGame_c::GetInstance()->isStartCountdownDone()) {
dLytMiniGame_c::GetInstance()->timeRelatedExecute();
dLytMiniGame_c::GetInstance()->setHighscore(getBossHighscore());
- dLytMiniGame_c::GetInstance()->fn_80295CB0(true);
+ dLytMiniGame_c::GetInstance()->setShowBestTime(true);
mTimer.initUpCounter();
field_0x1A8 = true;
field_0x1AC = true;
@@ -83,8 +83,8 @@ int dTgSwordBattleGame_c::actorExecuteInEvent() {
} break;
case 'fnsh': {
if (advance) {
- dLytMiniGame_c::GetInstance()->fn_80295980();
- } else if (dLytMiniGame_c::GetInstance()->fn_80295AD0()) {
+ dLytMiniGame_c::GetInstance()->startFinish();
+ } else if (dLytMiniGame_c::GetInstance()->isFinishAnimDone()) {
mEventRelated.advanceNext();
}
ret = SUCCEEDED;
@@ -112,7 +112,7 @@ int dTgSwordBattleGame_c::actorExecuteInEvent() {
setInBossRushFlag();
setCurrentBossNumber(mBossNumber + 1);
if (MinigameManager::endMinigame(MinigameManager::BOSS_RUSH)) {
- dLytMiniGame_c::GetInstance()->fn_80295980();
+ dLytMiniGame_c::GetInstance()->startFinish();
dLytMiniGame_c::GetInstance()->timeRelated();
}
}
@@ -163,7 +163,7 @@ void dTgSwordBattleGame_c::finalizeState_Manage() {}
void dTgSwordBattleGame_c::init() {
if (MinigameManager::GetInstance()->checkInBossRush()) {
- createBase(fProfile::LYT_MINI_GAME, this, 8, OTHER);
+ createBase(fProfile::LYT_MINI_GAME, this, dLytMiniGame_c::VARIANT_BOSS_RUSH, OTHER);
}
mTimer.vt_0x0C();
diff --git a/src/d/d_message.cpp b/src/d/d_message.cpp
index a031544e..7a3e7574 100644
--- a/src/d/d_message.cpp
+++ b/src/d/d_message.cpp
@@ -437,9 +437,7 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) {
dMessage_c::getInstance()->setInMapEvent(true);
dMessage_c::getInstance()->clearLightPillarRelatedArgs();
if (dLytControlGame_c::getInstance()->isStateNotNormalOrInEvent()) {
- dLytControlGame_c::getInstance()->openMapEvent(
- mapEvent, arg1, arg2
- );
+ dLytControlGame_c::getInstance()->openMapEvent(mapEvent, arg1, arg2);
}
} else {
dLytMap_c::GetInstance()->queueMapEvent(mapEvent, arg1, arg2);
@@ -1196,28 +1194,52 @@ void dFlow_c::createLytMiniGame() {
if (dLytMiniGame_c::GetInstance() == nullptr) {
switch (dMessage_c::getInstance()->getMiniGameVariant()) {
case 0:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 11, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_11,
+ fBase_c::OTHER
+ );
break;
case 1:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 10, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_10,
+ fBase_c::OTHER
+ );
break;
case 2:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 12, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_12,
+ fBase_c::OTHER
+ );
break;
case 3:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 14, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_14,
+ fBase_c::OTHER
+ );
break;
case 4:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 13, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_13,
+ fBase_c::OTHER
+ );
break;
case 5:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 2, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_FUN_FUN_ISLAND,
+ fBase_c::OTHER
+ );
break;
case 6:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 16, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_16,
+ fBase_c::OTHER
+ );
break;
case 7:
- dBase_c::createBase(fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), 15, fBase_c::OTHER);
+ dBase_c::createBase(
+ fProfile::LYT_MINI_GAME, dLytControlGame_c::getInstance(), dLytMiniGame_c::VARIANT_15,
+ fBase_c::OTHER
+ );
break;
}
}
diff --git a/src/d/lyt/d_lyt_mini_game.cpp b/src/d/lyt/d_lyt_mini_game.cpp
index 2fdeb81f..11f79c97 100644
--- a/src/d/lyt/d_lyt_mini_game.cpp
+++ b/src/d/lyt/d_lyt_mini_game.cpp
@@ -5,7 +5,11 @@
#include "d/a/d_a_itembase.h"
#include "d/d_lang.h"
#include "d/d_message.h"
+#include "d/d_rawarchive.h"
+#include "d/d_sc_game.h"
+#include "d/d_stage_mgr.h"
#include "d/lyt/d2d.h"
+#include "d/lyt/meter/d_lyt_meter.h"
#include "d/snd/d_snd_small_effect_mgr.h"
#include "d/snd/d_snd_wzsound.h"
#include "f/f_base.h"
@@ -14,7 +18,18 @@
#include "nw4r/lyt/lyt_types.h"
#include "nw4r/math/math_arithmetic.h"
#include "nw4r/math/math_types.h"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/d_d3d.h"
+#include "toBeSorted/event_manager.h"
+#include "toBeSorted/minigame_mgr.h"
+
+dLytMiniGamePumpkin_c *dLytMiniGamePumpkin_c::sInstance;
+dLytMiniGameBugs_c *dLytMiniGameBugs_c::sInstance;
+dLytMiniGameTime_c *dLytMiniGameTime_c::sInstance;
+dLytMiniGameStart_c *dLytMiniGameStart_c::sInstance;
+dLytMiniGameScore_c *dLytMiniGameScore_c::sInstance;
+dLytMiniGameScoreSd_c *dLytMiniGameScoreSd_c::sInstance;
+dLytMiniGame_c *dLytMiniGame_c::sInstance;
static const d2d::LytBrlanMapping brlanMapPumpkin[] = {
{ "miniGamePumpkin_00_getPoint.brlan", "G_scoreAll_00"},
@@ -472,7 +487,7 @@ void dLytMiniGameBugs_c::startIn() {
}
}
-void dLytMiniGameBugs_c::startOutForced() {
+void dLytMiniGameBugs_c::startOutTemp() {
if (sInstance == nullptr) {
return;
}
@@ -574,7 +589,7 @@ bool dLytMiniGameBugs_c::isSlotIconOnEnabled(s32 slot) const {
return mAnm[idx].isEnabled_();
}
-bool dLytMiniGameBugs_c::isSlotBugCollected(s32 slot) {
+bool dLytMiniGameBugs_c::isSlotBugCollected(s32 slot) const {
if (sInstance == nullptr) {
return false;
}
@@ -873,7 +888,7 @@ bool dLytMiniGameTime_c::execute() {
saveSecondsTimer();
}
- if (mVariant == TIME_VARIANT_0) {
+ if (mVariant == TIME_VARIANT_INSECT_CAPTURE) {
if (mCurrentTimerValueSeconds >= 590 && mLastTimerValueSeconds != mCurrentTimerValueSeconds &&
mCurrentTimerValueSeconds != 600) {
dSndSmallEffectMgr_c::GetInstance()->playMinigameTimeUpSound(600 - mCurrentTimerValueSeconds);
@@ -900,12 +915,12 @@ void dLytMiniGameTime_c::init() {
}
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;
+ case TIME_VARIANT_INSECT_CAPTURE: mTimeFormat = TIMER_LONG; break;
+ case TIME_VARIANT_SPIRAL_CHARGE_TUTORIAL: mTimeFormat = TIMER_SECONDS; break;
+ case TIME_VARIANT_PUMPKIN_ARCHERY: mTimeFormat = TIMER_SECONDS; break;
+ case TIME_VARIANT_ROLLERCOASTER: mTimeFormat = TIMER_LONG; break;
+ case TIME_VARIANT_BOSS_RUSH: mTimeFormat = TIMER_LONG; break;
+ case TIME_VARIANT_TRIAL_TIME_ATTACK: mTimeFormat = TIMER_LONG; break;
}
resetAlphaIn();
@@ -944,7 +959,7 @@ void dLytMiniGameTime_c::fn_8028DD80() {
mIsVisible = true;
}
-void dLytMiniGameTime_c::fn_8028DE40() {
+void dLytMiniGameTime_c::startOut() {
if (sInstance == nullptr) {
return;
}
@@ -958,7 +973,7 @@ void dLytMiniGameTime_c::fn_8028DE40() {
}
}
-void dLytMiniGameTime_c::fn_8028DED0() {
+void dLytMiniGameTime_c::startIn() {
if (sInstance == nullptr) {
return;
}
@@ -987,7 +1002,7 @@ void dLytMiniGameTime_c::fn_8028DED0() {
}
}
-void dLytMiniGameTime_c::fn_8028DFD0() {
+void dLytMiniGameTime_c::startOutTemp() {
if (sInstance == nullptr) {
return;
}
@@ -1563,7 +1578,7 @@ bool dLytMiniGameStart_c::execute() {
}
if (isTimeupEndReached()) {
- stopFinish();
+ stopTimeup();
resetPlayedSounds();
mIsVisible = false;
}
@@ -1906,12 +1921,12 @@ bool dLytMiniGameScore_c::execute() {
fn_80291BC0();
if (!field_0x816) {
switch (mVariant) {
- case SCORE_VARIANT_0:
+ case SCORE_VARIANT_BAMBOO_CUTTING:
if (hasIncreasedScore()) {
startGetScore();
}
break;
- case SCORE_VARIANT_2:
+ case SCORE_VARIANT_THRILL_DIGGER:
if (field_0x829) {
if (hasIncreasedScore()) {
startGetScore();
@@ -1924,15 +1939,15 @@ bool dLytMiniGameScore_c::execute() {
field_0x829 = false;
}
break;
- case SCORE_VARIANT_1:
+ case SCORE_VARIANT_FUN_FUN_ISLAND:
if (mScore != 1) {
if (hasIncreasedScore()) {
startGetScore();
}
}
break;
- case SCORE_VARIANT_3:
- case SCORE_VARIANT_4:
+ case SCORE_VARIANT_PUMPKIN_ARCHERY:
+ case SCORE_VARIANT_SPIRAL_CHARGE_TUTORIAL:
if (hasIncreasedScore()) {
startGetScore();
}
@@ -1986,7 +2001,7 @@ bool dLytMiniGameScore_c::execute() {
mLyt.calc();
}
- if (!field_0x816 && mVariant == SCORE_VARIANT_0 && hasIncreasedScore()) {
+ if (!field_0x816 && mVariant == SCORE_VARIANT_BAMBOO_CUTTING && hasIncreasedScore()) {
dSndSmallEffectMgr_c::GetInstance()->playMinigameScoreUpSound(mScore);
}
@@ -2052,7 +2067,7 @@ void dLytMiniGameScore_c::init() {
mAnm[SCORE_ANIM_IN].setAnimEnable(false);
switch (mVariant) {
- case SCORE_VARIANT_0:
+ case SCORE_VARIANT_BAMBOO_CUTTING:
field_0x82C = 0;
field_0x81C = 21;
field_0x7E4 = 4;
@@ -2088,7 +2103,7 @@ void dLytMiniGameScore_c::init() {
fn_80293450(field_0x81C);
break;
- case SCORE_VARIANT_1:
+ case SCORE_VARIANT_FUN_FUN_ISLAND:
field_0x830 = 0;
field_0x82C = 0;
field_0x81C = 11;
@@ -2149,7 +2164,7 @@ void dLytMiniGameScore_c::init() {
}
fn_80293450(field_0x81C);
break;
- case SCORE_VARIANT_2:
+ case SCORE_VARIANT_THRILL_DIGGER:
field_0x830 = 0;
field_0x82C = 0;
field_0x81C = 6;
@@ -2168,7 +2183,7 @@ void dLytMiniGameScore_c::init() {
fn_80293450(field_0x81C);
break;
- case SCORE_VARIANT_3:
+ case SCORE_VARIANT_PUMPKIN_ARCHERY:
field_0x82C = 0;
field_0x81C = 21;
field_0x7E4 = 4;
@@ -2204,7 +2219,7 @@ void dLytMiniGameScore_c::init() {
fn_80293450(field_0x81C);
break;
- case SCORE_VARIANT_4:
+ case SCORE_VARIANT_SPIRAL_CHARGE_TUTORIAL:
field_0x830 = 0;
field_0x82C = 0;
field_0x81C = 19;
@@ -2266,7 +2281,7 @@ void dLytMiniGameScore_c::fn_80291410() {
field_0x820 = true;
mIsVisible = true;
- if (mVariant == SCORE_VARIANT_1) {
+ if (mVariant == SCORE_VARIANT_FUN_FUN_ISLAND) {
setScore(1);
calcNumDigits();
mAnm[SCORE_ANIM_SET_POSITION].setFrame(field_0x81C);
@@ -2283,7 +2298,7 @@ void dLytMiniGameScore_c::fn_80291410() {
}
}
-void dLytMiniGameScore_c::fn_802915B0() {
+void dLytMiniGameScore_c::startOut() {
if (sInstance == nullptr) {
return;
}
@@ -2297,7 +2312,7 @@ void dLytMiniGameScore_c::fn_802915B0() {
}
}
-void dLytMiniGameScore_c::fn_80291640() {
+void dLytMiniGameScore_c::startIn() {
if (sInstance == nullptr) {
return;
}
@@ -2326,7 +2341,7 @@ void dLytMiniGameScore_c::fn_80291640() {
}
}
-void dLytMiniGameScore_c::fn_80291740() {
+void dLytMiniGameScore_c::startOutTemp() {
if (sInstance == nullptr) {
return;
}
@@ -2456,11 +2471,11 @@ void dLytMiniGameScore_c::fn_80291BC0() {
calcNumDigits();
realizePosition();
- if (mVariant == SCORE_VARIANT_1) {
+ if (mVariant == SCORE_VARIANT_FUN_FUN_ISLAND) {
if (field_0x828) {
fn_80291EF0();
}
- } else if (mVariant == SCORE_VARIANT_2) {
+ } else if (mVariant == SCORE_VARIANT_THRILL_DIGGER) {
fn_80292040();
}
@@ -2471,12 +2486,12 @@ void dLytMiniGameScore_c::fn_80291BC0() {
}
}
-void dLytMiniGameScore_c::fn_80291D40(s32 arg) {
+void dLytMiniGameScore_c::fn_80291D40(s32 score) {
if (sInstance == nullptr) {
return;
}
- s32 diff = arg - mScore;
+ s32 diff = score - mScore;
switch (diff) {
case 1:
field_0x80C = 1;
@@ -2501,11 +2516,11 @@ void dLytMiniGameScore_c::fn_80291D40(s32 arg) {
case 0: return;
}
- if (arg < mScore) {
+ if (score < mScore) {
field_0x80C = nw4r::math::FAbs(diff);
field_0x810 = -1;
}
- field_0x808 = arg;
+ field_0x808 = score;
field_0x804 = true;
field_0x829 = true;
}
@@ -2837,7 +2852,7 @@ void dLytMiniGameScore_c::fn_80292C30() {
PaneCalc calc;
switch (mVariant) {
- case SCORE_VARIANT_0: {
+ case SCORE_VARIANT_BAMBOO_CUTTING: {
dMessage_c::getGlobalTagProcessor()->setNumericArg0(mScore);
loadTextVariant(1);
field_0x7E8 = mpTextBoxes[0]->GetLineWidth(nullptr);
@@ -2851,7 +2866,7 @@ void dLytMiniGameScore_c::fn_80292C30() {
break;
}
- case SCORE_VARIANT_3: {
+ case SCORE_VARIANT_PUMPKIN_ARCHERY: {
dMessage_c::getGlobalTagProcessor()->setNumericArg0(mScore);
loadTextVariant(0);
field_0x7E8 = mpTextBoxes[0]->GetLineWidth(nullptr);
@@ -2891,7 +2906,24 @@ void dLytMiniGameScore_c::fn_80292C30() {
}
}
- // TODO - ...
+ // TODO - this uses similar annoying calculations and stack as above but
+ // I can't be bothered right now. Let's at least give this code
+ // a chance to be equivalent, even if it's not matching...
+
+ nw4r::lyt::Pane *p = mpPanes[SCORE_PANE_P_POSITION_0];
+ f32 fVar2 = p->GetSize().width * p->GetScale().x;
+ f32 fVar1 = field_0x834[0][1];
+ f32 fVar3 = p->GetParent()->GetTranslate().x + p->GetTranslate().x;
+ f32 local_e0 = 0.0;
+ if (field_0x830 == 0) {
+ local_e0 = ((-fVar3 + f * 0.5) - fVar2 * 0.5) + 0.0;
+ } else if (field_0x830 == 1) {
+ local_e0 = (((((-fVar3 + f * 0.5) - fVar2 * 0.5) - field_0x7E8) + 0.0) - (f32)field_0x7FC) - (f32)field_0x804;
+ } else if (field_0x830 == 2) {
+ local_e0 = ((-fVar3 + f * 0.5) - fVar2 * 0.5) + 0.0;
+ }
+ mVec3_c translate(local_e0 + (f32)field_0x7F4, fVar1 + field_0x7F8, 0.0f);
+ mpPanes[SCORE_PANE_POSITION]->SetTranslate(translate);
fn_80293450(mHighestDigitIndex + t + field_0x81C);
nw4r::math::MTX34 mtx = mpPanes[SCORE_PANE_CENTER]->GetGlobalMtx();
@@ -3056,7 +3088,7 @@ void dLytMiniGameScoreSd_c::setScoreDown(s32 score) {
return;
}
setScoreInternal(score);
- startScoreUp();
+ startScoreDown();
dSndSmallEffectMgr_c::GetInstance()->playMinigameScoreDownSound(score);
mIsVisible = true;
}
@@ -3197,7 +3229,7 @@ static const char *sMiniGameSd = "MiniGameSd";
int dLytMiniGame_c::create() {
mVariant = mParams;
switch (mVariant) {
- case VARIANT_1: {
+ case VARIANT_BAMBOO_CUTTING: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) {
return NOT_READY;
}
@@ -3207,12 +3239,12 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_0);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_BAMBOO_CUTTING);
mScore.build(&mResAccScore);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_2: {
+ case VARIANT_FUN_FUN_ISLAND: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameSd, SLOT_MINI_GAME_SCORE_SD) ||
loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) {
return NOT_READY;
@@ -3224,13 +3256,13 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameSd, mResAccScoreSd);
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_1);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_FUN_FUN_ISLAND);
mScore.build(&mResAccScore);
mScoreSd.build(&mResAccScoreSd);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_3: {
+ case VARIANT_THRILL_DIGGER: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE)) {
return NOT_READY;
}
@@ -3240,12 +3272,12 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_2);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_THRILL_DIGGER);
mScore.build(&mResAccScore);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_4: {
+ case VARIANT_INSECT_CAPTURE: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameBugs, SLOT_MINI_GAME_BUGS) ||
loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) {
return NOT_READY;
@@ -3257,13 +3289,13 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameBugs, mResAccBugs);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_0);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_INSECT_CAPTURE);
mTime.build(&mResAccTime);
mBugs.build(&mResAccBugs);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_5: {
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameScore, SLOT_MINI_GAME_SCORE) ||
loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) {
return NOT_READY;
@@ -3275,14 +3307,14 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameScore, mResAccScore);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_1);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_SPIRAL_CHARGE_TUTORIAL);
mTime.build(&mResAccTime);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_4);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_SPIRAL_CHARGE_TUTORIAL);
mScore.build(&mResAccScore);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_6: {
+ case VARIANT_PUMPKIN_ARCHERY: {
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;
@@ -3296,15 +3328,15 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGamePumpkin, mResAccPumpkin);
attachLoadedData(sMiniGameScore, mResAccScore);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_2);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_PUMPKIN_ARCHERY);
mTime.build(&mResAccTime);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_3);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_PUMPKIN_ARCHERY);
mScore.build(&mResAccScore);
mStart.build(&mResAccStart);
mPumpkin.build(&mResAccPumpkin);
break;
}
- case VARIANT_7: {
+ case VARIANT_ROLLERCOASTER: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) {
return NOT_READY;
}
@@ -3314,12 +3346,12 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_3);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_ROLLERCOASTER);
mTime.build(&mResAccTime);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_8: {
+ case VARIANT_BOSS_RUSH: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) {
return NOT_READY;
}
@@ -3329,12 +3361,12 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_4);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_BOSS_RUSH);
mTime.build(&mResAccTime);
mStart.build(&mResAccStart);
break;
}
- case VARIANT_9: {
+ case VARIANT_TRIAL_TIME_ATTACK: {
if (loadData(sMiniGame, SLOT_MINI_GAME) || loadData(sMiniGameTime, SLOT_MINI_GAME_TIME)) {
return NOT_READY;
}
@@ -3344,7 +3376,7 @@ int dLytMiniGame_c::create() {
attachLoadedData(sMiniGame, mResAccStart);
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_5);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_TRIAL_TIME_ATTACK);
mTime.build(&mResAccTime);
mStart.build(&mResAccStart);
break;
@@ -3357,7 +3389,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_0);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_BAMBOO_CUTTING);
mScore.setField_0x816(true);
mScore.build(&mResAccScore);
break;
@@ -3370,7 +3402,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_2);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_THRILL_DIGGER);
mScore.setField_0x816(true);
mScore.build(&mResAccScore);
break;
@@ -3383,7 +3415,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_0);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_INSECT_CAPTURE);
mTime.setField_0x7EE(true);
mTime.build(&mResAccTime);
break;
@@ -3396,7 +3428,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameScore, mResAccScore);
- mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_3);
+ mScore.setVariant(dLytMiniGameScore_c::SCORE_VARIANT_PUMPKIN_ARCHERY);
mScore.setField_0x816(true);
mScore.build(&mResAccScore);
break;
@@ -3409,7 +3441,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_3);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_ROLLERCOASTER);
mTime.setField_0x7EE(true);
mTime.build(&mResAccTime);
break;
@@ -3422,7 +3454,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_4);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_BOSS_RUSH);
mTime.setField_0x7EE(true);
mTime.build(&mResAccTime);
break;
@@ -3435,7 +3467,7 @@ int dLytMiniGame_c::create() {
return NOT_READY;
}
attachLoadedData(sMiniGameTime, mResAccTime);
- mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_5);
+ mTime.setVariant(dLytMiniGameTime_c::TIME_VARIANT_TRIAL_TIME_ATTACK);
mTime.setField_0x7EE(true);
mTime.build(&mResAccTime);
break;
@@ -3457,14 +3489,14 @@ int dLytMiniGame_c::doDelete() {
mPumpkin.remove();
switch (mVariant) {
- case VARIANT_1: {
+ case VARIANT_BAMBOO_CUTTING: {
mResAccStart.detach();
mResAccScore.detach();
unloadData(sMiniGame);
unloadData(sMiniGameScore);
break;
}
- case VARIANT_2: {
+ case VARIANT_FUN_FUN_ISLAND: {
mResAccStart.detach();
mResAccScoreSd.detach();
mResAccScore.detach();
@@ -3473,14 +3505,14 @@ int dLytMiniGame_c::doDelete() {
unloadData(sMiniGameScore);
break;
}
- case VARIANT_3: {
+ case VARIANT_THRILL_DIGGER: {
mResAccStart.detach();
mResAccScore.detach();
unloadData(sMiniGame);
unloadData(sMiniGameScore);
break;
}
- case VARIANT_4: {
+ case VARIANT_INSECT_CAPTURE: {
mResAccStart.detach();
mResAccBugs.detach();
mResAccTime.detach();
@@ -3489,7 +3521,7 @@ int dLytMiniGame_c::doDelete() {
unloadData(sMiniGameTime);
break;
}
- case VARIANT_5: {
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL: {
mResAccStart.detach();
mResAccScore.detach();
mResAccTime.detach();
@@ -3498,7 +3530,7 @@ int dLytMiniGame_c::doDelete() {
unloadData(sMiniGameTime);
break;
}
- case VARIANT_6: {
+ case VARIANT_PUMPKIN_ARCHERY: {
mResAccStart.detach();
mResAccPumpkin.detach();
mResAccScore.detach();
@@ -3509,21 +3541,21 @@ int dLytMiniGame_c::doDelete() {
unloadData(sMiniGameTime);
break;
}
- case VARIANT_7: {
+ case VARIANT_ROLLERCOASTER: {
mResAccStart.detach();
mResAccTime.detach();
unloadData(sMiniGame);
unloadData(sMiniGameTime);
break;
}
- case VARIANT_8: {
+ case VARIANT_BOSS_RUSH: {
mResAccStart.detach();
mResAccTime.detach();
unloadData(sMiniGame);
unloadData(sMiniGameTime);
break;
}
- case VARIANT_9: {
+ case VARIANT_TRIAL_TIME_ATTACK: {
mResAccStart.detach();
mResAccTime.detach();
unloadData(sMiniGame);
@@ -3572,13 +3604,577 @@ int dLytMiniGame_c::doDelete() {
}
int dLytMiniGame_c::execute() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_10: fn_80295F90(); break;
+ case VARIANT_FUN_FUN_ISLAND: fn_80296000(); break;
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_11: fn_80296070(); break;
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_12: fn_80296150(); break;
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL: fn_80296210(); break;
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_13: fn_802962A0(); break;
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_14: fn_80296330(); break;
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_15: fn_802963E0(); break;
+ case VARIANT_TRIAL_TIME_ATTACK:
+ case VARIANT_16: fn_80296480(); break;
+ }
+
+ mScore.execute();
+ mScoreSd.execute();
+ mTime.execute();
+ mBugs.execute();
+ mPumpkin.execute();
+
+ if (!isPopupOpenExceptHelp()) {
+ mStart.execute();
+ }
+
return SUCCEEDED;
}
int dLytMiniGame_c::draw() {
+ mPumpkin.draw();
+ mScoreSd.draw();
+ mBugs.draw();
+ mScore.draw();
+ mTime.draw();
+
+ if (!isPopupOpenExceptHelp()) {
+ mStart.draw();
+ }
+
return SUCCEEDED;
}
+void dLytMiniGame_c::scoreRelatedExecute() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY: mScore.fn_80291410(); break;
+ case VARIANT_FUN_FUN_ISLAND:
+ if (fn_80295DB0()) {
+ mScore.startAlphaIn();
+ } else {
+ mScore.fn_80291410();
+ mScore.setField_0x828(false);
+ }
+ break;
+ case VARIANT_10:
+ case VARIANT_11:
+ case VARIANT_13: mScore.startAlphaIn();
+ }
+}
+
+void dLytMiniGame_c::scoreRelated() {
+ switch (mVariant) {
+ case VARIANT_FUN_FUN_ISLAND:
+ if (fn_80295DB0()) {
+ mScore.startAlphaOut();
+ } else {
+ mScore.startOut();
+ }
+ break;
+ case VARIANT_10:
+ case VARIANT_11:
+ case VARIANT_13: mScore.startAlphaOut(); break;
+ }
+}
+
+void dLytMiniGame_c::setDisplayedPoints(s32 points) {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY: mScore.setScore(points); break;
+ case VARIANT_FUN_FUN_ISLAND:
+ fn_80295DB0();
+ mScore.setScore(points);
+ break;
+ case VARIANT_THRILL_DIGGER: mScore.fn_80291D40(points); break;
+ case VARIANT_10:
+ case VARIANT_13: mScore.setScore(points); break;
+ case VARIANT_11:
+ mScore.setScore(points);
+ field_0x3864 = 1;
+ field_0x3865 = 0;
+ break;
+ }
+}
+
+void dLytMiniGame_c::fn_80295900(s32 arg) {
+ mScore.fn_80291ED0(arg);
+ mScore.setField_0x828(true);
+}
+
+void dLytMiniGame_c::startCountdown() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_TRIAL_TIME_ATTACK: mStart.startCountdown(); break;
+ case VARIANT_BOSS_RUSH: mStart.startCountdown120(); break;
+ }
+}
+
+void dLytMiniGame_c::startFinish() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_PUMPKIN_ARCHERY:
+ mStart.startFinish();
+ mScore.startFinish();
+ break;
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK:
+ mStart.startFinish();
+ mTime.startFinish();
+ break;
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ mStart.startFinish();
+ mScore.startFinish();
+ break;
+ }
+}
+
+void dLytMiniGame_c::fn_80295A20() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ // case VARIANT_PUMPKIN_ARCHERY:
+ mStart.startTimeup();
+ mScore.startFinish();
+ break;
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK:
+ mStart.startTimeup();
+ mTime.startFinish();
+ break;
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ mStart.startTimeup();
+ mScore.startFinish();
+ break;
+ }
+}
+
+bool dLytMiniGame_c::isStartCountdownDone() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK: return mStart.isCountdownEndReached();
+ }
+ return false;
+}
+
+bool dLytMiniGame_c::isFinishAnimDone() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK: return mStart.isFinishEndReached();
+ }
+ return false;
+}
+
+bool dLytMiniGame_c::isTimeupAnimDone() {
+ switch (mVariant) {
+ case VARIANT_BAMBOO_CUTTING:
+ case VARIANT_FUN_FUN_ISLAND:
+ case VARIANT_THRILL_DIGGER:
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ // case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK: return mStart.isTimeupEndReached();
+ }
+ return false;
+}
+
+void dLytMiniGame_c::fn_80295B20(s32 score) {
+ mScoreSd.setScoreUp(score);
+}
+
+void dLytMiniGame_c::fn_80295B30(s32 score) {
+ mScoreSd.setScoreDown(score);
+}
+
+void dLytMiniGame_c::timeRelatedExecute() {
+ switch (mVariant) {
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK: mTime.fn_8028DD80(); break;
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ if (!dScGame_c::GetInstance()->isFadingIn()) {
+ mTime.fn_8028DD80();
+ }
+ break;
+ case VARIANT_12:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: mTime.startAlphaIn(); break;
+ }
+}
+
+void dLytMiniGame_c::timeRelated() {
+ switch (mVariant) {
+ case VARIANT_12:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: mTime.startAlphaOut(); break;
+ }
+}
+
+void dLytMiniGame_c::setDisplayedTime(s32 time) {
+ switch (mVariant) {
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK: mTime.setTimerValueInMilliSeconds(time); break;
+ case VARIANT_PUMPKIN_ARCHERY: mTime.setTimerSecondsValueInMilliSeconds(time); break;
+ case VARIANT_SPIRAL_CHARGE_TUTORIAL: mTime.setTimerSecondsValueInMilliSeconds(time); break;
+ case VARIANT_12:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: mTime.setTimerValueInMilliSeconds(time); break;
+ }
+}
+
+void dLytMiniGame_c::setHighscore(s32 time) {
+ switch (mVariant) {
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK:
+ // case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_12:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: mTime.setBestTime(time); break;
+ }
+}
+
+void dLytMiniGame_c::setShowBestTime(bool show) {
+ switch (mVariant) {
+ case VARIANT_INSECT_CAPTURE:
+ case VARIANT_ROLLERCOASTER:
+ case VARIANT_BOSS_RUSH:
+ case VARIANT_TRIAL_TIME_ATTACK:
+ // case VARIANT_SPIRAL_CHARGE_TUTORIAL:
+ case VARIANT_PUMPKIN_ARCHERY:
+ case VARIANT_12:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: mTime.setShowBestTime(show); break;
+ }
+}
+
+void dLytMiniGame_c::startBugsAllIconsIn() {
+ mBugs.startAllIconsIn();
+}
+
+void dLytMiniGame_c::set5Bugs() {
+ mBugs.setBugsNumLevel(0);
+}
+
+void dLytMiniGame_c::set10Bugs() {
+ mBugs.setBugsNumLevel(1);
+}
+
+void dLytMiniGame_c::reInitBugs() {
+ mBugs.init();
+}
+
+void dLytMiniGame_c::setBug(s32 slot, s32 bugIndex) {
+ mBugs.setBug(slot, bugIndex);
+}
+
+void dLytMiniGame_c::collectBug(s32 slot) {
+ mBugs.collectBug(slot);
+}
+
+void dLytMiniGame_c::startBugsFlash() {
+ mBugs.startBugsFlash();
+}
+
+bool dLytMiniGame_c::isBugIconOnEndReached(s32 slot) const {
+ return mBugs.isSlotIconOnEndReached(slot);
+}
+
+bool dLytMiniGame_c::isBugCollected(s32 slot) const {
+ return mBugs.isSlotBugCollected(slot);
+}
+
+void dLytMiniGame_c::fn_80295D80() {
+ scoreRelatedExecute();
+}
+
+void dLytMiniGame_c::fn_80295D90(s32 points) {
+ setDisplayedPoints(points);
+}
+
+void dLytMiniGame_c::getPumpkin(const mVec3_c &pumpkinPos, s32 unk, bool doubleScore) {
+ mPumpkin.getPoint(pumpkinPos, unk, doubleScore);
+}
+
+// cannot be const...
+bool dLytMiniGame_c::fn_80295DB0() {
+ bool ret = false;
+ switch (mVariant) {
+ case VARIANT_10:
+ case VARIANT_11:
+ case VARIANT_12:
+ case VARIANT_13:
+ case VARIANT_14:
+ case VARIANT_15:
+ case VARIANT_16: ret = true; break;
+ case VARIANT_FUN_FUN_ISLAND:
+ if (!MinigameManager::GetInstance()->checkInFunFunIsland()) {
+ ret = true;
+ }
+ break;
+ }
+ return ret;
+}
+
+bool dLytMiniGame_c::isInEvent() const {
+ bool ret = false;
+ if (EventManager::isInEvent()) {
+ ret = true;
+ }
+ return ret;
+}
+
+bool dLytMiniGame_c::isPopupOpen() const {
+ bool ret = false;
+ if (dLytMeter_c::isPopupOpen()) {
+ ret = true;
+ }
+ return ret;
+}
+
+bool dLytMiniGame_c::isPopupOpenExceptHelp() const {
+ bool ret = false;
+ if (isPopupOpen()) {
+ ret = true;
+ }
+
+ if (dLytMeter_c::GetInstance()->isHelpOpen()) {
+ ret = false;
+ }
+
+ return ret;
+}
+
+bool dLytMiniGame_c::isFadingOut() const {
+ bool ret = false;
+ if (dStageMgr_c::GetInstance()->isFadingOut() || dScGame_c::GetInstance()->isFadingOut()) {
+ ret = true;
+ }
+ return ret;
+}
+
+void dLytMiniGame_c::fn_80295F90() {
+ if (fn_80295DB0()) {
+ // nothing
+ } else {
+ if (isPopupOpen()) {
+ mScore.startOutTemp();
+ } else {
+ mScore.startIn();
+ }
+
+ if (isFadingOut()) {
+ mScore.startOut();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296000() {
+ if (fn_80295DB0()) {
+ mScore.setField_0x816(true);
+ } else {
+ mScore.setField_0x816(false);
+ if (isPopupOpen()) {
+ mScore.startOutTemp();
+ } else {
+ mScore.startIn();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296070() {
+ if (fn_80295DB0()) {
+ if (field_0x3864 == 1) {
+ s32 score = mScore.getScore();
+ s32 rupeeDiff = dLytMeter_c::getRupeeDifference();
+ if (score != 0) {
+ if (rupeeDiff != 0) {
+ field_0x3865 = 1;
+ }
+
+ if (field_0x3865 == 1 && rupeeDiff < score) {
+ mScore.setScore(rupeeDiff);
+ }
+ }
+ }
+ } else {
+ if (isPopupOpen()) {
+ mScore.startOutTemp();
+ } else {
+ mScore.startIn();
+ }
+
+ if (isFadingOut()) {
+ mScore.startOut();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296150() {
+ if (fn_80295DB0()) {
+ // nothing
+ } else {
+ if (isInEvent() || isPopupOpen()) {
+ if (!field_0x3866) {
+ mBugs.startOutTemp();
+ mTime.startOutTemp();
+ } else {
+ mBugs.startIn();
+ mTime.startIn();
+ }
+ } else {
+ mBugs.startIn();
+ mTime.startIn();
+ }
+
+ if (isFadingOut()) {
+ mBugs.startOut();
+ mTime.startOut();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296210() {
+ if (isInEvent() || isPopupOpen()) {
+ mScore.startOutTemp();
+ mTime.startOutTemp();
+ } else {
+ mScore.startIn();
+ mTime.startIn();
+ }
+
+ if (isFadingOut()) {
+ mScore.startOut();
+ mTime.startOut();
+ }
+}
+
+void dLytMiniGame_c::fn_802962A0() {
+ if (!fn_80295DB0()) {
+ if (isPopupOpen()) {
+ mScore.startOutTemp();
+ mTime.startOutTemp();
+ } else {
+ mScore.startIn();
+ mTime.startIn();
+ }
+
+ if (isFadingOut()) {
+ mScore.startOut();
+ mTime.startOut();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296330() {
+ if (fn_80295DB0()) {
+ // nothing
+ } else {
+ if (isInEvent() || isPopupOpen()) {
+ if (!field_0x3866) {
+ mTime.startOutTemp();
+ } else {
+ mTime.startIn();
+ }
+ } else {
+ mTime.startIn();
+ }
+
+ if (isFadingOut() && field_0x3866 == 1) {
+ mTime.startOut();
+ }
+ }
+}
+
+// These two do the same thing
+void dLytMiniGame_c::fn_802963E0() {
+ if (fn_80295DB0()) {
+ // nothing
+ } else {
+ if (isInEvent() || isPopupOpen()) {
+ if (!field_0x3866) {
+ mTime.startOutTemp();
+ } else {
+ mTime.startIn();
+ }
+ } else {
+ mTime.startIn();
+ }
+
+ if (isFadingOut()) {
+ mTime.startOut();
+ }
+ }
+}
+
+void dLytMiniGame_c::fn_80296480() {
+ if (fn_80295DB0()) {
+ // nothing
+ } else {
+ if (isInEvent() || isPopupOpen()) {
+ if (!field_0x3866) {
+ mTime.startOutTemp();
+ } else {
+ mTime.startIn();
+ }
+ } else {
+ mTime.startIn();
+ }
+
+ if (isFadingOut()) {
+ mTime.startOut();
+ }
+ }
+}
+
void dLytMiniGame_c::init() {
mScore.init();
mScoreSd.init();
@@ -3587,3 +4183,47 @@ void dLytMiniGame_c::init() {
mBugs.init();
mPumpkin.init();
}
+
+bool dLytMiniGame_c::loadData(const char *name, s32 slot) {
+ bool loadRequest = false;
+ switch (slot) {
+ case SLOT_MINI_GAME: loadRequest = field_0x0068; break;
+ case SLOT_MINI_GAME_SCORE: loadRequest = field_0x0069; break;
+ case SLOT_MINI_GAME_TIME: loadRequest = field_0x006A; break;
+ case SLOT_MINI_GAME_BUGS: loadRequest = field_0x006B; break;
+ case SLOT_MINI_GAME_PUMPKIN: loadRequest = field_0x006C; break;
+ case SLOT_MINI_GAME_SCORE_SD: loadRequest = field_0x006D; break;
+ }
+
+ if (!loadRequest) {
+ LayoutArcManager::GetInstance()->loadLayoutArcFromDisk(name, nullptr);
+ switch (slot) {
+ case SLOT_MINI_GAME: field_0x0068 = true; break;
+ case SLOT_MINI_GAME_SCORE: field_0x0069 = true; break;
+ case SLOT_MINI_GAME_TIME: field_0x006A = true; break;
+ case SLOT_MINI_GAME_BUGS: field_0x006B = true; break;
+ case SLOT_MINI_GAME_PUMPKIN: field_0x006C = true; break;
+ case SLOT_MINI_GAME_SCORE_SD: field_0x006D = true; break;
+ }
+ return true;
+ }
+ return false;
+}
+
+bool dLytMiniGame_c::isLoading(const char *name) const {
+ return LayoutArcManager::GetInstance()->ensureLoaded1(name) != D_ARC_RESULT_OK;
+}
+
+void dLytMiniGame_c::attachLoadedData(const char *name, d2d::ResAccIf_c &resAcc) {
+ resAcc.attach(LayoutArcManager::GetInstance()->getLoadedData(name), "");
+}
+
+void dLytMiniGame_c::unloadData(const char *name) {
+ s32 res = LayoutArcManager::GetInstance()->ensureLoaded2(name);
+ if (res == D_ARC_RESULT_ERROR_NOT_FOUND) {
+ return;
+ }
+ if (res == D_ARC_RESULT_OK) {
+ LayoutArcManager::GetInstance()->decrement(name);
+ }
+}
diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp
index c8db7a82..bb0accb9 100644
--- a/src/d/lyt/meter/d_lyt_meter.cpp
+++ b/src/d/lyt/meter/d_lyt_meter.cpp
@@ -581,7 +581,7 @@ bool dLytMeterMain_c::fn_800C9FE0() {
return false;
}
-bool dLytMeterMain_c::fn_800CA040() {
+bool dLytMeterMain_c::isPopupOpen() {
if (mHelpOpen || isInModeMap() || isInModePause()) {
return true;
}