Move cache clearing to game_config_manager class.
This commit is contained in:
parent
cb6119abb0
commit
9ce42ce9bd
3 changed files with 28 additions and 29 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue