mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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   {@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   {@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   {@link forge.control.FControl} */
|
||||
public static void setControl(final FControl control0) {
|
||||
Singletons.control = control0;
|
||||
}
|
||||
// disallow instantiation
|
||||
private Singletons() { }
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.CardPredicates;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package forge.card.ability.ai;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
import forge.CardLists;
|
||||
import forge.card.ability.AbilityUtils;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.card.ability.effects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -22,7 +22,6 @@ import java.util.List;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 "
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -22,7 +22,6 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.CardPredicates;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardUtil;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ package forge.card.cost;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.CounterType;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.CounterType;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
*/
|
||||
package forge.card.mana;
|
||||
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.ColorSet;
|
||||
import forge.card.MagicColor;
|
||||
import forge.util.BinaryUtil;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.game.player.Player;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -23,7 +23,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.CardUtil;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -20,9 +20,7 @@ package forge.card.trigger;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
/**
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.GameEntity;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -19,7 +19,6 @@ package forge.card.trigger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -20,7 +20,6 @@ package forge.control.input;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -20,7 +20,6 @@ package forge.control.input;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
|
||||
import forge.CardLists;
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user