diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index 2886947a065..991a219048d 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -439,10 +439,10 @@ public class Game { } public synchronized void setGameOver(GameEndReason reason) { - age = GameStage.GameOver; for (Player p : allPlayers) { p.clearController(); } + age = GameStage.GameOver; for (Player p : getPlayers()) { p.onGameOver(); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 3cf09db7d1f..c199f58a88e 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -2574,6 +2574,8 @@ public class Player extends GameEntity implements Comparable { final PlayerController oldController = getController(); controlledBy.remove(timestamp); + getView().updateMindSlaveMaster(this); + if (event) { game.fireEvent(new GameEventPlayerControl(this, oldLobbyPlayer, oldController, getLobbyPlayer(), getController())); } @@ -2581,9 +2583,9 @@ public class Player extends GameEntity implements Comparable { public void clearController() { controlledBy.clear(); + game.fireEvent(new GameEventPlayerControl(this, null, null, getLobbyPlayer(), getController())); } - public Map.Entry getControlledWhileSearching() { if (controlledWhileSearching.isEmpty()) { return null; diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index a505d104ac5..1c191c8b1d1 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -793,9 +793,11 @@ public final class CMatchUI initHandViews(); SLayoutIO.loadLayout(null); view.populate(); - for (final VHand h : getHandViews()) { - h.getLayoutControl().updateHand(); + final PlayerZoneUpdates zones = new PlayerZoneUpdates(); + for (final PlayerView p : sortedPlayers) { + zones.add(new PlayerZoneUpdate(p, ZoneType.Hand)); } + updateZones(zones); } @Override