Cut the dependence on images. Game module will store image keys, unaware of real image locations

This commit is contained in:
Maxmtg
2014-01-23 09:11:51 +00:00
parent 69c569c82b
commit 7e999ea4b3
14 changed files with 132 additions and 113 deletions

2
.gitattributes vendored
View File

@@ -122,6 +122,7 @@ forge-game/pom.xml -text
forge-game/src/main/java/forge/Command.java svneol=native#text/plain forge-game/src/main/java/forge/Command.java svneol=native#text/plain
forge-game/src/main/java/forge/Constant.java svneol=native#text/plain forge-game/src/main/java/forge/Constant.java svneol=native#text/plain
forge-game/src/main/java/forge/Dependencies.java -text forge-game/src/main/java/forge/Dependencies.java -text
forge-game/src/main/java/forge/ImageKeys.java -text
forge-game/src/main/java/forge/ai/AiAttackController.java svneol=native#text/plain forge-game/src/main/java/forge/ai/AiAttackController.java svneol=native#text/plain
forge-game/src/main/java/forge/ai/AiBlockController.java svneol=native#text/plain forge-game/src/main/java/forge/ai/AiBlockController.java svneol=native#text/plain
forge-game/src/main/java/forge/ai/AiController.java svneol=native#text/plain forge-game/src/main/java/forge/ai/AiController.java svneol=native#text/plain
@@ -15205,7 +15206,6 @@ forge-gui/src/main/html/js/observable.js -text
forge-gui/src/main/html/js/socket.js -text forge-gui/src/main/html/js/socket.js -text
forge-gui/src/main/java/forge/FThreads.java -text forge-gui/src/main/java/forge/FThreads.java -text
forge-gui/src/main/java/forge/ImageCache.java svneol=native#text/plain forge-gui/src/main/java/forge/ImageCache.java svneol=native#text/plain
forge-gui/src/main/java/forge/ImageCacheProvider.java -text
forge-gui/src/main/java/forge/ImageLoader.java -text forge-gui/src/main/java/forge/ImageLoader.java -text
forge-gui/src/main/java/forge/PreferencesProvider.java -text forge-gui/src/main/java/forge/PreferencesProvider.java -text
forge-gui/src/main/java/forge/Singletons.java svneol=native#text/plain forge-gui/src/main/java/forge/Singletons.java svneol=native#text/plain

View File

@@ -1,24 +1,15 @@
package forge; package forge;
import forge.item.InventoryItem;
public class Dependencies { public class Dependencies {
public static PreferencesMethods preferences; public static PreferencesMethods preferences;
public interface PreferencesMethods { public interface PreferencesMethods {
public abstract boolean getEnableAiCheats(); @Deprecated public abstract boolean getEnableAiCheats();
public abstract boolean getCloneModeSource(); @Deprecated public abstract boolean getCloneModeSource();
public abstract String getLogEntryType(); @Deprecated public abstract String getLogEntryType();
public abstract String getCurrentAiProfile(); @Deprecated public abstract String getCurrentAiProfile();
public abstract boolean canRandomFoil(); @Deprecated public abstract boolean canRandomFoil();
public abstract boolean isManaBurnEnabled(); @Deprecated public abstract boolean isManaBurnEnabled();
public abstract boolean areBlocksFree(); @Deprecated public abstract boolean areBlocksFree();
}
public static ImageCacheMethods imagecache;
public interface ImageCacheMethods {
String getImageKey(InventoryItem cp, boolean altState);
String getTokenKey(String imageName);
String getMorphImage();
} }
} }

View File

