From 94dc91d8e19a395770b091e87d9e2c79260d09b8 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Fri, 27 May 2022 09:35:30 +0400 Subject: [PATCH] Fixed miss code for reversed turn order (see Aeon Engine, #8804) --- Mage/src/main/java/mage/game/GameState.java | 2 ++ .../main/java/mage/players/PlayerList.java | 20 +++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Mage/src/main/java/mage/game/GameState.java b/Mage/src/main/java/mage/game/GameState.java index 3f7067fcdbf..19e01e8227b 100644 --- a/Mage/src/main/java/mage/game/GameState.java +++ b/Mage/src/main/java/mage/game/GameState.java @@ -200,6 +200,7 @@ public class GameState implements Serializable, Copyable { this.commandersToStay.addAll(state.commandersToStay); this.hasDayNight = state.hasDayNight; this.isDaytime = state.isDaytime; + this.reverseTurnOrder = state.reverseTurnOrder; } public void clearOnGameRestart() { @@ -290,6 +291,7 @@ public class GameState implements Serializable, Copyable { this.commandersToStay = state.commandersToStay; this.hasDayNight = state.hasDayNight; this.isDaytime = state.isDaytime; + this.reverseTurnOrder = state.reverseTurnOrder; } @Override diff --git a/Mage/src/main/java/mage/players/PlayerList.java b/Mage/src/main/java/mage/players/PlayerList.java index 6316727b312..70c5ef9b7f0 100644 --- a/Mage/src/main/java/mage/players/PlayerList.java +++ b/Mage/src/main/java/mage/players/PlayerList.java @@ -25,12 +25,12 @@ public class PlayerList extends CircularList { public Player getNextInRange(Player basePlayer, Game game) { UUID currentPlayerBefore = this.get(); - UUID nextPlayerId = super.getNext(); + UUID nextPlayerId = game.isTurnOrderReversed() ? super.getPrevious() : super.getNext(); do { if (basePlayer.getInRange().contains(nextPlayerId)) { return game.getPlayer(nextPlayerId); } - nextPlayerId = super.getNext(); + nextPlayerId = game.isTurnOrderReversed() ? super.getPrevious() : super.getNext(); } while (!nextPlayerId.equals(currentPlayerBefore)); return null; } @@ -47,11 +47,7 @@ public class PlayerList extends CircularList { } Player player; while (true) { - if(game.isTurnOrderReversed()){ - player = game.getPlayer(super.getPrevious()); - } else{ - player = game.getPlayer(super.getNext()); - } + player = getAffectedNext(game); if (player.isInGame()) { break; } @@ -76,7 +72,7 @@ public class PlayerList extends CircularList { return null; } while (true) { - player = game.getPlayer(super.getPrevious()); + player = getAffectedPrevious(game); if (player.isInGame()) { break; } @@ -88,6 +84,14 @@ public class PlayerList extends CircularList { return player; } + private Player getAffectedNext(Game game) { + return game.isTurnOrderReversed() ? game.getPlayer(super.getPrevious()) : game.getPlayer(super.getNext()); + } + + private Player getAffectedPrevious(Game game) { + return game.isTurnOrderReversed() ? game.getPlayer(super.getNext()) : game.getPlayer(super.getPrevious()); + } + @Override public PlayerList copy() { return new PlayerList(this);