From bc701fecb349704f9f18e84c705dfa65f04ac2f5 Mon Sep 17 00:00:00 2001 From: Agetian Date: Fri, 27 Apr 2018 10:46:48 +0300 Subject: [PATCH] - Making transform cards work as plane/region art in Planar Conquest (mobile Forge). - Currently will show the cards untransformed on the plane selection screen and transformed on the multiverse/region screen. --- .../src/main/java/forge/GuiDesktop.java | 5 +++++ forge-gui-mobile/src/forge/GuiMobile.java | 5 +++++ forge-gui-mobile/src/forge/card/CardRenderer.java | 6 +++++- forge-gui/res/conquest/planes/planes.txt | 2 +- .../src/main/java/forge/interfaces/IGuiBase.java | 1 + .../java/forge/planarconquest/ConquestRegion.java | 13 ++++++++++++- 6 files changed, 29 insertions(+), 3 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index 05e306e4ff9..6e4e7f7385a 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -113,6 +113,11 @@ public class GuiDesktop implements IGuiBase { return null; //TODO } + @Override + public ISkinImage getCardArt(final PaperCard card, final boolean backFace) { + return null; //TODO + } + @Override public ISkinImage createLayeredImage(final FSkinProp background, final String overlayFilename, final float opacity) { final BufferedImage image = new BufferedImage(background.getWidth(), background.getHeight(), BufferedImage.TYPE_INT_ARGB); diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index 08849c98819..0d5bb9e1552 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -122,6 +122,11 @@ public class GuiMobile implements IGuiBase { return CardRenderer.getCardArt(card); } + @Override + public ISkinImage getCardArt(final PaperCard card, final boolean backFace) { + return CardRenderer.getCardArt(card, backFace); + } + @Override public ISkinImage createLayeredImage(final FSkinProp background, final String overlayFilename, final float opacity) { return new FBufferedImage(background.getWidth(), background.getHeight(), opacity) { diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index 622e3694937..977331d214c 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -107,8 +107,12 @@ public class CardRenderer { //extract card art from the given card public static FImageComplex getCardArt(IPaperCard pc) { + return getCardArt(pc, false); + } + + public static FImageComplex getCardArt(IPaperCard pc, boolean backFace) { CardType type = pc.getRules().getType(); - return getCardArt(pc.getImageKey(false), pc.getRules().getSplitType() == CardSplitType.Split, type.isPlane() || type.isPhenomenon(),pc.getRules().getOracleText().contains("Aftermath")); + return getCardArt(pc.getImageKey(backFace), pc.getRules().getSplitType() == CardSplitType.Split, type.isPlane() || type.isPhenomenon(),pc.getRules().getOracleText().contains("Aftermath")); } public static FImageComplex getCardArt(CardView card) { diff --git a/forge-gui/res/conquest/planes/planes.txt b/forge-gui/res/conquest/planes/planes.txt index a35dd83d59b..1c77afb991b 100644 --- a/forge-gui/res/conquest/planes/planes.txt +++ b/forge-gui/res/conquest/planes/planes.txt @@ -2,7 +2,7 @@ Name:Alara|RegionSize:9|Desc:As the boundaries between the shards dissolve, cult Name:Amonkhet|RegionSize:9|Desc:On the surface, Amonkhet seems like a marvelous place to live, but something unsettling and nefarious lurks behind the grand facade.\nConsists of 45 events. Contains cards from AKH, HOU, some C17, and Amonkhet Invocations. Name:Dominaria|RegionSize:9|Unreachable:True|Desc: Name:Innistrad|RegionSize:9|Desc:On this plane, humanity is terrorized by vampires, werewolves, zombies, and ghouls.\nConsists of 45 events. Contains cards from ISD, DKA, AVR, SOI, EMN, and C14. -Name:Ixalan|RegionSize:9|Unreachable:True|Desc: +Name:Ixalan|RegionSize:9|Desc: Name:Kaladesh|RegionSize:9|Desc:Kaladesh is a living work of art. Aether is inextricably woven into the world's culture of inspired invention.\nConsists of 45 events. Contains cards from KLD, AER, some C17, and Kaladesh Inventions. Name:Kamigawa|RegionSize:6|Unreachable:True|Desc:For hundreds of years, Kamigawa's denizens peacefully worshipped the spirits of their world. Then suddenly their gods attacked, forcing the world into brutal war.\nContains cards from CHK, BOK, and SOK. Name:Lorwyn-Shadowmoor|RegionSize:9|Desc:A sunny utopia with a thriving storybook community, or a battle-wrought land cursed to perpetual gloom.\nConsists of 72 events. Contains cards from LRW, MOR, SHM, EVE, CNS/CN2, and C14. diff --git a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java index 999984d60a1..15f23f41fe2 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java +++ b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java @@ -29,6 +29,7 @@ public interface IGuiBase { ISkinImage getSkinIcon(FSkinProp skinProp); ISkinImage getUnskinnedIcon(String path); ISkinImage getCardArt(PaperCard card); + ISkinImage getCardArt(PaperCard card, boolean backFace); ISkinImage createLayeredImage(FSkinProp background, String overlayFilename, float opacity); void showBugReportDialog(String title, String text, boolean showExitAppBtn); void showImageDialog(ISkinImage image, String message, String title); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestRegion.java b/forge-gui/src/main/java/forge/planarconquest/ConquestRegion.java index b3a0d27f248..52900f36b19 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestRegion.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestRegion.java @@ -13,6 +13,7 @@ import forge.assets.ISkinImage; import forge.card.CardRulesPredicates; import forge.card.ColorSet; import forge.deck.generation.DeckGenPool; +import forge.game.card.Card; import forge.item.PaperCard; import forge.model.FModel; import forge.util.collect.FCollection; @@ -46,7 +47,17 @@ public class ConquestRegion { public ISkinImage getArt() { if (art == null) { - art = GuiBase.getInterface().getCardArt(cardPool.getCard(artCardName)); + PaperCard pc = cardPool.getCard(artCardName); + boolean transformed = false; + + if (pc == null) { + pc = FModel.getMagicDb().getCommonCards().getCard(artCardName); + if (!pc.getName().equals(artCardName) && Card.fromPaperCard(pc, null).hasAlternateState()) { + return GuiBase.getInterface().getCardArt(pc, true); + } + } + + art = GuiBase.getInterface().getCardArt(pc); } return art; }