From 9262e37c47b16bad65d8639e16cc234cc42248bc Mon Sep 17 00:00:00 2001 From: zilmar Date: Wed, 24 Feb 2021 21:25:35 +1030 Subject: [PATCH] Make sure file is reloaded on opening cheat config --- .../N64System/Enhancement/EnhancementFile.cpp | 4 ---- .../N64System/Enhancement/Enhancements.cpp | 21 +++++++++++++++++++ .../N64System/Enhancement/Enhancements.h | 4 ++-- .../Project64/UserInterface/CheatClassUI.cpp | 4 ++++ .../Project64/UserInterface/EnhancementUI.cpp | 6 +++++- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Source/Project64-core/N64System/Enhancement/EnhancementFile.cpp b/Source/Project64-core/N64System/Enhancement/EnhancementFile.cpp index 45dd5159c..f6e89662d 100644 --- a/Source/Project64-core/N64System/Enhancement/EnhancementFile.cpp +++ b/Source/Project64-core/N64System/Enhancement/EnhancementFile.cpp @@ -165,10 +165,6 @@ void CEnhancmentFile::OpenFile(void) bool CEnhancmentFile::MoveToSection(const char * Section, bool ChangeCurrentSection) { - if (strcmp(Section, m_CurrentSection.c_str()) == 0) - { - return true; - } if (ChangeCurrentSection) { SaveCurrentSection(); diff --git a/Source/Project64-core/N64System/Enhancement/Enhancements.cpp b/Source/Project64-core/N64System/Enhancement/Enhancements.cpp index faeedcb59..e645158d1 100644 --- a/Source/Project64-core/N64System/Enhancement/Enhancements.cpp +++ b/Source/Project64-core/N64System/Enhancement/Enhancements.cpp @@ -240,6 +240,7 @@ void CEnhancements::LoadEnhancements(const char * Ident, SectionFiles & Files, s { File = std::make_unique(CheatFile, Ident); } + EnhancementList.clear(); File->GetEnhancementList(SectionIdent.c_str(), EnhancementList); FoundFile = true; } @@ -265,6 +266,26 @@ void CEnhancements::Load(CMipsMemoryVM * MMU, CPlugins * Plugins) LoadActive(m_Enhancements, Plugins); } +CEnhancementList CEnhancements::Cheats(void) +{ + CEnhancementList List; + { + CGuard Guard(m_CS); + List = m_Cheats; + } + return List; +} + +CEnhancementList CEnhancements::Enhancements(void) +{ + CEnhancementList List; + { + CGuard Guard(m_CS); + List = m_Enhancements; + } + return List; +} + void CEnhancements::LoadActive(CEnhancementList & List, CPlugins * Plugins) { for (CEnhancementList::const_iterator itr = List.begin(); itr != List.end(); itr++) diff --git a/Source/Project64-core/N64System/Enhancement/Enhancements.h b/Source/Project64-core/N64System/Enhancement/Enhancements.h index d90f2a209..33b3cf61e 100644 --- a/Source/Project64-core/N64System/Enhancement/Enhancements.h +++ b/Source/Project64-core/N64System/Enhancement/Enhancements.h @@ -38,8 +38,8 @@ public: void ResetActive(CPlugins * Plugins); void Load(CMipsMemoryVM * MMU, CPlugins * Plugins); - inline const CEnhancementList & Cheats(void) const { return m_Cheats; } - inline const CEnhancementList & Enhancements(void) const { return m_Enhancements; } + CEnhancementList Cheats(void); + CEnhancementList Enhancements(void); private: struct GAMESHARK_CODE diff --git a/Source/Project64/UserInterface/CheatClassUI.cpp b/Source/Project64/UserInterface/CheatClassUI.cpp index a423cc1e2..1d7a7f8d7 100644 --- a/Source/Project64/UserInterface/CheatClassUI.cpp +++ b/Source/Project64/UserInterface/CheatClassUI.cpp @@ -492,6 +492,10 @@ void CCheatList::ChangeChildrenStatus(HTREEITEM hParent, bool Checked) TV_SetCheckState(hParent, Checked ? TV_STATE_CHECKED : TV_STATE_CLEAR); Enhancement->SetActive(Checked); + if (g_Enhancements != nullptr) + { + g_Enhancements->UpdateCheats(); + } return; } TV_CHECK_STATE state = TV_STATE_UNKNOWN; diff --git a/Source/Project64/UserInterface/EnhancementUI.cpp b/Source/Project64/UserInterface/EnhancementUI.cpp index c8b601ad9..122603c79 100644 --- a/Source/Project64/UserInterface/EnhancementUI.cpp +++ b/Source/Project64/UserInterface/EnhancementUI.cpp @@ -305,7 +305,7 @@ LRESULT CEnhancementUI::OnEnhancementListDClicked(NMHDR * lpnmh) return 0; } -LRESULT CEnhancementUI::OnEnhancementListSelChanged(NMHDR * lpnmh) +LRESULT CEnhancementUI::OnEnhancementListSelChanged(NMHDR * /*lpnmh*/) { HTREEITEM hItem = m_TreeList.GetSelectedItem(); GetDlgItem(IDC_NOTES).SetWindowText(L""); @@ -394,6 +394,10 @@ void CEnhancementUI::ChangeChildrenStatus(HTREEITEM hParent, bool Checked) TV_SetCheckState(hParent, Checked ? TV_STATE_CHECKED : TV_STATE_CLEAR); Enhancement->SetActive(Checked); + if (g_Enhancements != nullptr) + { + g_Enhancements->UpdateCheats(); + } return; } TV_CHECK_STATE state = TV_STATE_UNKNOWN;