From c338ab12ed9e5fa3dfb4154278c157846b09491f Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 27 May 2013 06:41:21 +0000 Subject: [PATCH] fix crash during mulligan --- src/main/java/forge/control/FControl.java | 17 +++++++++++++++-- .../java/forge/gui/match/controllers/CDock.java | 17 +++-------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/java/forge/control/FControl.java b/src/main/java/forge/control/FControl.java index d489156f19f..8732c6d0b4f 100644 --- a/src/main/java/forge/control/FControl.java +++ b/src/main/java/forge/control/FControl.java @@ -318,10 +318,23 @@ public enum FControl { return lobby; } + public Player getCurrentPlayer() { + // try current priority + Player currentPriority = game.getPhaseHandler().getPriorityPlayer(); + if( null != currentPriority && currentPriority.getLobbyPlayer() == getLobby().getGuiPlayer() ) + return currentPriority; + + // otherwise find just any player, belonging to this lobbyplayer + for(Player p : game.getPlayers()) + if(p.getLobbyPlayer() == getLobby().getGuiPlayer() ) + return p; + + return null; + } + public boolean mayShowCard(Card c) { if ( game == null ) return true; - Player p = game.getPhaseHandler().getPriorityPlayer(); - return c.canBeShownTo(p); + return c.canBeShownTo(getCurrentPlayer()); } /** diff --git a/src/main/java/forge/gui/match/controllers/CDock.java b/src/main/java/forge/gui/match/controllers/CDock.java index 4933e51d874..5b281b1eac6 100644 --- a/src/main/java/forge/gui/match/controllers/CDock.java +++ b/src/main/java/forge/gui/match/controllers/CDock.java @@ -32,6 +32,7 @@ import forge.CardLists; import forge.FThreads; import forge.CardPredicates.Presets; import forge.Command; +import forge.control.FControl; import forge.deck.Deck; import forge.game.GameState; import forge.game.phase.CombatUtil; @@ -64,25 +65,13 @@ public enum CDock implements ICDoc { private int arcState; private GameState game; - private LobbyPlayer player; public void setModel(GameState game0, LobbyPlayer player0) { game = game0; - player = player0; } - private Player findAffectedPlayer() { - // try current priority - Player currentPriority = game.getPhaseHandler().getPriorityPlayer(); - if( currentPriority.getLobbyPlayer() == player ) - return currentPriority; - - // otherwise find just any player, belonging to this lobbyplayer - for(Player p : game.getPlayers()) - if(p.getLobbyPlayer() == player ) - return p; - - return null; + public Player findAffectedPlayer() { + return FControl.SINGLETON_INSTANCE.getCurrentPlayer(); } /** Concede game, bring up WinLose UI. */