mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-04 17:16:13 +00:00
Fixes bug #11890...
...(replays can't be played if there are empty starting positions).
This commit is contained in:
parent
861556bb4b
commit
bce2e9f1c1
@ -31,6 +31,7 @@ Version 1.5.7+svn:
|
|||||||
* A backspace in a textbox with selection, now clears the selection.
|
* A backspace in a textbox with selection, now clears the selection.
|
||||||
* Scrollwheel mouses can scroll the new listboxes.
|
* Scrollwheel mouses can scroll the new listboxes.
|
||||||
* Fix a bug with temporary objects not being removed at next scenario
|
* Fix a bug with temporary objects not being removed at next scenario
|
||||||
|
* Fix replays with empty starting positions.
|
||||||
|
|
||||||
Version 1.5.7:
|
Version 1.5.7:
|
||||||
* Campaigns:
|
* Campaigns:
|
||||||
|
@ -319,55 +319,56 @@ void replay_controller::play_side(const unsigned int /*team_index*/, bool){
|
|||||||
DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n";
|
DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n";
|
||||||
DBG_REPLAY << "Player number: " << player_number_ << "\n";
|
DBG_REPLAY << "Player number: " << player_number_ << "\n";
|
||||||
|
|
||||||
// If a side is empty skip over it.
|
try{
|
||||||
if (current_team().is_empty()) return;
|
// If a side is empty skip over it.
|
||||||
|
if (current_team().is_empty())
|
||||||
|
{
|
||||||
|
statistics::reset_turn_stats(current_team().save_id());
|
||||||
|
|
||||||
statistics::reset_turn_stats(current_team().save_id());
|
try{
|
||||||
|
if (skip_next_turn_) {
|
||||||
|
skip_next_turn_ = false;
|
||||||
|
throw end_turn_exception();
|
||||||
|
}
|
||||||
|
play_controller::init_side(player_number_ - 1, true);
|
||||||
|
|
||||||
try{
|
DBG_REPLAY << "doing replay " << player_number_ << "\n";
|
||||||
try{
|
try {
|
||||||
if (skip_next_turn_) {
|
::do_replay(*gui_, map_, units_, teams_,
|
||||||
skip_next_turn_ = false;
|
player_number_, status_, gamestate_);
|
||||||
throw end_turn_exception();
|
} catch(replay::error&) {
|
||||||
}
|
if(!continue_replay()) {
|
||||||
play_controller::init_side(player_number_ - 1, true);
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch(end_turn_exception) {
|
||||||
|
}
|
||||||
|
|
||||||
DBG_REPLAY << "doing replay " << player_number_ << "\n";
|
finish_side_turn();
|
||||||
try {
|
|
||||||
::do_replay(*gui_, map_, units_, teams_,
|
|
||||||
player_number_, status_, gamestate_);
|
|
||||||
} catch(replay::error&) {
|
|
||||||
if(!continue_replay()) {
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch(end_turn_exception) {
|
|
||||||
}
|
|
||||||
|
|
||||||
finish_side_turn();
|
// This is necessary for replays in order to show possible movements.
|
||||||
|
for (unit_map::iterator uit = units_.begin(); uit != units_.end(); ++uit) {
|
||||||
|
if (uit->second.side() != static_cast<size_t>(player_number_)) {
|
||||||
|
uit->second.new_turn();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// This is necessary for replays in order to show possible movements.
|
player_number_++;
|
||||||
for (unit_map::iterator uit = units_.begin(); uit != units_.end(); ++uit) {
|
|
||||||
if (uit->second.side() != static_cast<size_t>(player_number_)) {
|
|
||||||
uit->second.new_turn();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
player_number_++;
|
if (static_cast<size_t>(player_number_) > teams_.size()){
|
||||||
|
status_.next_turn();
|
||||||
|
try {
|
||||||
|
finish_turn();
|
||||||
|
} catch (end_turn_exception) {
|
||||||
|
skip_next_turn_ = true;
|
||||||
|
}
|
||||||
|
player_number_ = 1;
|
||||||
|
current_turn_++;
|
||||||
|
}
|
||||||
|
|
||||||
if (static_cast<size_t>(player_number_) > teams_.size()){
|
update_teams();
|
||||||
status_.next_turn();
|
update_gui();
|
||||||
try {
|
|
||||||
finish_turn();
|
|
||||||
} catch (end_turn_exception) {
|
|
||||||
skip_next_turn_ = true;
|
|
||||||
}
|
|
||||||
player_number_ = 1;
|
|
||||||
current_turn_++;
|
|
||||||
}
|
|
||||||
|
|
||||||
update_teams();
|
|
||||||
update_gui();
|
|
||||||
}
|
}
|
||||||
catch (replay::error&) //if replay throws an error, we don't want to get thrown out completely
|
catch (replay::error&) //if replay throws an error, we don't want to get thrown out completely
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user