From 073f70b0a632d754ebd2b01afcde721a8c1b4c47 Mon Sep 17 00:00:00 2001 From: mattsc Date: Fri, 16 Nov 2018 09:02:40 -0800 Subject: [PATCH] AI: move default algorithm definition from C++ to WML Among other things this now allows defining cores that have a different default AI. --- data/_main.cfg | 1 + src/ai/configuration.cpp | 7 ++++++- src/ai/configuration.hpp | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/data/_main.cfg b/data/_main.cfg index b31c72de6163..05844119ed08 100644 --- a/data/_main.cfg +++ b/data/_main.cfg @@ -38,6 +38,7 @@ {campaigns/} [ais] + default_ai_algorithm=ai_default_rca [default_config] {ai/utils/default_config.cfg} [/default_config] diff --git a/src/ai/configuration.cpp b/src/ai/configuration.cpp index 15a4d13b9edb..9fc75ad41606 100644 --- a/src/ai/configuration.cpp +++ b/src/ai/configuration.cpp @@ -49,6 +49,10 @@ void configuration::init(const config &game_config) ERR_AI_CONFIGURATION << "Missing AI [default_config]. Therefore, default_config_ set to empty." << std::endl; default_config_.clear(); } + default_ai_algorithm_ = ais["default_ai_algorithm"].str(); + if (default_ai_algorithm_.empty()) { + ERR_AI_CONFIGURATION << "Missing default_ai_algorithm. This will result in no AI being loaded by default." << std::endl; + } for (const config &ai_configuration : ais.child_range("ai")) { @@ -166,6 +170,7 @@ configuration::description_map configuration::ai_configurations_ = configuration configuration::description_map configuration::era_ai_configurations_ = configuration::description_map(); configuration::description_map configuration::mod_ai_configurations_ = configuration::description_map(); config configuration::default_config_ = config(); +std::string configuration::default_ai_algorithm_; bool configuration::get_side_config_from_file(const std::string& file, config& cfg ){ try { @@ -359,7 +364,7 @@ void configuration::expand_simplified_aspects(side_number side, config &cfg) { } } if (algorithm.empty() && !parsed_config.has_child("stage")) { - base_config = get_ai_config_for("ai_default_rca"); + base_config = get_ai_config_for(default_ai_algorithm_); } for (const config::any_child &child : parsed_config.all_children_range()) { base_config.add_child(child.key, child.cfg); diff --git a/src/ai/configuration.hpp b/src/ai/configuration.hpp index 42815f9e7420..b69b13dd0770 100644 --- a/src/ai/configuration.hpp +++ b/src/ai/configuration.hpp @@ -120,6 +120,7 @@ class configuration { static description_map era_ai_configurations_; static description_map mod_ai_configurations_; static config default_config_; + static std::string default_ai_algorithm_; };