From 9c2027a8d8b2d3fd2dbf0ba9d5a6ca42ade929cc Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Tue, 23 Feb 2016 19:10:10 -0500 Subject: [PATCH] Remove version key from AI configs This has a lot of cascade effects and may remove support for some old syntaxes, such as [protect_unit]. --- data/ai/ais/ai_default_rca.cfg | 1 - data/ai/ais/ai_default_rca_strong.cfg | 1 - data/ai/dev/ai_old_recruitment.cfg | 1 - data/ai/dev/ai_sf_with_rca.cfg | 1 - data/ai/dev/akihara_recruitment.cfg | 1 - data/ai/dev/formula_ai.cfg | 1 - data/ai/dev/formula_ai_poisoning.cfg | 1 - data/ai/dev/idle_ai.cfg | 1 - data/ai/dev/testing_recruiting.cfg | 1 - data/ai/micro_ais/scenarios/lurkers.cfg | 1 - data/ai/micro_ais/scenarios/patrols.cfg | 1 - data/ai/micro_ais/scenarios/protect_unit.cfg | 1 - data/ai/scenarios/scenario-lua-ai.cfg | 1 - data/ai/scenarios/scenario-no_engine.cfg | 1 - .../chapter1/03_Kalian_under_Attack.cfg | 1 - .../chapter4/16_The_Chief_Must_Die.cfg | 1 - data/core/macros/ai.cfg | 3 +- data/scenario-formula.cfg | 1 - data/schema.cfg | 1 - src/ai/configuration.cpp | 268 +----------------- src/ai/configuration.hpp | 42 +-- src/ai/manager.cpp | 10 +- src/ai/manager.hpp | 3 +- 23 files changed, 10 insertions(+), 334 deletions(-) diff --git a/data/ai/ais/ai_default_rca.cfg b/data/ai/ais/ai_default_rca.cfg index b5fda5d52927..ec89a4169312 100644 --- a/data/ai/ais/ai_default_rca.cfg +++ b/data/ai/ais/ai_default_rca.cfg @@ -8,7 +8,6 @@ id=ai_default_rca description=_"Multiplayer_AI^Default AI (RCA)" # wmllint: no spellcheck # RCA := Register Candidate Action; more info at http://forums.wesnoth.org/viewtopic.php?p=419625#p419625 - version=10710 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/ais/ai_default_rca_strong.cfg b/data/ai/ais/ai_default_rca_strong.cfg index c742d5ef2400..63aad6b77b9d 100644 --- a/data/ai/ais/ai_default_rca_strong.cfg +++ b/data/ai/ais/ai_default_rca_strong.cfg @@ -9,7 +9,6 @@ id=ai_default_rca_strong description=_"Multiplayer_AI^Strong AI (RCA)" # wmllint: no spellcheck # RCA := Register Candidate Action; more info at http://forums.wesnoth.org/viewtopic.php?p=419625#p419625 - version=10710 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/dev/ai_old_recruitment.cfg b/data/ai/dev/ai_old_recruitment.cfg index 9ab0257de2ae..807d8e085d2f 100644 --- a/data/ai/dev/ai_old_recruitment.cfg +++ b/data/ai/dev/ai_old_recruitment.cfg @@ -8,7 +8,6 @@ id=ai_old_recruitment description=_"Multiplayer_AI^Dev AI: Default + Old Recruitment" # wmllint: no spellcheck # RCA := Register Candidate Action; more info at http://forums.wesnoth.org/viewtopic.php?p=419625#p419625 - version=10710 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/dev/ai_sf_with_rca.cfg b/data/ai/dev/ai_sf_with_rca.cfg index 6b46732a329d..2ba95f27c9ff 100644 --- a/data/ai/dev/ai_sf_with_rca.cfg +++ b/data/ai/dev/ai_sf_with_rca.cfg @@ -7,7 +7,6 @@ [ai] id=ai_sf_with_rca description=_"Multiplayer_AI^Dev AI: Strategy formulation with RCA " # wmllint: no spellcheck - version=11300 [stage] id=main_loop name=testing_ai_default::strategy_formulation_with_rca diff --git a/data/ai/dev/akihara_recruitment.cfg b/data/ai/dev/akihara_recruitment.cfg index 312f314babc6..fa8b4b419831 100644 --- a/data/ai/dev/akihara_recruitment.cfg +++ b/data/ai/dev/akihara_recruitment.cfg @@ -7,7 +7,6 @@ [ai] id=ai_dev_akihara description=_"Multiplayer_AI^Dev AI: Default + Experimental Recruitment (C++ Akihara)" # wmllint: no spellcheck - version=10800 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/dev/formula_ai.cfg b/data/ai/dev/formula_ai.cfg index 2acd37251dfb..432145273a64 100644 --- a/data/ai/dev/formula_ai.cfg +++ b/data/ai/dev/formula_ai.cfg @@ -9,7 +9,6 @@ id=formula_ai # id is needed to uniquely identify a MP AI, it is not needed in the scenario AI description=_"Multiplayer_AI^Dev AI: Default + Experimental Recruitment (Formula AI)" # wmllint: no spellcheck # this description is, again, needed for MP AI (it shows in AI list under this description - version=10710 # no spaces here, version should be parsed as int. This version marker is a sign that ALL snippets of AI are written using new syntax {AI_SIMPLE_FORMULA_AI_EXPERIMENTAL_RECRUITMENT} [stage] diff --git a/data/ai/dev/formula_ai_poisoning.cfg b/data/ai/dev/formula_ai_poisoning.cfg index 15aab2a3a210..c0f8d272fa29 100644 --- a/data/ai/dev/formula_ai_poisoning.cfg +++ b/data/ai/dev/formula_ai_poisoning.cfg @@ -7,7 +7,6 @@ [ai] id=default_ai_poisoning description=_"Multiplayer_AI^Dev AI: Default + Poisoning (Formula AI)" # wmllint: no spellcheck - version=10710 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/dev/idle_ai.cfg b/data/ai/dev/idle_ai.cfg index 187c300a920e..638a8e7f467d 100644 --- a/data/ai/dev/idle_ai.cfg +++ b/data/ai/dev/idle_ai.cfg @@ -2,6 +2,5 @@ [ai] id=ai_idle description=_"Multiplayer_AI^Dev AI: Idle AI" # wmllint: no spellcheck - version=10703 #well, we can just fall back to idle ai. But we can just do nothing, and it will work (if no additional stages are brought in by other config sources - MP faction config, scenario config, era config, defaults, etc [/ai] diff --git a/data/ai/dev/testing_recruiting.cfg b/data/ai/dev/testing_recruiting.cfg index 93cd56b4b14a..14b59dc0e54c 100644 --- a/data/ai/dev/testing_recruiting.cfg +++ b/data/ai/dev/testing_recruiting.cfg @@ -7,7 +7,6 @@ [ai] id=testing_ai_recruitment description=_"Multiplayer_AI^Dev AI: Default + Experimental Recruitment (C++)" # wmllint: no spellcheck - version=10800 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/micro_ais/scenarios/lurkers.cfg b/data/ai/micro_ais/scenarios/lurkers.cfg index 6b9dcf002844..cb836454f077 100644 --- a/data/ai/micro_ais/scenarios/lurkers.cfg +++ b/data/ai/micro_ais/scenarios/lurkers.cfg @@ -274,7 +274,6 @@ income=-2 [ai] - version=10710 [stage] id=main_loop name=ai_default_rca::candidate_action_evaluation_loop diff --git a/data/ai/micro_ais/scenarios/patrols.cfg b/data/ai/micro_ais/scenarios/patrols.cfg index 7360665bdfcb..36cddc52b244 100644 --- a/data/ai/micro_ais/scenarios/patrols.cfg +++ b/data/ai/micro_ais/scenarios/patrols.cfg @@ -56,7 +56,6 @@ gold=0 recruit="" [ai] - version=10703 [engine] name=lua code= << diff --git a/data/ai/micro_ais/scenarios/protect_unit.cfg b/data/ai/micro_ais/scenarios/protect_unit.cfg index 1b809548119f..a64da9073bd2 100644 --- a/data/ai/micro_ais/scenarios/protect_unit.cfg +++ b/data/ai/micro_ais/scenarios/protect_unit.cfg @@ -52,7 +52,6 @@ {ai/aliases/stable_singleplayer.cfg} [ai] - version=10710 [engine] name="lua" code= << diff --git a/data/ai/scenarios/scenario-lua-ai.cfg b/data/ai/scenarios/scenario-lua-ai.cfg index ffd61858c36e..b8b5a267762c 100644 --- a/data/ai/scenarios/scenario-lua-ai.cfg +++ b/data/ai/scenarios/scenario-lua-ai.cfg @@ -216,7 +216,6 @@ Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd [/unit] [ai] - version=10710 [goal] name=protect_location value=5 diff --git a/data/ai/scenarios/scenario-no_engine.cfg b/data/ai/scenarios/scenario-no_engine.cfg index d583ed8ab50b..4c9877bcc170 100644 --- a/data/ai/scenarios/scenario-no_engine.cfg +++ b/data/ai/scenarios/scenario-no_engine.cfg @@ -216,7 +216,6 @@ Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd [/unit] [ai] - version=10710 [goal] name=protect_location value=5 diff --git a/data/campaigns/Legend_of_Wesmere/scenarios/chapter1/03_Kalian_under_Attack.cfg b/data/campaigns/Legend_of_Wesmere/scenarios/chapter1/03_Kalian_under_Attack.cfg index a7fd82bb1c73..329c1ce113c7 100644 --- a/data/campaigns/Legend_of_Wesmere/scenarios/chapter1/03_Kalian_under_Attack.cfg +++ b/data/campaigns/Legend_of_Wesmere/scenarios/chapter1/03_Kalian_under_Attack.cfg @@ -196,7 +196,6 @@ recruit="" faction=Custom [ai] - version=10703 [engine] name=lua code=<< diff --git a/data/campaigns/Legend_of_Wesmere/scenarios/chapter4/16_The_Chief_Must_Die.cfg b/data/campaigns/Legend_of_Wesmere/scenarios/chapter4/16_The_Chief_Must_Die.cfg index 129a32cb62d1..b5fd7edab8d2 100644 --- a/data/campaigns/Legend_of_Wesmere/scenarios/chapter4/16_The_Chief_Must_Die.cfg +++ b/data/campaigns/Legend_of_Wesmere/scenarios/chapter4/16_The_Chief_Must_Die.cfg @@ -249,7 +249,6 @@ team_name=orcs faction=Custom [ai] - version=10703 [stage] engine=fai name=unit_formulas diff --git a/data/core/macros/ai.cfg b/data/core/macros/ai.cfg index b207cb4a8f6e..80052510dffe 100644 --- a/data/core/macros/ai.cfg +++ b/data/core/macros/ai.cfg @@ -371,7 +371,7 @@ #define AI_NEW_SYNTAX # use stable 1.8 ai syntax - version=10710 + # Deprecated; no longer does anything #enddef #define AI_SCALE_ATTACK_DEPTH_BY_DIFFICULTY @@ -545,7 +545,6 @@ # move-to-enemy candidate actions. # Put this into the [side][ai] tag. # Does not work in [modify_side][ai] or [modify_ai] at the moment. - version=10710 [engine] name="lua" code= << diff --git a/data/scenario-formula.cfg b/data/scenario-formula.cfg index 379e2055d01e..9e7d673f1d06 100644 --- a/data/scenario-formula.cfg +++ b/data/scenario-formula.cfg @@ -217,7 +217,6 @@ Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd [/unit] [ai] - version=10703 [stage] engine=fai name=unit_formulas diff --git a/data/schema.cfg b/data/schema.cfg index b887bcf3fa9e..4c9b3dcac01d 100644 --- a/data/schema.cfg +++ b/data/schema.cfg @@ -74,7 +74,6 @@ description="required string" #maybe string translatable? id="required identifier" - version="required integer" [/ai] [ais] _ai="repeated ai" diff --git a/src/ai/configuration.cpp b/src/ai/configuration.cpp index 422fc722a24f..53bf9f822a66 100644 --- a/src/ai/configuration.cpp +++ b/src/ai/configuration.cpp @@ -221,52 +221,6 @@ const config& configuration::get_default_ai_parameters() } -bool configuration::upgrade_aspect_config_from_1_07_02_to_1_07_03(side_number side, const config& cfg, config& parsed_cfg, const std::string &id, bool aspect_was_attribute) -{ - config aspect_config; - aspect_config["id"] = id; - - BOOST_FOREACH(const config &aiparam, cfg.child_range("ai")) { - const config &_aspect = aiparam.find_child("aspect","id",id); - if (_aspect) { - aspect_config.append(_aspect); - } - - if (aspect_was_attribute && !aiparam.has_attribute(id)) { - continue;//we are looking for an attribute but it isn't present - } - - if (!aspect_was_attribute && !aiparam.child(id)) { - continue;//we are looking for a child but it isn't present - } - - config facet_config; - facet_config["engine"] = "cpp"; - facet_config["name"] = "standard_aspect"; - if (aspect_was_attribute) { - facet_config["value"] = aiparam[id]; - } else { - BOOST_FOREACH(const config &value, aiparam.child_range(id)) { - facet_config.add_child("value",value); - } - } - - if (const config::attribute_value *v = aiparam.get("turns")) { - facet_config["turns"] = *v; - } - if (const config::attribute_value *v = aiparam.get("time_of_day")) { - facet_config["time_of_day"] = *v; - } - - aspect_config.add_child("facet",facet_config); - } - DBG_AI_CONFIGURATION << "side "<< side << " aspect[" << id << "] config :\n"<< cfg << "\n"; - - parsed_cfg.add_child("aspect",aspect_config); - return true; -} - - bool configuration::parse_side_config(side_number side, const config& original_cfg, config &cfg ) { LOG_AI_CONFIGURATION << "side "<< side <<": parsing AI configuration from config" << std::endl; @@ -293,32 +247,7 @@ bool configuration::parse_side_config(side_number side, const config& original_c ERR_AI_CONFIGURATION << "side "<< side <<": default configuration is not available, do not applying it" << std::endl; } - //find version - int version = 10600; - BOOST_FOREACH(const config &aiparam, cfg.child_range("ai")) { - if (const config::attribute_value *a = aiparam.get("version")){ - int v = a->to_int(version); - if (version description_map; static description_map ai_configurations_; diff --git a/src/ai/manager.cpp b/src/ai/manager.cpp index 2374c2bf846a..09bd362ec8cd 100644 --- a/src/ai/manager.cpp +++ b/src/ai/manager.cpp @@ -153,16 +153,16 @@ interface& holder::get_ai_ref() } -void holder::modify_ai_config_old( const config::const_child_itors &ai_parameters) +void holder::modify_side_ai_config(config cfg) { // only handle aspects // transform ai_parameters to new-style config - config cfg; - configuration::upgrade_aspect_configs_from_1_07_02_to_1_07_03(this->side_,ai_parameters,cfg); + configuration::expand_simplified_aspects(this->side_, cfg); //at this point we have a single config which contains [aspect][facet] tags DBG_AI_MANAGER << "after transforming [modify_side][ai] into new syntax, config contains:"<< std::endl << cfg << std::endl; + // TODO: Also add [goal] tags. And what about [stage] or [engine] tags? (Maybe they're not important.) if (this->readonly_context_ == NULL) { // if not initialized, append that config to the bottom of base cfg // then, merge aspects with the same id @@ -720,7 +720,9 @@ void manager::clear_ais() void manager::modify_active_ai_config_old_for_side ( side_number side, const config::const_child_itors &ai_parameters ) { - get_active_ai_holder_for_side(side).modify_ai_config_old(ai_parameters); + BOOST_FOREACH(const config& cfg, ai_parameters) { + get_active_ai_holder_for_side(side).modify_side_ai_config(cfg); + } } diff --git a/src/ai/manager.hpp b/src/ai/manager.hpp index b71cc70e20d4..8db72c436861 100644 --- a/src/ai/manager.hpp +++ b/src/ai/manager.hpp @@ -63,11 +63,10 @@ class holder{ const std::string describe_ai(); - void modify_ai_config_old( const config::const_child_itors &ai_parameters ); - config to_config() const; void modify_ai(const config& cfg); + void modify_side_ai_config(config cfg); const std::string get_ai_overview();