From dbf9d355cf36a753b2261111a9e486358c2ecc74 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sat, 9 Jan 2021 03:39:44 +1100 Subject: [PATCH] Moved advanced prefs manager out of game_launcher It didn't really make much sense to keep it here. The manager singleton is now local to its implementation and initialized in game_config_manager::init_game_config like the credits data. --- src/game_config_manager.cpp | 4 ++++ src/game_launcher.cpp | 7 ------- src/game_launcher.hpp | 4 ---- src/preferences/advanced.cpp | 10 ++++++---- src/preferences/advanced.hpp | 5 ++++- src/wesnoth.cpp | 2 -- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/game_config_manager.cpp b/src/game_config_manager.cpp index cf1df9b83a33..14e3d8af4547 100644 --- a/src/game_config_manager.cpp +++ b/src/game_config_manager.cpp @@ -31,6 +31,7 @@ #include "language.hpp" #include "log.hpp" #include "picture.hpp" +#include "preferences/advanced.hpp" #include "preferences/general.hpp" #include "scripting/game_lua_kernel.hpp" #include "serialization/schema_validator.hpp" @@ -107,6 +108,9 @@ bool game_config_manager::init_game_config(FORCE_RELOAD_CONFIG force_reload) hotkey::load_hotkeys(game_config(), true); preferences::load_hotkeys(); + // TODO: consider making this part of preferences::manager in some fashion + preferences::init_advanced_manager(game_config()); + ::init_textdomains(game_config()); about::set_about(game_config()); ai::configuration::init(game_config()); diff --git a/src/game_launcher.cpp b/src/game_launcher.cpp index 205e65d28c95..04b930bc85a8 100644 --- a/src/game_launcher.cpp +++ b/src/game_launcher.cpp @@ -43,7 +43,6 @@ #include "language.hpp" // for language_def, etc #include "log.hpp" // for LOG_STREAM, logger, general, etc #include "map/exception.hpp" -#include "preferences/advanced.hpp" // for advanced_manager #include "preferences/credentials.hpp" #include "preferences/display.hpp" #include "preferences/general.hpp" // for disable_preferences_save, etc @@ -104,7 +103,6 @@ game_launcher::game_launcher(const commandline_options& cmdline_opts) , video_(new CVideo()) , font_manager_() , prefs_manager_() - , advanced_prefs_manager_() , image_manager_() , main_event_context_() , hotkey_manager_() @@ -431,11 +429,6 @@ bool game_launcher::init_lua_script() return !error; } -void game_launcher::init_advanced_prefs_manager() -{ - advanced_prefs_manager_ = std::make_unique(game_config_manager::get()->game_config()); -} - void game_launcher::set_test(const std::string& id) { state_.clear(); diff --git a/src/game_launcher.hpp b/src/game_launcher.hpp index 5ca1a2490419..34f00e4b9138 100644 --- a/src/game_launcher.hpp +++ b/src/game_launcher.hpp @@ -33,8 +33,6 @@ class commandline_options; class config; class CVideo; -namespace preferences { class advanced_manager; } - struct jump_to_campaign_info { /** Whether the game should immediately start a campaign. */ @@ -81,7 +79,6 @@ class game_launcher bool init_video(); bool init_language(); bool init_lua_script(); - void init_advanced_prefs_manager(); bool play_test(); bool play_screenshot_mode(); @@ -136,7 +133,6 @@ class game_launcher font::manager font_manager_; const preferences::manager prefs_manager_; - std::unique_ptr advanced_prefs_manager_; const image::manager image_manager_; const events::event_context main_event_context_; const hotkey::manager hotkey_manager_; diff --git a/src/preferences/advanced.cpp b/src/preferences/advanced.cpp index eb8e950ac36a..d07092757c0c 100644 --- a/src/preferences/advanced.cpp +++ b/src/preferences/advanced.cpp @@ -24,13 +24,11 @@ static lg::log_domain advanced_preferences("advanced_preferences"); namespace preferences { -static advanced_manager* singleton = nullptr; +static std::unique_ptr singleton = nullptr; advanced_manager::advanced_manager(const game_config_view& gc) : prefs() { - singleton = this; - for(const config& pref : gc.child_range("advanced_preference")) { try { prefs.emplace_back(pref); @@ -46,7 +44,6 @@ advanced_manager::advanced_manager(const game_config_view& gc) advanced_manager::~advanced_manager() { - singleton = nullptr; } advanced_manager::option::option(const config& pref) @@ -71,6 +68,11 @@ advanced_manager::option::option(const config& pref) } } +void init_advanced_manager(const game_config_view& gc) +{ + singleton = std::make_unique(gc); +} + const advanced_pref_list& get_advanced_preferences() { assert(singleton && "Advanced preference manager singleton is null!"); diff --git a/src/preferences/advanced.hpp b/src/preferences/advanced.hpp index 5ec7279ac17d..56b99e508762 100644 --- a/src/preferences/advanced.hpp +++ b/src/preferences/advanced.hpp @@ -27,7 +27,7 @@ namespace preferences class advanced_manager { public: - advanced_manager(const game_config_view& gc); + explicit advanced_manager(const game_config_view& gc); ~advanced_manager(); @@ -62,6 +62,9 @@ class advanced_manager std::vector