diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 9055cfef..e2e88ddf 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -2496,7 +2496,7 @@ getCurrentBeetleType__7dAcPy_cFv = .text:0x8005C270; // type:function size:0x78 getCurrentBowType__7dAcPy_cFv = .text:0x8005C2F0; // type:function size:0x60 getCurrentMittsType = .text:0x8005C350; // type:function size:0x48 isPouchUsable = .text:0x8005C3A0; // type:function size:0x80 -isInBossRushMinigameState = .text:0x8005C420; // type:function size:0x8 +checkInBossRush__15MinigameManagerFv = .text:0x8005C420; // type:function size:0x8 isItemRestrictedByBokoBase__7dAcPy_cF7ITEM_ID = .text:0x8005C430; // type:function size:0xB8 isItemRestricted = .text:0x8005C4F0; // type:function size:0xE0 fn_8005C5D0 = .text:0x8005C5D0; // type:function size:0x34 @@ -2656,7 +2656,7 @@ setSwordAnm__19daPlayerModelBase_cFPCc = .text:0x8005E090; // type:function size initSwordModel__19daPlayerModelBase_cFv = .text:0x8005E100; // type:function size:0x1F0 updateSwordModel__19daPlayerModelBase_cFv = .text:0x8005E2F0; // type:function size:0xA8 getCurrentShieldPouchSlot__19daPlayerModelBase_cFv = .text:0x8005E3A0; // type:function size:0x50 -isInBambooCuttingMinigame__7dAcPy_cFv = .text:0x8005E3F0; // type:function size:0x8 scope:weak +checkInBambooCutting__15MinigameManagerFv = .text:0x8005E3F0; // type:function size:0x8 scope:weak getCurrentlyEquippedShieldId__19daPlayerModelBase_cFv = .text:0x8005E400; // type:function size:0x4C getShieldType__19daPlayerModelBase_cFl = .text:0x8005E450; // type:function size:0x3C initShieldModel__19daPlayerModelBase_cFv = .text:0x8005E490; // type:function size:0x2C0 @@ -5841,8 +5841,8 @@ baseItemLytIndexToCurrentVariant__21dLytMeterItemSelect_cCFl = .text:0x800F07D0; baseItemIdToCurrentVariant__21dLytMeterItemSelect_cCF7ITEM_ID = .text:0x800F08B0; // type:function size:0xD4 getBaseItemLytIndexforInternalId__21dLytMeterItemSelect_cCFl = .text:0x800F0990; // type:function size:0x44 isWheelBlockedByCurrentAction__21dLytMeterItemSelect_cFv = .text:0x800F09E0; // type:function size:0xBC -isInSpiralChargeTutorialMinigame__21dLytMeterItemSelect_cFv = .text:0x800F0AA0; // type:function size:0x8 -isInRollercoasterMinigame__21dLytMeterItemSelect_cFv = .text:0x800F0AB0; // type:function size:0x8 +checkInSprialChargeTutorial__15MinigameManagerFv = .text:0x800F0AA0; // type:function size:0x8 scope:weak +checkInRollerCoaster__15MinigameManagerFv = .text:0x800F0AB0; // type:function size:0x8 scope:weak setCurrentItemText__21dLytMeterItemSelect_cF7ITEM_ID = .text:0x800F0AC0; // type:function size:0xA8 getName__21dLytMeterItemSelect_cCFv = .text:0x800F0B70; // type:function size:0x8 scope:weak getLyt__21dLytMeterItemSelect_cFv = .text:0x800F0B80; // type:function size:0x8 scope:weak @@ -13136,26 +13136,26 @@ moveLinkToCoordinatesMaybe = .text:0x8023B600; // type:function size:0x438 fn_8023BA40 = .text:0x8023BA40; // type:function size:0xAC fn_8023BAF0 = .text:0x8023BAF0; // type:function size:0x6C checkMinigameStateBitset = .text:0x8023BB60; // type:function size:0x13C -checkInsectCaptureGameState = .text:0x8023BCA0; // type:function size:0x4 -checkInsectCaptureGameState2 = .text:0x8023BCB0; // type:function size:0x8 -checkMinigameStatePumpkinCarry = .text:0x8023BCC0; // type:function size:0x4 -checkMinigameStatePumpkinCarry2 = .text:0x8023BCD0; // type:function size:0x8 -checkBambooCuttingMinigameState2 = .text:0x8023BCE0; // type:function size:0x4 -checkMinigameThrillDigger = .text:0x8023BCF0; // type:function size:0x4 -checkMinigameThrillDigger2 = .text:0x8023BD00; // type:function size:0x8 -checkFunFunIslandMinigameState = .text:0x8023BD10; // type:function size:0x4 +isInMinigameInsectCapture__7dAcPy_cFv = .text:0x8023BCA0; // type:function size:0x4 +checkInInsectCapture__15MinigameManagerFv = .text:0x8023BCB0; // type:function size:0x8 +isInMinigamePumpkinCarry__7dAcPy_cFv = .text:0x8023BCC0; // type:function size:0x4 +checkInPumpkinCarry__15MinigameManagerFv = .text:0x8023BCD0; // type:function size:0x8 +isInMinigameBambooCutting__7dAcPy_cFv = .text:0x8023BCE0; // type:function size:0x4 +isInMinigameThrillDigger__7dAcPy_cFv = .text:0x8023BCF0; // type:function size:0x4 +checkInThrillDigger__15MinigameManagerFv = .text:0x8023BD00; // type:function size:0x8 +isInMinigameFunFunIsland__7dAcPy_cFv = .text:0x8023BD10; // type:function size:0x4 checkInFunFunIsland__15MinigameManagerFv = .text:0x8023BD20; // type:function size:0x8 -checkMinigameHouseCleaning = .text:0x8023BD30; // type:function size:0x4 -checkMinigameHouseCleaning2 = .text:0x8023BD40; // type:function size:0x8 -checkTrialTimeAttackMinigameState = .text:0x8023BD50; // type:function size:0x4 -checkTrialTimeAttackMinigameState2 = .text:0x8023BD60; // type:function size:0x8 -isInBossRushMinigameState2 = .text:0x8023BD70; // type:function size:0x4 -checkPumpkinClayShootingMinigameState = .text:0x8023BD80; // type:function size:0x4 -checkPumpkinClayShootingMinigameState2 = .text:0x8023BD90; // type:function size:0x8 -checkHarpPlayingMinigameState = .text:0x8023BDA0; // type:function size:0x4 -checkHarpPlayingMinigameState2 = .text:0x8023BDB0; // type:function size:0x8 -checkRollercoasterMinigameState2 = .text:0x8023BDC0; // type:function size:0x4 -inSpecialMinigameState = .text:0x8023BDD0; // type:function size:0x4 +isInMinigameHouseCleaning__7dAcPy_cFv = .text:0x8023BD30; // type:function size:0x4 +checkInHouseCleaning__15MinigameManagerFv = .text:0x8023BD40; // type:function size:0x8 +isInMinigameTrialTimeAttack__7dAcPy_cFv = .text:0x8023BD50; // type:function size:0x4 +checkInTrialTimeAttack__15MinigameManagerFv = .text:0x8023BD60; // type:function size:0x8 +isInMinigameBossRush__7dAcPy_cFv = .text:0x8023BD70; // type:function size:0x4 +isInMinigamePumpkinArchery__7dAcPy_cFv = .text:0x8023BD80; // type:function size:0x4 +checkInPumpkinArchery__15MinigameManagerFv = .text:0x8023BD90; // type:function size:0x8 +isInMinigameHarpPlaying__7dAcPy_cFv = .text:0x8023BDA0; // type:function size:0x4 +checkInHarpPlaying__15MinigameManagerFv = .text:0x8023BDB0; // type:function size:0x8 +isInMinigameRollerCoaster__7dAcPy_cFv = .text:0x8023BDC0; // type:function size:0x4 +isInMinigameSprialChargeTutorial__7dAcPy_cFv = .text:0x8023BDD0; // type:function size:0x4 fn_8023BDE0 = .text:0x8023BDE0; // type:function size:0x144 handlesInputMaybe = .text:0x8023BF30; // type:function size:0x974 fn_8023C8B0 = .text:0x8023C8B0; // type:function size:0x130 diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index ec26b17b..9cb2c797 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -109,6 +109,20 @@ public: f32 fn_802097C0(); // 1000.0f f32 fn_802097D0(); // 4000.0f + // Minigame Functions [0x8023BB60 - 0x8023BDD0] + static bool isInMinigameInsectCapture(); + static bool isInMinigamePumpkinCarry(); + static bool isInMinigameBambooCutting(); + static bool isInMinigameThrillDigger(); + static bool isInMinigameFunFunIsland(); + static bool isInMinigameHouseCleaning(); + static bool isInMinigameTrialTimeAttack(); + static bool isInMinigameBossRush(); + static bool isInMinigamePumpkinArchery(); + static bool isInMinigameHarpPlaying(); + static bool isInMinigameRollerCoaster(); + static bool isInMinigameSprialChargeTutorial(); + public: f32 getField_0x4564() const { return field_0x4564; @@ -172,9 +186,6 @@ public: } static s32 getCurrentBugNetType(); - static bool isInBambooCuttingMinigame() { - return MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING); - } static bool isItemRestrictedByBokoBase(ITEM_ID item); static u32 getCurrentHealthCapacity(); diff --git a/include/d/lyt/meter/d_lyt_meter_item_select.h b/include/d/lyt/meter/d_lyt_meter_item_select.h index 1ef2dc50..e9af596d 100644 --- a/include/d/lyt/meter/d_lyt_meter_item_select.h +++ b/include/d/lyt/meter/d_lyt_meter_item_select.h @@ -169,9 +169,6 @@ public: virtual ~dLytMeterItemSelect_c() {} - static bool isInSpiralChargeTutorialMinigame(); - static bool isInRollercoasterMinigame(); - // This enum might be used externally too? enum InternalItem_e { I_BOMB_BAG, diff --git a/include/toBeSorted/minigame_mgr.h b/include/toBeSorted/minigame_mgr.h index 941d3ed6..644d452a 100644 --- a/include/toBeSorted/minigame_mgr.h +++ b/include/toBeSorted/minigame_mgr.h @@ -31,12 +31,42 @@ public: static MinigameManager *GetInstance() { return sInstance; } - static bool checkInBossRush() { - return isInMinigameState(BOSS_RUSH); + static bool checkInInsectCapture() { + return isInMinigameState(INSECT_CAPTURE); + } + static bool checkInPumpkinCarry() { + return isInMinigameState(PUMPKIN_CARRY); + } + static bool checkInBambooCutting() { + return isInMinigameState(BAMBOO_CUTTING); + } + static bool checkInThrillDigger() { + return isInMinigameState(THRILL_DIGGER); } static bool checkInFunFunIsland() { return isInMinigameState(FUN_FUN_ISLAND); } + static bool checkInHouseCleaning() { + return isInMinigameState(HOUSE_CLEANING); + } + static bool checkInTrialTimeAttack() { + return isInMinigameState(TRIAL_TIME_ATTACK); + } + static bool checkInBossRush() { + return isInMinigameState(BOSS_RUSH); + } + static bool checkInPumpkinArchery() { + return isInMinigameState(PUMPKIN_ARCHERY); + } + static bool checkInHarpPlaying() { + return isInMinigameState(HARP_PLAYING); + } + static bool checkInRollerCoaster() { + return isInMinigameState(ROLLERCOASTER); + } + static bool checkInSprialChargeTutorial() { + return isInMinigameState(SPIRAL_CHARGE_TUTORIAL); + } private: MinigameManager() {} diff --git a/src/d/a/d_a_player.cpp b/src/d/a/d_a_player.cpp index c11544aa..1bb73c8c 100644 --- a/src/d/a/d_a_player.cpp +++ b/src/d/a/d_a_player.cpp @@ -6,6 +6,7 @@ #include "d/a/obj/d_a_obj_bomb.h" #include "f/f_profile.h" #include "f/f_profile_name.h" +#include "toBeSorted/minigame_mgr.h" #include @@ -113,3 +114,40 @@ void dAcPy_c::ObjectArray::removeBombs() { } } } + +bool dAcPy_c::isInMinigameInsectCapture() { + return MinigameManager::GetInstance()->checkInInsectCapture(); +} +bool dAcPy_c::isInMinigamePumpkinCarry() { + return MinigameManager::GetInstance()->checkInPumpkinCarry(); +} +bool dAcPy_c::isInMinigameBambooCutting() { + return MinigameManager::GetInstance()->checkInBambooCutting(); +} +bool dAcPy_c::isInMinigameThrillDigger() { + return MinigameManager::GetInstance()->checkInThrillDigger(); +} +bool dAcPy_c::isInMinigameFunFunIsland() { + return MinigameManager::GetInstance()->checkInFunFunIsland(); +} +bool dAcPy_c::isInMinigameHouseCleaning() { + return MinigameManager::GetInstance()->checkInHouseCleaning(); +} +bool dAcPy_c::isInMinigameTrialTimeAttack() { + return MinigameManager::GetInstance()->checkInTrialTimeAttack(); +} +bool dAcPy_c::isInMinigameBossRush() { + return MinigameManager::GetInstance()->checkInBossRush(); +} +bool dAcPy_c::isInMinigamePumpkinArchery() { + return MinigameManager::GetInstance()->checkInPumpkinArchery(); +} +bool dAcPy_c::isInMinigameHarpPlaying() { + return MinigameManager::GetInstance()->checkInHarpPlaying(); +} +bool dAcPy_c::isInMinigameRollerCoaster() { + return MinigameManager::GetInstance()->checkInRollerCoaster(); +} +bool dAcPy_c::isInMinigameSprialChargeTutorial() { + return MinigameManager::GetInstance()->checkInSprialChargeTutorial(); +} diff --git a/src/d/d_player_mdl.cpp b/src/d/d_player_mdl.cpp index 78e1e1bb..3e934cfd 100644 --- a/src/d/d_player_mdl.cpp +++ b/src/d/d_player_mdl.cpp @@ -999,8 +999,9 @@ void daPlayerModelBase_c::updateSwordModel() { } u32 daPlayerModelBase_c::getCurrentShieldPouchSlot() { - // Compiler quirk, inline function not inlined due to GetLink call - if (dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL || dAcPy_c::GetLink()->isInBambooCuttingMinigame()) { + // Compiler quirk, inline function not inlined due to MinigameManager::GetInstance call + if (dScGame_c::currentSpawnInfo.getTrial() == SpawnInfo::TRIAL || + MinigameManager::GetInstance()->checkInBambooCutting()) { return POUCH_SLOT_NONE; } return FileManager::GetInstance()->getShieldPouchSlot(); diff --git a/src/d/lyt/d_lyt_do_button.cpp b/src/d/lyt/d_lyt_do_button.cpp index 4aaadfbd..7b58f0cd 100644 --- a/src/d/lyt/d_lyt_do_button.cpp +++ b/src/d/lyt/d_lyt_do_button.cpp @@ -9,6 +9,7 @@ #include "nw4r/math/math_types.h" #include "sized_string.h" #include "toBeSorted/event_manager.h" +#include "toBeSorted/minigame_mgr.h" struct dLytDoButton_HIO_c { dLytDoButton_HIO_c(); @@ -294,7 +295,7 @@ bool dLytDobutton_c::remove() { bool dLytDobutton_c::execute() { bool isInEvent = EventManager::isInEvent(); bool b1 = true; - if (dAcPy_c::GetLink()->isInBambooCuttingMinigame()) { + if (MinigameManager::GetInstance()->checkInBambooCutting()) { setActionTextStuff(ICON_12, ACT_DO_70, false); } if (field_0x490 == 0) { diff --git a/src/d/lyt/meter/d_lyt_meter_item_select.cpp b/src/d/lyt/meter/d_lyt_meter_item_select.cpp index 02bd0ca1..aaf4fe81 100644 --- a/src/d/lyt/meter/d_lyt_meter_item_select.cpp +++ b/src/d/lyt/meter/d_lyt_meter_item_select.cpp @@ -2714,23 +2714,16 @@ bool dLytMeterItemSelect_c::isWheelBlockedByCurrentAction() { if (dAcPy_c::LINK->getRidingActorType() == dAcPy_c::RIDING_LOFTWING || dAcPy_c::LINK->checkActionFlags(dAcPy_c::FLG0_SWING_ROPE) || dAcPy_c::LINK->checkCurrentAction(0x9C) || dAcPy_c::LINK->getRidingActorType() == dAcPy_c::RIDING_TRUCK_MINECART || - dAcPy_c::LINK->checkCurrentAction(0x95) || isInSpiralChargeTutorialMinigame() || isInRollercoasterMinigame() || - dAcPy_c::LINK->checkCurrentAction(0x8C) || dLytMeter_c::GetMain()->isInSwordDrawEvent() || - checkIsInSkykeepPuzzle() || dLytMeter_c::GetInstance()->getMeterField_0x13770() == 0) { + dAcPy_c::LINK->checkCurrentAction(0x95) || MinigameManager::GetInstance()->checkInSprialChargeTutorial() || + MinigameManager::GetInstance()->checkInRollerCoaster() || dAcPy_c::LINK->checkCurrentAction(0x8C) || + dLytMeter_c::GetMain()->isInSwordDrawEvent() || checkIsInSkykeepPuzzle() || + dLytMeter_c::GetInstance()->getMeterField_0x13770() == 0) { return true; } return false; } -bool dLytMeterItemSelect_c::isInSpiralChargeTutorialMinigame() { - return MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL); -} - -bool dLytMeterItemSelect_c::isInRollercoasterMinigame() { - return MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER); -} - void dLytMeterItemSelect_c::setCurrentItemText(ITEM_ID item) { if (item >= ITEM_NONE && field_0x5754 == 0) { mText[1].setShouldBeSelect(true);