From 9f399d89797bade77f466f5ac89bd841bb7589f7 Mon Sep 17 00:00:00 2001 From: gfgtdf Date: Sat, 24 May 2014 16:47:38 +0200 Subject: [PATCH] cleanup check_victory in ai actions do_execute which calls run_in_synced_context can throw end_level exception because run_in_synced context calls check_victory. So we don't need the additional check_victory in action_result::execute anymore. --- src/ai/actions.cpp | 6 +++--- src/playsingle_controller.cpp | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ai/actions.cpp b/src/ai/actions.cpp index b13fb21d907d..267f020e1205 100644 --- a/src/ai/actions.cpp +++ b/src/ai/actions.cpp @@ -93,10 +93,9 @@ void action_result::execute() init_for_execution(); check_before(); if (is_success()){ - do_execute(); try { - resources::controller->check_victory(); - } catch (...) { + do_execute(); + } catch (end_level_exception&) { is_ok(); //Silences "unchecked result" warning throw; } @@ -285,6 +284,7 @@ void attack_result::do_execute() resources::tod_manager->get_time_of_day())); set_scontext_synced sync; attack_unit_and_advance(attacker_loc_, defender_loc_, attacker_weapon, defender_weapon, true, advancements_); + resources::controller->check_victory(); } else { diff --git a/src/playsingle_controller.cpp b/src/playsingle_controller.cpp index 14b291010818..251662085cfe 100644 --- a/src/playsingle_controller.cpp +++ b/src/playsingle_controller.cpp @@ -943,6 +943,9 @@ void playsingle_controller::play_ai_turn(){ try { ai::manager::play_turn(player_number_); } catch (end_turn_exception&) { + } catch (end_level_exception&) { + turn_data.sync_network(); + throw; } recorder.end_turn(); turn_data.sync_network();