#include #include #include #include #include std::string savePath; SettingsWindow::SettingsWindow() : settings{JSONOpenOrCreate("resources/settings.json")} { keyMap = inputSettings.GetMappedKeys(); savesFolder.setName(fmt::format("Save path: {}", JSONGetField(settings, "general", "savePath"))); tabs.addTab({"General", [&]() { if(savesFolder.render()) { NFD::Guard guard; NFD::UniquePath outPath; auto result = NFD::PickFolder(outPath); if(result == NFD_CANCEL) return; if(result == NFD_ERROR) Util::panic("Error: {}", NFD::GetError()); savesFolder.setName(fmt::format("Save path: {}", outPath.get())); JSONSetField(settings, "general", "savePath", outPath.get()); apply.setEnabled(true); } }}); tabs.addTab({"CPU", [&]() { if(cpuSettings.render()) { if(cpuSettings.getModified()) apply.setEnabled(true); } }}); tabs.addTab({"Audio", [&]() { if(audioSettings.render()) { if(audioSettings.getModified()) apply.setEnabled(true); } }}); tabs.addTab({"Input", [&]() { if(inputSettings.render()) { if(inputSettings.getModified()) apply.setEnabled(true); } }}); apply.setEnabled(false); popup.setOnOpen([&]() { inputSettings.RegisterEventWatchers(); }); popup.setOnClose([&]() { inputSettings.UnregisterEventWatchers(); }); popup.setFunc([&]() { tabs.render(); if(apply.render()) { auto newMap = inputSettings.GetMappedKeys(); if (keyMap != newMap) keyMap = newMap; apply.setEnabled(false); std::ofstream file("resources/settings.json"); file << settings; file.close(); } ImGui::SameLine(); if(ImGui::Button("Cancel")) { popup.setOpened(false); ImGui::CloseCurrentPopup(); } }); } bool SettingsWindow::render() { if(popup.render()) return true; return false; }