From 89d58bef5b4007824be3775eb12478a15cfb0748 Mon Sep 17 00:00:00 2001 From: spjspj Date: Fri, 16 Mar 2018 22:49:21 +1100 Subject: [PATCH] Add rendering for Expeditions (With non-copyright background image) --- .../org/mage/card/arcane/ManaSymbols.java | 10 +- .../mage/card/arcane/ModernCardRenderer.java | 108 +++++++++++++----- .../card/arcane/ModernSplitCardRenderer.java | 2 +- .../background_texture_expedition.png | Bin 0 -> 39641 bytes .../src/mage/sets/ZendikarExpeditions.java | 90 +++++++-------- 5 files changed, 133 insertions(+), 77 deletions(-) create mode 100644 Mage.Client/src/main/resources/cardrender/background_texture_expedition.png diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java index a6903e42a1..b64b81bf0a 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -548,8 +548,8 @@ public final class ManaSymbols { public static void draw(Graphics g, String manaCost, int x, int y, int symbolWidth, Color symbolsTextColor, int symbolMarginX) { if (!manaImages.containsKey(symbolWidth)) { loadSymbolImages(symbolWidth); - } - + } + // TODO: replace with jlabel render (look at table rendere)? /* @@ -602,12 +602,16 @@ public final class ManaSymbols { return; } - manaCost = manaCost.replace("\\", ""); + manaCost = manaCost.replace("\\", ""); manaCost = UI.getDisplayManaCost(manaCost); StringTokenizer tok = new StringTokenizer(manaCost, " "); while (tok.hasMoreTokens()) { String symbol = tok.nextToken(); Image image = sizedSymbols.get(symbol); + if (image == null && symbol != null) { + String symbol2 = "" + symbol.charAt(1) + symbol.charAt(0); + image = sizedSymbols.get(symbol2); + } if (image == null) { // TEXT draw diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java b/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java index 67e5192061..20eb252086 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java @@ -34,6 +34,7 @@ import mage.util.SubTypeList; import mage.view.CardView; import mage.view.PermanentView; import org.apache.log4j.Logger; +import static org.mage.card.arcane.ManaSymbols.getSizedManaSymbol; /* @@ -72,13 +73,13 @@ public class ModernCardRenderer extends CardRenderer { BufferedImage img = CardRendererUtils.toBufferedImage(icon.getImage()); return new TexturePaint(img, new Rectangle(0, 0, img.getWidth(), img.getHeight())); } - + private static BufferedImage loadBackgroundImage(String name) { URL url = ModernCardRenderer.class.getResource("/cardrender/background_texture_" + name + ".png"); ImageIcon icon = new ImageIcon(url); BufferedImage img = CardRendererUtils.toBufferedImage(icon.getImage()); return img; - } + } private static BufferedImage loadFramePart(String name) { URL url = ModernCardRenderer.class.getResource("/cardrender/" + name + ".png"); @@ -108,7 +109,7 @@ public class ModernCardRenderer extends CardRenderer { public static final Paint BG_TEXTURE_ARTIFACT = loadBackgroundTexture("artifact"); public static final Paint BG_TEXTURE_LAND = loadBackgroundTexture("land"); public static final Paint BG_TEXTURE_VEHICLE = loadBackgroundTexture("vehicle"); - + public static final BufferedImage BG_IMG_WHITE = loadBackgroundImage("white"); public static final BufferedImage BG_IMG_BLUE = loadBackgroundImage("blue"); public static final BufferedImage BG_IMG_BLACK = loadBackgroundImage("black"); @@ -119,7 +120,8 @@ public class ModernCardRenderer extends CardRenderer { public static final BufferedImage BG_IMG_LAND = loadBackgroundImage("land"); public static final BufferedImage BG_IMG_VEHICLE = loadBackgroundImage("vehicle"); public static final BufferedImage BG_IMG_COLORLESS = loadBackgroundImage("colorless"); - + public static final BufferedImage BG_IMG_EXPEDITION = loadBackgroundImage("expedition"); + public static final BufferedImage FRAME_INVENTION = loadFramePart("invention_frame"); public static final Color BORDER_WHITE = new Color(216, 203, 188); @@ -301,7 +303,11 @@ public class ModernCardRenderer extends CardRenderer { // Just draw a brown rectangle drawCardBack(g); } else { - BufferedImage bg = getBackgroundImage(cardView.getColor(), cardView.getCardTypes(), cardView.getSubTypes()); + boolean isExped = false; + if (cardView.getExpansionSetCode().equals("EXP")) { + isExped = true; + } + BufferedImage bg = getBackgroundImage(cardView.getColor(), cardView.getCardTypes(), cardView.getSubTypes(), isExped); if (bg == null) { return; } @@ -318,12 +324,12 @@ public class ModernCardRenderer extends CardRenderer { cardWidth - borderWidth * 2, cornerRadius * 4, cornerRadius * 2, cornerRadius * 2); a.add(new Area(rr2)); - + // Draw the M15 rounded "swoosh" at the bottom Rectangle r = new Rectangle(borderWidth + contentInset, cardHeight - borderWidth * 5, cardWidth - borderWidth * 2 - contentInset * 2, borderWidth * 2); a.add(new Area(r)); g.setClip(a); - g.drawImage(bg, 0, 0, cardWidth, cardHeight, 0, 0, bgw, bgh, BOX_BLUE, null); + g.drawImage(bg, 0, 0, cardWidth, cardHeight, 0, 0, bgw, bgh, BOX_BLUE, null); g.setClip(null); } } @@ -545,24 +551,13 @@ public class ModernCardRenderer extends CardRenderer { if (!isZendikarFullArtLand()) { drawRulesText(g, textboxKeywords, textboxRules, totalContentInset + 2, typeLineY + boxHeight + 2, - contentWidth - 4, cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3); + contentWidth - 4, cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3, false); } else { int x = totalContentInset; int y = typeLineY + boxHeight + (cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3) / 2 - contentInset; int w = contentWidth; int h = boxHeight - 4; - CardRendererUtils.drawZendikarLandBox(g, - x, y, w, h, - contentInset, - borderPaint, boxColor); - drawTypeLine(g, getCardSuperTypeLine(), - totalContentInset + contentInset, typeLineY + boxHeight + (cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3) / 2 - contentInset, - contentWidth / 2 - boxHeight, boxHeight - 4, false); - drawTypeLine(g, getCardSubTypeLine(), - totalContentInset + 4 * contentWidth / 7 + boxHeight, typeLineY + boxHeight + (cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3) / 2 - contentInset, - 3 * contentWidth / 7 - boxHeight - contentInset, boxHeight - 4, true); - if (cardView.getFrameStyle() == FrameStyle.ZEN_FULL_ART_BASIC) { // Draw curved lines (old Zendikar land style) - bigger (around 6%) inset on curve on bottom than inset (around 4.5%) on top... int x2 = x + contentWidth; @@ -584,9 +579,49 @@ public class ModernCardRenderer extends CardRenderer { boxColor, borderPaint); } + // If an expedition, needs the rules box to be visible. + if (cardView.getExpansionSetCode().equals("EXP")) { + // Draw a small separator between the type line and box, and shadow + // at the left of the texbox, and above the name line + g.setPaint(textboxPaint); + float alpha = 0.55f; + AlphaComposite comp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha); + Composite origc = g.getComposite(); + g.setComposite(comp); + g.setBackground(new Color(155, 0, 0, 150)); + + g.fillRect( + totalContentInset + 1, typeLineY - boxHeight, + contentWidth - 2, cardHeight - borderWidth * 3 - typeLineY - 1); + + g.setComposite(origc); + + g.fillRect( + totalContentInset - 1, totalContentInset - 1, + contentWidth + 1, 1); + + g.fillRect( + totalContentInset + 1, typeLineY - boxHeight, + contentWidth - 2, 1); + + drawRulesText(g, textboxKeywords, textboxRules, + totalContentInset + 2, typeLineY - boxHeight, + contentWidth - 4, cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3, true); + } + + CardRendererUtils.drawZendikarLandBox(g, + x, y, w, h, + contentInset, + borderPaint, boxColor); + drawTypeLine(g, getCardSuperTypeLine(), + totalContentInset + contentInset, typeLineY + boxHeight + (cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3) / 2 - contentInset, + contentWidth / 2 - boxHeight, boxHeight - 4, false); + drawTypeLine(g, getCardSubTypeLine(), + totalContentInset + 4 * contentWidth / 7 + boxHeight, typeLineY + boxHeight + (cardHeight - typeLineY - boxHeight - 4 - borderWidth * 3) / 2 - contentInset, + 3 * contentWidth / 7 - boxHeight - contentInset, boxHeight - 4, true); drawRulesText(g, textboxKeywords, textboxRules, x, y, - w, h); + w, h, false); } // Draw the bottom right stuff @@ -962,7 +997,7 @@ public class ModernCardRenderer extends CardRenderer { return layout; } - protected void drawRulesText(Graphics2D g, ArrayList keywords, ArrayList rules, int x, int y, int w, int h) { + protected void drawRulesText(Graphics2D g, ArrayList keywords, ArrayList rules, int x, int y, int w, int h, boolean forceRules) { // Gather all rules to render List allRules = new ArrayList<>(rules); @@ -974,14 +1009,19 @@ public class ModernCardRenderer extends CardRenderer { } // Basic mana draw mana symbol in textbox (for basic lands) - if (allRules.size() == 1 && (allRules.get(0) instanceof TextboxBasicManaRule) && cardView.isLand() || isZendikarFullArtLand()) { + if (!forceRules && (allRules.size() == 1 && (allRules.get(0) instanceof TextboxBasicManaRule) && cardView.isLand() || isZendikarFullArtLand())) { if (!isZendikarFullArtLand()) { drawBasicManaTextbox(g, x, y, w, h, ((TextboxBasicManaRule) allRules.get(0)).getBasicManaSymbol()); return; } else // Big circle in the middle for Zendikar lands - if (allRules.size() == 1) { + { + if (allRules.size() == 1) { // Size of mana symbol = 9/4 * h, 3/4h above line - drawBasicManaSymbol(g, x + w / 2 - 9 * h / 8 + 1, y - 3 * h / 4, 9 * h / 4, 9 * h / 4, ((TextboxBasicManaRule) allRules.get(0)).getBasicManaSymbol()); + if (allRules.get(0) instanceof TextboxBasicManaRule) { + drawBasicManaSymbol(g, x + w / 2 - 9 * h / 8 + 1, y - 3 * h / 4, 9 * h / 4, 9 * h / 4, ((TextboxBasicManaRule) allRules.get(0)).getBasicManaSymbol()); + } else { + drawBasicManaSymbol(g, x + w / 2 - h - h / 8, y - 3 * h / 4, 9 * h / 4, 9 * h / 4, cardView.getFrameColor().toString()); + } return; } else { if (allRules.size() > 1) { @@ -989,6 +1029,7 @@ public class ModernCardRenderer extends CardRenderer { } return; } + } } // Go through possible font sizes in descending order to find the best fit @@ -1043,7 +1084,15 @@ public class ModernCardRenderer extends CardRenderer { private void drawBasicManaSymbol(Graphics2D g, int x, int y, int w, int h, String symbol) { String symbs = symbol; - ManaSymbols.draw(g, symbs, x, y, w, Color.black, 2); + if (getSizedManaSymbol(symbol) != null) { + ManaSymbols.draw(g, symbs, x, y, w, Color.black, 2); + } + if (symbol.length() == 2) { + String symbs2 = "" + symbol.charAt(1) + symbol.charAt(0); + if (getSizedManaSymbol(symbs2) != null) { + ManaSymbols.draw(g, symbs2, x, y, w, Color.black, 2); + } + } } // Get the first line of the textbox, the keyword string @@ -1272,13 +1321,16 @@ public class ModernCardRenderer extends CardRenderer { return new Color(71, 86, 101); } } - + // Determine which background image to use from a set of colors // and the current card. - protected static BufferedImage getBackgroundImage(ObjectColor colors, Collection types, SubTypeList subTypes) { + protected static BufferedImage getBackgroundImage(ObjectColor colors, Collection types, SubTypeList subTypes, boolean isExped) { if (subTypes.contains(SubType.VEHICLE)) { return BG_IMG_VEHICLE; } else if (types.contains(CardType.LAND)) { + if (isExped) { + return BG_IMG_EXPEDITION; + } return BG_IMG_LAND; } else if (types.contains(CardType.ARTIFACT)) { return BG_IMG_ARTIFACT; @@ -1299,7 +1351,7 @@ public class ModernCardRenderer extends CardRenderer { return BG_IMG_COLORLESS; } } - + // Get the box color for the given colors protected Color getBoxColor(ObjectColor colors, Collection types, boolean isNightCard) { if (cardView.isAbility()) { diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ModernSplitCardRenderer.java b/Mage.Client/src/main/java/org/mage/card/arcane/ModernSplitCardRenderer.java index 0310d8e3ac..7e09c8a266 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ModernSplitCardRenderer.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ModernSplitCardRenderer.java @@ -272,7 +272,7 @@ public class ModernSplitCardRenderer extends ModernCardRenderer { // Draw the textbox rules drawRulesText(g, half.keywords, half.rules, 2, typeLineY + boxHeight + 2 - 4, - half.cw - 4, half.ch - typeLineY - boxHeight); + half.cw - 4, half.ch - typeLineY - boxHeight, false); } private Graphics2D getUnmodifiedHalfContext(Graphics2D g) { diff --git a/Mage.Client/src/main/resources/cardrender/background_texture_expedition.png b/Mage.Client/src/main/resources/cardrender/background_texture_expedition.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccb96d775071ce61e0b87171fcfb7e8f4ebc538 GIT binary patch literal 39641 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