Windows settings write fix
This commit is contained in:
@@ -1,48 +1,50 @@
|
|||||||
#include "settings_io.h"
|
#include "settings_io.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "../window/Events.h"
|
#include "../window/Events.h"
|
||||||
#include "../window/input.h"
|
#include "../window/input.h"
|
||||||
|
|
||||||
|
#include "../coders/toml.h"
|
||||||
#include "../coders/json.h"
|
#include "../coders/json.h"
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
toml::Wrapper create_wrapper(EngineSettings& settings) {
|
toml::Wrapper* create_wrapper(EngineSettings& settings) {
|
||||||
toml::Wrapper wrapper;
|
std::unique_ptr<toml::Wrapper> wrapper (new toml::Wrapper());
|
||||||
toml::Section& display = wrapper.add("display");
|
toml::Section& display = wrapper->add("display");
|
||||||
display.add("fullscreen", &settings.display.fullscreen);
|
display.add("fullscreen", &settings.display.fullscreen);
|
||||||
display.add("width", &settings.display.width);
|
display.add("width", &settings.display.width);
|
||||||
display.add("height", &settings.display.height);
|
display.add("height", &settings.display.height);
|
||||||
display.add("samples", &settings.display.samples);
|
display.add("samples", &settings.display.samples);
|
||||||
display.add("swap-interval", &settings.display.swapInterval);
|
display.add("swap-interval", &settings.display.swapInterval);
|
||||||
|
|
||||||
toml::Section& chunks = wrapper.add("chunks");
|
toml::Section& chunks = wrapper->add("chunks");
|
||||||
chunks.add("load-distance", &settings.chunks.loadDistance);
|
chunks.add("load-distance", &settings.chunks.loadDistance);
|
||||||
chunks.add("load-speed", &settings.chunks.loadSpeed);
|
chunks.add("load-speed", &settings.chunks.loadSpeed);
|
||||||
chunks.add("padding", &settings.chunks.padding);
|
chunks.add("padding", &settings.chunks.padding);
|
||||||
|
|
||||||
toml::Section& camera = wrapper.add("camera");
|
toml::Section& camera = wrapper->add("camera");
|
||||||
camera.add("fov-effects", &settings.camera.fovEvents);
|
camera.add("fov-effects", &settings.camera.fovEvents);
|
||||||
camera.add("fov", &settings.camera.fov);
|
camera.add("fov", &settings.camera.fov);
|
||||||
camera.add("shaking", &settings.camera.shaking);
|
camera.add("shaking", &settings.camera.shaking);
|
||||||
camera.add("sensitivity", &settings.camera.sensitivity);
|
camera.add("sensitivity", &settings.camera.sensitivity);
|
||||||
|
|
||||||
toml::Section& graphics = wrapper.add("graphics");
|
toml::Section& graphics = wrapper->add("graphics");
|
||||||
graphics.add("fog-curve", &settings.graphics.fogCurve);
|
graphics.add("fog-curve", &settings.graphics.fogCurve);
|
||||||
graphics.add("backlight", &settings.graphics.backlight);
|
graphics.add("backlight", &settings.graphics.backlight);
|
||||||
graphics.add("frustum-culling", &settings.graphics.frustumCulling);
|
graphics.add("frustum-culling", &settings.graphics.frustumCulling);
|
||||||
graphics.add("skybox-resolution", &settings.graphics.skyboxResolution);
|
graphics.add("skybox-resolution", &settings.graphics.skyboxResolution);
|
||||||
|
|
||||||
toml::Section& debug = wrapper.add("debug");
|
toml::Section& debug = wrapper->add("debug");
|
||||||
debug.add("generator-test-mode", &settings.debug.generatorTestMode);
|
debug.add("generator-test-mode", &settings.debug.generatorTestMode);
|
||||||
debug.add("show-chunk-borders", &settings.debug.showChunkBorders);
|
debug.add("show-chunk-borders", &settings.debug.showChunkBorders);
|
||||||
debug.add("do-write-lights", &settings.debug.doWriteLights);
|
debug.add("do-write-lights", &settings.debug.doWriteLights);
|
||||||
|
|
||||||
toml::Section& ui = wrapper.add("ui");
|
toml::Section& ui = wrapper->add("ui");
|
||||||
ui.add("language", &settings.ui.language);
|
ui.add("language", &settings.ui.language);
|
||||||
return wrapper;
|
return wrapper.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
string write_controls() {
|
string write_controls() {
|
||||||
|
|||||||
@@ -2,11 +2,14 @@
|
|||||||
#define FILES_SETTINGS_IO_H_
|
#define FILES_SETTINGS_IO_H_
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "../coders/toml.h"
|
|
||||||
#include "../settings.h"
|
#include "../settings.h"
|
||||||
|
|
||||||
|
namespace toml {
|
||||||
|
class Wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
extern std::string write_controls();
|
extern std::string write_controls();
|
||||||
extern toml::Wrapper create_wrapper(EngineSettings& settings);
|
extern toml::Wrapper* create_wrapper(EngineSettings& settings);
|
||||||
extern void load_controls(std::string filename, std::string source);
|
extern void load_controls(std::string filename, std::string source);
|
||||||
|
|
||||||
#endif // FILES_SETTINGS_IO_H_
|
#endif // FILES_SETTINGS_IO_H_
|
||||||
@@ -24,14 +24,14 @@ int main(int argc, char** argv) {
|
|||||||
platform::configure_encoding();
|
platform::configure_encoding();
|
||||||
try {
|
try {
|
||||||
EngineSettings settings;
|
EngineSettings settings;
|
||||||
toml::Wrapper wrapper = create_wrapper(settings);
|
std::unique_ptr<toml::Wrapper> wrapper (create_wrapper(settings));
|
||||||
|
|
||||||
path settings_file = platform::get_settings_file();
|
path settings_file = platform::get_settings_file();
|
||||||
path controls_file = platform::get_controls_file();
|
path controls_file = platform::get_controls_file();
|
||||||
if (std::filesystem::is_regular_file(settings_file)) {
|
if (std::filesystem::is_regular_file(settings_file)) {
|
||||||
std::cout << "-- loading settings" << std::endl;
|
std::cout << "-- loading settings" << std::endl;
|
||||||
std::string text = files::read_string(settings_file);
|
std::string text = files::read_string(settings_file);
|
||||||
toml::Reader reader(&wrapper, settings_file.string(), text);
|
toml::Reader reader(wrapper.get(), settings_file.string(), text);
|
||||||
reader.read();
|
reader.read();
|
||||||
}
|
}
|
||||||
Engine engine(settings, &paths);
|
Engine engine(settings, &paths);
|
||||||
@@ -44,7 +44,7 @@ int main(int argc, char** argv) {
|
|||||||
engine.mainloop();
|
engine.mainloop();
|
||||||
|
|
||||||
std::cout << "-- saving settings" << std::endl;
|
std::cout << "-- saving settings" << std::endl;
|
||||||
files::write_string(settings_file, wrapper.write());
|
files::write_string(settings_file, wrapper->write());
|
||||||
files::write_string(controls_file, write_controls());
|
files::write_string(controls_file, write_controls());
|
||||||
}
|
}
|
||||||
catch (const initialize_error& err) {
|
catch (const initialize_error& err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user