@@ -0,0 +1,51 @@
package forge;
import forge.item.BoosterPack;
import forge.item.FatPack;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.item.PaperToken;
import forge.item.PreconDeck;
import forge.item.TournamentPack;
public class ImageKeys {
public static final String CARD_PREFIX = "c:";
public static final String TOKEN_PREFIX = "t:";
public static final String ICON_PREFIX = "i:";
public static final String BOOSTER_PREFIX = "b:";
public static final String FATPACK_PREFIX = "f:";
public static final String PRECON_PREFIX = "p:";
public static final String TOURNAMENTPACK_PREFIX = "o:";
public static final String MORPH_IMAGE = "morph";
public static final String BACKFACE_POSTFIX = "$alt";
// Inventory items don't have to know how a certain client should draw them.
// That's why this method is not encapsulated and overloaded in the InventoryItem descendants
public static String getImageKey(InventoryItem ii, boolean altState) {
if ( ii instanceof PaperCard ) {
PaperCard cp = (PaperCard)ii;
return ImageKeys.CARD_PREFIX + cp.getName() + "|" + cp.getEdition() + "|" + cp.getArtIndex() + (altState ? BACKFACE_POSTFIX : "");
}
if ( ii instanceof TournamentPack )
return ImageKeys.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition();
if ( ii instanceof BoosterPack ) {
BoosterPack bp = (BoosterPack)ii;
int cntPics = StaticData.instance().getEditions().get(bp.getEdition()).getCntBoosterPictures();
String suffix = (1 >= cntPics) ? "" : ("_" + bp.getArtIndex());
return ImageKeys.BOOSTER_PREFIX + bp.getEdition() + suffix;
}
if ( ii instanceof FatPack )
return ImageKeys.FATPACK_PREFIX + ((FatPack)ii).getEdition();
if ( ii instanceof PreconDeck )
return ImageKeys.PRECON_PREFIX + ((PreconDeck)ii).getImageFilename();
if ( ii instanceof PaperToken )
return ImageKeys.TOKEN_PREFIX + ((PaperToken)ii).getImageFilename();
return null;
}
public static String getTokenKey(String tokenName) {
return ImageKeys.TOKEN_PREFIX + tokenName;
}
}

View File

