From 59db0eef2ceb0b6f8e6f6b992cc6b62718825b1e Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 2 Mar 2021 21:08:04 +0800 Subject: [PATCH] Add foretell token image as facedown cardback --- forge-core/src/main/java/forge/ImageKeys.java | 1 + forge-game/src/main/java/forge/game/card/Card.java | 1 + forge-game/src/main/java/forge/game/card/CardUtil.java | 5 ++++- forge-game/src/main/java/forge/game/card/CardView.java | 5 +++++ .../src/main/java/forge/trackable/TrackableProperty.java | 1 + forge-gui-mobile/src/forge/card/CardRenderer.java | 5 ++++- forge-gui/res/lists/token-images.txt | 1 + 7 files changed, 17 insertions(+), 2 deletions(-) diff --git a/forge-core/src/main/java/forge/ImageKeys.java b/forge-core/src/main/java/forge/ImageKeys.java index 3bb9676dae2..f4f168a5c8c 100644 --- a/forge-core/src/main/java/forge/ImageKeys.java +++ b/forge-core/src/main/java/forge/ImageKeys.java @@ -25,6 +25,7 @@ public final class ImageKeys { public static final String HIDDEN_CARD = "hidden"; public static final String MORPH_IMAGE = "morph"; public static final String MANIFEST_IMAGE = "manifest"; + public static final String FORETELL_IMAGE = "foretell"; public static final String BACKFACE_POSTFIX = "$alt"; diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 624f9715449..0b504ba35e1 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -5531,6 +5531,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars { public final void setForetold(final boolean foretold) { this.foretold = foretold; + getState(CardStateName.FaceDown).setImageKey(ImageKeys.getTokenKey(ImageKeys.FORETELL_IMAGE)); } public boolean isForetoldByEffect() { diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 8e8cddbd1f2..0eb227ae96f 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -364,7 +364,10 @@ public final class CardUtil { ret.setType(type); //show hidden if exiled facedown - ret.setImageKey(ImageKeys.getTokenKey(c.isInZone(ZoneType.Exile) ? ImageKeys.HIDDEN_CARD : ImageKeys.MORPH_IMAGE)); + if (c.isInZone(ZoneType.Exile)) + ret.setImageKey(ImageKeys.getTokenKey(c.isForetold() ? ImageKeys.FORETELL_IMAGE : ImageKeys.HIDDEN_CARD)); + else + ret.setImageKey(ImageKeys.getTokenKey(c.isManifested() ? ImageKeys.MANIFEST_IMAGE : ImageKeys.MORPH_IMAGE)); return ret; } diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index c84a69a34b9..1f109c48ed3 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -125,6 +125,10 @@ public class CardView extends GameEntityView { return get(TrackableProperty.Facedown);// getCurrentState().getState() == CardStateName.FaceDown; } + public boolean isForeTold() { + return get(TrackableProperty.Foretold); + } + public boolean isFlipCard() { return get(TrackableProperty.FlipCard); } @@ -766,6 +770,7 @@ public class CardView extends GameEntityView { set(TrackableProperty.SplitCard, isSplitCard); set(TrackableProperty.FlipCard, c.isFlipCard()); set(TrackableProperty.Facedown, c.isFaceDown()); + set(TrackableProperty.Foretold, c.isForetold()); set(TrackableProperty.Adventure, c.isAdventureCard()); set(TrackableProperty.DoubleFaced, c.isDoubleFaced()); set(TrackableProperty.Modal, c.isModal()); diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 6812bc40903..67a16053d6f 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -25,6 +25,7 @@ public enum TrackableProperty { Flipped(TrackableTypes.BooleanType), Facedown(TrackableTypes.BooleanType), + Foretold(TrackableTypes.BooleanType), Modal(TrackableTypes.BooleanType), Adventure(TrackableTypes.BooleanType), DoubleFaced(TrackableTypes.BooleanType), diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index c4a7f2aced9..2bc7cb3c18a 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -503,7 +503,10 @@ public class CardRenderer { if (image == ImageCache.defaultImage) { CardImageRenderer.drawCardImage(g, card, false, x, y, w, h, pos); } else if (showsleeves) { - g.drawImage(sleeves, x, y, w, h); + if (!card.isForeTold()) + g.drawImage(sleeves, x, y, w, h); + else + g.drawImage(image, x, y, w, h); } else { if(FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_ROTATE_PLANE_OR_PHENOMENON) && (card.getCurrentState().isPhenomenon() || card.getCurrentState().isPlane()) && rotate){ diff --git a/forge-gui/res/lists/token-images.txt b/forge-gui/res/lists/token-images.txt index 0908ec1de40..7d4547c2a5d 100644 --- a/forge-gui/res/lists/token-images.txt +++ b/forge-gui/res/lists/token-images.txt @@ -1342,3 +1342,4 @@ copy.jpg https://downloads.cardforge.org/images/tokens/copy.jpg hidden.jpg https://downloads.cardforge.org/images/tokens/morph.jpg morph.jpg https://downloads.cardforge.org/images/tokens/morph.jpg manifest.jpg https://downloads.cardforge.org/images/tokens/manifest.jpg +foretell.jpg https://downloads.cardforge.org/images/tokens/foretell.jpg