From acb9b12291eabc1198e8f77df39cbb2f8a4a5853 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 11 Sep 2014 17:20:48 +0200 Subject: [PATCH] * Fixed turn structure so that extra turns are taken after the current turn. --- Mage/src/mage/game/GameImpl.java | 36 +++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 4b17558085b..1dd27d51073 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -604,6 +604,7 @@ public abstract class GameImpl implements Game, Serializable { PlayerList players = state.getPlayerList(nextPlayerId); Player player = getPlayer(players.get()); while (!isPaused() && !gameOver(null)) { + playExtraTurns(player); GameEvent event = new GameEvent(GameEvent.EventType.PLAY_TURN, null, null, player.getId()); if (!replaceEvent(event)) { if (!playTurn(player)) { @@ -611,21 +612,7 @@ public abstract class GameImpl implements Game, Serializable { } state.setTurnNum(state.getTurnNum() + 1); } - - //20091005 - 500.7 - UUID extraTurnId = getNextExtraTurn(player.getId()); - while (extraTurnId != null) { - event = new GameEvent(GameEvent.EventType.PLAY_TURN, null, null, player.getId()); - if (!replaceEvent(event)) { - state.setExtraTurn(true); - state.setTurnId(extraTurnId); - playTurn(player); - state.setTurnNum(state.getTurnNum() + 1); - } - extraTurnId = getNextExtraTurn(player.getId()); - } - state.setTurnId(null); - state.setExtraTurn(false); + playExtraTurns(player); player = players.getNext(this); } } @@ -635,6 +622,25 @@ public abstract class GameImpl implements Game, Serializable { } } + private void playExtraTurns(Player player) { + //20091005 - 500.7 + UUID extraTurnId = getNextExtraTurn(player.getId()); + while (extraTurnId != null) { + GameEvent event = new GameEvent(GameEvent.EventType.PLAY_TURN, null, null, player.getId()); + if (!replaceEvent(event)) { + state.setExtraTurn(true); + state.setTurnId(extraTurnId); + informPlayers(player.getName() + " takes an extra turn"); + playTurn(player); + state.setTurnNum(state.getTurnNum() + 1); + } + extraTurnId = getNextExtraTurn(player.getId()); + } + state.setTurnId(null); + state.setExtraTurn(false); + + } + private UUID getNextExtraTurn(UUID playerId) { Player player = this.getPlayer(playerId); if (player != null) {