mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Core: Allow overriding the enabling of a code
If we want to enable codes in the default game INIs, we should have some way for users to disable them. This commit accomplishes that by adding a *_Disabled section corresponding to each *_Enabled section.
This commit is contained in:
@ -26,7 +26,6 @@
|
||||
#include <iterator>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
@ -39,6 +38,7 @@
|
||||
#include "Common/MsgHandler.h"
|
||||
|
||||
#include "Core/ARDecrypt.h"
|
||||
#include "Core/CheatCodes.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/PowerPC/MMU.h"
|
||||
|
||||
@ -120,7 +120,7 @@ void ApplyCodes(const std::vector<ARCode>& codes)
|
||||
s_disable_logging = false;
|
||||
s_active_codes.clear();
|
||||
std::copy_if(codes.begin(), codes.end(), std::back_inserter(s_active_codes),
|
||||
[](const ARCode& code) { return code.active; });
|
||||
[](const ARCode& code) { return code.enabled; });
|
||||
s_active_codes.shrink_to_fit();
|
||||
}
|
||||
|
||||
@ -136,7 +136,7 @@ void UpdateSyncedCodes(const std::vector<ARCode>& codes)
|
||||
s_synced_codes.clear();
|
||||
s_synced_codes.reserve(codes.size());
|
||||
std::copy_if(codes.begin(), codes.end(), std::back_inserter(s_synced_codes),
|
||||
[](const ARCode& code) { return code.active; });
|
||||
[](const ARCode& code) { return code.enabled; });
|
||||
s_synced_codes.shrink_to_fit();
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ std::vector<ARCode> ApplyAndReturnCodes(const std::vector<ARCode>& codes)
|
||||
s_disable_logging = false;
|
||||
s_active_codes.clear();
|
||||
std::copy_if(codes.begin(), codes.end(), std::back_inserter(s_active_codes),
|
||||
[](const ARCode& code) { return code.active; });
|
||||
[](const ARCode& code) { return code.enabled; });
|
||||
}
|
||||
s_active_codes.shrink_to_fit();
|
||||
|
||||
@ -160,7 +160,7 @@ void AddCode(ARCode code)
|
||||
if (!SConfig::GetInstance().bEnableCheats)
|
||||
return;
|
||||
|
||||
if (code.active)
|
||||
if (code.enabled)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(s_lock);
|
||||
s_disable_logging = false;
|
||||
@ -178,20 +178,6 @@ std::vector<ARCode> LoadCodes(const IniFile& global_ini, const IniFile& local_in
|
||||
{
|
||||
std::vector<ARCode> codes;
|
||||
|
||||
std::unordered_set<std::string> enabled_names;
|
||||
{
|
||||
std::vector<std::string> enabled_lines;
|
||||
local_ini.GetLines("ActionReplay_Enabled", &enabled_lines);
|
||||
for (const std::string& line : enabled_lines)
|
||||
{
|
||||
if (!line.empty() && line[0] == '$')
|
||||
{
|
||||
std::string name = line.substr(1, line.size() - 1);
|
||||
enabled_names.insert(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const IniFile* inis[2] = {&global_ini, &local_ini};
|
||||
for (const IniFile* ini : inis)
|
||||
{
|
||||
@ -225,7 +211,6 @@ std::vector<ARCode> LoadCodes(const IniFile& global_ini, const IniFile& local_in
|
||||
}
|
||||
|
||||
current_code.name = line.substr(1, line.size() - 1);
|
||||
current_code.active = enabled_names.find(current_code.name) != enabled_names.end();
|
||||
current_code.user_defined = (ini == &local_ini);
|
||||
}
|
||||
else
|
||||
@ -279,6 +264,8 @@ std::vector<ARCode> LoadCodes(const IniFile& global_ini, const IniFile& local_in
|
||||
DecryptARCode(encrypted_lines, ¤t_code.ops);
|
||||
codes.push_back(current_code);
|
||||
}
|
||||
|
||||
ReadEnabledAndDisabled(*ini, "ActionReplay", &codes);
|
||||
}
|
||||
|
||||
return codes;
|
||||
@ -290,7 +277,7 @@ void SaveCodes(IniFile* local_ini, const std::vector<ARCode>& codes)
|
||||
std::vector<std::string> enabled_lines;
|
||||
for (const ActionReplay::ARCode& code : codes)
|
||||
{
|
||||
if (code.active)
|
||||
if (code.enabled)
|
||||
enabled_lines.emplace_back("$" + code.name);
|
||||
|
||||
if (code.user_defined)
|
||||
|
Reference in New Issue
Block a user