fix handling of no_leader= (again)

previously, if people wanted to make use of mp leader selection in mp
campaign they had to sxplicitly set no_leader=no and faction_lock=no,
with the new code its clear that no_leader= is just an alias for
faction_lock with type
This commit is contained in:
gfgtdf 2018-04-21 00:52:20 +02:00 committed by Charles Dang
parent 4eb40da08b
commit 5149e65449
5 changed files with 8 additions and 10 deletions

View file

@ -282,10 +282,6 @@ void game_config_manager::load_game_config(FORCE_RELOAD_CONFIG force_reload,
for (config& scenario : game_config_.child_range("scenario"))
{
scenario["require_scenario"] = require_campaign;
for (config& side : scenario.child_range("side"))
{
side["no_leader"] = side["no_leader"].to_bool(true);
}
}
}
}

View file

@ -1057,10 +1057,6 @@ config side_engine::new_config() const
res.add_child_at("ai", config {"ai_algorithm", ai_algorithm_}, 0);
}
if(controller_ == CNTR_EMPTY) {
res["no_leader"] = true;
}
// A side's "current_player" is the player which has currently taken that side or the one for which it is reserved.
// The "player_id" is the id of the client who controls that side. It's always the host for Local and AI players and
// always empty for free/reserved sides or null controlled sides. You can use !res["player_id"].empty() to check

View file

@ -278,7 +278,7 @@ void flg_manager::update_available_leaders()
{
available_leaders_.clear();
if(!default_leader_type_.empty() || !(side_["no_leader"].to_bool() || leader_lock_)) {
if(!default_leader_type_.empty() || !leader_lock_) {
int random_pos = 0;
// Add a default leader if there is one.

View file

@ -188,6 +188,12 @@ void saved_game::set_defaults()
for(config& side : starting_pos_.child_range("side")) {
// Set save_id default value directly after loading to its default to prevent different default behaviour in
// mp_connect code and sp code.
if(side["no_leader"].to_bool()) {
side["leader_lock"] = true;
side.remove_attribute("type");
}
if(side["save_id"].empty()) {
side["save_id"] = side["id"];
}

View file

@ -275,7 +275,7 @@ BOOST_AUTO_TEST_CASE( flg_map_settings )
// No leader.
side.clear();
side["no_leader"] = true;
side["leader_lock"] = true;
side_engine.reset(create_side_engine(side, connect_engine.get()));
BOOST_CHECK_EQUAL( side_engine->flg().choosable_leaders().size(), 1 );
BOOST_CHECK_EQUAL( side_engine->flg().current_leader(), "null" );