From fd60e43a03196a3164c357272e41b8b01a2eaa6e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 3 Jul 2016 18:14:18 +0200 Subject: [PATCH] * Fixed a problem with UNDO/rollback setting the wrong active player (fixes #2046). --- Mage/src/main/java/mage/game/GameImpl.java | 5 +++-- Mage/src/main/java/mage/game/GameState.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index bb58de4245b..c8b83756588 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -558,6 +558,7 @@ public abstract class GameImpl implements Game, Serializable { public void saveState(boolean bookmark) { if (!simulation && gameStates != null) { if (bookmark || saveGame) { + state.getPlayerList().setCurrent(playerList.get()); gameStates.save(state); } } @@ -663,7 +664,7 @@ public abstract class GameImpl implements Game, Serializable { GameState restore = gameStates.rollback(stateNum); if (restore != null) { state.restore(restore); - playerList.setCurrent(state.getActivePlayerId()); + playerList.setCurrent(state.getPlayerList().get()); } } } @@ -2778,7 +2779,7 @@ public abstract class GameImpl implements Game, Serializable { if (restore != null) { informPlayers(GameLog.getPlayerRequestColoredText("Player request: Rolling back to start of turn " + restore.getTurnNum())); state.restoreForRollBack(restore); - playerList.setCurrent(state.getActivePlayerId()); + playerList.setCurrent(state.getPlayerList().get()); // because restore uses the objects without copy each copy the state again gameStatesRollBack.put(getTurnNum(), state.copy()); executingRollback = true; diff --git a/Mage/src/main/java/mage/game/GameState.java b/Mage/src/main/java/mage/game/GameState.java index 205af9e108d..eec7695c562 100644 --- a/Mage/src/main/java/mage/game/GameState.java +++ b/Mage/src/main/java/mage/game/GameState.java @@ -204,7 +204,7 @@ public class GameState implements Serializable, Copyable { public void restore(GameState state) { this.activePlayerId = state.activePlayerId; - this.playerList.setCurrent(state.activePlayerId); + this.playerList.setCurrent(state.playerList.get()); this.priorityPlayerId = state.priorityPlayerId; this.stack = state.stack; this.command = state.command;