From 12ebd482d4835ce36a7514346f52c1cfd8680432 Mon Sep 17 00:00:00 2001 From: Gericom Date: Sat, 7 Mar 2026 14:51:58 +0100 Subject: [PATCH] Add option to disable all cheats by pressing X in the cheat panel --- .../romBrowser/viewModels/CheatsViewModel.cpp | 26 +++++++++++++++++++ .../romBrowser/viewModels/CheatsViewModel.h | 3 +++ .../views/cheats/CheatsBottomSheetView.cpp | 7 ++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/arm9/source/romBrowser/viewModels/CheatsViewModel.cpp b/arm9/source/romBrowser/viewModels/CheatsViewModel.cpp index 90f611f..b5a3796 100644 --- a/arm9/source/romBrowser/viewModels/CheatsViewModel.cpp +++ b/arm9/source/romBrowser/viewModels/CheatsViewModel.cpp @@ -86,3 +86,29 @@ void CheatsViewModel::Close() _romBrowserController->HideGameInfo(); } + +void CheatsViewModel::DisableAllCheats() +{ + DisableAllCheats(_cheats.get()); +} + +void CheatsViewModel::DisableAllCheats(const ICheatCategory* cheatCategory) +{ + u32 numberOfCategories = 0; + auto categories = cheatCategory->GetCategories(numberOfCategories); + for (u32 i = 0; i < numberOfCategories; i++) + { + DisableAllCheats(&categories[i]); + } + + u32 numberOfCheats = 0; + auto cheats = cheatCategory->GetCheats(numberOfCheats); + for (u32 i = 0; i < numberOfCheats; i++) + { + if (cheats[i].GetIsCheatActive()) + { + cheats[i].SetIsCheatActive(false); + _changed = true; + } + } +} diff --git a/arm9/source/romBrowser/viewModels/CheatsViewModel.h b/arm9/source/romBrowser/viewModels/CheatsViewModel.h index ff91920..3583d69 100644 --- a/arm9/source/romBrowser/viewModels/CheatsViewModel.h +++ b/arm9/source/romBrowser/viewModels/CheatsViewModel.h @@ -22,6 +22,7 @@ public: void ItemActivated(); void Back(); void Close(); + void DisableAllCheats(); State GetState() const { return _state; } const ICheatCategory* GetCurrentCheatCategory() const { return _categoryStack[_categoryStackLevel].cheatCategory; } @@ -45,4 +46,6 @@ private: bool _changed = false; u32 _categoryStackLevel = 0; std::array _categoryStack; + + void DisableAllCheats(const ICheatCategory* cheatCategory); }; diff --git a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp index bb959c8..e8c8bbe 100644 --- a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp +++ b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp @@ -25,7 +25,7 @@ #define LIST_X 16 #define LIST_Y 36 #define LIST_WIDTH 224 -#define LIST_HEIGHT /*124*/108 +#define LIST_HEIGHT 108 CheatsBottomSheetView::CheatsBottomSheetView(std::unique_ptr viewModel, const MaterialColorScheme* materialColorScheme, const IFontRepository* fontRepository, @@ -214,6 +214,11 @@ bool CheatsBottomSheetView::HandleInput(const InputProvider& inputProvider, Focu _viewModel->Close(); return true; } + else if (inputProvider.Triggered(InputKey::X)) + { + _viewModel->DisableAllCheats(); + return true; + } return false; }