1919#include " GlobalNamespace/ResultsViewController.hpp"
2020#include " GlobalNamespace/LevelCompletionResults.hpp"
2121
22- #include " beatsaber-hook/shared/config/config-utils.hpp"
22+ #include " beatsaber-hook/shared/utils/typedefs.h"
23+ #include " beatsaber-hook/shared/utils/il2cpp-utils.hpp"
24+ #include " beatsaber-hook/shared/utils/logging.hpp"
25+ #include " beatsaber-hook/shared/utils/utils.h"
26+ #include " beatsaber-hook/shared/utils/hooking.hpp"
27+ #include " beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
2328
2429#include " UnityEngine/UI/Image.hpp"
2530#include " UnityEngine/Application.hpp"
2631#include " UnityEngine/Resources.hpp"
2732#include " UnityEngine/SceneManagement/Scene.hpp"
33+ #include " UnityEngine/SceneManagement/SceneManager.hpp"
2834
2935#include " CrashModViewController.hpp"
3036
@@ -45,55 +51,55 @@ Logger& getLogger() {
4551
4652void Crash () {
4753 getModConfig ().CrashCounter .SetValue (getModConfig ().CrashCounter .GetValue () + 1 );
48- getLogger ().info (" Crash number " + std::to_string ( getModConfig ().CrashCounter .GetValue ()) + " by Crash mod " );
54+ getLogger ().info (" Crash number %d by Crash mod " , getModConfig ().CrashCounter .GetValue ());
4955 if (getModConfig ().OnCrashAction .GetValue () == 0 ) CRASH_UNLESS (false );
5056 else if (getModConfig ().OnCrashAction .GetValue () == 1 ) Application::Quit ();
5157 else if (getModConfig ().OnCrashAction .GetValue () == 2 ) while (true ) malloc (1024 );
5258}
5359
54- MAKE_HOOK_OFFSETLESS (ScoreController_HandleNoteWasMissed, void , ScoreController* self, NoteController* note) {
60+ MAKE_HOOK_MATCH (ScoreController_HandleNoteWasMissed, &ScoreController::HandleNoteWasMissed , void , ScoreController* self, NoteController* note) {
5561 ScoreController_HandleNoteWasMissed (self, note);
5662 if (getModConfig ().Active .GetValue () && getModConfig ().MissCrash .GetValue ()) Crash ();
5763}
5864
59- MAKE_HOOK_OFFSETLESS (ScoreController_HandleNoteWasCut, void , ScoreController* self, NoteController* note, NoteCutInfo* info) {
65+ MAKE_HOOK_MATCH (ScoreController_HandleNoteWasCut, &ScoreController::HandleNoteWasCut, void , ScoreController* self, NoteController* note, NoteCutInfo& info) {
6066 ScoreController_HandleNoteWasCut (self, note, info);
61- if (getModConfig ().Active .GetValue () && info-> get_allIsOK () && getModConfig ().CrashOnGoodCut .GetValue ()) Crash ();
67+ if (getModConfig ().Active .GetValue () && info. get_allIsOK () && getModConfig ().CrashOnGoodCut .GetValue ()) Crash ();
6268}
6369
64- MAKE_HOOK_OFFSETLESS (RelativeScoreAndImmediateRankCounter_UpdateRelativeScoreAndImmediateRank, void , RelativeScoreAndImmediateRankCounter* self, int score, int modifiedscore, int maxscore, int maxmodfifiedscore) {
70+ MAKE_HOOK_MATCH (RelativeScoreAndImmediateRankCounter_UpdateRelativeScoreAndImmediateRank, &RelativeScoreAndImmediateRankCounter::UpdateRelativeScoreAndImmediateRank , void , RelativeScoreAndImmediateRankCounter* self, int score, int modifiedscore, int maxscore, int maxmodfifiedscore) {
6571 RelativeScoreAndImmediateRankCounter_UpdateRelativeScoreAndImmediateRank (self, score, modifiedscore, maxscore, maxmodfifiedscore);
6672 if (getModConfig ().Active .GetValue () && getModConfig ().PercentageActive .GetValue () && self->get_relativeScore () < getModConfig ().Percentage .GetValue () / 100 ) Crash ();
6773}
6874
69- MAKE_HOOK_OFFSETLESS (StandardLevelScenesTransitionSetupDataSO_Init, void , StandardLevelScenesTransitionSetupDataSO* self, Il2CppString* gameMode, IDifficultyBeatmap* dbm, IPreviewBeatmapLevel previewBeatmapLevel, OverrideEnvironmentSettings* overrideEnvironmentSettings, ColorScheme* overrideColorScheme, GameplayModifiers* gameplayModifiers, PlayerSpecificSettings* playerSpecificSettings, PracticeSettings* practiceSettings, Il2CppString* backButtonText, bool useTestNoteCutSoundEffects) {
75+ MAKE_HOOK_MATCH (StandardLevelScenesTransitionSetupDataSO_Init, &StandardLevelScenesTransitionSetupDataSO::Init, void , StandardLevelScenesTransitionSetupDataSO* self, Il2CppString* gameMode, IDifficultyBeatmap* dbm, IPreviewBeatmapLevel* previewBeatmapLevel, OverrideEnvironmentSettings* overrideEnvironmentSettings, ColorScheme* overrideColorScheme, GameplayModifiers* gameplayModifiers, PlayerSpecificSettings* playerSpecificSettings, PracticeSettings* practiceSettings, Il2CppString* backButtonText, bool useTestNoteCutSoundEffects) {
7076 StandardLevelScenesTransitionSetupDataSO_Init (self, gameMode, dbm, previewBeatmapLevel, overrideEnvironmentSettings, overrideColorScheme, gameplayModifiers, playerSpecificSettings, practiceSettings, backButtonText, useTestNoteCutSoundEffects);
7177 if (getModConfig ().Active .GetValue ()) {
7278 if (getModConfig ().CrashOnPlay .GetValue () || getModConfig ().CrashOnNoFailOn .GetValue () && gameplayModifiers->noFailOn0Energy ) Crash ();
7379 }
7480}
7581
76- MAKE_HOOK_OFFSETLESS (PlayerTransforms_Update, void , PlayerTransforms* self) {
82+ MAKE_HOOK_MATCH (PlayerTransforms_Update, &PlayerTransforms::Update , void , PlayerTransforms* self) {
7783 PlayerTransforms_Update (self);
7884 if (getModConfig ().Active .GetValue () && getModConfig ().CrashOnTurn .GetValue () && self->headWorldRot .get_eulerAngles ().y > 165 && self->headWorldRot .get_eulerAngles ().y < 195 ) Crash ();
7985}
8086
81- MAKE_HOOK_OFFSETLESS (PauseController_HandleMenuButtonTriggered, void , PauseController* self) {
87+ MAKE_HOOK_MATCH (PauseController_HandleMenuButtonTriggered, &PauseController::HandleMenuButtonTriggered , void , PauseController* self) {
8288 PauseController_HandleMenuButtonTriggered (self);
8389 if (getModConfig ().Active .GetValue () && getModConfig ().CrashOnPause .GetValue ()) Crash ();
8490}
8591
86- MAKE_HOOK_OFFSETLESS (PauseController_HandlePauseMenuManagerDidFinishResumeAnimation, void , PauseController* self) {
92+ MAKE_HOOK_MATCH (PauseController_HandlePauseMenuManagerDidFinishResumeAnimation, &PauseController::HandlePauseMenuManagerDidFinishResumeAnimation , void , PauseController* self) {
8793 PauseController_HandlePauseMenuManagerDidFinishResumeAnimation (self);
8894 if (getModConfig ().Active .GetValue () && getModConfig ().CrashOnUnpause .GetValue ()) Crash ();
8995}
9096
91- MAKE_HOOK_OFFSETLESS (SceneManager_ActiveSceneChanged, void , UnityEngine::SceneManagement::Scene previousActiveScene, UnityEngine::SceneManagement::Scene nextActiveScene) {
97+ MAKE_HOOK_MATCH (SceneManager_ActiveSceneChanged, &UnityEngine::SceneManagement::SceneManager::Internal_ActiveSceneChanged , void , UnityEngine::SceneManagement::Scene previousActiveScene, UnityEngine::SceneManagement::Scene nextActiveScene) {
9298 SceneManager_ActiveSceneChanged (previousActiveScene, nextActiveScene);
9399 if (getModConfig ().Active .GetValue () && getModConfig ().CrashOnOver5PerBattery .GetValue () && GlobalNamespace::OVRPlugin::OVRP_1_1_0::ovrp_GetSystemBatteryLevel () > getModConfig ().BatteryThreshold .GetValue () / 100 ) Crash ();
94100}
95101
96- MAKE_HOOK_OFFSETLESS (ResultsViewController_Init, void , ResultsViewController* self, LevelCompletionResults* result, IDifficultyBeatmap* beatmap, bool practice, bool newHighScore) {
102+ MAKE_HOOK_MATCH (ResultsViewController_Init, &ResultsViewController::Init , void , ResultsViewController* self, LevelCompletionResults* result, IDifficultyBeatmap* beatmap, bool practice, bool newHighScore) {
97103 ResultsViewController_Init (self, result, beatmap, practice, newHighScore);
98104 if (getModConfig ().Active .GetValue () && ((getModConfig ().CrashOnNotFullCombo .GetValue () && !result->fullCombo ) || (getModConfig ().CrashOnNewHighscore .GetValue () && self->newHighScore ))) Crash ();
99105}
@@ -117,13 +123,13 @@ extern "C" void load() {
117123 // Register our mod settings menu
118124 QuestUI::Register::RegisterModSettingsViewController (modInfo, DidActivate);
119125 // Install our hooks
120- INSTALL_HOOK_OFFSETLESS (logger, PlayerTransforms_Update, il2cpp_utils::FindMethodUnsafe ( " " , " PlayerTransforms " , " Update " , 0 ) );
121- INSTALL_HOOK_OFFSETLESS (logger, ScoreController_HandleNoteWasMissed, il2cpp_utils::FindMethodUnsafe ( " " , " ScoreController " , " HandleNoteWasMissed " , 1 ) );
122- INSTALL_HOOK_OFFSETLESS (logger, ScoreController_HandleNoteWasCut, il2cpp_utils::FindMethodUnsafe ( " " , " ScoreController " , " HandleNoteWasCut " , 2 ) );
123- INSTALL_HOOK_OFFSETLESS (logger, RelativeScoreAndImmediateRankCounter_UpdateRelativeScoreAndImmediateRank, il2cpp_utils::FindMethodUnsafe ( " " , " RelativeScoreAndImmediateRankCounter " , " UpdateRelativeScoreAndImmediateRank " , 4 ) );
124- INSTALL_HOOK_OFFSETLESS (logger, StandardLevelScenesTransitionSetupDataSO_Init, il2cpp_utils::FindMethodUnsafe ( " " , " StandardLevelScenesTransitionSetupDataSO " , " Init " , 10 ) );
125- INSTALL_HOOK_OFFSETLESS (logger, SceneManager_ActiveSceneChanged, il2cpp_utils::FindMethodUnsafe ( " UnityEngine.SceneManagement " , " SceneManager " , " Internal_ActiveSceneChanged " , 2 ) );
126- INSTALL_HOOK_OFFSETLESS (logger, ResultsViewController_Init, il2cpp_utils::FindMethodUnsafe ( " " , " ResultsViewController " , " Init " , 4 ) );
126+ INSTALL_HOOK (logger, PlayerTransforms_Update);
127+ INSTALL_HOOK (logger, ScoreController_HandleNoteWasMissed);
128+ INSTALL_HOOK (logger, ScoreController_HandleNoteWasCut);
129+ INSTALL_HOOK (logger, RelativeScoreAndImmediateRankCounter_UpdateRelativeScoreAndImmediateRank);
130+ INSTALL_HOOK (logger, StandardLevelScenesTransitionSetupDataSO_Init);
131+ INSTALL_HOOK (logger, SceneManager_ActiveSceneChanged);
132+ INSTALL_HOOK (logger, ResultsViewController_Init);
127133 // INSTALL_HOOK_OFFSETLESS(logger, PauseController_HandleMenuButtonTriggered, il2cpp_utils::FindMethodUnsafe("", "PauseController", "HandleMenuButtonTriggered", 0));
128134 // INSTALL_HOOK_OFFSETLESS(logger, PauseController_HandlePauseMenuManagerDidFinishResumeAnimation, il2cpp_utils::FindMethodUnsafe("", "PauseController", "HandlePauseMenuManagerDidFinishResumeAnimation", 0));
129135 getLogger ().info (" Installed all hooks!" );
0 commit comments