mirror of
https://github.com/magefree/mage.git
synced 2025-12-28 14:32:06 -08:00
* Fixed turn structure so that extra turns are taken after the current turn.
This commit is contained in:
parent
9b955a185a
commit
acb9b12291
1 changed files with 21 additions and 15 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue