Write config fields

This commit is contained in:
Ted John 2017-02-16 23:22:26 +00:00
parent 23fef54b14
commit bd6d31fed6
2 changed files with 147 additions and 3 deletions

View File

@ -15,6 +15,7 @@
#pragma endregion
#include <memory>
#include "../core/Console.hpp"
#include "../core/Exception.hpp"
#include "../interface/window.h"
#include "../network/network.h"
@ -193,6 +194,68 @@ namespace Config
static void WriteGeneral(IIniWriter * writer)
{
auto model = &gConfigGeneral;
writer->WriteSection("general");
writer->WriteBoolean("always_show_gridlines", model->always_show_gridlines != 0);
writer->WriteSint32("autosave", model->autosave_frequency);
writer->WriteBoolean("confirmation_prompt", model->confirmation_prompt != 0);
writer->WriteBoolean("construction_marker_colour", model->construction_marker_colour != 0);
writer->WriteEnum<sint32>("currency_format", model->currency_format, Enum_Currency);
writer->WriteSint32("custom_currency_rate", model->custom_currency_rate != 0);
writer->WriteEnum<sint32>("custom_currency_affix", model->custom_currency_affix, Enum_CurrencySymbolAffix);
writer->WriteString("custom_currency_symbol", model->custom_currency_symbol);
writer->WriteBoolean("edge_scrolling", model->edge_scrolling != 0);
writer->WriteSint32("fullscreen_mode", model->fullscreen_mode);
writer->WriteSint32("fullscreen_height", model->fullscreen_height);
writer->WriteSint32("fullscreen_width", model->fullscreen_width);
writer->WriteString("rct1_path", model->rct1_path);
writer->WriteString("game_path", model->rct2_path);
writer->WriteBoolean("landscape_smoothing", model->landscape_smoothing != 0);
writer->WriteEnum<sint32>("language", model->language, Enum_LanguageEnum);
writer->WriteEnum<sint32>("measurement_format", model->measurement_format, Enum_MeasurementFormat);
writer->WriteBoolean("play_intro", model->play_intro != 0);
writer->WriteBoolean("save_plugin_data", model->save_plugin_data != 0);
writer->WriteBoolean("debugging_tools", model->debugging_tools != 0);
writer->WriteBoolean("show_height_as_units", model->show_height_as_units != 0);
writer->WriteEnum<sint32>("temperature_format", model->temperature_format, Enum_Temperature);
writer->WriteSint32("window_height", model->window_height);
writer->WriteSint32("window_snap_proximity", model->window_snap_proximity);
writer->WriteSint32("window_width", model->window_width);
writer->WriteEnum<sint32>("drawing_engine", model->drawing_engine, Enum_DrawingEngine);
writer->WriteBoolean("uncap_fps", model->uncap_fps != 0);
writer->WriteBoolean("test_unfinished_tracks", model->test_unfinished_tracks != 0);
writer->WriteBoolean("no_test_crashes", model->no_test_crashes != 0);
writer->WriteEnum<sint32>("date_format", model->date_format, Enum_DateFormat);
writer->WriteBoolean("auto_staff", model->auto_staff_placement != 0);
writer->WriteBoolean("handymen_mow_default", model->handymen_mow_default != 0);
writer->WriteSint32("default_inspection_interval", model->default_inspection_interval);
writer->WriteString("last_run_version", model->last_run_version);
writer->WriteBoolean("invert_viewport_drag", model->invert_viewport_drag != 0);
writer->WriteSint32("load_save_sort", model->load_save_sort);
writer->WriteBoolean("minimize_fullscreen_focus_loss", model->minimize_fullscreen_focus_loss != 0);
writer->WriteBoolean("day_night_cycle", model->day_night_cycle != 0);
writer->WriteBoolean("enable_light_fx", model->enable_light_fx != 0);
writer->WriteBoolean("upper_case_banners", model->upper_case_banners != 0);
writer->WriteBoolean("disable_lightning_effect", model->disable_lightning_effect != 0);
writer->WriteBoolean("allow_loading_with_incorrect_checksum", model->allow_loading_with_incorrect_checksum != 0);
writer->WriteBoolean("steam_overlay_pause", model->steam_overlay_pause != 0);
writer->WriteFloat("window_scale", model->window_scale);
writer->WriteSint32("scale_quality", model->scale_quality);
writer->WriteBoolean("use_nn_at_integer_scales", model->use_nn_at_integer_scales != 0);
writer->WriteBoolean("show_fps", model->show_fps != 0);
writer->WriteBoolean("trap_cursor", model->trap_cursor != 0);
writer->WriteBoolean("auto_open_shops", model->auto_open_shops != 0);
writer->WriteSint32("scenario_select_mode", model->scenario_select_mode);
writer->WriteBoolean("scenario_unlocking_enabled", model->scenario_unlocking_enabled != 0);
writer->WriteBoolean("scenario_hide_mega_park", model->scenario_hide_mega_park != 0);
writer->WriteString("last_game_directory", model->last_save_game_directory);
writer->WriteString("last_landscape_directory", model->last_save_landscape_directory);
writer->WriteString("last_scenario_directory", model->last_save_scenario_directory);
writer->WriteString("last_track_directory", model->last_save_track_directory);
writer->WriteSint32("window_limit", model->window_limit);
writer->WriteBoolean("zoom_to_cursor", model->zoom_to_cursor != 0);
writer->WriteBoolean("render_weather_effects", model->render_weather_effects != 0);
writer->WriteBoolean("render_weather_gloom", model->render_weather_gloom != 0);
}
static void ReadInterface(IIniReader * reader)
@ -214,6 +277,17 @@ namespace Config
static void WriteInterface(IIniWriter * writer)
{
auto model = &gConfigInterface;
writer->WriteSection("interface");
writer->WriteBoolean("toolbar_show_finances", model->toolbar_show_finances != 0);
writer->WriteBoolean("toolbar_show_research", model->toolbar_show_research != 0);
writer->WriteBoolean("toolbar_show_cheats", model->toolbar_show_cheats != 0);
writer->WriteBoolean("toolbar_show_news", model->toolbar_show_news != 0);
writer->WriteBoolean("select_by_track_type", model->select_by_track_type != 0);
writer->WriteBoolean("console_small_font", model->console_small_font != 0);
writer->WriteString("current_theme", model->current_theme_preset);
writer->WriteString("current_title_sequence", model->current_title_sequence_preset);
writer->WriteSint32("object_selection_filter_flags", model->object_selection_filter_flags);
}
static void ReadSound(IIniReader * reader)
@ -234,6 +308,16 @@ namespace Config
static void WriteSound(IIniWriter * writer)
{
auto model = &gConfigSound;
writer->WriteSection("sound");
writer->WriteSint32("master_volume", model->master_volume);
writer->WriteSint32("title_music", model->title_music);
writer->WriteBoolean("sound", model->sound_enabled != 0);
writer->WriteSint32("sound_volume", model->sound_volume);
writer->WriteBoolean("ride_music", model->ride_music_enabled != 0);
writer->WriteSint32("ride_music_volume", model->ride_music_volume);
writer->WriteBoolean("audio_focus", model->audio_focus != 0);
writer->WriteString("audio_device", model->device);
}
static void ReadNetwork(IIniReader * reader)
@ -261,6 +345,23 @@ namespace Config
static void WriteNetwork(IIniWriter * writer)
{
auto model = &gConfigNetwork;
writer->WriteSection("network");
writer->WriteString("player_name", model->player_name);
writer->WriteSint32("default_port", model->default_port);
writer->WriteString("default_password", model->default_password);
writer->WriteBoolean("stay_connected", model->stay_connected != 0);
writer->WriteBoolean("advertise", model->advertise != 0);
writer->WriteSint32("maxplayers", model->maxplayers);
writer->WriteString("server_name", model->server_name);
writer->WriteString("server_description", model->server_description);
writer->WriteString("server_greeting", model->server_greeting);
writer->WriteString("master_server_url", model->master_server_url);
writer->WriteString("provider_name", model->provider_name);
writer->WriteString("provider_email", model->provider_email);
writer->WriteString("provider_website", model->provider_website);
writer->WriteBoolean("known_keys_only", model->known_keys_only != 0);
writer->WriteBoolean("log_chat", model->log_chat != 0);
}
static void ReadNotifications(IIniReader * reader)
@ -290,6 +391,25 @@ namespace Config
static void WriteNotifications(IIniWriter * writer)
{
auto model = &gConfigNotifications;
writer->WriteSection("notifications");
writer->WriteBoolean("park_award", model->park_award != 0);
writer->WriteBoolean("park_marketing_campaign_finished", model->park_marketing_campaign_finished != 0);
writer->WriteBoolean("park_warnings", model->park_warnings != 0);
writer->WriteBoolean("park_rating_warnings", model->park_rating_warnings != 0);
writer->WriteBoolean("ride_broken_down", model->ride_broken_down != 0);
writer->WriteBoolean("ride_crashed", model->ride_crashed != 0);
writer->WriteBoolean("ride_warnings", model->ride_warnings != 0);
writer->WriteBoolean("ride_researched", model->ride_researched != 0);
writer->WriteBoolean("guest_warnings", model->guest_warnings != 0);
writer->WriteBoolean("guest_lost", model->guest_lost != 0);
writer->WriteBoolean("guest_left_park", model->guest_left_park != 0);
writer->WriteBoolean("guest_queuing_for_ride", model->guest_queuing_for_ride != 0);
writer->WriteBoolean("guest_on_ride", model->guest_on_ride != 0);
writer->WriteBoolean("guest_left_ride", model->guest_left_ride != 0);
writer->WriteBoolean("guest_bought_item", model->guest_bought_item != 0);
writer->WriteBoolean("guest_used_facility", model->guest_used_facility != 0);
writer->WriteBoolean("guest_died", model->guest_died != 0);
}
static void ReadTwitch(IIniReader * reader)
@ -308,6 +428,14 @@ namespace Config
static void WriteTwitch(IIniWriter * writer)
{
auto model = &gConfigTwitch;
writer->WriteSection("twitch");
writer->WriteString("channel", model->channel);
writer->WriteBoolean("follower_peep_names", model->enable_follower_peep_names != 0);
writer->WriteBoolean("follower_peep_tracking", model->enable_follower_peep_tracking != 0);
writer->WriteBoolean("chat_peep_names", model->enable_chat_peep_names != 0);
writer->WriteBoolean("chat_peep_tracking", model->enable_chat_peep_tracking != 0);
writer->WriteBoolean("news", model->enable_news != 0);
}
static void ReadFont(IIniReader * reader)
@ -332,6 +460,20 @@ namespace Config
static void WriteFont(IIniWriter * writer)
{
auto model = &gConfigFonts;
writer->WriteSection("font");
writer->WriteString("file_name", model->file_name);
writer->WriteString("font_name", model->font_name);
writer->WriteSint32("x_offset", model->x_offset);
writer->WriteSint32("y_offset", model->y_offset);
writer->WriteSint32("size_tiny", model->size_tiny);
writer->WriteSint32("size_small", model->size_small);
writer->WriteSint32("size_medium", model->size_medium);
writer->WriteSint32("size_big", model->size_big);
writer->WriteSint32("height_tiny", model->height_tiny);
writer->WriteSint32("height_small", model->height_small);
writer->WriteSint32("height_medium", model->height_medium);
writer->WriteSint32("height_big", model->height_big);
}
static bool ReadFile(const std::string &path)
@ -368,8 +510,10 @@ namespace Config
WriteFont(writer.get());
return true;
}
catch (const Exception &)
catch (const Exception &ex)
{
Console::WriteLine("Error saving to '%s'", path.c_str());
Console::WriteLine(ex.GetMessage());
return false;
}
}

View File

@ -34,9 +34,9 @@ interface IIniWriter
void WriteEnum(const std::string &name, T value, const IConfigEnum<T> &configEnum)
{
std::string key = configEnum.GetName(value);
if (key.empty)
if (key.empty())
{
WriteSint32(value);
WriteSint32(name, value);
}
else
{