diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java index d34a4c476e2..c04704715d2 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java @@ -15,19 +15,21 @@ public class CardInfo { private boolean twoFacedCard; private boolean secondSide; private boolean flipCard; + private boolean useCollectorId; // for building the image name (different images for the same card) - public CardInfo(String name, String set, Integer collectorId, Integer type) { - this(name, set, collectorId, type, false); + public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type) { + this(name, set, collectorId, useCollectorId, type, false); } - public CardInfo(String name, String set, Integer collectorId, Integer type, boolean token) { - this(name, set, collectorId, type, token, false, false); + public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type, boolean token) { + this(name, set, collectorId, useCollectorId, type, token, false, false); } - public CardInfo(String name, String set, Integer collectorId, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { + public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { this.name = name; this.set = set; this.collectorId = collectorId; + this.useCollectorId = useCollectorId; this.type = type; this.token = token; this.twoFacedCard = twoFacedCard; @@ -150,4 +152,9 @@ public class CardInfo { public void setType(Integer type) { this.type = type; } + + public boolean useCollectorId() { + return useCollectorId; + } + } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 727ae7f742e..6ea06605abe 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -37,12 +37,9 @@ import java.util.Iterator; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.regex.Pattern; public class DownloadPictures extends DefaultBoundedRangeModel implements Runnable { - private static final Pattern basicLandPattern = Pattern.compile("^(Forest|Mountain|Swamp|Island|Plains)$"); - private JProgressBar bar; private JOptionPane dlg; private boolean cancel; @@ -213,7 +210,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab TFile file; for (Card card : allCards) { if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { - CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), 0, false, card.canTransform(), card.isNightCard()); + CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(),Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)),0 , false, card.canTransform(), card.isNightCard()); file = new TFile(CardImageUtils.getImagePath(url, imagesPath)); if (!file.exists()) { return true; @@ -238,8 +235,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab for (Card card : allCards) { if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { String cardName = card.getName(); - CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), 0, false, card.canTransform(), card.isNightCard()); - if (basicLandPattern.matcher(cardName).matches()) { + CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), 0, false, card.canTransform(), card.isNightCard()); + if (url.useCollectorId()) { url.setDownloadName(card.getClass().getName().replace(card.getClass().getPackage().getName() + ".", "")); } if (card.isFlipCard()) { @@ -251,7 +248,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab // it has the same expansion set code and card number as original one // second side = true; Card secondSide = card.getSecondCardFace(); - url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), 0, false, card.canTransform(), true); + url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(secondSide.getClass().getName().charAt(secondSide.getClass().getName().length()-1)), 0, false, card.canTransform(), true); allCardsUrls.add(url); } } else { @@ -321,15 +318,15 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (params.length >= 4) { if (params[1].toLowerCase().equals("generate") && params[2].startsWith("TOK:")) { String set = params[2].substring(4); - CardInfo card = new CardInfo(params[3], set, 0, 0, true); + CardInfo card = new CardInfo(params[3], set, 0, false, 0, true); list.add(card); } else if (params[1].toLowerCase().equals("generate") && params[2].startsWith("EMBLEM:")) { String set = params[2].substring(7); - CardInfo card = new CardInfo("Emblem " + params[3], set, 0, 0, true); + CardInfo card = new CardInfo("Emblem " + params[3], set, 0, false,0, true); list.add(card); } else if (params[1].toLowerCase().equals("generate") && params[2].startsWith("EMBLEM-:")) { String set = params[2].substring(8); - CardInfo card = new CardInfo(params[3] + " Emblem", set, 0, 0, true); + CardInfo card = new CardInfo(params[3] + " Emblem", set, 0, false, 0, true); list.add(card); } } else { diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java index 6e54c583288..3ac93c098f8 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -54,6 +54,11 @@ public class ImageCache { public BufferedImage apply(String key) { try { boolean thumbnail = false; + boolean useCollectorId = false; + if (key.endsWith("#useCardNumber")) { + useCollectorId = true; + key = key.replace("#useCardNumber", ""); + } if (key.endsWith("#thumb")) { thumbnail = true; key = key.replace("#thumb", ""); @@ -66,7 +71,7 @@ public class ImageCache { Integer type = Integer.parseInt(m.group(3)); Integer collectorId = Integer.parseInt(m.group(4)); - CardInfo info = new CardInfo(name, set, collectorId, type); + CardInfo info = new CardInfo(name, set, collectorId, useCollectorId, type); if (collectorId == 0) { info.setToken(true); @@ -134,12 +139,18 @@ public class ImageCache { public static BufferedImage getThumbnail(CardView card) { String key = getKey(card) + "#thumb"; + if (card.useCardNumber()) { + key += "#useCardNumber"; + } //log.debug("#key: " + key); return getImage(key); } public static BufferedImage getImageOriginal(CardView card) { String key = getKey(card); + if (card.useCardNumber()) { + key += "#useCardNumber"; + } //log.debug("#key: " + key); return getImage(key); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java index a2306830610..80c66284b5b 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java @@ -1,17 +1,14 @@ package org.mage.plugins.card.utils; import de.schlichtherle.truezip.file.TFile; +import java.util.HashMap; +import mage.client.constants.Constants; import mage.client.dialog.PreferencesDialog; -import org.mage.plugins.card.constants.Constants; import org.mage.plugins.card.images.CardInfo; import org.mage.plugins.card.properties.SettingsManager; -import java.util.HashMap; -import java.util.regex.Pattern; - public class CardImageUtils { - private static final Pattern basicLandPattern = Pattern.compile("^(Forest|Mountain|Swamp|Island|Plains)$"); private static HashMap pathCache = new HashMap(); /** @@ -139,7 +136,7 @@ public class CardImageUtils { String type = card.getType() != 0 ? " " + Integer.toString(card.getType()) : ""; String name = card.getName().replace(":", ""); - if (basicLandPattern.matcher(name).matches()) { + if (card.useCollectorId()) { imageName = name + "." + card.getCollectorId() + ".full.jpg"; } else { imageName = name + type + ".full.jpg"; diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index 792e39b92db..ed2dea1dab3 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -86,7 +86,7 @@ public class CardView extends SimpleCardView { } public CardView(Card card) { - super(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown()); + super(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1))); // no information available for face down cards if (this.faceDown) { @@ -142,7 +142,7 @@ public class CardView extends SimpleCardView { } public CardView(MageObject card) { - super(card.getId(), "", 0, false); + super(card.getId(), "", 0, false, false); this.name = card.getName(); if (card instanceof Permanent) { @@ -178,11 +178,11 @@ public class CardView extends SimpleCardView { } protected CardView() { - super(null, "", 0, false); + super(null, "", 0, false, false); } public CardView(boolean empty) { - super(null, "", 0, false); + super(null, "", 0, false, false); if (!empty) { throw new IllegalArgumentException("Not supported."); } @@ -212,7 +212,7 @@ public class CardView extends SimpleCardView { } CardView(Token token) { - super(token.getId(), "", 0, false); + super(token.getId(), "", 0, false, false); this.id = token.getId(); this.name = token.getName(); this.rules = token.getAbilities().getRules(this.name); diff --git a/Mage.Common/src/mage/view/ExileView.java b/Mage.Common/src/mage/view/ExileView.java index c437be8a8ea..144413f3f51 100644 --- a/Mage.Common/src/mage/view/ExileView.java +++ b/Mage.Common/src/mage/view/ExileView.java @@ -47,7 +47,7 @@ public class ExileView extends SimpleCardsView { this.name = exileZone.getName(); this.id = exileZone.getId(); for (Card card: exileZone.getCards(game)) { - this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown())); + this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)))); } } diff --git a/Mage.Common/src/mage/view/LookedAtView.java b/Mage.Common/src/mage/view/LookedAtView.java index de13f179e04..d0402665fbd 100644 --- a/Mage.Common/src/mage/view/LookedAtView.java +++ b/Mage.Common/src/mage/view/LookedAtView.java @@ -46,7 +46,7 @@ public class LookedAtView implements Serializable { public LookedAtView(String name, Cards cards, Game game) { this.name = name; for (Card card: cards.getCards(game)) { - this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown())); + this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); } } diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index b921034497b..14960972447 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -72,7 +72,7 @@ public class PlayerView implements Serializable { this.isActive = (player.getId().equals(state.getActivePlayerId())); this.hasLeft = player.hasLeft(); for (Card card: player.getGraveyard().getCards(game)) { - graveyard.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown())); + graveyard.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); } for (Permanent permanent: state.getBattlefield().getAllPermanents()) { if (showInBattlefield(permanent, state)) { diff --git a/Mage.Common/src/mage/view/RevealedView.java b/Mage.Common/src/mage/view/RevealedView.java index 742d061b089..b6609e621de 100644 --- a/Mage.Common/src/mage/view/RevealedView.java +++ b/Mage.Common/src/mage/view/RevealedView.java @@ -45,7 +45,7 @@ public class RevealedView implements Serializable { public RevealedView(String name, Cards cards, Game game) { this.name = name; for (Card card: cards.getCards(game)) { - this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown())); + this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); } } diff --git a/Mage.Common/src/mage/view/SimpleCardView.java b/Mage.Common/src/mage/view/SimpleCardView.java index f04a2210402..586575bdded 100644 --- a/Mage.Common/src/mage/view/SimpleCardView.java +++ b/Mage.Common/src/mage/view/SimpleCardView.java @@ -40,12 +40,14 @@ public class SimpleCardView implements Serializable { protected String expansionSetCode; protected int cardNumber; protected boolean faceDown; + protected boolean useCardNumber; // for building the image name (different images for the same card) - public SimpleCardView(UUID id, String expansionSetCode, int cardNumber, boolean faceDown) { + public SimpleCardView(UUID id, String expansionSetCode, int cardNumber, boolean faceDown, boolean useCardNumber) { this.id = id; this.expansionSetCode = expansionSetCode; this.cardNumber = cardNumber; this.faceDown = faceDown; + this.useCardNumber = useCardNumber; } public UUID getId() { @@ -63,4 +65,8 @@ public class SimpleCardView implements Serializable { public boolean isFaceDown() { return faceDown; } + + public boolean useCardNumber() { + return useCardNumber; + } } diff --git a/Mage.Common/src/mage/view/SimpleCardsView.java b/Mage.Common/src/mage/view/SimpleCardsView.java index d3f120f0b27..7d04351798d 100644 --- a/Mage.Common/src/mage/view/SimpleCardsView.java +++ b/Mage.Common/src/mage/view/SimpleCardsView.java @@ -44,7 +44,7 @@ public class SimpleCardsView extends LinkedHashMap { public SimpleCardsView(Collection cards) { for (Card card: cards) { - this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown())); + this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)))); } }