This commit is contained in:
2026-03-23 12:11:07 +01:00
commit e64eb40b38
4573 changed files with 3117439 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
#pragma once
#include <filesystem>
#include <fstream>
#include <common.hpp>
#include <mini/ini.h>
#include <log.hpp>
namespace fs = std::filesystem;
struct Options {
Options() : file{"resources/options.ini"} {
auto fileExists = fs::exists("resources/options.ini");
if(fileExists) {
file.read(structure);
return;
}
structure["general"]["savePath"] = "saves";
fs::create_directory("saves");
structure["audio"]["volumeL"] = "0.5";
structure["audio"]["volumeR"] = "0.5";
structure["audio"]["lock"] = "true";
structure["cpu"]["type"] = "interpreter";
if(!file.generate(structure))
panic("Couldn't generate settings' INI!");
}
static Options &GetInstance() {
static Options instance;
return instance;
}
template <typename T>
void SetValue(const std::string &key, const std::string &field, const T &value);
template <typename T>
T GetValue(const std::string &key, const std::string &field);
void Apply() {
if(!file.write(structure))
panic("Could not modify options on disk!");
}
private:
mINI::INIFile file;
mINI::INIStructure structure;
};