Skip to content

Commit

Permalink
Moved advanced prefs manager out of game_launcher
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Vultraz committed Jan 8, 2021
1 parent 487a9fe commit dbf9d35
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 18 deletions.
4 changes: 4 additions & 0 deletions src/game_config_manager.cpp
Expand Up @@ -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"
Expand Down Expand Up @@ -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());
Expand Down
7 changes: 0 additions & 7 deletions src/game_launcher.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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_()
Expand Down Expand Up @@ -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<preferences::advanced_manager>(game_config_manager::get()->game_config());
}

void game_launcher::set_test(const std::string& id)
{
state_.clear();
Expand Down
4 changes: 0 additions & 4 deletions src/game_launcher.hpp
Expand Up @@ -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. */
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -136,7 +133,6 @@ class game_launcher

font::manager font_manager_;
const preferences::manager prefs_manager_;
std::unique_ptr<preferences::advanced_manager> advanced_prefs_manager_;
const image::manager image_manager_;
const events::event_context main_event_context_;
const hotkey::manager hotkey_manager_;
Expand Down
10 changes: 6 additions & 4 deletions src/preferences/advanced.cpp
Expand Up @@ -24,13 +24,11 @@ static lg::log_domain advanced_preferences("advanced_preferences");

namespace preferences
{
static advanced_manager* singleton = nullptr;
static std::unique_ptr<preferences::advanced_manager> 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);
Expand All @@ -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)
Expand All @@ -71,6 +68,11 @@ advanced_manager::option::option(const config& pref)
}
}

void init_advanced_manager(const game_config_view& gc)
{
singleton = std::make_unique<advanced_manager>(gc);
}

const advanced_pref_list& get_advanced_preferences()
{
assert(singleton && "Advanced preference manager singleton is null!");
Expand Down
5 changes: 4 additions & 1 deletion src/preferences/advanced.hpp
Expand Up @@ -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();

Expand Down Expand Up @@ -62,6 +62,9 @@ class advanced_manager
std::vector<option> prefs;
};

/** Initializes the manager singleton. */
void init_advanced_manager(const game_config_view& gc);

using advanced_pref_list = std::vector<advanced_manager::option>;

/** Gets a list of the available advanced preferences. */
Expand Down
2 changes: 0 additions & 2 deletions src/wesnoth.cpp
Expand Up @@ -795,8 +795,6 @@ static int do_gameloop(const std::vector<std::string>& args)

LOG_CONFIG << "time elapsed: " << (SDL_GetTicks() - start_ticks) << " ms\n";

game->init_advanced_prefs_manager();

plugins_manager plugins_man(new application_lua_kernel);

const plugins_context::reg_vec callbacks {
Expand Down

0 comments on commit dbf9d35

Please sign in to comment.