SDL: Add cheat menu
This commit is contained in:
parent
ddb38ac31d
commit
bf6b4514a0
|
@ -4,6 +4,7 @@
|
||||||
#include "common/file_system.h"
|
#include "common/file_system.h"
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
#include "common/string_util.h"
|
#include "common/string_util.h"
|
||||||
|
#include "core/cheats.h"
|
||||||
#include "core/controller.h"
|
#include "core/controller.h"
|
||||||
#include "core/gpu.h"
|
#include "core/gpu.h"
|
||||||
#include "core/host_display.h"
|
#include "core/host_display.h"
|
||||||
|
@ -724,6 +725,67 @@ void SDLHostInterface::DrawMainMenuBar()
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
|
if (ImGui::BeginMenu("Cheats", system_enabled))
|
||||||
|
{
|
||||||
|
const bool has_cheat_file = System::HasCheatList();
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("Load Cheats..."))
|
||||||
|
{
|
||||||
|
nfdchar_t* path = nullptr;
|
||||||
|
if (NFD_OpenDialog("cht", nullptr, &path) && path && std::strlen(path) > 0)
|
||||||
|
{
|
||||||
|
std::unique_ptr<CheatList> cl = std::make_unique<CheatList>();
|
||||||
|
if (cl->LoadFromFile(path, CheatList::Format::Autodetect))
|
||||||
|
{
|
||||||
|
System::SetCheatList(std::move(cl));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReportFormattedMessage("Failed to load cheats from '%s'", path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("Save Cheats...", nullptr, false, has_cheat_file))
|
||||||
|
{
|
||||||
|
nfdchar_t* path = nullptr;
|
||||||
|
if (NFD_SaveDialog("cht", nullptr, &path) && path && std::strlen(path) > 0)
|
||||||
|
{
|
||||||
|
if (!System::GetCheatList()->SaveToPCSXRFile(path))
|
||||||
|
ReportFormattedMessage("Failed to save cheats to '%s'", path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::BeginMenu("Enabled Cheats", has_cheat_file))
|
||||||
|
{
|
||||||
|
CheatList* cl = System::GetCheatList();
|
||||||
|
for (u32 i = 0; i < cl->GetCodeCount(); i++)
|
||||||
|
{
|
||||||
|
CheatCode& cc = cl->GetCode(i);
|
||||||
|
ImGui::MenuItem(cc.description.c_str(), nullptr, &cc.enabled, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::BeginMenu("Apply Cheat", has_cheat_file))
|
||||||
|
{
|
||||||
|
CheatList* cl = System::GetCheatList();
|
||||||
|
for (u32 i = 0; i < cl->GetCodeCount(); i++)
|
||||||
|
{
|
||||||
|
const CheatCode& cc = cl->GetCode(i);
|
||||||
|
if (ImGui::MenuItem(cc.description.c_str()))
|
||||||
|
cc.Apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
if (ImGui::MenuItem("Exit"))
|
if (ImGui::MenuItem("Exit"))
|
||||||
m_quit_request = true;
|
m_quit_request = true;
|
||||||
|
|
||||||
|
@ -952,7 +1014,8 @@ void SDLHostInterface::DrawDebugMenu()
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
settings_changed |= ImGui::MenuItem("Recompiler Memory Exceptions", nullptr, &m_settings_copy.cpu_recompiler_memory_exceptions);
|
settings_changed |=
|
||||||
|
ImGui::MenuItem("Recompiler Memory Exceptions", nullptr, &m_settings_copy.cpu_recompiler_memory_exceptions);
|
||||||
settings_changed |= ImGui::MenuItem("Recompiler ICache", nullptr, &m_settings_copy.cpu_recompiler_icache);
|
settings_changed |= ImGui::MenuItem("Recompiler ICache", nullptr, &m_settings_copy.cpu_recompiler_icache);
|
||||||
|
|
||||||
if (settings_changed)
|
if (settings_changed)
|
||||||
|
|
Loading…
Reference in New Issue