From 0c896f4110f26ce6b94b68f744a2c8d37e79b443 Mon Sep 17 00:00:00 2001 From: elcnesh Date: Mon, 15 Sep 2014 19:29:48 +0000 Subject: [PATCH] Some minor GUI fixes, amongst which fixes for Morph display and Ponder effects. --- .../main/java/forge/gui/CardDetailPanel.java | 7 ----- .../src/main/java/forge/gui/DualListBox.java | 3 +++ .../forge/screens/match/views/VPlayers.java | 2 +- .../java/forge/view/arcane/CardPanel.java | 5 ++-- .../src/forge/card/CardRenderer.java | 3 +-- .../forge/player/PlayerControllerHuman.java | 26 +++++++++++++------ .../src/main/java/forge/view/CardView.java | 16 ------------ .../src/main/java/forge/view/ViewUtil.java | 1 - .../main/java/forge/view/WatchLocalGame.java | 12 ++++++++- 9 files changed, 36 insertions(+), 39 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardDetailPanel.java b/forge-gui-desktop/src/main/java/forge/gui/CardDetailPanel.java index 2377dfd5a9d..f5a64140bdf 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/CardDetailPanel.java +++ b/forge-gui-desktop/src/main/java/forge/gui/CardDetailPanel.java @@ -33,7 +33,6 @@ import org.apache.commons.lang3.StringUtils; import forge.card.CardDetailUtil; import forge.card.CardDetailUtil.DetailColors; import forge.card.CardEdition; -import forge.game.zone.ZoneType; import forge.item.IPaperCard; import forge.item.InventoryItemFromSet; import forge.model.FModel; @@ -246,12 +245,6 @@ public class CardDetailPanel extends SkinnedPanel { // fill the card text this.cdArea.setText(FSkin.encodeSymbols(CardDetailUtil.composeCardText(state), true)); - if (card.isFaceDown() && card.getZone() == ZoneType.Battlefield) { - this.nameCostLabel.setText("???"); - this.typeLabel.setText("Creature"); - this.cdArea.setText(FSkin.encodeSymbols("(You may look at this card.)", true)); - } - SwingUtilities.invokeLater(new Runnable() { @Override public void run() { diff --git a/forge-gui-desktop/src/main/java/forge/gui/DualListBox.java b/forge-gui-desktop/src/main/java/forge/gui/DualListBox.java index 746c7833798..a9ddd3b0ff7 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/DualListBox.java +++ b/forge-gui-desktop/src/main/java/forge/gui/DualListBox.java @@ -30,6 +30,7 @@ import forge.toolbox.FList; import forge.toolbox.FPanel; import forge.toolbox.FScrollPane; import forge.view.CardView; +import forge.view.CardView.CardStateView; import forge.view.FDialog; import forge.view.SpellAbilityView; import forge.view.ViewUtil; @@ -328,6 +329,8 @@ public class DualListBox extends FDialog { CardView card = null; if (obj instanceof CardView) { card = (CardView) obj; + } else if (obj instanceof CardStateView) { + card = ((CardStateView) obj).getCard(); } else if (obj instanceof SpellAbilityView) { card = ((SpellAbilityView) obj).getHostCard(); } else if (obj instanceof PaperCard) { diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java index 43ac3a4f2e7..966318b576c 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java @@ -25,7 +25,7 @@ import java.util.Map.Entry; import javax.swing.JLabel; import javax.swing.ScrollPaneConstants; -import com.beust.jcommander.internal.Lists; +import com.google.common.collect.Lists; import net.miginfocom.swing.MigLayout; import forge.gui.framework.DragCell; 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 b331a0f2bac..1564d5a3cbe 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 @@ -326,7 +326,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl g2d.fillRoundRect(this.cardXOffset - n, (this.cardYOffset - n) + offset, this.cardWidth + (n * 2), this.cardHeight + (n * 2), cornerSize + n , cornerSize + n); // White border if card is known to have it. - if (this.getCard() != null && !this.getCard().isFaceDown()) { + if (this.getCard() != null) { CardEdition ed = FModel.getMagicDb().getEditions().get(this.getCard().getSetCode()); if (ed != null && ed.isWhiteBorder() && this.getCard().getFoilIndex() == 0) { g2d.setColor(Color.white); @@ -797,8 +797,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl private boolean showCardManaCostOverlay() { return isShowingOverlays() && - isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST) && - !this.getCard().isFaceDown(); + isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST); } private boolean showCardIdOverlay() { diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index 663bad201db..d7b280c4ea4 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -710,8 +710,7 @@ public class CardRenderer { private static boolean showCardManaCostOverlay(CardView card) { return isShowingOverlays(card) && - isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST) && - !card.isFaceDown(); + isPreferenceEnabled(FPref.UI_OVERLAY_CARD_MANA_COST); } private static boolean showCardIdOverlay(CardView card) { diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 4750e84919b..78edae9634f 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -573,24 +573,34 @@ public class PlayerControllerHuman extends PlayerController { @Override public List orderMoveToZoneList(List cards, ZoneType destinationZone) { + List choices; + mayLookAt.addAll(cards); switch (destinationZone) { case Library: - return SGuiChoose.order(getGui(), "Choose order of cards to put into the library", "Closest to top", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of cards to put into the library", "Closest to top", getCardViews(cards), null); + break; case Battlefield: - return SGuiChoose.order(getGui(), "Choose order of cards to put onto the battlefield", "Put first", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of cards to put onto the battlefield", "Put first", getCardViews(cards), null); + break; case Graveyard: - return SGuiChoose.order(getGui(), "Choose order of cards to put into the graveyard", "Closest to bottom", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of cards to put into the graveyard", "Closest to bottom", getCardViews(cards), null); + break; case PlanarDeck: - return SGuiChoose.order(getGui(), "Choose order of cards to put into the planar deck", "Closest to top", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of cards to put into the planar deck", "Closest to top", getCardViews(cards), null); + break; case SchemeDeck: - return SGuiChoose.order(getGui(), "Choose order of cards to put into the scheme deck", "Closest to top", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of cards to put into the scheme deck", "Closest to top", getCardViews(cards), null); + break; case Stack: - return SGuiChoose.order(getGui(), "Choose order of copies to cast", "Put first", cards, null); + choices = SGuiChoose.order(getGui(), "Choose order of copies to cast", "Put first", getCardViews(cards), null); + break; default: System.out.println("ZoneType " + destinationZone + " - Not Ordered"); - break; + mayLookAt.clear(); + return cards; } - return cards; + mayLookAt.clear(); + return getCards(choices); } @Override diff --git a/forge-gui/src/main/java/forge/view/CardView.java b/forge-gui/src/main/java/forge/view/CardView.java index b7d324a087d..f3263ecd03d 100644 --- a/forge-gui/src/main/java/forge/view/CardView.java +++ b/forge-gui/src/main/java/forge/view/CardView.java @@ -38,7 +38,6 @@ public class CardView extends GameEntityView { private boolean isCloned, isFaceDown, isFlipCard, isFlipped, isSplitCard, isTransformed; private String setCode; private CardRarity rarity; - private long timestamp; private boolean isAttacking, isBlocking, isPhasedOut, isSick, isTapped, isToken; private Map counters; private int damage, assignedDamage, regenerationShields, preventNextDamage; @@ -80,7 +79,6 @@ public class CardView extends GameEntityView { this.isTransformed = false; this.setCode = StringUtils.EMPTY; this.rarity = CardRarity.Unknown; - this.timestamp = 0L; this.isAttacking = this.isBlocking = this.isPhasedOut = this.isSick = this.isTapped = false; this.counters = ImmutableMap.of(); this.damage = this.assignedDamage = this.regenerationShields = this.preventNextDamage = 0; @@ -318,20 +316,6 @@ public class CardView extends GameEntityView { this.rarity = rarity; } - /** - * @return the timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * @param timestamp the timestamp to set - */ - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - /** * @return the isAttacking */ diff --git a/forge-gui/src/main/java/forge/view/ViewUtil.java b/forge-gui/src/main/java/forge/view/ViewUtil.java index 991c3ac94f4..b6149c8240b 100644 --- a/forge-gui/src/main/java/forge/view/ViewUtil.java +++ b/forge-gui/src/main/java/forge/view/ViewUtil.java @@ -40,7 +40,6 @@ public final class ViewUtil { view.setTransformed(c.getCurState().equals(CardCharacteristicName.Transformed)); view.setSetCode(c.getCurSetCode()); view.setRarity(c.getRarity()); - view.setTimestamp(c.getTimestamp()); view.setPhasedOut(c.isPhasedOut()); view.setSick(c.isInPlay() && c.isSick()); view.setTapped(c.isTapped()); diff --git a/forge-gui/src/main/java/forge/view/WatchLocalGame.java b/forge-gui/src/main/java/forge/view/WatchLocalGame.java index 44844906605..cbd5dd4c177 100644 --- a/forge-gui/src/main/java/forge/view/WatchLocalGame.java +++ b/forge-gui/src/main/java/forge/view/WatchLocalGame.java @@ -16,9 +16,13 @@ import forge.util.ITriggerEvent; public class WatchLocalGame extends LocalGameView { private final InputQueue inputQueue; + /** * @param game - * @param inputQueue + * the @{link Game} to attach to. + * @param inputQueue + * the {@link InputQueue} of the game to enable playback + * controls, or {@code null} to disallow them. */ public WatchLocalGame(final Game game, final InputQueue inputQueue) { super(game); @@ -40,6 +44,9 @@ public class WatchLocalGame extends LocalGameView { @Override public void selectButtonOk() { + if (this.inputQueue == null) { + return; + } final Input i = inputQueue.getInput(); if (i instanceof InputPlaybackControl) { i.selectButtonOK(); @@ -48,6 +55,9 @@ public class WatchLocalGame extends LocalGameView { @Override public void selectButtonCancel() { + if (this.inputQueue == null) { + return; + } final Input i = inputQueue.getInput(); if (i instanceof InputPlaybackControl) { i.selectButtonCancel();