fix 21933

durign human turns, we now use check_victory which impied check_end_level, just like we du during ai turns.
I think actions having different when invoked by ai can never be the intended behaviour.
we also set tm->set_lost() before calling check_turn_end to that the lost_ value is also correct when ending with [endlevel]
This commit is contained in:
gfgtdf 2014-04-18 17:37:09 +02:00
parent bcf2852761
commit e454252f21
3 changed files with 8 additions and 8 deletions

View file

@ -569,7 +569,7 @@ void play_controller::fire_start(bool execute){
if(execute) {
gamedata_.set_phase(game_data::START);
game_events::fire("start");
check_end_level();
check_victory();
// start event may modify start turn with WML, reflect any changes.
start_turn_ = turn();
gamedata_.get_variable("turn_number") = int(start_turn_);
@ -1376,8 +1376,6 @@ void play_controller::set_defeat_music_list(const std::string& list)
void play_controller::check_victory()
{
check_end_level();
std::set<unsigned> not_defeated;
for (unit_map::const_iterator i = units_.begin(),
i_end = units_.end(); i != i_end; ++i)
@ -1408,6 +1406,8 @@ void play_controller::check_victory()
}
}
check_end_level();
bool found_player = false;
for (std::set<unsigned>::iterator n = not_defeated.begin(); n != not_defeated.end(); ++n) {

View file

@ -218,7 +218,7 @@ void playmp_controller::play_human_turn(){
}
play_slice();
check_end_level();
check_victory();
// give a chance to the whiteboard to continue an execute_all_actions
resources::whiteboard->continue_execute_all();
} catch(const end_level_exception&) {
@ -284,7 +284,7 @@ void playmp_controller::play_idle_loop()
}
play_slice();
check_end_level();
check_victory();
} catch(const end_level_exception&) {
turn_data_->send_data();
throw;
@ -510,7 +510,7 @@ void playmp_controller::play_network_turn(){
}
play_slice();
check_end_level();
check_victory();
if (!network_processing_stopped_){
turn_data.send_data();

View file

@ -792,7 +792,7 @@ void playsingle_controller::play_human_turn() {
end_turn_enable(true);
while(!end_turn_) {
play_slice();
check_end_level();
check_victory();
gui_->draw();
}
}
@ -989,7 +989,7 @@ void playsingle_controller::check_time_over(){
ai_testing::log_draw();
}
check_end_level();
check_victory();
throw end_level_exception(DEFEAT);
}
}