Improved the handling of image files for handling also different images of non basic lands (e.g. Fallen Empires).

This commit is contained in:
LevelX2 2012-11-25 20:09:13 +01:00
parent efe5611c76
commit f72e1a1038
11 changed files with 51 additions and 33 deletions

View file

@ -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;
}
}

View file

@ -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 {

View file

@ -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);
}

View file

@ -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<CardInfo, String> pathCache = new HashMap<CardInfo, String>();
/**
@ -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";