From d24fa32175b17da40b68598ecd26dee37d446a3a Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 18 Apr 2020 05:57:17 +0800 Subject: [PATCH] add flash indicator for desktop --- .../java/forge/toolbox/CardFaceSymbols.java | 1 + .../java/forge/view/arcane/CardPanel.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java index d6196af6376..be902dbab4f 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java @@ -125,6 +125,7 @@ public class CardFaceSymbols { MANA_IMAGES.put("doublestrike", FSkin.getImage(FSkinProp.IMG_ABILITY_DOUBLE_STRIKE)); MANA_IMAGES.put("firststrike", FSkin.getImage(FSkinProp.IMG_ABILITY_FIRST_STRIKE)); MANA_IMAGES.put("fear", FSkin.getImage(FSkinProp.IMG_ABILITY_FEAR)); + MANA_IMAGES.put("flash", FSkin.getImage(FSkinProp.IMG_ABILITY_FLASH)); MANA_IMAGES.put("flying", FSkin.getImage(FSkinProp.IMG_ABILITY_FLYING)); MANA_IMAGES.put("hexproof", FSkin.getImage(FSkinProp.IMG_ABILITY_HEXPROOF)); MANA_IMAGES.put("indestructible", FSkin.getImage(FSkinProp.IMG_ABILITY_INDESTRUCTIBLE)); 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 641619e9a9c..fe0752e57ab 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 @@ -96,6 +96,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl private boolean isAnimationPanel; private int cardXOffset, cardYOffset, cardWidth, cardHeight; private boolean isSelected; + private boolean hasFlash; private CachedCardImage cachedImage; private static Font smallCounterFont; @@ -285,6 +286,13 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n); } + //card with flash.. + if (hasFlash) { + g2d.setColor(Color.cyan); + final int n = Math.max(1, Math.round(cardWidth * CardPanel.SELECTED_BORDER_SIZE)); + g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n); + } + // Black fill - (will become an outline for white bordered cards) g2d.setColor(Color.black); g2d.fillRoundRect(cardXOffset, cardYOffset + offset, cardWidth, cardHeight, cornerSize, cornerSize); @@ -512,6 +520,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl int abiX = cardXOffset + (cardWidth / 2) + (cardWidth / 3); int abiSpace = (cardWidth / 7); int abiY = cardWidth < 200 ? cardYOffset + 25 : cardYOffset + 50; + hasFlash = false; if (ZoneType.Battlefield.equals(card.getZone()) && showAbilityIcons()){ if (card.getCurrentState().hasFlying()) { CardFaceSymbols.drawAbilitySymbol("flying", g, abiX, abiY, abiScale, abiScale); @@ -681,6 +690,17 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl abiY += abiSpace; } } + } else if (!ZoneType.Battlefield.equals(card.getZone()) && showAbilityIcons()){ + String keywordKey = card.getCurrentState().getKeywordKey(); + String abilityText = card.getCurrentState().getAbilityText(); + if ((keywordKey.indexOf("Flash") != -1) + || ((abilityText.indexOf("May be played by") != -1) + && (abilityText.indexOf("and as though it has flash") != -1))){ + if (keywordKey.indexOf("Flashback") == -1) { + hasFlash = true; + CardFaceSymbols.drawAbilitySymbol("flash", g, cardXOffset + (cardWidth / 2) + (cardWidth / 3), cardWidth < 200 ? cardYOffset + 25 : cardYOffset + 50, cardWidth / 7, cardWidth / 7); + } + } } }