Game Config Manager: utilize unique_ptrs over shared_ptrs
This commit is contained in:
parent
3b9e73f7d2
commit
2277926c06
1 changed files with 19 additions and 18 deletions
|
@ -526,28 +526,30 @@ void game_config_manager::load_game_config_for_game(
|
||||||
game_config::scoped_preproc_define mptest("MP_TEST", cmdline_opts_.mptest &&
|
game_config::scoped_preproc_define mptest("MP_TEST", cmdline_opts_.mptest &&
|
||||||
classification.campaign_type == game_classification::CAMPAIGN_TYPE::MULTIPLAYER);
|
classification.campaign_type == game_classification::CAMPAIGN_TYPE::MULTIPLAYER);
|
||||||
|
|
||||||
typedef std::shared_ptr<game_config::scoped_preproc_define> define;
|
//
|
||||||
|
// NOTE: these deques aren't used here, but the objects within are utilized as RAII helpers.
|
||||||
|
//
|
||||||
|
|
||||||
|
typedef std::unique_ptr<game_config::scoped_preproc_define> define;
|
||||||
|
|
||||||
std::deque<define> extra_defines;
|
std::deque<define> extra_defines;
|
||||||
for(const std::string& extra_define : classification.campaign_xtra_defines) {
|
for(const std::string& extra_define : classification.campaign_xtra_defines) {
|
||||||
define new_define(new game_config::scoped_preproc_define(extra_define));
|
extra_defines.emplace_back(new game_config::scoped_preproc_define(extra_define));
|
||||||
extra_defines.push_back(new_define);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::deque<define> modification_defines;
|
std::deque<define> modification_defines;
|
||||||
for(const std::string& mod_define : classification.mod_defines) {
|
for(const std::string& mod_define : classification.mod_defines) {
|
||||||
define new_define(new game_config::scoped_preproc_define(mod_define, !mod_define.empty()));
|
modification_defines.emplace_back(new game_config::scoped_preproc_define(mod_define, !mod_define.empty()));
|
||||||
modification_defines.push_back(new_define);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
load_game_config_with_loadscreen(NO_FORCE_RELOAD, &classification);
|
load_game_config_with_loadscreen(NO_FORCE_RELOAD, &classification);
|
||||||
}
|
} catch(game::error&) {
|
||||||
catch(game::error&) {
|
|
||||||
cache_.clear_defines();
|
cache_.clear_defines();
|
||||||
|
|
||||||
std::deque<define> previous_defines;
|
std::deque<define> previous_defines;
|
||||||
for(const preproc_map::value_type& preproc : old_defines_map_) {
|
for(const preproc_map::value_type& preproc : old_defines_map_) {
|
||||||
define new_define(new game_config::scoped_preproc_define(preproc.first));
|
previous_defines.emplace_back(new game_config::scoped_preproc_define(preproc.first));
|
||||||
previous_defines.push_back(new_define);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load_game_config_with_loadscreen(NO_FORCE_RELOAD);
|
load_game_config_with_loadscreen(NO_FORCE_RELOAD);
|
||||||
|
@ -563,7 +565,7 @@ void game_config_manager::load_game_config_for_create(bool is_mp, bool is_test)
|
||||||
///During an mp game the default difficuly define is also defined so better already load it now if we alreeady must reload config cache.
|
///During an mp game the default difficuly define is also defined so better already load it now if we alreeady must reload config cache.
|
||||||
game_config::scoped_preproc_define normal(DEFAULT_DIFFICULTY, !map_includes(old_defines_map_, cache_.get_preproc_map()));
|
game_config::scoped_preproc_define normal(DEFAULT_DIFFICULTY, !map_includes(old_defines_map_, cache_.get_preproc_map()));
|
||||||
|
|
||||||
typedef std::shared_ptr<game_config::scoped_preproc_define> define;
|
typedef std::unique_ptr<game_config::scoped_preproc_define> define;
|
||||||
try{
|
try{
|
||||||
load_game_config_with_loadscreen(NO_INCLUDE_RELOAD);
|
load_game_config_with_loadscreen(NO_INCLUDE_RELOAD);
|
||||||
}
|
}
|
||||||
|
@ -572,8 +574,7 @@ void game_config_manager::load_game_config_for_create(bool is_mp, bool is_test)
|
||||||
|
|
||||||
std::deque<define> previous_defines;
|
std::deque<define> previous_defines;
|
||||||
for (const preproc_map::value_type& preproc : old_defines_map_) {
|
for (const preproc_map::value_type& preproc : old_defines_map_) {
|
||||||
define new_define(new game_config::scoped_preproc_define(preproc.first));
|
previous_defines.emplace_back(new game_config::scoped_preproc_define(preproc.first));
|
||||||
previous_defines.push_back(new_define);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load_game_config_with_loadscreen(NO_FORCE_RELOAD);
|
load_game_config_with_loadscreen(NO_FORCE_RELOAD);
|
||||||
|
|
Loading…
Add table
Reference in a new issue