diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index 1b2884070d5..80ba2048dd9 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -545,6 +545,16 @@ public class Game { } } + public Card findByView(CardView view) { + CardIdVisitor visit = new CardIdVisitor(view.getId()); + if (ZoneType.Stack.equals(view.getZone())) { + visit.visitAll(getStackZone()); + } else { + visit.visitAll(getPlayer(view.getController()).getZone(view.getZone())); + } + return visit.getFound(); + } + public Card findById(int id) { CardIdVisitor visit = new CardIdVisitor(id); this.forEachCardInGame(visit); diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index d0c6b7d6a8a..1053ceddca4 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -465,7 +465,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont gameCacheChoose.getTrackableKeys(), delayedReveal, isOptional); endTempShowCards(); - if (result != null || !gameCacheChoose.containsKey(result)) { + if (result == null || !gameCacheChoose.containsKey(result)) { return null; } return gameCacheChoose.get(result); @@ -3014,7 +3014,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont } public Card getCard(final CardView cardView) { - return getGame().findById(cardView.getId()); + return getGame().findByView(cardView); } public CardCollection getCardList(Iterable cardViews) {