From 1e5b2de3f33847ee4fea7fb0e8da562c649190cc Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 25 Apr 2017 20:16:34 +0000 Subject: [PATCH] - Some updates to visualization of Aftermath split cards in desktop Forge: ensure that mana cost is not flipped compared to the card image, use a more in-depth mechanism for checking the Aftermath keyword. --- .../main/java/forge/toolbox/special/CardZoomer.java | 13 ++++++++++--- .../src/main/java/forge/view/arcane/CardPanel.java | 10 ++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/special/CardZoomer.java b/forge-gui-desktop/src/main/java/forge/toolbox/special/CardZoomer.java index 8eea5081e06..854a4cb641f 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/special/CardZoomer.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/special/CardZoomer.java @@ -18,6 +18,7 @@ package forge.toolbox.special; +import forge.StaticData; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; @@ -33,8 +34,10 @@ import javax.swing.Timer; import net.miginfocom.swing.MigLayout; import forge.assets.FSkinProp; +import forge.game.card.Card; import forge.game.card.CardView.CardStateView; import forge.gui.SOverlayUtils; +import forge.item.PaperCard; import forge.toolbox.FOverlay; import forge.toolbox.FSkin; import forge.toolbox.FSkin.SkinnedLabel; @@ -226,10 +229,14 @@ public enum CardZoomer { if (thisCard == null) { return 0; } - if (thisCard.getCard().isSplitCard() && thisCard.getCard().getText().contains("Aftermath")) { - return 270; // rotate Aftermath splits the other way to correctly show the right split (graveyard) half + if (thisCard.getCard().isSplitCard()) { + PaperCard pc = StaticData.instance().getCommonCards().getCard(thisCard.getName()); + boolean isAftermath = pc != null && Card.getCardForUi(pc).hasKeyword("Aftermath"); + + return isAftermath ? 270 : 90; // rotate Aftermath splits the other way to correctly show the right split (graveyard) half } - return thisCard.getCard().isSplitCard() || thisCard.getType().isPlane() || thisCard.getType().isPhenomenon() ? 90 : 0; + + return thisCard.getType().isPlane() || thisCard.getType().isPhenomenon() ? 90 : 0; } private void setLayout() { 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 09125ae389e..caf4184a22c 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 @@ -36,11 +36,14 @@ import javax.swing.SwingUtilities; import forge.CachedCardImage; import forge.FThreads; +import forge.StaticData; import forge.card.CardEdition; import forge.card.mana.ManaCost; +import forge.game.card.Card; import forge.game.card.CardView; import forge.game.card.CardView.CardStateView; import forge.gui.CardContainer; +import forge.item.PaperCard; import forge.model.FModel; import forge.properties.ForgePreferences.FPref; import forge.screens.match.CMatchUI; @@ -368,8 +371,11 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl if (!showSplitMana) { drawManaCost(g, card.getCurrentState().getManaCost(), 0); } else { - drawManaCost(g, card.getCurrentState().getManaCost(), +12); - drawManaCost(g, card.getAlternateState().getManaCost(), -12); + PaperCard pc = StaticData.instance().getCommonCards().getCard(card.getName()); + int ofs = pc != null && Card.getCardForUi(pc).hasKeyword("Aftermath") ? -12 : 12; + + drawManaCost(g, card.getCurrentState().getManaCost(), ofs); + drawManaCost(g, card.getAlternateState().getManaCost(), -ofs); } }