Move cache clearing to game_config_manager class.

This commit is contained in:
Andrius Silinskas 2013-06-06 14:45:27 +01:00
parent cb6119abb0
commit 9ce42ce9bd
3 changed files with 28 additions and 29 deletions

View file

@ -54,9 +54,24 @@ game_config_manager::~game_config_manager()
resources::config_manager = NULL;
}
void game_config_manager::add_define(const std::string name, const bool add)
{
defines_.push_back(std::make_pair(name, add));
}
void game_config_manager::add_cache_define(const std::string name)
{
cache_.add_define(name);
}
void game_config_manager::clear_cache_defines()
{
cache_.clear_defines();
}
bool game_config_manager::init_config(const bool force, const bool jump_to_editor)
{
load_game_cfg(force);
load_game_cfg(true, force);
// make sure that multiplayer mode is set if command line parameter is selected
if (cmdline_opts_.multiplayer)
@ -86,8 +101,11 @@ bool game_config_manager::init_config(const bool force, const bool jump_to_edito
return true;
}
void game_config_manager::load_game_cfg(const bool force)
void game_config_manager::load_game_cfg(const bool clear_cache_defines, const bool force)
{
if (clear_cache_defines)
cache_.clear_defines();
// scoped defines
typedef boost::shared_ptr<game_config::scoped_preproc_define> define_ptr;
std::deque<define_ptr> defines;
@ -267,13 +285,3 @@ void game_config_manager::reload_changed_game_config(const bool jump_to_editor)
clear_binary_paths_cache();
init_config(true, jump_to_editor);
}
void game_config_manager::add_define(const std::string name, const bool add)
{
defines_.push_back(std::make_pair(name, add));
}
void game_config_manager::add_cache_define(const std::string name)
{
cache_.add_define(name);
}

View file

@ -34,12 +34,13 @@ public:
void add_define(const std::string name, const bool add = true);
void add_cache_define(const std::string name);
void clear_cache_defines();
bool init_config(const bool force = false, const bool jump_to_editor = false);
void load_game_cfg(const bool force = false);
void load_game_cfg(const bool clear_cache_defines = true, const bool force = false);
void reload_changed_game_config(const bool jump_to_editor = false);
protected:
game_config::config_cache& cache() { return cache_; }
binary_paths_manager& bin_paths_manager() { return paths_manager_; }
private:

View file

@ -276,8 +276,6 @@ game_controller::game_controller(const commandline_options& cmdline_opts, const
bool game_controller::init_config(const bool force)
{
resources::config_manager->cache().clear_defines();
return resources::config_manager->init_config(force, jump_to_editor_);
}
@ -298,7 +296,7 @@ bool game_controller::play_test()
state_.classification().campaign_define = "TEST";
resources::config_manager->add_cache_define("TEST");
resources::config_manager->load_game_cfg();
resources::config_manager->load_game_cfg(false);
resources::config_manager->bin_paths_manager().set_paths(game_config());
@ -317,7 +315,6 @@ bool game_controller::play_screenshot_mode()
return true;
}
resources::config_manager->cache().clear_defines();
resources::config_manager->add_define("EDITOR");
resources::config_manager->load_game_cfg();
const binary_paths_manager bin_paths_manager(game_config());
@ -339,8 +336,6 @@ bool game_controller::load_game()
try {
load.load_game(game::load_game_exception::game, game::load_game_exception::show_replay, game::load_game_exception::cancel_orders, game::load_game_exception::select_difficulty, game::load_game_exception::difficulty);
resources::config_manager->cache().clear_defines();
resources::config_manager->add_define(load.get_difficulty());
resources::config_manager->add_define(state_.classification().campaign_define, !state_.classification().campaign_define.empty());
resources::config_manager->add_define("MULTIPLAYER", state_.classification().campaign_define.empty() && (state_.classification().campaign_type == "multiplayer"));
@ -353,7 +348,6 @@ bool game_controller::load_game()
try {
resources::config_manager->load_game_cfg();
} catch(config::error&) {
resources::config_manager->cache().clear_defines();
resources::config_manager->load_game_cfg();
return false;
}
@ -452,7 +446,7 @@ void game_controller::set_tutorial()
state_.classification().campaign_type = "tutorial";
state_.carryover_sides_start["next_scenario"] = "tutorial";
state_.classification().campaign_define = "TUTORIAL";
resources::config_manager->cache().clear_defines();
resources::config_manager->clear_cache_defines();
resources::config_manager->add_define("TUTORIAL");
}
@ -577,11 +571,11 @@ bool game_controller::new_campaign()
}
state_.carryover_sides_start["difficulty"] = difficulties[difficulty];
resources::config_manager->cache().clear_defines();
resources::config_manager->clear_cache_defines();
resources::config_manager->add_define(difficulties[difficulty]);
} else {
//clear even when there is no difficulty
resources::config_manager->cache().clear_defines();
resources::config_manager->clear_cache_defines();
}
state_.classification().campaign_define = campaign["define"].str();
@ -734,7 +728,6 @@ bool game_controller::play_multiplayer()
}
/* do */ {
resources::config_manager->cache().clear_defines();
resources::config_manager->add_define(state_.classification().campaign_define);
resources::config_manager->load_game_cfg();
events::discard_input(); // prevent the "keylogger" effect
@ -810,7 +803,6 @@ bool game_controller::play_multiplayer_commandline()
state_.classification().campaign_type = "multiplayer";
state_.classification().campaign_define = "MULTIPLAYER";
resources::config_manager->cache().clear_defines();
resources::config_manager->add_define(state_.classification().campaign_define);
resources::config_manager->load_game_cfg();
events::discard_input(); // prevent the "keylogger" effect
@ -862,9 +854,8 @@ void game_controller::launch_game(RELOAD_GAME_DATA reload)
resources::config_manager->add_define(*i);
}
try {
resources::config_manager->load_game_cfg();
resources::config_manager->load_game_cfg(false);
} catch(config::error&) {
resources::config_manager->cache().clear_defines();
resources::config_manager->load_game_cfg();
return;
}
@ -910,7 +901,6 @@ void game_controller::play_replay()
editor::EXIT_STATUS game_controller::start_editor(const std::string& filename)
{
while(true){
resources::config_manager->cache().clear_defines();
resources::config_manager->add_define("EDITOR");
resources::config_manager->load_game_cfg();
const binary_paths_manager bin_paths_manager(game_config());