step one in separating user from program data

- define user/program/cache directories in NewConstants
- use directories where applicable
- merge lang and properties into constants
- create separate image lists for sealed products
- update howto document
- allow alternate file extensions for images
- a whole bunch of code cleanup
This commit is contained in:
myk
2013-03-08 02:41:44 +00:00
parent 58c936bf04
commit 7ef0f234df
232 changed files with 1300 additions and 3741 deletions

View File

@@ -42,8 +42,8 @@ import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.replacement.ReplaceMoved;
import forge.card.replacement.ReplacementEffect;
import forge.card.replacement.ReplacementResult;
@@ -58,8 +58,8 @@ import forge.card.trigger.TriggerType;
import forge.card.trigger.ZCTrigger;
import forge.game.GameActionUtil;
import forge.game.GlobalRuleChange;
import forge.game.event.CounterAddedEvent;
import forge.game.event.CardEquippedEvent;
import forge.game.event.CounterAddedEvent;
import forge.game.event.CounterRemovedEvent;
import forge.game.event.SetTappedEvent;
import forge.game.phase.Combat;

View File

@@ -17,7 +17,6 @@
*/
package forge;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -39,7 +38,6 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiDisplayUtil;
import forge.item.IPaperCard;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
@@ -131,7 +129,7 @@ public final class CardUtil {
final String set = card.getCurSetCode();
CardInSet neededSet = card.getRules().getEditionInfo(set);
final int cntPictures = neededSet == null ? 1 : neededSet.getCopiesCount();
return CardUtil.buildFilename(card.getName(), card.getCurSetCode(), card.getRandomPicture(), cntPictures, token);
return CardUtil.buildFilename(GuiDisplayUtil.cleanString(card.getName()), card.getCurSetCode(), card.getRandomPicture(), cntPictures, token);
}
/**
@@ -146,7 +144,7 @@ public final class CardUtil {
final int maxIndex = cr.getEditionInfo(card.getEdition()).getCopiesCount();
// picture is named AssaultBattery.full.jpg
String imageName = cr.getSplitType() != CardSplitType.Split ? card.getName() : buildSplitCardFilename(cr);
return CardUtil.buildFilename(imageName, card.getEdition(), card.getArtIndex(), maxIndex, false);
return CardUtil.buildFilename(GuiDisplayUtil.cleanString(imageName), card.getEdition(), card.getArtIndex(), maxIndex, false);
}
public static String buildSplitCardFilename(CardRules cr) {
@@ -164,68 +162,18 @@ public final class CardUtil {
*/
public static String buildFilename(final IPaperCard card, final String nameToUse) {
final int maxIndex = card.getRules().getEditionInfo(card.getEdition()).getCopiesCount();
return CardUtil.buildFilename(nameToUse, card.getEdition(), card.getArtIndex(), maxIndex, false);
return CardUtil.buildFilename(GuiDisplayUtil.cleanString(nameToUse), card.getEdition(), card.getArtIndex(), maxIndex, false);
}
private static String buildFilename(final String cardName, final String setName, final int artIndex,
public static String buildFilename(final String cleanCardName, final String setName, final int artIndex,
final int artIndexMax, final boolean isToken) {
final File path = ForgeProps.getFile(isToken ? NewConstants.IMAGE_TOKEN : NewConstants.IMAGE_BASE);
final String nn = artIndexMax > 1 ? Integer.toString(artIndex + 1) : "";
final String cleanCardName = GuiDisplayUtil.cleanString(cardName);
File f = null;
if (StringUtils.isNotBlank(setName)) {
final String mwsCardName = GuiDisplayUtil.cleanStringMWS(cardName);
// First, try 3 letter set code with MWS filename format
final String mwsSet3 = String.format("%s/%s%s.full", setName, mwsCardName, nn);
f = new File(path, mwsSet3 + ".jpg");
if (f.exists()) {
return mwsSet3;
}
// Second, try 2 letter set code with MWS filename format
final String mwsSet2 = String.format("%s/%s%s.full", Singletons.getModel().getEditions().getCode2ByCode(setName), mwsCardName, nn);
f = new File(path, mwsSet2 + ".jpg");
if (f.exists()) {
return mwsSet2;
}
// Third, try 3 letter set code with Forge filename format
final String forgeSet3 = String.format("%s/%s%s", setName, cleanCardName, nn);
f = new File(path, forgeSet3 + ".jpg");
if (f.exists()) {
return forgeSet3;
}
}
// Last, give up with set images, go with the old picture type
final String forgePlain = String.format("%s%s", cleanCardName, nn);
f = new File(path, forgePlain + ".jpg");
if (f.exists()) {
return forgePlain;
}
// give up with art index
f = new File(path, cleanCardName + ".jpg");
if (f.exists()) {
return cleanCardName;
}
// if still no file, download if option enabled?
return "none";
return String.format("%s%s%s%s.full",
isToken ? ImageCache.TOKEN_PREFIX : "",
StringUtils.isBlank(setName) ? "" : setName + "/",
cleanCardName,
artIndexMax <= 1 ? "" : String.valueOf(artIndex + 1));
}
/**
* <p>
* getShortColorsString.
* </p>
*
* @param colors
* a {@link java.util.ArrayList} object.
* @return a {@link java.lang.String} object.
*/
public static String getShortColorsString(final ArrayList<String> colors) {
String colorDesc = "";
for (final String col : colors) {
@@ -412,7 +360,7 @@ public final class CardUtil {
ret.setName("");
ret.setType(types);
ret.setImageFilename(NewConstants.MORPH_IMAGE_FILE_NAME);
ret.setImageFilename(NewConstants.CACHE_MORPH_IMAGE_FILE);
return ret;
}

View File

@@ -22,9 +22,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
/**
* <p>
* Constant interface.
@@ -34,9 +31,6 @@ import forge.properties.NewConstants;
* @version $Id$
*/
public final class Constant {
/** Constant <code>ProgramName="Forge - http://cardforge.org"</code>. */
public static final String PROGRAM_NAME = "Forge - " + ForgeProps.getProperty(NewConstants.CARDFORGE_URL);
// used to pass information between the GUI screens
/**
* The Class Runtime.

View File

@@ -19,6 +19,7 @@ package forge;
import java.awt.image.BufferedImage;
import java.util.concurrent.ExecutionException;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
import com.google.common.cache.LoadingCache;
@@ -27,6 +28,7 @@ import com.mortennobel.imagescaling.ResampleOp;
import forge.gui.GuiDisplayUtil;
import forge.item.InventoryItem;
import forge.properties.ForgePreferences.FPref;
import forge.properties.NewConstants;
/**
* This class stores ALL card images in a cache with soft values. this means
@@ -43,18 +45,17 @@ import forge.properties.ForgePreferences.FPref;
* @version $Id$
*/
public class ImageCache {
/** Constant <code>imageCache</code>. */
static final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
/** Constant <code>FULL_SIZE</code>. */
public static final String SEALED_PRODUCT = "sealed://";
public static final String TOKEN = "token://";
// short prefixes to save memory
public static final String TOKEN_PREFIX = "t:";
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:";
static private final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
public static BufferedImage getImage(final Card card, final int width, final int height) {
//SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
//System.out.printf("%s - load '%s' (%d x %d)\n", sdf.format(new Date()), card.getImageFilename(), width, height );
final String key = card.canBeShownTo(Singletons.getControl().getPlayer()) ? ImageCache.getKey(card) : "Morph";
final String key = card.canBeShownTo(Singletons.getControl().getPlayer()) ? ImageCache.getKey(card) : NewConstants.CACHE_MORPH_IMAGE_FILE;
return scaleImage(key, width, height);
}
@@ -70,12 +71,6 @@ public class ImageCache {
return scaleImage(key, width, height);
}
/**
* TODO: Write javadoc for this method.
* @param original
* @param scale
* @return
*/
private static BufferedImage scaleImage(String key, final int width, final int height) {
if (3 > width || 3 > height) {
// picture too small; return a blank
@@ -118,10 +113,6 @@ public class ImageCache {
/**
* Returns the Image corresponding to the key.
*
* @param key
* a {@link java.lang.String} object.
* @return a {@link java.awt.image.BufferedImage} object.
*/
private static BufferedImage getImage(final String key) {
try {
@@ -140,14 +131,10 @@ public class ImageCache {
/**
* Returns the map key for a card, without any suffixes for the image size.
*
* @param card
* a {@link forge.Card} object.
* @return a {@link java.lang.String} object.
*/
public static String getKey(final Card card) {
if ((card.isToken() && !card.isCopiedToken()) || card.isFaceDown()) {
return ImageCache.TOKEN + GuiDisplayUtil.cleanString(card.getImageFilename());
return ImageCache.TOKEN_PREFIX + GuiDisplayUtil.cleanString(card.getImageFilename());
}
return card.getImageFilename(); // key;
}
@@ -155,5 +142,4 @@ public class ImageCache {
public static String getKey(final InventoryItem ii) {
return ii.getImageFilename();
}
}

View File

@@ -3,70 +3,76 @@ package forge;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.google.common.cache.CacheLoader;
import forge.error.BugReporter;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
/**
* TODO: Write javadoc for this type.
*
*/
final class ImageLoader extends CacheLoader<String, BufferedImage> {
// image file extensions for various formats in order of likelihood
private static final String[] _FILE_EXTENSIONS = { ".jpg", ".png" };
@Override
public BufferedImage load(String key) {
// original
File path;
String filename;
if (key.startsWith(ImageCache.TOKEN)) {
filename = key.substring(ImageCache.TOKEN.length());
path = ForgeProps.getFile(NewConstants.IMAGE_TOKEN);
} else if (key.startsWith(ImageCache.SEALED_PRODUCT)) {
filename = key.substring(ImageCache.SEALED_PRODUCT.length());
path = ForgeProps.getFile(NewConstants.IMAGE_SEALED_PRODUCT);
final String path;
final String filename;
if (key.startsWith(ImageCache.TOKEN_PREFIX)) {
filename = key.substring(ImageCache.TOKEN_PREFIX.length());
path = NewConstants.CACHE_TOKEN_PICS_DIR;
} else if (key.startsWith(ImageCache.BOOSTER_PREFIX)) {
filename = key.substring(ImageCache.BOOSTER_PREFIX.length());
path = NewConstants.CACHE_BOOSTER_PICS_DIR;
} else if (key.startsWith(ImageCache.FATPACK_PREFIX)) {
filename = key.substring(ImageCache.FATPACK_PREFIX.length());
path = NewConstants.CACHE_FATPACK_PICS_DIR;
} else if (key.startsWith(ImageCache.PRECON_PREFIX)) {
filename = key.substring(ImageCache.PRECON_PREFIX.length());
path = NewConstants.CACHE_PRECON_PICS_DIR;
} else if (key.startsWith(ImageCache.TOURNAMENTPACK_PREFIX)) {
filename = key.substring(ImageCache.TOURNAMENTPACK_PREFIX.length());
path = NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR;
} else {
filename = key;
path = ForgeProps.getFile(NewConstants.IMAGE_BASE);
path = NewConstants.CACHE_CARD_PICS_DIR;
}
File file = null;
boolean isPng = filename.endsWith(".png");
final String fName = isPng || filename.endsWith(".jpg") ? filename : filename + ".jpg";
file = new File(path, fName);
if (!file.exists()) {
// DEBUG
//System.out.println("File not found, no image created: "
//+ file);
return null;
BufferedImage ret = _findFile(key, path, filename);
// try without set prefix (if any)
if (null == ret && filename.contains("/")) {
ret = _findFile(key, path, filename.substring(filename.indexOf('/') + 1));
}
final BufferedImage image = getImage(file);
//ImageCache.IMAGE_CACHE.put(key, image);
return image;
if (null == ret) {
System.out.println("File not found, no image created: " + key);
}
return ret;
}
/**
* <p>
* getImage.
* </p>
*
* @param file a {@link java.io.File} object.
* @return a {@link java.awt.image.BufferedImage} object.
* @throws IOException Signals that an I/O exception has occurred.
*/
public static BufferedImage getImage(final File file) {
//System.out.printf("Loading from disk: %s\n", file.toString());
BufferedImage image;
//int format = useAlpha ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB;
BufferedImage image = null;;
try {
image = ImageIO.read(file);
} catch (IOException ex) {
BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " ");
return null;
}
return image;
}
private static BufferedImage _findFile(String key, String path, String filename) {
for (String ext : _FILE_EXTENSIONS) {
File file = new File(path, filename + ext);
if (file.exists()) {
System.out.println(String.format("Found %s at: %s", key, file.getAbsolutePath()));
return getImage(file);
}
}
return null;
}
}

View File

@@ -25,50 +25,22 @@ import forge.view.FView;
* Provides global/static access to singleton instances.
*/
public final class Singletons {
private static FModel model = null;
private static FView view = null;
private static FModel model = null;
private static FView view = null;
private static FControl control = null;
/**
* Do not instantiate.
*/
private Singletons() {
// This line intentionally left blank.
}
/** @return {@link forge.model.FModel} */
public static FModel getModel() {
return Singletons.model;
}
/** @param model0 &emsp; {@link forge.model.FModel} */
public static void setModel(final FModel model0) {
Singletons.model = model0;
}
/**
* IMPORTANT - does not return view frame! Must call
* getFrame() from FView for that.
* @return {@link forge.model.JFrame} */
public static FView getView() {
return Singletons.view;
}
*/
public static FView getView() { return view; }
public static FControl getControl() { return control; }
public static FModel getModel() { return model; }
/** @param view0 &emsp; {@link forge.model.FView} */
public static void setView(final FView view0) {
Singletons.view = view0;
}
public static void setModel (FModel model0) { model = model0; }
public static void setView (FView view0) { view = view0; }
public static void setControl(FControl control0) { control = control0; }
/** @return {@link forge.control.FControl} */
public static FControl getControl() {
return Singletons.control;
}
/** @param control0 &emsp; {@link forge.control.FControl} */
public static void setControl(final FControl control0) {
Singletons.control = control0;
}
// disallow instantiation
private Singletons() { }
}

View File

@@ -28,9 +28,9 @@ import com.esotericsoftware.minlog.Log;
import forge.card.replacement.ReplacementEffect;
import forge.card.spellability.SpellAbility;
import forge.card.staticability.StaticAbility;
import forge.game.GlobalRuleChange;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.game.GlobalRuleChange;
/**
* <p>

View File

@@ -2,6 +2,7 @@ package forge.card;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;

View File

@@ -23,9 +23,9 @@ import java.util.TreeMap;
import org.apache.commons.lang3.StringUtils;
import forge.card.mana.ManaCostShard;
import forge.card.mana.IParserManaCost;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostShard;
/**
@@ -87,10 +87,10 @@ public class CardRulesReader {
public final CardRules getCard() {
CardAiHints cah = new CardAiHints(removedFromAIDecks, removedFromRandomDecks, hints, needs );
faces[0].assignMissingFields();
if ( null != faces[1] ) faces[1].assignMissingFields();
if (null != faces[1]) faces[1].assignMissingFields();
final CardRules result = new CardRules(faces, altMode, cah, sets);
result.setDlUrls(pictureUrl);
if ( StringUtils.isNotBlank(handLife))
if (StringUtils.isNotBlank(handLife))
result.setVanguardProperties(handLife);
return result;
}
@@ -114,13 +114,10 @@ public class CardRulesReader {
* the line
*/
public final void parseLine(final String line) {
int colonPos = line.indexOf(':');
String key = colonPos > 0 ? line.substring(0, colonPos) : line;
String value = colonPos > 0 ? line.substring(1+colonPos).trim() : null;
switch(key.charAt(0)) {
case 'A':
if ("A".equals(key))

View File

@@ -20,6 +20,7 @@ package forge.card;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import forge.game.GameFormat;
import forge.util.FileSection;
import forge.util.storage.StorageReaderFile;

View File

@@ -21,9 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import forge.Card;
import forge.card.cost.Cost;
import forge.card.spellability.AbilitySub;
import forge.card.spellability.SpellAbility;

View File

@@ -4,7 +4,99 @@ package forge.card.ability;
import java.util.Map;
import java.util.TreeMap;
import forge.card.ability.ai.*;
import forge.card.ability.ai.AddPhaseAi;
import forge.card.ability.ai.AddTurnAi;
import forge.card.ability.ai.AlwaysPlayAi;
import forge.card.ability.ai.AnimateAi;
import forge.card.ability.ai.AnimateAllAi;
import forge.card.ability.ai.AttachAi;
import forge.card.ability.ai.BondAi;
import forge.card.ability.ai.CanPlayAsDrawbackAi;
import forge.card.ability.ai.CannotPlayAi;
import forge.card.ability.ai.ChangeZoneAi;
import forge.card.ability.ai.ChangeZoneAllAi;
import forge.card.ability.ai.CharmAi;
import forge.card.ability.ai.ChooseCardAi;
import forge.card.ability.ai.ChooseCardNameAi;
import forge.card.ability.ai.ChooseColorAi;
import forge.card.ability.ai.ChoosePlayerAi;
import forge.card.ability.ai.ChooseSourceAi;
import forge.card.ability.ai.ChooseTypeAi;
import forge.card.ability.ai.ClashAi;
import forge.card.ability.ai.CloneAi;
import forge.card.ability.ai.ControlExchangeAi;
import forge.card.ability.ai.ControlGainAi;
import forge.card.ability.ai.CopyPermanentAi;
import forge.card.ability.ai.CounterAi;
import forge.card.ability.ai.CountersMoveAi;
import forge.card.ability.ai.CountersProliferateAi;
import forge.card.ability.ai.CountersPutAi;
import forge.card.ability.ai.CountersPutAllAi;
import forge.card.ability.ai.CountersRemoveAi;
import forge.card.ability.ai.DamageAllAi;
import forge.card.ability.ai.DamageDealAi;
import forge.card.ability.ai.DamageEachAi;
import forge.card.ability.ai.DamagePreventAi;
import forge.card.ability.ai.DamagePreventAllAi;
import forge.card.ability.ai.DebuffAi;
import forge.card.ability.ai.DebuffAllAi;
import forge.card.ability.ai.DelayedTriggerAi;
import forge.card.ability.ai.DestroyAi;
import forge.card.ability.ai.DestroyAllAi;
import forge.card.ability.ai.DigAi;
import forge.card.ability.ai.DigUntilAi;
import forge.card.ability.ai.DiscardAi;
import forge.card.ability.ai.DrainManaAi;
import forge.card.ability.ai.DrawAi;
import forge.card.ability.ai.EffectAi;
import forge.card.ability.ai.EncodeAi;
import forge.card.ability.ai.EndTurnAi;
import forge.card.ability.ai.FightAi;
import forge.card.ability.ai.FogAi;
import forge.card.ability.ai.GameLossAi;
import forge.card.ability.ai.GameWinAi;
import forge.card.ability.ai.LifeExchangeAi;
import forge.card.ability.ai.LifeGainAi;
import forge.card.ability.ai.LifeLoseAi;
import forge.card.ability.ai.LifeSetAi;
import forge.card.ability.ai.MillAi;
import forge.card.ability.ai.MustAttackAi;
import forge.card.ability.ai.MustBlockAi;
import forge.card.ability.ai.PeekAndRevealAi;
import forge.card.ability.ai.PermanentCreatureAi;
import forge.card.ability.ai.PermanentNoncreatureAi;
import forge.card.ability.ai.PhasesAi;
import forge.card.ability.ai.PlayAi;
import forge.card.ability.ai.PoisonAi;
import forge.card.ability.ai.ProtectAi;
import forge.card.ability.ai.ProtectAllAi;
import forge.card.ability.ai.PumpAi;
import forge.card.ability.ai.PumpAllAi;
import forge.card.ability.ai.RearrangeTopOfLibraryAi;
import forge.card.ability.ai.RegenerateAi;
import forge.card.ability.ai.RegenerateAllAi;
import forge.card.ability.ai.RemoveFromCombatAi;
import forge.card.ability.ai.RepeatAi;
import forge.card.ability.ai.RepeatEachAi;
import forge.card.ability.ai.RestartGameAi;
import forge.card.ability.ai.RevealAi;
import forge.card.ability.ai.RevealHandAi;
import forge.card.ability.ai.SacrificeAi;
import forge.card.ability.ai.SacrificeAllAi;
import forge.card.ability.ai.ScryAi;
import forge.card.ability.ai.SetStateAi;
import forge.card.ability.ai.SetStateAllAi;
import forge.card.ability.ai.ShuffleAi;
import forge.card.ability.ai.StoreSVarAi;
import forge.card.ability.ai.TapAi;
import forge.card.ability.ai.TapAllAi;
import forge.card.ability.ai.TapOrUntapAi;
import forge.card.ability.ai.TapOrUntapAllAi;
import forge.card.ability.ai.TokenAi;
import forge.card.ability.ai.TwoPilesAi;
import forge.card.ability.ai.UnattachAllAi;
import forge.card.ability.ai.UntapAi;
import forge.card.ability.ai.UntapAllAi;
import forge.card.ability.effects.*;
import forge.util.ReflectionUtil;

View File

@@ -19,10 +19,10 @@ package forge.card.ability.ai;
import java.util.List;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.game.player.AIPlayer;
import forge.game.player.Player;

View File

@@ -13,9 +13,9 @@ import com.google.common.base.Predicates;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.CardPredicates.Presets;
import forge.CardUtil;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.card.ability.SpellAbilityAi;

View File

@@ -17,8 +17,8 @@
*/
package forge.card.ability.ai;
import forge.card.spellability.SpellAbility;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.game.player.AIPlayer;
/**

View File

@@ -12,10 +12,10 @@ import forge.Card;
import forge.CardCharacteristicName;
import forge.CardLists;
import forge.CardPredicates;
import forge.CardPredicates.Presets;
import forge.Constant;
import forge.GameEntity;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.card.ability.SpellAbilityAi;
@@ -28,10 +28,10 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.game.GlobalRuleChange;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilBlock;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost;
import forge.game.ai.ComputerUtilMana;
import forge.game.phase.Combat;

View File

@@ -5,7 +5,9 @@ import java.util.List;
import java.util.Random;
import org.apache.commons.lang.math.RandomUtils;
import forge.card.ability.SpellAbilityAi;import forge.card.ability.effects.CharmEffect;
import forge.card.ability.SpellAbilityAi;
import forge.card.ability.effects.CharmEffect;
import forge.card.spellability.AbilitySub;
import forge.card.spellability.SpellAbility;
import forge.game.player.AIPlayer;

View File

@@ -24,7 +24,6 @@ import java.util.Map;
import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;

View File

@@ -8,8 +8,8 @@ import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;

View File

@@ -22,7 +22,6 @@ import java.util.List;
import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.CounterType;
import forge.game.ai.ComputerUtilCard;

View File

@@ -22,9 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import forge.Card;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityAi;

View File

@@ -17,8 +17,8 @@
*/
package forge.card.ability.ai;
import forge.card.spellability.SpellAbility;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.game.player.AIPlayer;
/**

View File

@@ -10,8 +10,8 @@ import forge.card.cost.Cost;
import forge.card.spellability.AbilitySub;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost;
import forge.game.ai.ComputerUtilMana;
import forge.game.phase.PhaseType;

View File

@@ -3,6 +3,7 @@ package forge.card.ability.ai;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.common.base.Predicate;
import forge.Card;

View File

@@ -3,12 +3,13 @@ package forge.card.ability.ai;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityAi;
import forge.card.cost.Cost;

View File

@@ -12,9 +12,9 @@ import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtil;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
import forge.game.player.AIPlayer;

View File

@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;

View File

@@ -7,8 +7,8 @@ import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.CounterType;
import forge.CardPredicates.Presets;
import forge.CounterType;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;

View File

@@ -1,6 +1,7 @@
package forge.card.ability.ai;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.card.ability.AbilityUtils;

View File

@@ -4,8 +4,8 @@ import forge.Card;
import forge.Singletons;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCombat;
import forge.game.player.AIPlayer;
public class StoreSVarAi extends SpellAbilityAi {

View File

@@ -8,8 +8,8 @@ import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;

View File

@@ -8,8 +8,8 @@ import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;

View File

@@ -5,8 +5,8 @@ import java.util.Random;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityAi;
import forge.card.cost.Cost;

View File

@@ -18,8 +18,8 @@
package forge.card.ability.effects;
import java.util.ArrayList;
import forge.Card;
import forge.Card;
import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility;
import forge.card.staticability.StaticAbility;

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.Command;

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Predicates;
import forge.Card;

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.card.ability.AbilityFactory;
import forge.card.ability.SpellAbilityEffect;

View File

@@ -5,8 +5,8 @@ import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.CardType;
import forge.card.ability.SpellAbilityEffect;
import forge.card.cardfactory.CardFactoryUtil;

View File

@@ -12,8 +12,8 @@ import com.google.common.collect.Lists;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.CardRulesPredicates;
import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility;

View File

@@ -6,6 +6,7 @@ import java.util.Map;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import forge.Card;
import forge.card.ability.AbilityFactory;
import forge.card.ability.AbilityUtils;

View File

@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
@@ -20,8 +22,6 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import com.google.common.base.Predicate;
public class ChooseSourceEffect extends SpellAbilityEffect {
@Override
protected String getStackDescription(SpellAbility sa) {

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.card.ability.SpellAbilityEffect;

View File

@@ -14,8 +14,8 @@ import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect;
import forge.card.cost.Cost;
import forge.card.cost.CostPartMana;
import forge.card.cost.CostPart;
import forge.card.cost.CostPartMana;
import forge.card.mana.ManaCost;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;

View File

@@ -3,6 +3,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import forge.Card;
import forge.CardUtil;
import forge.Command;

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.Singletons;

View File

@@ -20,9 +20,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.card.ability.SpellAbilityEffect;
import forge.game.player.Player;
import forge.gui.GuiChoose;

View File

@@ -19,8 +19,8 @@ package forge.card.ability.effects;
import java.util.Arrays;
import java.util.List;
import forge.Card;
import forge.Card;
import forge.Singletons;
import forge.card.ability.AbilityFactory;
import forge.card.ability.AbilityUtils;

View File

@@ -2,6 +2,7 @@ package forge.card.ability.effects;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import forge.Card;

View File

@@ -1,12 +1,13 @@
package forge.card.ability.effects;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect;
import forge.card.cardfactory.CardFactoryUtil;

View File

@@ -17,7 +17,6 @@
*/
package forge.card.cardfactory;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -31,7 +30,6 @@ import forge.Color;
import forge.card.CardRules;
import forge.card.CardSplitType;
import forge.card.ICardFace;
import forge.card.ability.AbilityFactory;
import forge.card.cost.Cost;
import forge.card.mana.ManaCost;
import forge.card.replacement.ReplacementHandler;
@@ -46,7 +44,6 @@ import forge.game.player.Player;
import forge.gui.GuiUtils;
import forge.item.CardDb;
import forge.item.IPaperCard;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
/**
@@ -79,10 +76,10 @@ public class CardFactory {
*/
private final CardStorageReader reader;
public CardFactory(final File file) {
public CardFactory() {
GuiUtils.checkEDT("CardFactory$constructor", false);
reader = new CardStorageReader(ForgeProps.getFile(NewConstants.CARDSFOLDER), true);
reader = new CardStorageReader(NewConstants.CARD_DATA_DIR.defaultLoc, true);
try {
// this fills in our map of card names to Card instances.
final List<CardRules> listCardRules = reader.loadCards();

View File

@@ -7,7 +7,6 @@ import javax.swing.JOptionPane;
import forge.Card;
import forge.Command;
import forge.Singletons;
import forge.card.cost.Cost;
import forge.card.mana.ManaCost;

View File

@@ -19,6 +19,7 @@ package forge.card.cardfactory;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import com.google.common.base.Predicate;
@@ -27,7 +28,6 @@ import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardCharacteristicName;
import forge.CardLists;
import forge.CardPredicates;
import forge.CardPredicates.Presets;

View File

@@ -22,7 +22,6 @@ import java.util.List;
import javax.swing.JOptionPane;
import forge.Card;
import forge.CardLists;
import forge.Command;
import forge.Singletons;

View File

@@ -42,8 +42,8 @@ import forge.card.cost.Cost;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.control.input.Input;
import forge.control.input.InputPayManaSimple;
import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputPayManaSimple;
import forge.game.GameState;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;

View File

@@ -31,7 +31,6 @@ import com.google.common.collect.Lists;
import forge.Card;
import forge.CardCharacteristicName;
import forge.CardLists;
import forge.CardPredicates;
import forge.CardPredicates.Presets;
@@ -46,9 +45,9 @@ import forge.card.ability.AbilityFactory;
import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.card.cost.Cost;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostParser;
import forge.card.mana.ManaCostShard;
import forge.card.mana.ManaCost;
import forge.card.replacement.ReplacementEffect;
import forge.card.replacement.ReplacementHandler;
import forge.card.replacement.ReplacementLayer;
@@ -81,7 +80,6 @@ import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.match.CMatchUI;
import forge.util.Aggregates;
import forge.view.ButtonUtil;
/**

View File

@@ -82,10 +82,12 @@ public class CardStorageReader {
* if true, attempts to load cards from a zip file, if one
* exists.
*/
public CardStorageReader(final File theCardsFolder, final boolean useZip) {
public CardStorageReader(String cardDataDir, final boolean useZip) {
// These read data for lightweight classes.
this.rulesReader = new CardRulesReader();
File theCardsFolder = new File(cardDataDir);
if (!theCardsFolder.exists()) {
throw new RuntimeException("CardReader : constructor error -- file not found -- filename is "

View File

@@ -24,9 +24,9 @@ import java.util.regex.Pattern;
import forge.Card;
import forge.CounterType;
import forge.Singletons;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.mana.ManaCostParser;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import forge.util.TextUtil;

View File

@@ -23,10 +23,9 @@ import java.util.List;
import com.google.common.base.Predicate;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;
import forge.CardLists;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
import forge.control.input.Input;

View File

@@ -22,7 +22,6 @@ import java.util.Iterator;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;

View File

@@ -22,7 +22,6 @@ import java.util.Iterator;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;

View File

@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardUtil;
import forge.card.spellability.SpellAbility;

View File

@@ -20,7 +20,6 @@ package forge.card.cost;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CounterType;
import forge.Singletons;

View File

@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CounterType;
import forge.Singletons;

View File

@@ -23,7 +23,6 @@ import java.util.List;
import javax.swing.JOptionPane;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;

View File

@@ -21,9 +21,8 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
import forge.control.input.Input;

View File

@@ -23,7 +23,6 @@ import java.util.List;
import javax.swing.JOptionPane;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;

View File

@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates.Presets;
import forge.Singletons;

View File

@@ -20,7 +20,6 @@ package forge.card.cost;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates.Presets;
import forge.Singletons;

View File

@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import forge.Constant;
import forge.card.MagicColor;

View File

@@ -17,8 +17,8 @@
*/
package forge.card.mana;
import forge.card.MagicColor;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.util.BinaryUtil;
/**

View File

@@ -21,7 +21,6 @@ import java.util.ArrayList;
import forge.Card;
import forge.Singletons;
import forge.card.cost.Cost;
import forge.card.cost.CostPayment;
import forge.card.staticability.StaticAbility;

View File

@@ -21,9 +21,8 @@ import java.util.ArrayList;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.CardLists;
import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.cost.CostPayment;

View File

@@ -22,7 +22,6 @@ import java.util.List;
import java.util.Map;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;

View File

@@ -22,7 +22,6 @@ import java.util.List;
import java.util.Map;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;

View File

@@ -21,7 +21,6 @@ import java.util.HashMap;
import java.util.List;
import forge.Card;
import forge.game.player.Player;
/**

View File

@@ -25,7 +25,6 @@ import com.google.common.base.Supplier;
import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Command;

View File

@@ -24,9 +24,8 @@ import java.util.List;
import com.google.common.base.Predicate;
import forge.Card;
import forge.Singletons;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.control.input.Input;
@@ -34,7 +33,6 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil;
/**

View File

@@ -23,10 +23,9 @@ import java.util.HashMap;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.CardLists;
import forge.CardUtil;
import forge.Singletons;
import forge.StaticEffect;
import forge.StaticEffects;
import forge.card.CardType;

View File

@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Map;
import forge.Card;
import forge.CardLists;
import forge.CardUtil;
import forge.Singletons;

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -20,9 +20,7 @@ package forge.card.trigger;
import java.util.List;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;
/**

View File

@@ -21,7 +21,6 @@ import java.util.List;
import java.util.Map;
import forge.Card;
import forge.GameEntity;
import forge.card.spellability.SpellAbility;

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Map;
import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityFactory;
@@ -40,9 +39,9 @@ import forge.game.GlobalRuleChange;
import forge.game.ai.ComputerUtil;
import forge.game.phase.PhaseType;
import forge.game.player.AIPlayer;
//import forge.util.TextUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
//import forge.util.TextUtil;
/**
* <p>

View File

@@ -19,7 +19,6 @@ package forge.card.trigger;
import java.util.Map;
import forge.Card;
import forge.card.spellability.SpellAbility;

View File

@@ -17,9 +17,8 @@
*/
package forge.card.trigger;
import forge.Singletons;
import forge.Card;
import forge.Singletons;
import forge.card.cost.Cost;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance;

View File

@@ -46,7 +46,6 @@ import forge.gui.match.VMatchUI;
import forge.gui.match.controllers.CDock;
import forge.gui.toolbox.CardFaceSymbols;
import forge.gui.toolbox.FSkin;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO;
@@ -152,12 +151,11 @@ public enum FControl {
// Does not use progress bar, due to be deprecated with battlefield refactoring.
CardFaceSymbols.loadImages();
this.shortcuts = KeyboardShortcuts.attachKeyboardShortcuts();
this.display = FView.SINGLETON_INSTANCE.getLpnDocument();
// Preload quest data if present
final File dirQuests = ForgeProps.getFile(NewConstants.Quest.DATA_DIR);
final File dirQuests = new File(NewConstants.QUEST_SAVE_DIR);
final String questname = Singletons.getModel().getQuestPreferences().getPreference(QPref.CURRENT_QUEST);
final File data = new File(dirQuests.getPath(), questname);
if (data.exists()) {

View File

@@ -22,7 +22,6 @@ import java.util.List;
import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardPredicates;
import forge.Singletons;
import forge.game.phase.CombatUtil;

View File

@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.control.FControl;
import forge.game.GameState;

View File

@@ -19,7 +19,6 @@ package forge.control.input;
import forge.Card;
import forge.Singletons;
//import forge.Singletons;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.spellability.SpellAbility;
import forge.game.GameState;
@@ -27,6 +26,7 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil;
//import forge.Singletons;
//pays the cost of a card played from the player's hand
//the card is removed from the players hand if the cost is paid

View File

@@ -6,10 +6,10 @@ import forge.card.cost.CostPartMana;
import forge.card.cost.CostPayment;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.spellability.SpellAbility;
import forge.game.GameState;
import forge.game.zone.ZoneType;
import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil;
import forge.game.GameState;
public class InputPayManaX extends InputPayManaBase {
private static final long serialVersionUID = -6900234444347364050L;

View File

@@ -20,7 +20,6 @@ package forge.control.input;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.Command;
import forge.Singletons;

View File

@@ -20,7 +20,6 @@ package forge.control.input;
import java.util.List;
import forge.Card;
import forge.CardLists;
import forge.Command;
import forge.Singletons;

View File

@@ -22,6 +22,7 @@ import java.io.File;
import forge.deck.io.DeckGroupSerializer;
import forge.deck.io.DeckSerializer;
import forge.deck.io.OldDeckParser;
import forge.properties.NewConstants;
import forge.util.storage.IStorage;
import forge.util.storage.StorageImmediatelySerialized;
@@ -42,18 +43,18 @@ public class CardCollections {
*
* @param file the file
*/
public CardCollections(final File file) {
this.constructed = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(file, "constructed"), true));
this.draft = new StorageImmediatelySerialized<DeckGroup>(new DeckGroupSerializer(new File(file, "draft")));
this.sealed = new StorageImmediatelySerialized<DeckGroup>(new DeckGroupSerializer(new File(file, "sealed")));
this.cube = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(file, "cube")));
this.scheme = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(file, "scheme")));
this.plane = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(file, "plane")));
public CardCollections() {
this.constructed = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(NewConstants.DECK_CONSTRUCTED_DIR), true));
this.draft = new StorageImmediatelySerialized<DeckGroup>(new DeckGroupSerializer(new File(NewConstants.DECK_DRAFT_DIR)));
this.sealed = new StorageImmediatelySerialized<DeckGroup>(new DeckGroupSerializer(new File(NewConstants.DECK_SEALED_DIR)));
this.cube = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(NewConstants.DECK_CUBE_DIR.defaultLoc)));
this.scheme = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(NewConstants.DECK_SCHEME_DIR)));
this.plane = new StorageImmediatelySerialized<Deck>(new DeckSerializer(new File(NewConstants.DECK_PLANE_DIR)));
System.out.printf("Read decks: %d constructed, %d sealed, %d draft, %d cubes, %d scheme, %d planar.%n", constructed.getCount(), sealed.getCount(), draft.getCount(), cube.getCount(), scheme.getCount(), plane.getCount());
// remove this after most people have been switched to new layout
final OldDeckParser oldParser = new OldDeckParser(file, this.constructed, this.draft, this.sealed, this.cube);
final OldDeckParser oldParser = new OldDeckParser(this.constructed, this.draft, this.sealed, this.cube);
oldParser.tryParse();
}

View File

@@ -22,7 +22,6 @@ import java.util.Map.Entry;
import java.util.NoSuchElementException;
import forge.Card;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.item.ItemPool;

View File

@@ -30,7 +30,6 @@ import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Function;

View File

@@ -9,6 +9,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import javax.swing.JList;
import javax.swing.JOptionPane;

Some files were not shown because too many files have changed in this diff Show More