@@ -3,7 +3,7 @@ package forge.game.ability.effects;
import java.util.List; import java.util.List;
import forge.Command; import forge.Command;
import forge.Dependencies; import forge.ImageKeys;
import forge.game.Game; import forge.game.Game;
import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils; import forge.game.ability.AbilityUtils;
@@ -104,7 +104,7 @@ public class EffectEffect extends SpellAbilityEffect {
eff.addType("Effect"); // Or Emblem eff.addType("Effect"); // Or Emblem
eff.setToken(true); // Set token to true, so when leaving play it gets nuked eff.setToken(true); // Set token to true, so when leaving play it gets nuked
eff.setOwner(controller); eff.setOwner(controller);
eff.setImageKey(sa.hasParam("Image") ? Dependencies.imagecache.getTokenKey(sa.getParam("Image")) : hostCard.getImageKey()); eff.setImageKey(sa.hasParam("Image") ? ImageKeys.getTokenKey(sa.getParam("Image")) : hostCard.getImageKey());
eff.setColor(hostCard.getColor()); eff.setColor(hostCard.getColor());
eff.setImmutable(true); eff.setImmutable(true);
eff.setEffectSource(hostCard); eff.setEffectSource(hostCard);

View File

@@ -22,7 +22,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import forge.Dependencies; import forge.ImageKeys;
import forge.card.CardCharacteristicName; import forge.card.CardCharacteristicName;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.CardSplitType; import forge.card.CardSplitType;
@@ -266,7 +266,7 @@ public class CardFactory {
c.setRarity(cp.getRarity()); c.setRarity(cp.getRarity());
// Would like to move this away from in-game entities // Would like to move this away from in-game entities
String originalPicture = Dependencies.imagecache.getImageKey(cp, false); String originalPicture = ImageKeys.getImageKey(cp, false);
//System.out.println(c.getName() + " -> " + originalPicture); //System.out.println(c.getName() + " -> " + originalPicture);
c.setImageKey(originalPicture); c.setImageKey(originalPicture);
c.setToken(cp.isToken()); c.setToken(cp.isToken());
@@ -274,11 +274,11 @@ public class CardFactory {
if (c.hasAlternateState()) { if (c.hasAlternateState()) {
if (c.isFlipCard()) { if (c.isFlipCard()) {
c.setState(CardCharacteristicName.Flipped); c.setState(CardCharacteristicName.Flipped);
c.setImageKey(Dependencies.imagecache.getImageKey(cp, true)); c.setImageKey(ImageKeys.getImageKey(cp, true));
} }
else if (c.isDoubleFaced() && cp instanceof PaperCard) { else if (c.isDoubleFaced() && cp instanceof PaperCard) {
c.setState(CardCharacteristicName.Transformed); c.setState(CardCharacteristicName.Transformed);
c.setImageKey(Dependencies.imagecache.getImageKey(cp, true)); c.setImageKey(ImageKeys.getImageKey(cp, true));
} }
else if (c.isSplitCard()) { else if (c.isSplitCard()) {
c.setState(CardCharacteristicName.LeftSplit); c.setState(CardCharacteristicName.LeftSplit);
@@ -576,7 +576,7 @@ public class CardFactory {
final List<Card> list = new ArrayList<Card>(); final List<Card> list = new ArrayList<Card>();
final Card c = new Card(controller.getGame().nextCardId()); final Card c = new Card(controller.getGame().nextCardId());
c.setName(name); c.setName(name);
c.setImageKey(Dependencies.imagecache.getTokenKey(imageName)); c.setImageKey(ImageKeys.getTokenKey(imageName));
// TODO - most tokens mana cost is 0, this needs to be fixed // TODO - most tokens mana cost is 0, this needs to be fixed
// c.setManaCost(manaCost); // c.setManaCost(manaCost);

View File

@@ -23,7 +23,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import forge.Constant; import forge.Constant;
import forge.Dependencies; import forge.ImageKeys;
import forge.card.CardCharacteristicName; import forge.card.CardCharacteristicName;
import forge.card.ColorSet; import forge.card.ColorSet;
import forge.card.MagicColor; import forge.card.MagicColor;
@@ -217,7 +217,7 @@ public final class CardUtil {
ret.setName(""); ret.setName("");
ret.setType(types); ret.setType(types);
ret.setImageKey(Dependencies.imagecache.getMorphImage()); ret.setImageKey(ImageKeys.getTokenKey(ImageKeys.MORPH_IMAGE));
return ret; return ret;
} }

View File

@@ -32,22 +32,19 @@ import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import com.mortennobel.imagescaling.ResampleOp; import com.mortennobel.imagescaling.ResampleOp;
import forge.card.CardDb;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.CardSplitType; import forge.card.CardSplitType;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.player.IHasIcon; import forge.game.player.IHasIcon;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinIcon; import forge.gui.toolbox.FSkin.SkinIcon;
import forge.item.BoosterPack;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.item.PaperToken;
import forge.item.FatPack;
import forge.item.InventoryItem; import forge.item.InventoryItem;
import forge.item.PreconDeck;
import forge.item.TournamentPack;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.properties.NewConstants; import forge.properties.NewConstants;
import forge.util.Base64Coder; import forge.util.Base64Coder;
import forge.util.TextUtil;
/** /**
* This class stores ALL card images in a cache with soft values. this means * This class stores ALL card images in a cache with soft values. this means
@@ -65,13 +62,7 @@ import forge.util.Base64Coder;
*/ */
public class ImageCache { public class ImageCache {
// short prefixes to save memory // short prefixes to save memory
public static final String TOKEN_PREFIX = "t:";
public static final String ICON_PREFIX = "i:";
public static final String BOOSTER_PREFIX = "b:";
public static final String FATPACK_PREFIX = "f:";
public static final String PRECON_PREFIX = "p:";
public static final String TOURNAMENTPACK_PREFIX = "o:";
private static final Set<String> _missingIconKeys = new HashSet<String>(); private static final Set<String> _missingIconKeys = new HashSet<String>();
private static final LoadingCache<String, BufferedImage> _CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader()); private static final LoadingCache<String, BufferedImage> _CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
private static final BufferedImage _defaultImage; private static final BufferedImage _defaultImage;
@@ -105,7 +96,7 @@ public class ImageCache {
public static BufferedImage getImage(Card card, int width, int height) { public static BufferedImage getImage(Card card, int width, int height) {
final String key; final String key;
if (!Singletons.getControl().mayShowCard(card) || card.isFaceDown()) { if (!Singletons.getControl().mayShowCard(card) || card.isFaceDown()) {
key = TOKEN_PREFIX + NewConstants.CACHE_MORPH_IMAGE_FILE; key = ImageKeys.TOKEN_PREFIX + ImageKeys.MORPH_IMAGE;
} else { } else {
key = card.getImageKey(); key = card.getImageKey();
} }
@@ -117,7 +108,7 @@ public class ImageCache {
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension. * and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
*/ */
public static BufferedImage getImage(InventoryItem ii, int width, int height) { public static BufferedImage getImage(InventoryItem ii, int width, int height) {
return scaleImage(getImageKey(ii, false), width, height, true); return scaleImage(ImageKeys.getImageKey(ii, false), width, height, true);
} }
/** /**
@@ -145,6 +136,13 @@ public class ImageCache {
*/ */
public static BufferedImage getOriginalImage(String imageKey, boolean useDefaultIfNotFound) { public static BufferedImage getOriginalImage(String imageKey, boolean useDefaultIfNotFound) {
boolean altState = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
if(altState)
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
if (imageKey.startsWith(ImageKeys.CARD_PREFIX))
imageKey = getImageKey(getPaperCardFromImageKey(imageKey.substring(2)), altState, true);
// Load from file and add to cache if not found in cache initially. // Load from file and add to cache if not found in cache initially.
BufferedImage original = getImage(imageKey); BufferedImage original = getImage(imageKey);
@@ -161,6 +159,34 @@ public class ImageCache {
return original; return original;
} }
private static PaperCard getPaperCardFromImageKey(String key) {
if( key == null )
return null;
PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(key);
if ( cp == null )
cp = StaticData.instance().getVariantCards().tryGetCard(key);
if( cp != null )
return cp;
// try to remove art index
if( key.charAt(key.length() - 2) == '|') {
key = key.substring(0, key.length() - 2);
cp = StaticData.instance().getCommonCards().tryGetCard(key);
if ( cp == null )
cp = StaticData.instance().getVariantCards().tryGetCard(key);
if( cp != null )
return cp;
}
// try only name
key = TextUtil.split(key, '|')[0];
cp = StaticData.instance().getCommonCards().tryGetCard(key);
if ( cp == null )
cp = StaticData.instance().getVariantCards().tryGetCard(key);
return cp;
}
private static BufferedImage scaleImage(String key, final int width, final int height, boolean useDefaultImage) { private static BufferedImage scaleImage(String key, final int width, final int height, boolean useDefaultImage) {
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) { if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
@@ -228,35 +254,11 @@ public class ImageCache {
} }
} }
// Inventory items don't have to know how a certain client should draw them.
// That's why this method is not encapsulated and overloaded in the InventoryItem descendants
public static String getImageKey(InventoryItem ii, boolean altState) {
if ( ii instanceof PaperCard )
return getImageKey((PaperCard)ii, altState, true);
if ( ii instanceof TournamentPack )
return ImageCache.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition();
if ( ii instanceof BoosterPack ) {
BoosterPack bp = (BoosterPack)ii;
int cntPics = Singletons.getMagicDb().getEditions().get(bp.getEdition()).getCntBoosterPictures();
String suffix = (1 >= cntPics) ? "" : ("_" + bp.getArtIndex());
return ImageCache.BOOSTER_PREFIX + bp.getEdition() + suffix;
}
if ( ii instanceof FatPack )
return ImageCache.FATPACK_PREFIX + ((FatPack)ii).getEdition();
if ( ii instanceof PreconDeck )
return ImageCache.PRECON_PREFIX + ((PreconDeck)ii).getImageFilename();
if ( ii instanceof PaperToken )
return ImageCache.TOKEN_PREFIX + ((PaperToken)ii).getImageFilename();
return null;
}
public static String getTokenImageKey(String tokenName) {
return TOKEN_PREFIX + tokenName;
}
private static String getImageLocator(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) { private static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) {
final String nameToUse = getNameToUse(cp, backFace); final String nameToUse = getNameToUse(cp, backFace);
if ( null == nameToUse ) if ( null == nameToUse )
return null; return null;
@@ -269,8 +271,9 @@ public class ImageCache {
final int cntPictures; final int cntPictures;
final boolean hasManyPictures; final boolean hasManyPictures;
final CardDb db = !card.isVariant() ? Singletons.getMagicDb().getCommonCards() : Singletons.getMagicDb().getVariantCards();
if (includeSet) { if (includeSet) {
cntPictures = !card.isVariant() ? Singletons.getMagicDb().getCommonCards().getPrintCount(card.getName(), edition) : Singletons.getMagicDb().getVariantCards().getPrintCount(card.getName(), edition); cntPictures = db.getPrintCount(card.getName(), edition);
hasManyPictures = cntPictures > 1; hasManyPictures = cntPictures > 1;
} else { } else {
// without set number of pictures equals number of urls provided in Svar:Picture // without set number of pictures equals number of urls provided in Svar:Picture
@@ -278,7 +281,7 @@ public class ImageCache {
cntPictures = StringUtils.countMatches(urls, "\\") + 1; cntPictures = StringUtils.countMatches(urls, "\\") + 1;
// raise the art index limit to the maximum of the sets this card was printed in // raise the art index limit to the maximum of the sets this card was printed in
int maxCntPictures = !card.isVariant() ? Singletons.getMagicDb().getCommonCards().getMaxPrintCount(card.getName()) : Singletons.getMagicDb().getVariantCards().getMaxPrintCount(card.getName()); int maxCntPictures = db.getMaxPrintCount(card.getName());
hasManyPictures = maxCntPictures > 1; hasManyPictures = maxCntPictures > 1;
} }
@@ -336,11 +339,11 @@ public class ImageCache {
} }
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) { public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) {
return getImageLocator(cp, backFace, includeSet, false); return getImageRelativePath(cp, backFace, includeSet, false);
} }
public static String getDownloadUrl(PaperCard cp, boolean backFace) { public static String getDownloadUrl(PaperCard cp, boolean backFace) {
return getImageLocator(cp, backFace, true, true); return getImageRelativePath(cp, backFace, true, true);
} }
public static String toMWSFilename(String in) { public static String toMWSFilename(String in) {

View File

@@ -1,23 +0,0 @@
package forge;
import forge.Dependencies.ImageCacheMethods;
import forge.item.InventoryItem;
import forge.properties.NewConstants;
public class ImageCacheProvider implements ImageCacheMethods {
@Override
public String getImageKey(InventoryItem cp, boolean altState) {
return ImageCache.getImageKey(cp, altState);
}
@Override
public String getTokenKey(String imageName) {
return ImageCache.getTokenImageKey(imageName);
}
@Override
public String getMorphImage() {
return NewConstants.CACHE_MORPH_IMAGE_FILE;
}
}

View File

@@ -26,23 +26,23 @@ final class ImageLoader extends CacheLoader<String, BufferedImage> {
final String path; final String path;
final String filename; final String filename;
if (key.startsWith(ImageCache.TOKEN_PREFIX)) { if (key.startsWith(ImageKeys.TOKEN_PREFIX)) {
filename = key.substring(ImageCache.TOKEN_PREFIX.length()); filename = key.substring(ImageKeys.TOKEN_PREFIX.length());
path = NewConstants.CACHE_TOKEN_PICS_DIR; path = NewConstants.CACHE_TOKEN_PICS_DIR;
} else if (key.startsWith(ImageCache.ICON_PREFIX)) { } else if (key.startsWith(ImageKeys.ICON_PREFIX)) {
filename = key.substring(ImageCache.ICON_PREFIX.length()); filename = key.substring(ImageKeys.ICON_PREFIX.length());
path = NewConstants.CACHE_ICON_PICS_DIR; path = NewConstants.CACHE_ICON_PICS_DIR;
} else if (key.startsWith(ImageCache.BOOSTER_PREFIX)) { } else if (key.startsWith(ImageKeys.BOOSTER_PREFIX)) {
filename = key.substring(ImageCache.BOOSTER_PREFIX.length()); filename = key.substring(ImageKeys.BOOSTER_PREFIX.length());
path = NewConstants.CACHE_BOOSTER_PICS_DIR; path = NewConstants.CACHE_BOOSTER_PICS_DIR;
} else if (key.startsWith(ImageCache.FATPACK_PREFIX)) { } else if (key.startsWith(ImageKeys.FATPACK_PREFIX)) {
filename = key.substring(ImageCache.FATPACK_PREFIX.length()); filename = key.substring(ImageKeys.FATPACK_PREFIX.length());
path = NewConstants.CACHE_FATPACK_PICS_DIR; path = NewConstants.CACHE_FATPACK_PICS_DIR;
} else if (key.startsWith(ImageCache.PRECON_PREFIX)) { } else if (key.startsWith(ImageKeys.PRECON_PREFIX)) {
filename = key.substring(ImageCache.PRECON_PREFIX.length()); filename = key.substring(ImageKeys.PRECON_PREFIX.length());
path = NewConstants.CACHE_PRECON_PICS_DIR; path = NewConstants.CACHE_PRECON_PICS_DIR;
} else if (key.startsWith(ImageCache.TOURNAMENTPACK_PREFIX)) { } else if (key.startsWith(ImageKeys.TOURNAMENTPACK_PREFIX)) {
filename = key.substring(ImageCache.TOURNAMENTPACK_PREFIX.length()); filename = key.substring(ImageKeys.TOURNAMENTPACK_PREFIX.length());
path = NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR; path = NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR;
} else { } else {
filename = key; filename = key;

View File

@@ -24,6 +24,7 @@ import java.awt.image.BufferedImage;
import javax.swing.JPanel; import javax.swing.JPanel;
import forge.ImageCache; import forge.ImageCache;
import forge.ImageKeys;
import forge.Singletons; import forge.Singletons;
import forge.card.CardCharacteristicName; import forge.card.CardCharacteristicName;
import forge.game.card.Card; import forge.game.card.Card;
@@ -88,7 +89,7 @@ public final class CardPicturePanel extends JPanel {
if (displayed instanceof InventoryItem) { if (displayed instanceof InventoryItem) {
InventoryItem item = (InventoryItem) displayed; InventoryItem item = (InventoryItem) displayed;
image = ImageCache.getOriginalImage(ImageCache.getImageKey(item, false), true); image = ImageCache.getOriginalImage(ImageKeys.getImageKey(item, false), true);
} else if (displayed instanceof Card) { } else if (displayed instanceof Card) {
image = FImageUtil.getImage((Card)displayed); image = FImageUtil.getImage((Card)displayed);

View File

@@ -103,7 +103,6 @@ public final class NewConstants {
public static final String CACHE_PRECON_PICS_DIR = _PICS_DIR + "precons/"; public static final String CACHE_PRECON_PICS_DIR = _PICS_DIR + "precons/";
public static final String CACHE_TOURNAMENTPACK_PICS_DIR = _PICS_DIR + "tournamentpacks/"; public static final String CACHE_TOURNAMENTPACK_PICS_DIR = _PICS_DIR + "tournamentpacks/";
public static final String QUEST_CARD_PRICE_FILE = DB_DIR + "all-prices.txt"; public static final String QUEST_CARD_PRICE_FILE = DB_DIR + "all-prices.txt";
public static final String CACHE_MORPH_IMAGE_FILE = "morph";
public static final String[] PROFILE_DIRS = { public static final String[] PROFILE_DIRS = {
USER_DIR, USER_DIR,

View File

@@ -6,7 +6,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import forge.ImageCache; import forge.ImageKeys;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.io.DeckSerializer; import forge.deck.io.DeckSerializer;
import forge.properties.NewConstants; import forge.properties.NewConstants;
@@ -59,7 +59,7 @@ public class QuestChallengeReader extends StorageReaderFolder<QuestEventChalleng
qc.setName(qc.getTitle()); // Challenges have unique titles qc.setName(qc.getTitle()); // Challenges have unique titles
qc.setDifficulty(QuestEventDifficulty.fromString(sectionMeta.get("Difficulty"))); qc.setDifficulty(QuestEventDifficulty.fromString(sectionMeta.get("Difficulty")));
qc.setDescription(sectionMeta.get("Description")); qc.setDescription(sectionMeta.get("Description"));
qc.setIconImageKey(ImageCache.ICON_PREFIX + sectionMeta.get("Icon")); qc.setIconImageKey(ImageKeys.ICON_PREFIX + sectionMeta.get("Icon"));
// Deck // Deck
qc.setEventDeck(Deck.fromSections(contents)); qc.setEventDeck(Deck.fromSections(contents));

View File

@@ -5,7 +5,7 @@ import java.io.FilenameFilter;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import forge.ImageCache; import forge.ImageKeys;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.io.DeckSerializer; import forge.deck.io.DeckSerializer;
import forge.quest.QuestEvent; import forge.quest.QuestEvent;
@@ -33,7 +33,7 @@ public class QuestDuelReader extends StorageReaderFolder<QuestEventDuel> {
qc.setDifficulty(QuestEventDifficulty.fromString(sectionMeta.get("Difficulty"))); qc.setDifficulty(QuestEventDifficulty.fromString(sectionMeta.get("Difficulty")));
qc.setDescription(sectionMeta.get("Description")); qc.setDescription(sectionMeta.get("Description"));
qc.setCardReward(sectionMeta.get("Card Reward")); qc.setCardReward(sectionMeta.get("Card Reward"));
qc.setIconImageKey(ImageCache.ICON_PREFIX + sectionMeta.get("Icon")); qc.setIconImageKey(ImageKeys.ICON_PREFIX + sectionMeta.get("Icon"));
// Deck // Deck
qc.setEventDeck(Deck.fromSections(contents)); qc.setEventDeck(Deck.fromSections(contents));

View File

@@ -17,8 +17,6 @@
*/ */
package forge.view; package forge.view;
import forge.ImageCacheProvider;
import forge.PreferencesProvider; import forge.PreferencesProvider;
import forge.Singletons; import forge.Singletons;
import forge.net.FServer; import forge.net.FServer;
@@ -38,7 +36,6 @@ public final class Main {
System.setProperty("sun.java2d.d3d", "false"); System.setProperty("sun.java2d.d3d", "false");
forge.Dependencies.preferences = new PreferencesProvider(); forge.Dependencies.preferences = new PreferencesProvider();
forge.Dependencies.imagecache = new ImageCacheProvider();
// Start splash screen first, then data models, then controller. // Start splash screen first, then data models, then controller.
if (args.length == 0) { if (args.length == 0) {