diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index 1c33cd77c3..e7b8f2a8b0 100644 --- a/src/ai/ai_config.cpp +++ b/src/ai/ai_config.cpp @@ -21,18 +21,17 @@ { assert(company < MAX_COMPANIES); - std::unique_ptr *config; - if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) { - config = &_settings_newgame.script_config.ai[company]; - } else { - if (source != SSS_FORCE_GAME) { - Company *c = Company::GetIfValid(company); - if (c != nullptr && c->ai_config != nullptr) return c->ai_config.get(); - } - config = &_settings_game.script_config.ai[company]; + if (_game_mode == GM_MENU) source = SSS_FORCE_NEWGAME; + + if (source == SSS_DEFAULT) { + Company *c = Company::GetIfValid(company); + if (c != nullptr && c->ai_config != nullptr) return c->ai_config.get(); } - if (*config == nullptr) *config = std::make_unique(); - return config->get(); + + auto &config = (source == SSS_FORCE_NEWGAME) ? _settings_newgame.script_config.ai[company] : _settings_game.script_config.ai[company]; + if (config == nullptr) config = std::make_unique(); + + return config.get(); } class AIInfo *AIConfig::GetInfo() const diff --git a/src/game/game_config.cpp b/src/game/game_config.cpp index 32beac1660..063bc0af08 100644 --- a/src/game/game_config.cpp +++ b/src/game/game_config.cpp @@ -17,14 +17,12 @@ /* static */ GameConfig *GameConfig::GetConfig(ScriptSettingSource source) { - std::unique_ptr *config; - if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) { - config = &_settings_newgame.script_config.game; - } else { - config = &_settings_game.script_config.game; - } - if (*config == nullptr) *config = std::make_unique(); - return config->get(); + if (_game_mode == GM_MENU) source = SSS_FORCE_NEWGAME; + + auto &config = (source == SSS_FORCE_NEWGAME) ? _settings_newgame.script_config.game : _settings_game.script_config.game; + if (config == nullptr) config = std::make_unique(); + + return config.get(); } class GameInfo *GameConfig::GetInfo() const