mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
Improved the handling of image files for handling also different images of non basic lands (e.g. Fallen Empires).
This commit is contained in:
parent
efe5611c76
commit
f72e1a1038
11 changed files with 51 additions and 33 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue