toml format is now used for settings file

This commit is contained in:
MihailRis
2023-11-14 15:51:26 +03:00
parent 3723cf491f
commit 69b309dc60
5 changed files with 63 additions and 353 deletions
+31 -2
View File
@@ -10,18 +10,47 @@
#include "util/platform.h"
#include "engine.h"
#include "coders/toml.h"
#include "files/files.h"
inline toml::Wrapper create_wrapper(EngineSettings& settings) {
toml::Wrapper wrapper;
toml::Section& display = wrapper.add("display");
display.add("width", &settings.display.width);
display.add("height", &settings.display.height);
display.add("samples", &settings.display.samples);
display.add("swap-interval", &settings.display.swapInterval);
toml::Section& chunks = wrapper.add("chunks");
chunks.add("load-distance", &settings.chunks.loadDistance);
chunks.add("load-speed", &settings.chunks.loadSpeed);
chunks.add("padding", &settings.chunks.padding);
toml::Section& camera = wrapper.add("camera");
camera.add("fov-effects", &settings.camera.fovEvents);
camera.add("shaking", &settings.camera.shaking);
toml::Section& graphics = wrapper.add("graphics");
graphics.add("fog-curve", &settings.fogCurve);
return wrapper;
}
int main() {
platform::configure_encoding();
setup_definitions();
try {
EngineSettings settings;
toml::Wrapper wrapper = create_wrapper(settings);
std::string settings_file = platform::get_settings_file();
if (std::filesystem::is_regular_file(settings_file)) {
std::cout << "-- loading settings" << std::endl;
load_settings(settings, settings_file);
std::string content = files::read_string(settings_file);
toml::Reader reader(&wrapper, settings_file, content);
reader.read();
} else {
std::cout << "-- creating settings file " << settings_file << std::endl;
save_settings(settings, settings_file);
files::write_string(settings_file, wrapper.write());
}
Engine engine(settings);
engine.mainloop();