mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
first stab
This commit is contained in:
@@ -25,6 +25,11 @@ public final class ImageKeys {
|
||||
public static final String FORETELL_IMAGE = "foretell";
|
||||
|
||||
public static final String BACKFACE_POSTFIX = "$alt";
|
||||
public static final String SPECFACE_W = "$wspec";
|
||||
public static final String SPECFACE_U = "$uspec";
|
||||
public static final String SPECFACE_B = "$bspec";
|
||||
public static final String SPECFACE_R = "$rspec";
|
||||
public static final String SPECFACE_G = "$gspec";
|
||||
|
||||
private static String CACHE_CARD_PICS_DIR, CACHE_TOKEN_PICS_DIR, CACHE_ICON_PICS_DIR, CACHE_BOOSTER_PICS_DIR,
|
||||
CACHE_FATPACK_PICS_DIR, CACHE_BOOSTERBOX_PICS_DIR, CACHE_PRECON_PICS_DIR, CACHE_TOURNAMENTPACK_PICS_DIR;
|
||||
|
||||
@@ -240,5 +240,10 @@ public interface IPaperCard extends InventoryItem, Serializable {
|
||||
boolean hasBackFace();
|
||||
String getCardImageKey();
|
||||
String getCardAltImageKey();
|
||||
String getCardWSpecImageKey();
|
||||
String getCardUSpecImageKey();
|
||||
String getCardBSpecImageKey();
|
||||
String getCardRSpecImageKey();
|
||||
String getCardGSpecImageKey();
|
||||
|
||||
}
|
||||
@@ -336,6 +336,66 @@ public final class PaperCard implements Comparable<IPaperCard>, InventoryItemFro
|
||||
return cardAltImageKey;
|
||||
}
|
||||
|
||||
private String cardWSpecImageKey = null;
|
||||
@Override
|
||||
public String getCardWSpecImageKey() {
|
||||
if (this.cardWSpecImageKey == null) {
|
||||
if (this.rules.getSplitType() == CardSplitType.Specialize)
|
||||
this.cardWSpecImageKey = ImageUtil.getImageKey(this, false, true, "white");
|
||||
else // just use cardImageKey
|
||||
this.cardWSpecImageKey = ImageUtil.getImageKey(this, false, true);
|
||||
}
|
||||
return cardWSpecImageKey;
|
||||
}
|
||||
|
||||
private String cardUSpecImageKey = null;
|
||||
@Override
|
||||
public String getCardUSpecImageKey() {
|
||||
if (this.cardUSpecImageKey == null) {
|
||||
if (this.rules.getSplitType() == CardSplitType.Specialize)
|
||||
this.cardUSpecImageKey = ImageUtil.getImageKey(this, false, true, "blue");
|
||||
else // just use cardImageKey
|
||||
this.cardUSpecImageKey = ImageUtil.getImageKey(this, false, true);
|
||||
}
|
||||
return cardUSpecImageKey;
|
||||
}
|
||||
|
||||
private String cardBSpecImageKey = null;
|
||||
@Override
|
||||
public String getCardBSpecImageKey() {
|
||||
if (this.cardBSpecImageKey == null) {
|
||||
if (this.rules.getSplitType() == CardSplitType.Specialize)
|
||||
this.cardBSpecImageKey = ImageUtil.getImageKey(this, false, true, "black");
|
||||
else // just use cardImageKey
|
||||
this.cardBSpecImageKey = ImageUtil.getImageKey(this, false, true);
|
||||
}
|
||||
return cardBSpecImageKey;
|
||||
}
|
||||
|
||||
private String cardRSpecImageKey = null;
|
||||
@Override
|
||||
public String getCardRSpecImageKey() {
|
||||
if (this.cardRSpecImageKey == null) {
|
||||
if (this.rules.getSplitType() == CardSplitType.Specialize)
|
||||
this.cardRSpecImageKey = ImageUtil.getImageKey(this, false, true, "red");
|
||||
else // just use cardImageKey
|
||||
this.cardRSpecImageKey = ImageUtil.getImageKey(this, false, true);
|
||||
}
|
||||
return cardRSpecImageKey;
|
||||
}
|
||||
|
||||
private String cardGSpecImageKey = null;
|
||||
@Override
|
||||
public String getCardGSpecImageKey() {
|
||||
if (this.cardGSpecImageKey == null) {
|
||||
if (this.rules.getSplitType() == CardSplitType.Specialize)
|
||||
this.cardGSpecImageKey = ImageUtil.getImageKey(this, false, true, "green");
|
||||
else // just use cardImageKey
|
||||
this.cardGSpecImageKey = ImageUtil.getImageKey(this, false, true);
|
||||
}
|
||||
return cardGSpecImageKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBackFace(){
|
||||
CardSplitType cst = this.rules.getSplitType();
|
||||
|
||||
@@ -169,6 +169,27 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard {
|
||||
return getImageKey(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCardWSpecImageKey() {
|
||||
return getImageKey(false);
|
||||
}
|
||||
@Override
|
||||
public String getCardUSpecImageKey() {
|
||||
return getImageKey(false);
|
||||
}
|
||||
@Override
|
||||
public String getCardBSpecImageKey() {
|
||||
return getImageKey(false);
|
||||
}
|
||||
@Override
|
||||
public String getCardRSpecImageKey() {
|
||||
return getImageKey(false);
|
||||
}
|
||||
@Override
|
||||
public String getCardGSpecImageKey() {
|
||||
return getImageKey(false);
|
||||
}
|
||||
|
||||
// InventoryItem
|
||||
@Override
|
||||
public String getImageKey(boolean altState) {
|
||||
|
||||
@@ -27,7 +27,12 @@ public class ImageUtil {
|
||||
}
|
||||
|
||||
public static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) {
|
||||
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace);
|
||||
return getImageRelativePath(cp, backFace, includeSet, isDownloadUrl, "");
|
||||
}
|
||||
|
||||
public static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl,
|
||||
String specializeColor) {
|
||||
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace, specializeColor);
|
||||
if (nameToUse == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -80,8 +85,37 @@ public class ImageUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getNameToUse(PaperCard cp, boolean backFace) {
|
||||
public static String getNameToUse(PaperCard cp, boolean backFace, String specialize) {
|
||||
final CardRules card = cp.getRules();
|
||||
if (!specialize.equals("")) {
|
||||
switch (specialize) {
|
||||
case "white":
|
||||
if (card.getWSpecialize() != null) {
|
||||
return card.getWSpecialize().getName();
|
||||
}
|
||||
break;
|
||||
case "blue":
|
||||
if (card.getUSpecialize() != null) {
|
||||
return card.getUSpecialize().getName();
|
||||
}
|
||||
break;
|
||||
case "black":
|
||||
if (card.getBSpecialize() != null) {
|
||||
return card.getBSpecialize().getName();
|
||||
}
|
||||
break;
|
||||
case "red":
|
||||
if (card.getRSpecialize() != null) {
|
||||
return card.getRSpecialize().getName();
|
||||
}
|
||||
break;
|
||||
case "green":
|
||||
if (card.getGSpecialize() != null) {
|
||||
return card.getGSpecialize().getName();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (backFace) {
|
||||
if (cp.hasBackFace())
|
||||
if (card.getOtherPart() != null) {
|
||||
@@ -102,7 +136,11 @@ public class ImageUtil {
|
||||
}
|
||||
|
||||
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) {
|
||||
return getImageRelativePath(cp, backFace, includeSet, false);
|
||||
return getImageKey(cp, backFace, includeSet, "");
|
||||
}
|
||||
|
||||
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet, String specializeColor) {
|
||||
return getImageRelativePath(cp, backFace, includeSet, false, specializeColor);
|
||||
}
|
||||
|
||||
public static String getDownloadUrl(PaperCard cp, boolean backFace) {
|
||||
|
||||
@@ -280,6 +280,27 @@ public class CardFactory {
|
||||
} else if (c.isAdventureCard()) {
|
||||
c.setState(CardStateName.Adventure, false);
|
||||
c.setImageKey(originalPicture);
|
||||
} else if (c.canSpecialize()) {
|
||||
c.setState(CardStateName.SpecializeW, false);
|
||||
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_W);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardStateName.SpecializeU, false);
|
||||
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_U);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardStateName.SpecializeB, false);
|
||||
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_B);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardStateName.SpecializeR, false);
|
||||
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_R);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardStateName.SpecializeG, false);
|
||||
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_G);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
}
|
||||
|
||||
c.setSetCode(cp.getEdition());
|
||||
|
||||
@@ -172,12 +172,48 @@ public class ImageCache {
|
||||
|
||||
IPaperCard ipc = null;
|
||||
boolean altState = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
|
||||
String specColor = "";
|
||||
if (imageKey.endsWith(ImageKeys.SPECFACE_W)) {
|
||||
specColor = "white";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_U)) {
|
||||
specColor = "blue";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_B)) {
|
||||
specColor = "black";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_R)) {
|
||||
specColor = "red";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_G)) {
|
||||
specColor = "green";
|
||||
}
|
||||
if (altState)
|
||||
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
|
||||
if (!specColor.equals(""))
|
||||
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.SPECFACE_W.length());
|
||||
if (imageKey.startsWith(ImageKeys.CARD_PREFIX)) {
|
||||
ipc = ImageUtil.getPaperCardFromImageKey(imageKey);
|
||||
if (ipc != null) {
|
||||
imageKey = altState ? ipc.getCardAltImageKey() : ipc.getCardImageKey();
|
||||
if (altState) {
|
||||
imageKey = ipc.getCardAltImageKey();
|
||||
} else if (!specColor.equals("")) {
|
||||
switch (specColor) {
|
||||
case "white":
|
||||
imageKey = ipc.getCardWSpecImageKey();
|
||||
break;
|
||||
case "blue":
|
||||
imageKey = ipc.getCardUSpecImageKey();
|
||||
break;
|
||||
case "black":
|
||||
imageKey = ipc.getCardBSpecImageKey();
|
||||
break;
|
||||
case "red":
|
||||
imageKey = ipc.getCardRSpecImageKey();
|
||||
break;
|
||||
case "green":
|
||||
imageKey = ipc.getCardGSpecImageKey();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
imageKey = ipc.getCardImageKey();
|
||||
}
|
||||
if (StringUtils.isBlank(imageKey))
|
||||
return Pair.of(_defaultImage, true);
|
||||
}
|
||||
|
||||
@@ -77,15 +77,51 @@ public final class FImageUtil {
|
||||
}
|
||||
|
||||
boolean altState = key.endsWith(ImageKeys.BACKFACE_POSTFIX);
|
||||
String specColor = "";
|
||||
if (key.endsWith(ImageKeys.SPECFACE_W)) {
|
||||
specColor = "white";
|
||||
} else if (key.endsWith(ImageKeys.SPECFACE_U)) {
|
||||
specColor = "blue";
|
||||
} else if (key.endsWith(ImageKeys.SPECFACE_B)) {
|
||||
specColor = "black";
|
||||
} else if (key.endsWith(ImageKeys.SPECFACE_R)) {
|
||||
specColor = "red";
|
||||
} else if (key.endsWith(ImageKeys.SPECFACE_G)) {
|
||||
specColor = "green";
|
||||
}
|
||||
String imageKey = key;
|
||||
if (prefix.equals(ImageKeys.CARD_PREFIX)) {
|
||||
PaperCard card = ImageUtil.getPaperCardFromImageKey(key);
|
||||
if (card != null)
|
||||
imageKey = altState ? card.getCardAltImageKey() : card.getCardImageKey();
|
||||
if (altState) {
|
||||
imageKey = card.getCardAltImageKey();
|
||||
} else if (!specColor.equals("")) {
|
||||
switch (specColor) {
|
||||
case "white":
|
||||
imageKey = card.getCardWSpecImageKey();
|
||||
break;
|
||||
case "blue":
|
||||
imageKey = card.getCardUSpecImageKey();
|
||||
break;
|
||||
case "black":
|
||||
imageKey = card.getCardBSpecImageKey();
|
||||
break;
|
||||
case "red":
|
||||
imageKey = card.getCardRSpecImageKey();
|
||||
break;
|
||||
case "green":
|
||||
imageKey = card.getCardGSpecImageKey();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
imageKey = card.getCardImageKey();
|
||||
}
|
||||
}
|
||||
if(altState) {
|
||||
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
|
||||
imageKey += "full.jpg";
|
||||
} else if (!specColor.equals("")) {
|
||||
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.SPECFACE_W.length());
|
||||
imageKey += "full.jpg";
|
||||
}
|
||||
|
||||
File file = ImageKeys.getImageFile(imageKey);
|
||||
|
||||
@@ -108,7 +108,42 @@ public abstract class ImageFetcher {
|
||||
String imagePath = ImageUtil.getImageRelativePath(paperCard, false, true, false);
|
||||
final boolean hasSetLookup = ImageKeys.hasSetLookup(imagePath);
|
||||
final boolean backFace = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
|
||||
String filename = backFace ? paperCard.getCardAltImageKey() : paperCard.getCardImageKey();
|
||||
String specColor = "";
|
||||
if (imageKey.endsWith(ImageKeys.SPECFACE_W)) {
|
||||
specColor = "white";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_U)) {
|
||||
specColor = "blue";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_B)) {
|
||||
specColor = "black";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_R)) {
|
||||
specColor = "red";
|
||||
} else if (imageKey.endsWith(ImageKeys.SPECFACE_G)) {
|
||||
specColor = "green";
|
||||
}
|
||||
String filename = "";
|
||||
if (backFace) {
|
||||
filename = paperCard.getCardAltImageKey();
|
||||
} else if (!specColor.equals("")) {
|
||||
switch (specColor) {
|
||||
case "white":
|
||||
filename = paperCard.getCardWSpecImageKey();
|
||||
break;
|
||||
case "blue":
|
||||
filename = paperCard.getCardUSpecImageKey();
|
||||
break;
|
||||
case "black":
|
||||
filename = paperCard.getCardBSpecImageKey();
|
||||
break;
|
||||
case "red":
|
||||
filename = paperCard.getCardRSpecImageKey();
|
||||
break;
|
||||
case "green":
|
||||
filename = paperCard.getCardGSpecImageKey();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
filename = paperCard.getCardImageKey();
|
||||
}
|
||||
if (useArtCrop) {
|
||||
filename = TextUtil.fastReplace(filename, ".full", ".artcrop");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user