Skip to content

Commit

Permalink
before_human_turn signals rather than throwing
Browse files Browse the repository at this point in the history
  • Loading branch information
cbeck88 committed Jun 8, 2014
1 parent 29ad76c commit 5e0f420
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 23 deletions.
6 changes: 3 additions & 3 deletions src/playmp_controller.cpp
Expand Up @@ -104,11 +104,11 @@ possible_end_play_signal playmp_controller::play_side()
return playsingle_controller::play_side();
}

void playmp_controller::before_human_turn(){
possible_end_play_signal playmp_controller::before_human_turn(){
LOG_NG << "playmp::before_human_turn...\n";
playsingle_controller::before_human_turn();
PROPOGATE_END_PLAY_SIGNAL( playsingle_controller::before_human_turn() );
turn_data_.send_data();

return boost::none;
}

void playmp_controller::on_not_observer() {
Expand Down
2 changes: 1 addition & 1 deletion src/playmp_controller.hpp
Expand Up @@ -49,7 +49,7 @@ class playmp_controller : public playsingle_controller, public events::pump_moni
virtual bool can_execute_command(const hotkey::hotkey_command& command, int index=-1) const;

virtual possible_end_play_signal play_side();
virtual void before_human_turn();
virtual possible_end_play_signal before_human_turn();
virtual possible_end_play_signal play_human_turn();
virtual void after_human_turn();
virtual void finish_side_turn();
Expand Down
28 changes: 10 additions & 18 deletions src/playsingle_controller.cpp
Expand Up @@ -729,17 +729,12 @@ possible_end_play_signal playsingle_controller::play_side()
if (side_units(player_number_) != 0
|| (resources::units->size() == 0 && player_number_ == 1))
{
possible_end_play_signal signal;
try {
before_human_turn(); //This line throws! the ai manager "raise" line throws exception from here: https://github.com/wesnoth/wesnoth/blob/ac96a2b91b3276e20b682210617cf87d1e0d366a/src/playsingle_controller.cpp#L954
possible_end_play_signal signal = before_human_turn();

if (!signal) {
signal = play_human_turn();
} catch (end_level_exception & e) {
signal = e.to_struct();
} catch (end_turn_exception & e) {
signal = e.to_struct();
}


if (signal) {
switch (boost::apply_visitor(get_signal_type(), *signal)) {
case END_LEVEL:
Expand Down Expand Up @@ -791,15 +786,11 @@ possible_end_play_signal playsingle_controller::play_side()
end_turn_enable(false);
do_idle_notification();

possible_end_play_signal signal;
try{
before_human_turn(); //This line throws! the ai manager "raise" line throws exception from here: https://github.com/wesnoth/wesnoth/blob/ac96a2b91b3276e20b682210617cf87d1e0d366a/src/playsingle_controller.cpp#L954
possible_end_play_signal signal = before_human_turn();

if (!signal) {
signal = play_idle_loop();
} catch(end_turn_exception& end_turn) {
signal = end_turn.to_struct();
} catch(end_level_exception& e) {
signal = e.to_struct();
}
}

if (signal) {
switch (boost::apply_visitor(get_signal_type(), *signal)) {
Expand Down Expand Up @@ -832,13 +823,13 @@ possible_end_play_signal playsingle_controller::play_side()
return boost::none;
}

void playsingle_controller::before_human_turn()
possible_end_play_signal playsingle_controller::before_human_turn()
{
log_scope("player turn");
browse_ = false;
linger_ = false;

ai::manager::raise_turn_started();
HANDLE_END_PLAY_SIGNAL( ai::manager::raise_turn_started() ); //This line throws exception from here: https://github.com/wesnoth/wesnoth/blob/ac96a2b91b3276e20b682210617cf87d1e0d366a/src/playsingle_controller.cpp#L954

if(do_autosaves_ && level_result_ == NONE) {
savegame::autosave_savegame save(gamestate_, *gui_, to_config(), preferences::save_compression_format());
Expand All @@ -848,6 +839,7 @@ void playsingle_controller::before_human_turn()
if(preferences::turn_bell() && level_result_ == NONE) {
sound::play_bell(game_config::sounds::turn_bell);
}
return boost::none;
}

void playsingle_controller::show_turn_dialog(){
Expand Down
2 changes: 1 addition & 1 deletion src/playsingle_controller.hpp
Expand Up @@ -93,7 +93,7 @@ class playsingle_controller : public play_controller
protected:
possible_end_play_signal play_turn();
virtual possible_end_play_signal play_side();
virtual void before_human_turn();
virtual possible_end_play_signal before_human_turn();
void show_turn_dialog();
void execute_gotos();
virtual possible_end_play_signal play_human_turn();
Expand Down

0 comments on commit 5e0f420

Please sign in to comment.