From d5de183042f19d6e616de07ea98287f729fd3a6a Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 12 Mar 2015 22:13:11 +0000 Subject: [PATCH] Prevent mulligans resulting in face down cards --- .../src/main/java/forge/screens/match/CMatchUI.java | 1 + .../java/forge/screens/match/controllers/CHand.java | 13 +++++-------- .../src/main/java/forge/view/arcane/CardPanel.java | 11 +++++------ .../java/forge/view/arcane/FloatingCardArea.java | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) 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 945e57feced..ff95a6953ee 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 @@ -472,6 +472,7 @@ public final class CMatchUI if (hand != null) { CardPanel cp = hand.getHandArea().getCardPanel(c.getId()); if (cp != null) { + cp.setCard(c); //ensure card view updated cp.repaintOverlays(); } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java index e8b35258ef3..401b07cfcf1 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java @@ -125,14 +125,8 @@ public class CHand implements ICDoc { } synchronized (ordering) { - // Remove old cards from ordering - ordering.retainAll(cards); - // Append new cards to ordering - for (final CardView c : cards) { - if (!ordering.contains(c)) { - ordering.add(c); - } - } + ordering.clear(); + ordering.addAll(cards); } final List placeholders = new ArrayList(); @@ -145,6 +139,9 @@ public class CHand implements ICDoc { cardPanel.setDisplayEnabled(false); placeholders.add(cardPanel); } + else { + cardPanel.setCard(card); //ensure card view is updated + } cardPanels.add(cardPanel); } diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java index a528673b999..0102f04a16f 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java @@ -533,16 +533,15 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl /** {@inheritDoc} */ @Override public final void setCard(final CardView cardView) { - if ((getCard() != null) && getCard().equals(cardView) && isAnimationPanel - && imagePanel.hasImage()) { - return; - } - - card = cardView; + CardView oldCard = card; + card = cardView; //always update card in case new card view instance for same card if (imagePanel == null) { return; } + if (oldCard != null && oldCard.equals(card) && isAnimationPanel && imagePanel.hasImage()) { + return; //prevent unnecessary update logic for animation panel + } updateText(); updatePTOverlay(); diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java index 38539ccab9f..f67e3f2af22 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java @@ -264,7 +264,7 @@ public class FloatingCardArea extends CardArea { cardPanel.setDisplayEnabled(true); } else { - cardPanel.updateImage(); //ensure image updated in case visibility changed + cardPanel.setCard(card); //ensure card view updated } cardPanels.add(cardPanel); }