AI configuration: new optional parameter mp_rank=

This parameter determines in which order the available AIs are shown in the MP computer player selection menu. This can be used for eras, modifications or cores to change which AI is first in the list.
This commit is contained in:
mattsc 2018-11-17 18:46:06 -08:00
parent fcc22a36e2
commit c731be58a9
7 changed files with 16 additions and 0 deletions

View file

@ -7,6 +7,7 @@
[ai]
id=ai_default_rca
description=_"Multiplayer_AI^Default AI (RCA)" # wmllint: no spellcheck
mp_rank=1010
# RCA := Register Candidate Action; more info at http://forums.wesnoth.org/viewtopic.php?p=419625#p419625
[stage]
id=main_loop

View file

@ -7,6 +7,7 @@
[ai]
id=experimental_ai
description=_"Multiplayer_AI^Experimental AI" # wmllint: no spellcheck
mp_rank=1000
[stage]
id=main_loop

View file

@ -8,6 +8,7 @@
[ai]
id=ai_default_rca_alternate_recruiting
description=_"Multiplayer_AI^Dev AI: Default AI (RCA) with Alternate Recruiting" # wmllint: no spellcheck
mp_rank=100
# RCA := Register Candidate Action; more info at http://forums.wesnoth.org/viewtopic.php?p=419625#p419625
[stage]
id=main_loop

View file

@ -8,6 +8,7 @@
[ai]
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
mp_rank=100
# this description is, again, needed for MP AI (it shows in AI list under this description
[stage]

View file

@ -7,6 +7,7 @@
[ai]
id=formula_ai_poisoning
description=_"Multiplayer_AI^Dev AI: Default + Poisoning (Formula AI)" # wmllint: no spellcheck
mp_rank=100
[stage]
id=main_loop
name=ai_default_rca::candidate_action_evaluation_loop

View file

@ -69,6 +69,7 @@ void configuration::init(const config &game_config)
description desc;
desc.id=id;
desc.mp_rank=ai_configuration["mp_rank"].to_int(0);
desc.text = ai_configuration["description"].t_str();
desc.cfg=ai_configuration;
@ -95,6 +96,7 @@ void extract_ai_configurations(std::map<std::string, description> &storage, cons
description desc;
desc.id=id;
desc.text = ai_configuration["description"].t_str();
desc.mp_rank = ai_configuration["mp_rank"].to_int(0);
desc.cfg=ai_configuration;
storage.emplace(id, desc);
@ -143,6 +145,13 @@ std::vector<description*> configuration::get_available_ais()
add_if_not_hidden(&m_config.second);
}
// Sort by mp_rank. For same mp_rank, keep alphabetical order.
std::stable_sort(ais_list.begin(), ais_list.end(),
[](const description* a, const description* b) {
return a->mp_rank > b->mp_rank;
}
);
return ais_list;
}

View file

@ -46,12 +46,14 @@ public:
description()
: text()
, id()
, mp_rank()
, cfg()
{
}
t_string text;
std::string id;
int mp_rank;
config cfg;
};