mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
merge myk-separate-writable-data branch
This commit is contained in:
@@ -43,8 +43,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;
|
||||
@@ -59,8 +59,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;
|
||||
@@ -189,7 +189,6 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
private int semiPermanentAttackBoost = 0;
|
||||
private int semiPermanentDefenseBoost = 0;
|
||||
|
||||
private int randomPicture = 0;
|
||||
private int xManaCostPaid = 0;
|
||||
|
||||
private int multiKickerMagnitude = 0;
|
||||
@@ -255,9 +254,6 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
this.characteristicsMap.put(CardCharacteristicName.FaceDown, CardUtil.getFaceDownCharacteristic());
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
*/
|
||||
public void refreshUniqueNumber() {
|
||||
this.setUniqueNumber(Card.nextUniqueNumber++);
|
||||
}
|
||||
@@ -4539,29 +4535,6 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
return this.getNetAttack();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Setter for the field <code>randomPicture</code>.
|
||||
* </p>
|
||||
*
|
||||
* @param n
|
||||
* a int.
|
||||
*/
|
||||
public final void setRandomPicture(final int n) {
|
||||
this.randomPicture = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Getter for the field <code>randomPicture</code>.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public final int getRandomPicture() {
|
||||
return this.randomPicture;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* addMultiKickerMagnitude.
|
||||
@@ -8495,27 +8468,12 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
return CardDb.instance().getCard(this.getName()).getEdition();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setImageFilename.
|
||||
* </p>
|
||||
*
|
||||
* @param iFN
|
||||
* a {@link java.lang.String} object.
|
||||
*/
|
||||
public final void setImageFilename(final String iFN) {
|
||||
this.getCharacteristics().setImageFilename(iFN);
|
||||
public final void setImageKey(final String iFN) {
|
||||
this.getCharacteristics().setImageKey(iFN);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getImageFilename.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public final String getImageFilename() {
|
||||
return this.getCharacteristics().getImageFilename();
|
||||
public final String getImageKey() {
|
||||
return this.getCharacteristics().getImageKey();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,19 +17,13 @@
|
||||
*/
|
||||
package forge;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import forge.card.CardCharacteristics;
|
||||
import forge.card.CardInSet;
|
||||
import forge.card.CardRules;
|
||||
import forge.card.CardSplitType;
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.ability.AbilityUtils;
|
||||
import forge.card.ability.ApiType;
|
||||
@@ -38,76 +32,35 @@ import forge.card.spellability.AbilitySub;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* CardUtil class.
|
||||
* </p>
|
||||
*
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public final class CardUtil {
|
||||
/**
|
||||
* Do not instantiate.
|
||||
*/
|
||||
private CardUtil() {
|
||||
// This space intentionally left blank.
|
||||
// disable instantiation
|
||||
private CardUtil() { }
|
||||
|
||||
static final Map<String, String> colorMap;
|
||||
static {
|
||||
colorMap = new HashMap<String, String>();
|
||||
colorMap.put(Constant.Color.BLACK.toString(), "B");
|
||||
colorMap.put(Constant.Color.BLUE.toString(), "U");
|
||||
colorMap.put(Constant.Color.GREEN.toString(), "G");
|
||||
colorMap.put(Constant.Color.RED.toString(), "R");
|
||||
colorMap.put(Constant.Color.WHITE.toString(), "W");
|
||||
colorMap.put(Constant.Color.COLORLESS.toString(), "C");
|
||||
}
|
||||
|
||||
|
||||
// returns "G", longColor is Constant.Color.Green and the like
|
||||
/**
|
||||
* <p>
|
||||
* getShortColor.
|
||||
* </p>
|
||||
*
|
||||
* @param longColor
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public static String getShortColor(final String longColor) {
|
||||
final Map<String, String> map = new HashMap<String, String>();
|
||||
map.put(Constant.Color.BLACK.toString(), "B");
|
||||
map.put(Constant.Color.BLUE.toString(), "U");
|
||||
map.put(Constant.Color.GREEN.toString(), "G");
|
||||
map.put(Constant.Color.RED.toString(), "R");
|
||||
map.put(Constant.Color.WHITE.toString(), "W");
|
||||
|
||||
final Object o = map.get(longColor);
|
||||
if (o == null) {
|
||||
if (!colorMap.containsKey(longColor)) {
|
||||
throw new RuntimeException("CardUtil : getShortColor() invalid argument - " + longColor);
|
||||
}
|
||||
|
||||
return (String) o;
|
||||
return colorMap.get(longColor);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getColors.
|
||||
* </p>
|
||||
*
|
||||
* @param c
|
||||
* a {@link forge.Card} object.
|
||||
* @return a {@link java.util.ArrayList} object.
|
||||
*/
|
||||
public static List<String> getColors(final Card c) {
|
||||
return c.determineColor().toStringList();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isStackingKeyword.
|
||||
* </p>
|
||||
*
|
||||
* @param keyword
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
public static boolean isStackingKeyword(final String keyword) {
|
||||
String kw = new String(keyword);
|
||||
if (kw.startsWith("HIDDEN")) {
|
||||
@@ -117,147 +70,21 @@ public final class CardUtil {
|
||||
return !kw.startsWith("Protection") && !Constant.Keywords.NON_STACKING_LIST.contains(kw);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* buildFilename.
|
||||
* </p>
|
||||
*
|
||||
* @param card
|
||||
* a {@link forge.Card} object.
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public static String buildFilename(final Card card) {
|
||||
final boolean token = card.isToken() && !card.isCopiedToken();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* buildFilename for lightweight card. Searches for a matching file on disk,
|
||||
*
|
||||
* @param card
|
||||
* the card
|
||||
* @return the string
|
||||
*/
|
||||
public static String buildFilename(final IPaperCard card) {
|
||||
CardRules cr = card.getRules();
|
||||
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);
|
||||
}
|
||||
|
||||
public static String buildSplitCardFilename(CardRules cr) {
|
||||
return cr.getMainPart().getName() + cr.getOtherPart().getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the filename.
|
||||
*
|
||||
* @param card
|
||||
* the card
|
||||
* @param nameToUse
|
||||
* the name to use
|
||||
* @return the string
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
private static String buildFilename(final String cardName, 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";
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getShortColorsString.
|
||||
* </p>
|
||||
*
|
||||
* @param colors
|
||||
* a {@link java.util.ArrayList} object.
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public static String getShortColorsString(final Iterable<String> colors) {
|
||||
String colorDesc = "";
|
||||
StringBuilder colorDesc = new StringBuilder();
|
||||
for (final String col : colors) {
|
||||
if (col.equalsIgnoreCase("White")) {
|
||||
colorDesc += "W";
|
||||
} else if (col.equalsIgnoreCase("Blue")) {
|
||||
colorDesc += "U";
|
||||
} else if (col.equalsIgnoreCase("Black")) {
|
||||
colorDesc += "B";
|
||||
} else if (col.equalsIgnoreCase("Red")) {
|
||||
colorDesc += "R";
|
||||
} else if (col.equalsIgnoreCase("Green")) {
|
||||
colorDesc += "G";
|
||||
} else if (col.equalsIgnoreCase("Colorless")) {
|
||||
colorDesc = "C";
|
||||
}
|
||||
colorDesc.append(getShortColor(col));
|
||||
}
|
||||
return colorDesc;
|
||||
return colorDesc.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* getThisTurnEntered.
|
||||
*
|
||||
* @param to
|
||||
* zone going to
|
||||
* @param from
|
||||
* zone coming from
|
||||
* @param valid
|
||||
* a isValid expression
|
||||
* @param src
|
||||
* a Card object
|
||||
* @param to zone going to
|
||||
* @param from zone coming from
|
||||
* @param valid a isValid expression
|
||||
* @param src a Card object
|
||||
* @return a List<Card> that matches the given criteria
|
||||
*/
|
||||
public static List<Card> getThisTurnEntered(final ZoneType to, final ZoneType from, final String valid,
|
||||
@@ -276,15 +103,6 @@ public final class CardUtil {
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* getThisTurnCast.
|
||||
*
|
||||
* @param valid
|
||||
* a String object
|
||||
* @param src
|
||||
* a Card object
|
||||
* @return a List<Card> that matches the given criteria
|
||||
*/
|
||||
public static List<Card> getThisTurnCast(final String valid, final Card src) {
|
||||
List<Card> res = new ArrayList<Card>();
|
||||
|
||||
@@ -295,15 +113,6 @@ public final class CardUtil {
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* getLastTurnCast.
|
||||
*
|
||||
* @param valid
|
||||
* a String object
|
||||
* @param src
|
||||
* a Card object
|
||||
* @return a List<Card> that matches the given criteria
|
||||
*/
|
||||
public static List<Card> getLastTurnCast(final String valid, final Card src) {
|
||||
List<Card> res = new ArrayList<Card>();
|
||||
|
||||
@@ -315,10 +124,7 @@ public final class CardUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* getLKICopy.
|
||||
*
|
||||
* @param in
|
||||
* a Card to copy.
|
||||
* @param in a Card to copy.
|
||||
* @return a copy of C with LastKnownInfo stuff retained.
|
||||
*/
|
||||
public static Card getLKICopy(final Card in) {
|
||||
@@ -367,17 +173,6 @@ public final class CardUtil {
|
||||
return newCopy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the radiance.
|
||||
*
|
||||
* @param source
|
||||
* the source
|
||||
* @param origin
|
||||
* the origin
|
||||
* @param valid
|
||||
* the valid
|
||||
* @return the radiance
|
||||
*/
|
||||
public static List<Card> getRadiance(final Card source, final Card origin, final String[] valid) {
|
||||
final List<Card> res = new ArrayList<Card>();
|
||||
|
||||
@@ -397,11 +192,6 @@ public final class CardUtil {
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the face down characteristic.
|
||||
*
|
||||
* @return the face down characteristic
|
||||
*/
|
||||
public static CardCharacteristics getFaceDownCharacteristic() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
types.add("Creature");
|
||||
@@ -413,27 +203,11 @@ public final class CardUtil {
|
||||
ret.setName("");
|
||||
ret.setType(types);
|
||||
|
||||
ret.setImageFilename(NewConstants.MORPH_IMAGE_FILE_NAME);
|
||||
ret.setImageKey(NewConstants.CACHE_MORPH_IMAGE_FILE);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// add Colors and
|
||||
/**
|
||||
* <p>
|
||||
* reflectableMana.
|
||||
* </p>
|
||||
*
|
||||
* @param abMana
|
||||
* a {@link forge.card.spellability.AbilityMana} object.
|
||||
* @param af
|
||||
* a {@link forge.card.ability.AbilityFactory} object.
|
||||
* @param colors
|
||||
* a {@link java.util.ArrayList} object.
|
||||
* @param parents
|
||||
* a {@link java.util.ArrayList} object.
|
||||
* @return a {@link java.util.ArrayList} object.
|
||||
*/
|
||||
public static Set<String> getReflectableManaColors(final SpellAbility abMana, final SpellAbility sa,
|
||||
Set<String> colors, final List<Card> parents) {
|
||||
// Here's the problem with reflectable Mana. If more than one is out,
|
||||
@@ -561,8 +335,4 @@ public final class CardUtil {
|
||||
|
||||
return colors;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // end class CardUtil
|
||||
}
|
||||
|
||||
@@ -24,9 +24,6 @@ import java.util.List;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import forge.properties.ForgeProps;
|
||||
import forge.properties.NewConstants;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Constant interface.
|
||||
@@ -36,9 +33,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,14 +19,21 @@ package forge;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.mortennobel.imagescaling.ResampleOp;
|
||||
|
||||
import forge.gui.GuiDisplayUtil;
|
||||
import forge.game.player.IHasIcon;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
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,42 +50,53 @@ 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>. */
|
||||
// short prefixes to save memory
|
||||
public static final String TOKEN_PREFIX = "t:";
|
||||
public static final String ICON_PREFIX = "i:";
|
||||
public static final String BOOSTER_PREFIX = "b:";
|
||||
public static final String FATPACK_PREFIX = "f:";
|
||||
public static final String PRECON_PREFIX = "p:";
|
||||
public static final String TOURNAMENTPACK_PREFIX = "o:";
|
||||
|
||||
static private final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
|
||||
|
||||
public static final String SEALED_PRODUCT = "sealed://";
|
||||
public static final String TOKEN = "token://";
|
||||
|
||||
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";
|
||||
/**
|
||||
* retrieve an image from the cache. returns null if the image is not found in the cache
|
||||
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
||||
*/
|
||||
public static BufferedImage getImage(Card card, int width, int height) {
|
||||
final String key;
|
||||
if (!card.canBeShownTo(Singletons.getControl().getPlayer()) || card.isFaceDown()) {
|
||||
key = TOKEN_PREFIX + NewConstants.CACHE_MORPH_IMAGE_FILE;
|
||||
} else {
|
||||
key = card.getImageKey();
|
||||
}
|
||||
return scaleImage(key, width, height);
|
||||
}
|
||||
|
||||
|
||||
public static BufferedImage getImage(final InventoryItem ii, final int width, final int height) {
|
||||
// TODO: move all the path-building logics here from the very objects. They don't have to know where their picture is
|
||||
String key = getKey(ii);
|
||||
|
||||
return scaleImage(key, width, height);
|
||||
}
|
||||
|
||||
public static BufferedImage getImage(final String key, final int width, final int height) {
|
||||
return scaleImage(key, width, height);
|
||||
/**
|
||||
* retrieve an image from the cache. returns null if the image is not found in the cache
|
||||
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
||||
*/
|
||||
public static BufferedImage getImage(InventoryItem ii, int width, int height) {
|
||||
return scaleImage(ii.getImageKey(), width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param original
|
||||
* @param scale
|
||||
* @return
|
||||
* retrieve an icon from the cache. returns the current skin's ICO_UNKNOWN if the icon image is not found
|
||||
* in the cache and cannot be loaded from disk.
|
||||
*/
|
||||
public static ImageIcon getIcon(IHasIcon ihi) {
|
||||
BufferedImage i = scaleImage(ihi.getIconImageKey(), -1, -1);
|
||||
if (null == i) {
|
||||
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
|
||||
}
|
||||
return new ImageIcon(i);
|
||||
}
|
||||
|
||||
private static BufferedImage scaleImage(String key, final int width, final int height) {
|
||||
if (3 > width || 3 > height) {
|
||||
// picture too small; return a blank
|
||||
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
|
||||
// picture too small or key not defined; return a blank
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -93,35 +111,34 @@ public class ImageCache {
|
||||
|
||||
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
|
||||
BufferedImage original = getImage(key);
|
||||
if ( null == original )
|
||||
if (null == original) {
|
||||
return null;
|
||||
}
|
||||
|
||||
double scale = Math.min((double) width / original.getWidth(), (double) height / original.getHeight());
|
||||
// here would be the place to limit the scaling option in menu ?
|
||||
double scale = Math.min(
|
||||
-1 == width ? 1 : (double)width / original.getWidth(),
|
||||
-1 == height? 1 : (double)height / original.getHeight());
|
||||
if ((scale > 1) && !mayEnlarge) {
|
||||
scale = 1;
|
||||
}
|
||||
|
||||
BufferedImage result;
|
||||
if ( 1 == scale ) {
|
||||
if (1 == scale) {
|
||||
result = original;
|
||||
} else {
|
||||
int destWidth = (int) (original.getWidth() * scale);
|
||||
int destHeight = (int) (original.getHeight() * scale);
|
||||
int destWidth = (int)(original.getWidth() * scale);
|
||||
int destHeight = (int)(original.getHeight() * scale);
|
||||
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
|
||||
|
||||
result = resampler.filter(original, null);
|
||||
CACHE.put(resizedKey, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
@@ -137,23 +154,4 @@ public class ImageCache {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 card.getImageFilename(); // key;
|
||||
}
|
||||
|
||||
public static String getKey(final InventoryItem ii) {
|
||||
return ii.getImageFilename();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,82 +3,93 @@ package forge;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
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
|
||||
// the last, empty, string is for keys that come in with an extension already in place
|
||||
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);
|
||||
if (StringUtils.isEmpty(key)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
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.ICON_PREFIX)) {
|
||||
filename = key.substring(ImageCache.ICON_PREFIX.length());
|
||||
path = NewConstants.CACHE_ICON_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 = makeImageFile(path, filename);
|
||||
boolean fileExists = file.exists();
|
||||
if (!fileExists && filename.startsWith("S00") ) {
|
||||
file = makeImageFile(path, filename.replace("S00", "6ED"));
|
||||
fileExists = file.exists();
|
||||
}
|
||||
if (!fileExists ) {
|
||||
//System.out.println("File not found, no image created: " + file);
|
||||
return null;
|
||||
}
|
||||
final BufferedImage image = getImage(file);
|
||||
//ImageCache.IMAGE_CACHE.put(key, image);
|
||||
return image;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param path
|
||||
* @param filename
|
||||
* @return
|
||||
*/
|
||||
private File makeImageFile(File path, String filename) {
|
||||
boolean isPng = filename.endsWith(".png");
|
||||
final String fName = isPng || filename.endsWith(".jpg") ? filename : filename + ".jpg";
|
||||
return new File(path, fName);
|
||||
}
|
||||
|
||||
/**
|
||||
* <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 ret = _findFile(key, path, filename);
|
||||
|
||||
BufferedImage image;
|
||||
//int format = useAlpha ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB;
|
||||
try {
|
||||
image = ImageIO.read(file);
|
||||
} catch (IOException ex) {
|
||||
BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " ");
|
||||
return null;
|
||||
// some S00/S2K cards are really part of 6ED/6E
|
||||
if (null == ret && filename.startsWith("S2K") ) {
|
||||
ret = _findFile(key, path, filename.replace("S2K", "6E"));
|
||||
}
|
||||
return image;
|
||||
|
||||
// try without set prefix
|
||||
String setlessFilename = null;
|
||||
if (null == ret && filename.contains("/")) {
|
||||
setlessFilename = filename.substring(filename.indexOf('/') + 1);
|
||||
ret = _findFile(key, path, setlessFilename);
|
||||
}
|
||||
|
||||
// try lowering the art index to the minimum for regular cards
|
||||
if (null == ret && null != setlessFilename && setlessFilename.contains(".full")) {
|
||||
ret = _findFile(key, path, setlessFilename.replaceAll("[0-9]*[.]full", "1.full"));
|
||||
}
|
||||
|
||||
if (null == ret) {
|
||||
System.out.println("File not found, no image created: " + key);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
private static BufferedImage _findFile(String key, String path, String filename) {
|
||||
for (String ext : _FILE_EXTENSIONS) {
|
||||
File file = new File(path, filename + ext);
|
||||
//System.out.println(String.format("Searching for %s at: %s", key, file.getAbsolutePath()));
|
||||
if (file.exists()) {
|
||||
//System.out.println(String.format("Found %s at: %s", key, file.getAbsolutePath()));
|
||||
try {
|
||||
return ImageIO.read(file);
|
||||
} catch (IOException ex) {
|
||||
BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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() { }
|
||||
}
|
||||
|
||||
@@ -29,9 +29,9 @@ import forge.card.TriggerReplacementBase;
|
||||
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>
|
||||
|
||||
@@ -50,7 +50,7 @@ public class CardCharacteristics {
|
||||
private ArrayList<ReplacementEffect> replacementEffects = new ArrayList<ReplacementEffect>();
|
||||
private ArrayList<StaticAbility> staticAbilities = new ArrayList<StaticAbility>();
|
||||
private ArrayList<String> staticAbilityStrings = new ArrayList<String>();
|
||||
private String imageFilename = "";
|
||||
private String imageKey = "";
|
||||
private Map<String, String> sVars = new TreeMap<String, String>();
|
||||
|
||||
private CardRarity rarity = CardRarity.Unknown;
|
||||
@@ -279,8 +279,8 @@ public class CardCharacteristics {
|
||||
*
|
||||
* @return the imageFilename
|
||||
*/
|
||||
public final String getImageFilename() {
|
||||
return this.imageFilename;
|
||||
public final String getImageKey() {
|
||||
return this.imageKey;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -289,8 +289,8 @@ public class CardCharacteristics {
|
||||
* @param imageFilename0
|
||||
* the imageFilename to set
|
||||
*/
|
||||
public final void setImageFilename(final String imageFilename0) {
|
||||
this.imageFilename = imageFilename0;
|
||||
public final void setImageKey(final String imageFilename0) {
|
||||
this.imageKey = imageFilename0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -410,7 +410,7 @@ public class CardCharacteristics {
|
||||
// ArrayList<String> staticAbilityStrings : list of String objects so use copy constructor
|
||||
this.staticAbilityStrings = new ArrayList<String>(source.getStaticAbilityStrings());
|
||||
// String imageFilename = copy reference
|
||||
this.imageFilename = source.getImageFilename();
|
||||
this.imageKey = source.getImageKey();
|
||||
this.rarity = source.rarity;
|
||||
this.curSetCode = source.curSetCode;
|
||||
// Map<String, String> sVars
|
||||
|
||||
@@ -17,35 +17,13 @@
|
||||
*/
|
||||
package forge.card;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* CardRarity class.
|
||||
* </p>
|
||||
*
|
||||
* @author Forge
|
||||
* @version $Id: CardRarity.java 9708 2011-08-09 19:34:12Z jendave $
|
||||
*/
|
||||
|
||||
public enum CardRarity {
|
||||
|
||||
/** The Basic land. */
|
||||
BasicLand("L"),
|
||||
|
||||
/** The Common. */
|
||||
Common("C"),
|
||||
|
||||
/** The Uncommon. */
|
||||
Uncommon("U"),
|
||||
|
||||
/** The Rare. */
|
||||
Rare("R"),
|
||||
|
||||
/** The Mythic rare. */
|
||||
MythicRare("M"),
|
||||
|
||||
/** The Special. */
|
||||
Special("S"), // Timeshifted
|
||||
/** The Unknown. */
|
||||
Unknown("?"); // In development
|
||||
|
||||
private final String strValue;
|
||||
@@ -54,14 +32,8 @@ public enum CardRarity {
|
||||
this.strValue = sValue;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Enum#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.strValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,12 +38,9 @@ public final class CardRules implements ICardCharacteristics {
|
||||
private final CardSplitType splitType;
|
||||
private final ICardFace mainPart;
|
||||
private final ICardFace otherPart;
|
||||
|
||||
private CardAiHints aiHints;
|
||||
private final Map<String, CardInSet> setsPrinted = new TreeMap<String, CardInSet>(String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
|
||||
|
||||
private CardAiHints aiHints;
|
||||
|
||||
public CardRules(ICardFace[] faces, CardSplitType altMode, CardAiHints cah, Map<String, CardInSet> sets) {
|
||||
splitType = altMode;
|
||||
@@ -68,25 +65,18 @@ public final class CardRules implements ICardCharacteristics {
|
||||
return !(getType().isVanguard() || getType().isScheme() || getType().isPlane() || getType().isPhenomenon());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the splitType
|
||||
*/
|
||||
public CardSplitType getSplitType() {
|
||||
return splitType;
|
||||
}
|
||||
|
||||
public ICardFace getMainPart() {
|
||||
// TODO Auto-generated method stub
|
||||
return mainPart;
|
||||
}
|
||||
|
||||
|
||||
public ICardFace getOtherPart() {
|
||||
return otherPart;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
switch(splitType.getAggregationMethod()) {
|
||||
case AGGREGATE:
|
||||
@@ -121,7 +111,6 @@ public final class CardRules implements ICardCharacteristics {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ColorSet getColor() {
|
||||
switch(splitType.getAggregationMethod()) {
|
||||
@@ -132,13 +121,11 @@ public final class CardRules implements ICardCharacteristics {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override public int getIntPower() { return mainPart.getIntPower(); }
|
||||
@Override public int getIntToughness() { return mainPart.getIntToughness(); }
|
||||
@Override public String getPower() { return mainPart.getPower(); }
|
||||
@Override public String getToughness() { return mainPart.getToughness(); }
|
||||
@Override public int getInitialLoyalty() { return mainPart.getInitialLoyalty(); }
|
||||
|
||||
@Override public int getIntPower() { return mainPart.getIntPower(); }
|
||||
@Override public int getIntToughness() { return mainPart.getIntToughness(); }
|
||||
@Override public String getPower() { return mainPart.getPower(); }
|
||||
@Override public String getToughness() { return mainPart.getToughness(); }
|
||||
@Override public int getInitialLoyalty() { return mainPart.getInitialLoyalty(); }
|
||||
|
||||
@Override
|
||||
public String getOracleText() {
|
||||
@@ -150,14 +137,12 @@ public final class CardRules implements ICardCharacteristics {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Set<String> getSets() { return this.setsPrinted.keySet(); }
|
||||
public CardInSet getEditionInfo(final String setCode) {
|
||||
final CardInSet result = this.setsPrinted.get(setCode);
|
||||
return result; // if returns null, String.format("Card '%s' was never printed in set '%s'", this.getName(), setCode);
|
||||
}
|
||||
|
||||
|
||||
// vanguard card fields, they don't use sides.
|
||||
private int deltaHand;
|
||||
private int deltaLife;
|
||||
@@ -180,38 +165,19 @@ public final class CardRules implements ICardCharacteristics {
|
||||
public String getPictureOtherSideUrl() { return dlUrlOtherSide; }
|
||||
public void setDlUrls(String[] dlUrls) { this.dlUrl = dlUrls[0]; this.dlUrlOtherSide = dlUrls[1]; }
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.ICardCharacteristics#getReplacements()
|
||||
*/
|
||||
public final List<String> getReplacements() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.ICardCharacteristics#getTriggers()
|
||||
*/
|
||||
public final List<String> getTriggers() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.ICardCharacteristics#getStaticAbilities()
|
||||
*/
|
||||
public final List<String> getStaticAbilities() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.ICardCharacteristics#getAbilities()
|
||||
*/
|
||||
public final List<String> getAbilities() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -2,10 +2,6 @@ package forge.card;
|
||||
|
||||
import forge.CardCharacteristicName;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public enum CardSplitType
|
||||
{
|
||||
None(AggregationMethod.USE_PRIMARY_FACE, null),
|
||||
@@ -14,19 +10,12 @@ public enum CardSplitType
|
||||
Flip(AggregationMethod.USE_PRIMARY_FACE, CardCharacteristicName.Flipped),
|
||||
// used by 12 licid creatures to switch type into enchantment aura
|
||||
Licid(AggregationMethod.USE_PRIMARY_FACE, CardCharacteristicName.Licid);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private CardSplitType(AggregationMethod calcMode, CardCharacteristicName stateName) {
|
||||
method = calcMode;
|
||||
this.changedStateName = stateName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the calculationMode
|
||||
*/
|
||||
public AggregationMethod getAggregationMethod() {
|
||||
return method;
|
||||
}
|
||||
@@ -45,4 +34,3 @@ public enum CardSplitType
|
||||
return changedStateName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,20 +54,12 @@ public final class CardType implements Comparable<CardType> {
|
||||
}
|
||||
}
|
||||
|
||||
private CardType() {
|
||||
} // use static ctors!
|
||||
private CardType() { }
|
||||
|
||||
// TODO: Debug this code
|
||||
/**
|
||||
* Parses the.
|
||||
*
|
||||
* @param typeText
|
||||
* the type text
|
||||
* @return the card type
|
||||
*/
|
||||
public static CardType parse(final String typeText) {
|
||||
// Most types and subtypes, except "Serra<EFBFBD>s Realm" and
|
||||
// "Bolas<EFBFBD>s Meditation Realm" consist of only one word
|
||||
// Most types and subtypes, except "Serra's Realm" and
|
||||
// "Bolas's Meditation Realm" consist of only one word
|
||||
final char space = ' ';
|
||||
final CardType result = new CardType();
|
||||
|
||||
@@ -130,152 +122,66 @@ public final class CardType implements Comparable<CardType> {
|
||||
this.subType.add(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sub type contains.
|
||||
*
|
||||
* @param operand
|
||||
* the operand
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean subTypeContains(final String operand) {
|
||||
return this.subType.contains(operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* Type contains.
|
||||
*
|
||||
* @param operand
|
||||
* the operand
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean typeContains(final CardCoreType operand) {
|
||||
return this.coreType.contains(operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* Super type contains.
|
||||
*
|
||||
* @param operand
|
||||
* the operand
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean superTypeContains(final CardSuperType operand) {
|
||||
return this.superType.contains(operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is creature.
|
||||
*
|
||||
* @return true, if is creature
|
||||
*/
|
||||
public boolean isCreature() {
|
||||
return this.coreType.contains(CardCoreType.Creature);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is planeswalker.
|
||||
*
|
||||
* @return true, if is planeswalker
|
||||
*/
|
||||
public boolean isPlaneswalker() {
|
||||
return this.coreType.contains(CardCoreType.Planeswalker);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is land.
|
||||
*
|
||||
* @return true, if is land
|
||||
*/
|
||||
public boolean isLand() {
|
||||
return this.coreType.contains(CardCoreType.Land);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is artifact.
|
||||
*
|
||||
* @return true, if is artifact
|
||||
*/
|
||||
public boolean isArtifact() {
|
||||
return this.coreType.contains(CardCoreType.Artifact);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is instant.
|
||||
*
|
||||
* @return true, if is instant
|
||||
*/
|
||||
public boolean isInstant() {
|
||||
return this.coreType.contains(CardCoreType.Instant);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is sorcery.
|
||||
*
|
||||
* @return true, if is sorcery
|
||||
*/
|
||||
public boolean isSorcery() {
|
||||
return this.coreType.contains(CardCoreType.Sorcery);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is vanguard.
|
||||
*
|
||||
* @return true if vanguard
|
||||
*/
|
||||
public boolean isVanguard() {
|
||||
return this.coreType.contains(CardCoreType.Vanguard);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is scheme.
|
||||
*
|
||||
* @return true if scheme
|
||||
*/
|
||||
public boolean isScheme() {
|
||||
return this.coreType.contains(CardCoreType.Scheme);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is enchantment.
|
||||
*
|
||||
* @return true, if is enchantment
|
||||
*/
|
||||
public boolean isEnchantment() {
|
||||
return this.coreType.contains(CardCoreType.Enchantment);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is basic.
|
||||
*
|
||||
* @return true, if is basic
|
||||
*/
|
||||
public boolean isBasic() {
|
||||
return this.superType.contains(CardSuperType.Basic);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is legendary.
|
||||
*
|
||||
* @return true, if is legendary
|
||||
*/
|
||||
public boolean isLegendary() {
|
||||
return this.superType.contains(CardSuperType.Legendary);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is basic land.
|
||||
*
|
||||
* @return true, if is basic land
|
||||
*/
|
||||
public boolean isBasicLand() {
|
||||
return this.isBasic() && this.isLand();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
if (null == this.calculatedType) {
|
||||
@@ -292,11 +198,6 @@ public final class CardType implements Comparable<CardType> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the types before dash.
|
||||
*
|
||||
* @return the types before dash
|
||||
*/
|
||||
public List<String> getTypesBeforeDash() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
for (final CardSuperType st : this.superType) {
|
||||
@@ -308,31 +209,15 @@ public final class CardType implements Comparable<CardType> {
|
||||
return types;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Comparable#compareTo(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(final CardType o) {
|
||||
return this.toString().compareTo(o.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the sub types.
|
||||
*
|
||||
* @return the sub types
|
||||
*/
|
||||
public List<String> getSubTypes() {
|
||||
return this.subType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shares sub type with.
|
||||
*
|
||||
* @param ctOther the ct other
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean sharesSubTypeWith(CardType ctOther) {
|
||||
for (String t : ctOther.getSubTypes()) {
|
||||
if (this.subTypeContains(t)) {
|
||||
@@ -343,43 +228,19 @@ public final class CardType implements Comparable<CardType> {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns wether or not this card is a Plane.
|
||||
* @return a boolean
|
||||
*/
|
||||
public boolean isPlane() {
|
||||
return this.coreType.contains(CardCoreType.Plane);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns wether or not this card is a Phenomenon.
|
||||
* @return a boolean
|
||||
*/
|
||||
public boolean isPhenomenon() {
|
||||
return this.coreType.contains(CardCoreType.Phenomenon);
|
||||
}
|
||||
|
||||
///////// THIS ARRIVED FROM CardUtil
|
||||
/**
|
||||
* <p>
|
||||
* isACardType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
///////// Utility methods
|
||||
public static boolean isACardType(final String cardType) {
|
||||
return CardType.getAllCardTypes().contains(cardType);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getAllCardTypes.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.util.ArrayList} object.
|
||||
*/
|
||||
public static ArrayList<String> getAllCardTypes() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
|
||||
@@ -394,14 +255,6 @@ public final class CardType implements Comparable<CardType> {
|
||||
return types;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getBasicTypes.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.util.ArrayList} object.
|
||||
* @since 1.1.3
|
||||
*/
|
||||
public static ArrayList<String> getBasicTypes() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
|
||||
@@ -410,11 +263,6 @@ public final class CardType implements Comparable<CardType> {
|
||||
return types;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the land types.
|
||||
*
|
||||
* @return the land types
|
||||
*/
|
||||
public static ArrayList<String> getLandTypes() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
|
||||
@@ -424,14 +272,6 @@ public final class CardType implements Comparable<CardType> {
|
||||
return types;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCreatureTypes.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.util.ArrayList} object.
|
||||
* @since 1.1.6
|
||||
*/
|
||||
public static ArrayList<String> getCreatureTypes() {
|
||||
final ArrayList<String> types = new ArrayList<String>();
|
||||
|
||||
@@ -440,79 +280,26 @@ public final class CardType implements Comparable<CardType> {
|
||||
return types;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isASuperType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
|
||||
public static boolean isASuperType(final String cardType) {
|
||||
return (Constant.CardTypes.SUPER_TYPES.contains(cardType));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isASubType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
public static boolean isASubType(final String cardType) {
|
||||
return (!CardType.isASuperType(cardType) && !CardType.isACardType(cardType));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isACreatureType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
public static boolean isACreatureType(final String cardType) {
|
||||
return (Constant.CardTypes.CREATURE_TYPES.contains(cardType));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isALandType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
public static boolean isALandType(final String cardType) {
|
||||
return (Constant.CardTypes.LAND_TYPES.contains(cardType));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is a planeswalker type.
|
||||
*
|
||||
* @param cardType
|
||||
* the card type
|
||||
* @return true, if is a planeswalker type
|
||||
*/
|
||||
public static boolean isAPlaneswalkerType(final String cardType) {
|
||||
return (Constant.CardTypes.WALKER_TYPES.contains(cardType));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isABasicLandType.
|
||||
* </p>
|
||||
*
|
||||
* @param cardType
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a boolean.
|
||||
*/
|
||||
public static boolean isABasicLandType(final String cardType) {
|
||||
return (Constant.CardTypes.BASIC_TYPES.contains(cardType));
|
||||
}
|
||||
|
||||
@@ -32,16 +32,16 @@ public final class EditionCollection extends StorageView<CardEdition> {
|
||||
super(new CardEdition.Reader("res/blockdata/setdata.txt"));
|
||||
|
||||
for (CardEdition ee : this) {
|
||||
|
||||
String alias = ee.getAlias();
|
||||
if (null != alias) {
|
||||
aliasToEdition.put(alias, ee);
|
||||
}
|
||||
aliasToEdition.put(ee.getCode2(), ee);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the sets the by code.
|
||||
* Gets a sets by code. It will search first by three letter codes, then by aliases and two-letter codes.
|
||||
*
|
||||
* @param code
|
||||
* the code
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2,22 +2,17 @@ package forge.card;
|
||||
|
||||
import forge.card.mana.ManaCost;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public interface ICardCharacteristics {
|
||||
String getName();
|
||||
CardType getType();
|
||||
ManaCost getManaCost();
|
||||
ColorSet getColor();
|
||||
|
||||
public abstract String getName();
|
||||
public abstract CardType getType();
|
||||
public abstract ManaCost getManaCost();
|
||||
public abstract ColorSet getColor();
|
||||
int getIntPower();
|
||||
int getIntToughness();
|
||||
String getPower();
|
||||
String getToughness();
|
||||
int getInitialLoyalty();
|
||||
|
||||
public abstract int getIntPower();
|
||||
public abstract int getIntToughness();
|
||||
public abstract String getPower();
|
||||
public abstract String getToughness();
|
||||
public abstract int getInitialLoyalty();
|
||||
|
||||
public abstract String getOracleText();
|
||||
}
|
||||
String getOracleText();
|
||||
}
|
||||
|
||||
@@ -4,12 +4,13 @@ import java.util.Map.Entry;
|
||||
|
||||
public interface ICardRawAbilites
|
||||
{
|
||||
public abstract Iterable<String> getKeywords();
|
||||
public abstract Iterable<String> getReplacements();
|
||||
public abstract Iterable<String> getTriggers();
|
||||
public abstract Iterable<String> getStaticAbilities();
|
||||
public abstract Iterable<String> getAbilities();
|
||||
public abstract String getNonAbilityText();
|
||||
public abstract Iterable<Entry<String, String>> getVariables();
|
||||
|
||||
}
|
||||
Iterable<String> getKeywords();
|
||||
Iterable<String> getReplacements();
|
||||
Iterable<String> getTriggers();
|
||||
Iterable<String> getStaticAbilities();
|
||||
Iterable<String> getAbilities();
|
||||
|
||||
String getNonAbilityText();
|
||||
|
||||
Iterable<Entry<String, String>> getVariables();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.card.ability.ai;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.CardPredicates;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -86,7 +86,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
||||
tgtCard = cloneTargets.get(0);
|
||||
}
|
||||
|
||||
String imageFileName = host.getImageFilename();
|
||||
String imageFileName = host.getImageKey();
|
||||
|
||||
boolean keepName = sa.hasParam("KeepName");
|
||||
String originalName = tgtCard.getName();
|
||||
@@ -152,7 +152,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
||||
}
|
||||
tgtCard.setFlipCard(true);
|
||||
//keep the Clone card image for the cloned card
|
||||
tgtCard.setImageFilename(imageFileName);
|
||||
tgtCard.setImageKey(imageFileName);
|
||||
|
||||
if (!tgtCard.isFlipped()) {
|
||||
tgtCard.setState(CardCharacteristicName.Original);
|
||||
@@ -171,7 +171,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
||||
tgtCard.clearImprinted();
|
||||
|
||||
//keep the Clone card image for the cloned card
|
||||
tgtCard.setImageFilename(imageFileName);
|
||||
tgtCard.setImageKey(imageFileName);
|
||||
|
||||
// check if clone is now an Aura that needs to be attached
|
||||
if (tgtCard.isAura()) {
|
||||
|
||||
@@ -94,7 +94,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
||||
copy = CardFactory.copyStats(c);
|
||||
|
||||
copy.setName(c.getName());
|
||||
copy.setImageFilename(c.getImageFilename());
|
||||
copy.setImageKey(c.getImageKey());
|
||||
|
||||
copy.setOwner(controller);
|
||||
copy.setController(controller, 0);
|
||||
@@ -126,7 +126,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
||||
if (c.isFlipCard()) { // Cloned Flips CAN flip.
|
||||
copy.setState(CardCharacteristicName.Original);
|
||||
c.setState(CardCharacteristicName.Original);
|
||||
copy.setImageFilename(c.getImageFilename());
|
||||
copy.setImageKey(c.getImageKey());
|
||||
if (!c.isInAlternateState()) {
|
||||
copy.setState(CardCharacteristicName.Flipped);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -102,7 +102,7 @@ public class EffectEffect extends SpellAbilityEffect {
|
||||
eff.addType("Effect"); // Or Emblem
|
||||
eff.setToken(true); // Set token to true, so when leaving play it gets nuked
|
||||
eff.setOwner(controller);
|
||||
eff.setImageFilename(sa.hasParam("Image") ? sa.getParam("Image") : hostCard.getImageFilename());
|
||||
eff.setImageKey(sa.hasParam("Image") ? sa.getParam("Image") : hostCard.getImageKey());
|
||||
eff.setColor(hostCard.getColor());
|
||||
eff.setImmutable(true);
|
||||
eff.setEffectSource(hostCard);
|
||||
|
||||
@@ -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;
|
||||
@@ -30,6 +30,7 @@ import forge.card.spellability.SpellAbility;
|
||||
import forge.card.trigger.Trigger;
|
||||
import forge.card.trigger.TriggerHandler;
|
||||
import forge.game.player.Player;
|
||||
import forge.item.CardToken;
|
||||
|
||||
public class TokenEffect extends SpellAbilityEffect {
|
||||
|
||||
@@ -66,7 +67,7 @@ public class TokenEffect extends SpellAbilityEffect {
|
||||
}
|
||||
|
||||
if (mapParams.hasParam("TokenImage")) {
|
||||
image = mapParams.getParam("TokenImage");
|
||||
image = CardToken.makeTokenFileName(mapParams.getParam("TokenImage"));
|
||||
} else {
|
||||
image = "";
|
||||
}
|
||||
@@ -144,7 +145,6 @@ public class TokenEffect extends SpellAbilityEffect {
|
||||
final Card host = sa.getSourceCard();
|
||||
readParameters(sa);
|
||||
|
||||
String imageName = "";
|
||||
String cost = "";
|
||||
// Construct colors
|
||||
final String[] substitutedColors = Arrays.copyOf(this.tokenColors, this.tokenColors.length);
|
||||
@@ -170,8 +170,10 @@ public class TokenEffect extends SpellAbilityEffect {
|
||||
colorDesc = "C";
|
||||
}
|
||||
}
|
||||
|
||||
final String imageName;
|
||||
if (this.tokenImage.equals("")) {
|
||||
imageName += colorDesc.replace(" ", "") + " " + this.tokenPower + " " + this.tokenToughness + " " + this.tokenName;
|
||||
imageName = CardToken.makeTokenFileName(colorDesc.replace(" ", ""), tokenPower, tokenToughness, tokenName);
|
||||
} else {
|
||||
imageName = this.tokenImage;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -42,6 +42,7 @@ import forge.card.spellability.Target;
|
||||
import forge.card.trigger.TriggerHandler;
|
||||
import forge.game.player.Player;
|
||||
import forge.item.CardDb;
|
||||
import forge.item.CardPrinted;
|
||||
import forge.item.IPaperCard;
|
||||
|
||||
/**
|
||||
@@ -223,40 +224,35 @@ public class CardFactory {
|
||||
c.setCurSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
|
||||
|
||||
c.setRandomPicture(cp.getArtIndex() + 1);
|
||||
String originalPicture = cp.getImageFilename();
|
||||
String originalPicture = cp.getImageKey();
|
||||
//System.out.println(c.getName() + " -> " + originalPicture);
|
||||
c.setImageFilename(originalPicture);
|
||||
c.setImageKey(originalPicture);
|
||||
c.setToken(cp.isToken());
|
||||
|
||||
if (c.hasAlternateState()) {
|
||||
if (c.isFlipCard()) {
|
||||
c.setState(CardCharacteristicName.Flipped);
|
||||
c.setImageFilename(originalPicture); // should assign a 180 degrees rotated picture here?
|
||||
c.setImageKey(originalPicture); // should assign a 180 degrees rotated picture here?
|
||||
}
|
||||
else if (c.isDoubleFaced()) {
|
||||
else if (c.isDoubleFaced() && cp instanceof CardPrinted) {
|
||||
c.setState(CardCharacteristicName.Transformed);
|
||||
c.setImageFilename(CardUtil.buildFilename(cp, cp.getRules().getOtherPart().getName()));
|
||||
c.setImageKey(((CardPrinted)cp).getImageKey(true));
|
||||
}
|
||||
else if (c.getRules().getSplitType() == CardSplitType.Split) {
|
||||
c.setState(CardCharacteristicName.LeftSplit);
|
||||
c.setImageFilename(originalPicture);
|
||||
c.setImageKey(originalPicture);
|
||||
c.setCurSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardCharacteristicName.RightSplit);
|
||||
c.setImageFilename(originalPicture);
|
||||
} else {
|
||||
c.setImageFilename(CardUtil.buildFilename(c));
|
||||
c.setImageKey(originalPicture);
|
||||
}
|
||||
|
||||
|
||||
c.setCurSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
c.setState(CardCharacteristicName.Original);
|
||||
}
|
||||
|
||||
return c;
|
||||
|
||||
}
|
||||
|
||||
private static void buildAbilities(final Card card) {
|
||||
@@ -460,7 +456,7 @@ public class CardFactory {
|
||||
to.setSVars(from.getSVars());
|
||||
to.setIntrinsicAbilities(from.getIntrinsicAbilities());
|
||||
|
||||
to.setImageFilename(from.getImageFilename());
|
||||
to.setImageKey(from.getImageKey());
|
||||
to.setTriggers(from.getTriggers());
|
||||
to.setReplacementEffects(from.getReplacementEffects());
|
||||
to.setStaticAbilityStrings(from.getStaticAbilityStrings());
|
||||
|
||||
@@ -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;
|
||||
@@ -57,6 +57,7 @@ import forge.game.zone.PlayerZone;
|
||||
import forge.game.zone.Zone;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.item.CardToken;
|
||||
import forge.util.Aggregates;
|
||||
|
||||
/**
|
||||
@@ -73,7 +74,8 @@ public class CardFactoryCreatures {
|
||||
final Ability ability = new Ability(card, ManaCost.ZERO) {
|
||||
@Override
|
||||
public void resolve() {
|
||||
final List<Card> cl = CardFactoryUtil.makeToken("Stangg Twin", "RG 3 4 Stangg Twin",
|
||||
final List<Card> cl = CardFactoryUtil.makeToken("Stangg Twin",
|
||||
CardToken.makeTokenFileName("RG", 3, 4, "Stangg Twin"),
|
||||
card.getController(), "R G", new String[] { "Legendary", "Creature", "Human", "Warrior" },
|
||||
3, 4, new String[] { "" });
|
||||
|
||||
@@ -373,8 +375,8 @@ public class CardFactoryCreatures {
|
||||
} // resolve()
|
||||
|
||||
public void makeToken() {
|
||||
CardFactoryUtil.makeToken("Kithkin Soldier", "W 1 1 Kithkin Soldier", card.getController(), "W",
|
||||
new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" });
|
||||
CardFactoryUtil.makeToken("Kithkin Soldier", CardToken.makeTokenFileName("W", 1, 1, "Kithkin Soldier"),
|
||||
card.getController(), "W", new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -45,9 +44,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;
|
||||
@@ -80,7 +79,6 @@ import forge.game.zone.ZoneType;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.gui.match.CMatchUI;
|
||||
import forge.util.Aggregates;
|
||||
|
||||
import forge.view.ButtonUtil;
|
||||
|
||||
/**
|
||||
@@ -2438,36 +2436,13 @@ public class CardFactoryUtil {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* makeToken.
|
||||
* </p>
|
||||
*
|
||||
* @param name
|
||||
* a {@link java.lang.String} object.
|
||||
* @param imageName
|
||||
* a {@link java.lang.String} object.
|
||||
* @param controller
|
||||
* a {@link forge.game.player.Player} object.
|
||||
* @param manaCost
|
||||
* a {@link java.lang.String} object.
|
||||
* @param types
|
||||
* an array of {@link java.lang.String} objects.
|
||||
* @param baseAttack
|
||||
* a int.
|
||||
* @param baseDefense
|
||||
* a int.
|
||||
* @param intrinsicKeywords
|
||||
* an array of {@link java.lang.String} objects.
|
||||
* @return a {@link forge.CardList} object.
|
||||
*/
|
||||
public static List<Card> makeToken(final String name, final String imageName, final Player controller,
|
||||
final String manaCost, final String[] types, final int baseAttack, final int baseDefense,
|
||||
final String[] intrinsicKeywords) {
|
||||
final List<Card> list = new ArrayList<Card>();
|
||||
final Card c = new Card();
|
||||
c.setName(name);
|
||||
c.setImageFilename(imageName);
|
||||
c.setImageKey(imageName);
|
||||
|
||||
// TODO - most tokens mana cost is 0, this needs to be fixed
|
||||
// c.setManaCost(manaCost);
|
||||
@@ -2528,7 +2503,7 @@ public class CardFactoryUtil {
|
||||
final List<String> kal = thisToken.getIntrinsicKeyword();
|
||||
final String[] tokenKeywords = new String[kal.size()];
|
||||
kal.toArray(tokenKeywords);
|
||||
final List<Card> tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageFilename(),
|
||||
final List<Card> tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageKey(),
|
||||
thisToken.getController(), thisToken.getManaCost().toString(), tokenTypes, thisToken.getBaseAttack(),
|
||||
thisToken.getBaseDefense(), tokenKeywords);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,7 +26,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.Singletons;
|
||||
import forge.card.TriggerReplacementBase;
|
||||
import forge.card.spellability.Ability;
|
||||
|
||||
@@ -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,28 +39,15 @@ 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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* TriggerHandler class.
|
||||
* </p>
|
||||
*
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
public class TriggerHandler {
|
||||
private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>();
|
||||
|
||||
private final ArrayList<Trigger> delayedTriggers = new ArrayList<Trigger>();
|
||||
private final List<TriggerWaiting> waitingTriggers = new ArrayList<TriggerWaiting>();
|
||||
|
||||
/**
|
||||
* Clean up temporary triggers.
|
||||
*/
|
||||
public final void cleanUpTemporaryTriggers() {
|
||||
final List<Card> absolutelyAllCards = Singletons.getModel().getGame().getCardsInGame();
|
||||
for (final Card c : absolutelyAllCards) {
|
||||
@@ -80,34 +66,14 @@ public class TriggerHandler {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* registerDelayedTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param trig
|
||||
* a {@link forge.card.trigger.Trigger} object.
|
||||
*/
|
||||
public final void registerDelayedTrigger(final Trigger trig) {
|
||||
this.delayedTriggers.add(trig);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* clearDelayedTrigger.
|
||||
* </p>
|
||||
*/
|
||||
public final void clearDelayedTrigger() {
|
||||
this.delayedTriggers.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* clearDelayedTrigger.
|
||||
* </p>
|
||||
* @param card
|
||||
* a card object.
|
||||
*/
|
||||
public final void clearDelayedTrigger(Card card) {
|
||||
ArrayList<Trigger> deltrigs = new ArrayList<Trigger>(this.delayedTriggers);
|
||||
|
||||
@@ -119,45 +85,14 @@ public class TriggerHandler {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* suppressMode.
|
||||
* </p>
|
||||
*
|
||||
* @param mode
|
||||
* a {@link java.lang.String} object.
|
||||
*/
|
||||
public final void suppressMode(final TriggerType mode) {
|
||||
this.suppressedModes.add(mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* clearSuppression.
|
||||
* </p>
|
||||
*
|
||||
* @param mode
|
||||
* a {@link java.lang.String} object.
|
||||
*/
|
||||
public final void clearSuppression(final TriggerType mode) {
|
||||
this.suppressedModes.remove(mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* parseTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param name
|
||||
* a {@link java.lang.String} object.
|
||||
* @param trigParse
|
||||
* a {@link java.lang.String} object.
|
||||
* @param host
|
||||
* a {@link forge.Card} object.
|
||||
* @param intrinsic
|
||||
* a boolean.
|
||||
* @return a {@link forge.card.trigger.Trigger} object.
|
||||
*/
|
||||
public static Trigger parseTrigger(final String name, final String trigParse, final Card host,
|
||||
final boolean intrinsic) {
|
||||
final Trigger ret = TriggerHandler.parseTrigger(trigParse, host, intrinsic);
|
||||
@@ -165,37 +100,11 @@ public class TriggerHandler {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* parseTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param trigParse
|
||||
* a {@link java.lang.String} object.
|
||||
* @param host
|
||||
* a {@link forge.Card} object.
|
||||
* @param intrinsic
|
||||
* a boolean.
|
||||
* @return a {@link forge.card.trigger.Trigger} object.
|
||||
*/
|
||||
public static Trigger parseTrigger(final String trigParse, final Card host, final boolean intrinsic) {
|
||||
final HashMap<String, String> mapParams = TriggerHandler.parseParams(trigParse);
|
||||
return TriggerHandler.parseTrigger(mapParams, host, intrinsic);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* parseTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param mapParams
|
||||
* a {@link java.util.HashMap} object.
|
||||
* @param host
|
||||
* a {@link forge.Card} object.
|
||||
* @param intrinsic
|
||||
* a boolean.
|
||||
* @return a {@link forge.card.trigger.Trigger} object.
|
||||
*/
|
||||
public static Trigger parseTrigger(final Map<String, String> mapParams, final Card host, final boolean intrinsic) {
|
||||
Trigger ret = null;
|
||||
|
||||
@@ -215,15 +124,6 @@ public class TriggerHandler {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* parseParams.
|
||||
* </p>
|
||||
*
|
||||
* @param trigParse
|
||||
* a {@link java.lang.String} object.
|
||||
* @return a {@link java.util.HashMap} object.
|
||||
*/
|
||||
private static HashMap<String, String> parseParams(final String trigParse) {
|
||||
final HashMap<String, String> mapParams = new HashMap<String, String>();
|
||||
|
||||
@@ -256,17 +156,6 @@ public class TriggerHandler {
|
||||
return mapParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* runTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param mode
|
||||
* a {@link java.lang.String} object.
|
||||
* @param runParams
|
||||
* a {@link java.util.Map} object.
|
||||
* @param forceHeldTriggers Force certain triggers to be added the waitingTriggers if stack isnt frozen
|
||||
*/
|
||||
public final void runTrigger(final TriggerType mode, final Map<String, Object> runParams, boolean holdTrigger) {
|
||||
if (this.suppressedModes.contains(mode)) {
|
||||
return;
|
||||
@@ -401,19 +290,6 @@ public class TriggerHandler {
|
||||
// Checks if the conditions are right for a single trigger to go off, and
|
||||
// runs it if so.
|
||||
// Return true if the trigger went off, false otherwise.
|
||||
/**
|
||||
* <p>
|
||||
* runSingleTrigger.
|
||||
* </p>
|
||||
*
|
||||
* @param regtrig
|
||||
* a {@link forge.card.trigger.Trigger} object.
|
||||
* @param mode
|
||||
* a {@link java.lang.String} object.
|
||||
* @param runParams
|
||||
* a {@link java.util.HashMap} object.
|
||||
* @return false if trigger is not happening.
|
||||
*/
|
||||
private boolean runSingleTrigger(final Trigger regtrig, final TriggerType mode, final Map<String, Object> runParams) {
|
||||
final Map<String, String> triggerParams = regtrig.getMapParams();
|
||||
final GameState game = Singletons.getModel().getGame();
|
||||
@@ -558,12 +434,6 @@ public class TriggerHandler {
|
||||
private final ArrayList<Integer> triggersAlwaysAccept = new ArrayList<Integer>();
|
||||
private final ArrayList<Integer> triggersAlwaysDecline = new ArrayList<Integer>();
|
||||
|
||||
/**
|
||||
* Sets the always accept trigger.
|
||||
*
|
||||
* @param trigID
|
||||
* the new always accept trigger
|
||||
*/
|
||||
public final void setAlwaysAcceptTrigger(final int trigID) {
|
||||
if (this.triggersAlwaysDecline.contains(trigID)) {
|
||||
this.triggersAlwaysDecline.remove((Object) trigID);
|
||||
@@ -574,12 +444,6 @@ public class TriggerHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the always decline trigger.
|
||||
*
|
||||
* @param trigID
|
||||
* the new always decline trigger
|
||||
*/
|
||||
public final void setAlwaysDeclineTrigger(final int trigID) {
|
||||
if (this.triggersAlwaysAccept.contains(trigID)) {
|
||||
this.triggersAlwaysAccept.remove((Object) trigID);
|
||||
@@ -590,42 +454,19 @@ public class TriggerHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the always ask trigger.
|
||||
*
|
||||
* @param trigID
|
||||
* the new always ask trigger
|
||||
*/
|
||||
public final void setAlwaysAskTrigger(final int trigID) {
|
||||
this.triggersAlwaysAccept.remove((Object) trigID);
|
||||
this.triggersAlwaysDecline.remove((Object) trigID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is always accepted.
|
||||
*
|
||||
* @param trigID
|
||||
* the trig id
|
||||
* @return true, if is always accepted
|
||||
*/
|
||||
public final boolean isAlwaysAccepted(final int trigID) {
|
||||
return this.triggersAlwaysAccept.contains(trigID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is always declined.
|
||||
*
|
||||
* @param trigID
|
||||
* the trig id
|
||||
* @return true, if is always declined
|
||||
*/
|
||||
public final boolean isAlwaysDeclined(final int trigID) {
|
||||
return this.triggersAlwaysDecline.contains(trigID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear trigger settings.
|
||||
*/
|
||||
public final void clearTriggerSettings() {
|
||||
this.triggersAlwaysAccept.clear();
|
||||
this.triggersAlwaysDecline.clear();
|
||||
|
||||
@@ -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,13 +151,12 @@ 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 String questname = Singletons.getModel().getQuestPreferences().getPreference(QPref.CURRENT_QUEST);
|
||||
final File dirQuests = new File(NewConstants.QUEST_SAVE_DIR);
|
||||
final String questname = Singletons.getModel().getQuestPreferences().getPref(QPref.CURRENT_QUEST);
|
||||
final File data = new File(dirQuests.getPath(), questname);
|
||||
if (data.exists()) {
|
||||
Singletons.getModel().getQuest().load(QuestDataIO.loadData(data));
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user