diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java
index 42f3f4bb9d3..c0c93fff6ef 100644
--- a/src/main/java/forge/AllZone.java
+++ b/src/main/java/forge/AllZone.java
@@ -6,7 +6,6 @@ import java.util.Map;
import net.slightlymagic.braids.util.UtilFunctions;
import forge.card.cardFactory.CardFactoryInterface;
-import forge.card.cardFactory.LazyCardFactory;
import forge.card.cardFactory.PreloadingCardFactory;
import forge.card.mana.ManaPool;
import forge.card.trigger.TriggerHandler;
diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java
index 04428a05c71..24f6524b2c2 100644
--- a/src/main/java/forge/CardUtil.java
+++ b/src/main/java/forge/CardUtil.java
@@ -1,5 +1,6 @@
package forge;
+import forge.card.CardPrinted;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityList;
@@ -11,10 +12,13 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+
/**
*
CardUtil class.
@@ -489,80 +493,52 @@ public final class CardUtil {
* @return a {@link java.lang.String} object.
*/
public static String buildFilename(final Card card) {
- File path = null;
- if (card.isToken() && !card.isCopiedToken()) {
- path = ForgeProps.getFile(NewConstants.IMAGE_TOKEN);
- } else {
- path = ForgeProps.getFile(NewConstants.IMAGE_BASE);
- }
+ boolean token = card.isToken() && !card.isCopiedToken();
+ return buildFilename(card.getName(), card.getCurSetCode(), card.getRandomPicture(), token);
+ }
- StringBuilder sbKey = new StringBuilder();
+ public static String buildFilename(final CardPrinted card) {
+ return buildFilename(card.getName(), card.getSet(), card.getArtIndex(), false);
+ }
+
+ private static String buildFilename(final String cardName, final String setName,
+ final int artIndex, final boolean isToken)
+ {
+ File path = ForgeProps.getFile(isToken ? NewConstants.IMAGE_TOKEN : NewConstants.IMAGE_BASE);
+ String nn = artIndex > 0 ? Integer.toString(artIndex) : "";
+ String cleanCardName = GuiDisplayUtil.cleanString(cardName);
File f = null;
- if (!card.getCurSetCode().equals("")) {
- String nn = "";
- if (card.getRandomPicture() > 0) {
- nn = Integer.toString(card.getRandomPicture());
- }
+ if (StringUtils.isNotBlank(setName)) {
+ String mwsCardName = GuiDisplayUtil.cleanStringMWS(cardName);
- //First try 3 letter set code with MWS filename format
- sbKey.append(card.getCurSetCode() + "/");
- sbKey.append(GuiDisplayUtil.cleanStringMWS(card.getName()) + nn + ".full");
-
- f = new File(path, sbKey.toString() + ".jpg");
- if (f.exists()) {
- return sbKey.toString();
- }
-
- sbKey = new StringBuilder();
+ //First, try 3 letter set code with MWS filename format
+ 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
- sbKey.append(SetInfoUtil.getSetCode2_SetCode3(card.getCurSetCode()) + "/");
- sbKey.append(GuiDisplayUtil.cleanStringMWS(card.getName()) + nn + ".full");
-
- f = new File(path, sbKey.toString() + ".jpg");
- if (f.exists()) {
- return sbKey.toString();
- }
-
- sbKey = new StringBuilder();
+ String mwsSet2 = String.format("%s/%s%s.full", SetInfoUtil.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
- sbKey.append(card.getCurSetCode() + "/");
- sbKey.append(GuiDisplayUtil.cleanString(card.getName()) + nn);
-
- f = new File(path, sbKey.toString() + ".jpg");
- if (f.exists()) {
- return sbKey.toString();
- }
-
- sbKey = new StringBuilder();
-
+ 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
- sbKey.append(GuiDisplayUtil.cleanString(card.getImageName()));
- if (card.getRandomPicture() > 1) {
- sbKey.append(card.getRandomPicture());
- }
+ String forgePlain = String.format("%s%s", cleanCardName, nn);
- f = new File(path, sbKey.toString() + ".jpg");
- if (f.exists()) {
- return sbKey.toString();
- }
+ f = new File(path, forgePlain + ".jpg");
+ if (f.exists()) { return forgePlain; }
- sbKey = new StringBuilder();
-
- //Really last-ditch effort, forget the picture number
- sbKey.append(GuiDisplayUtil.cleanString(card.getImageName()));
-
- f = new File(path, sbKey.toString() + ".jpg");
- if (f.exists()) {
- return sbKey.toString();
- }
+ // 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";
}
diff --git a/src/main/java/forge/Gui_DeckEditor.java b/src/main/java/forge/Gui_DeckEditor.java
index 5128c1b0151..c68ee8ff611 100644
--- a/src/main/java/forge/Gui_DeckEditor.java
+++ b/src/main/java/forge/Gui_DeckEditor.java
@@ -17,6 +17,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.List;
import java.util.Random;
import javax.swing.BorderFactory;
@@ -389,7 +390,7 @@ public class Gui_DeckEditor extends JFrame implements CardContainer, DeckDisplay
String SC = "";
if (!(searchSetCombo.getSelectedItem().toString().equals(""))) {
- SC = SetInfoUtil.getSetCode3_SetName(searchSetCombo.getSelectedItem().toString());
+ SC = SetInfoUtil.getCode3ByName(searchSetCombo.getSelectedItem().toString());
boolean result = false;
@@ -959,8 +960,11 @@ public class Gui_DeckEditor extends JFrame implements CardContainer, DeckDisplay
searchSetCombo.removeAllItems();
searchSetCombo.addItem("");
- for (int i = 0; i < SetInfoUtil.getSetNameList().size(); i++)
- searchSetCombo.addItem(SetInfoUtil.getSetNameList().get(i));
+ List allSetsNames = SetInfoUtil.getNameList();
+ for (String s : allSetsNames) {
+ searchSetCombo.addItem(s);
+ }
+
this.getContentPane().add(searchSetCombo, "wmin 150, grow");
this.getContentPane().add(statsLabel2, "cell 0 4");
diff --git a/src/main/java/forge/Gui_DownloadSetPictures_LQ.java b/src/main/java/forge/Gui_DownloadSetPictures_LQ.java
index 66816771af5..dfdfbcc94cb 100644
--- a/src/main/java/forge/Gui_DownloadSetPictures_LQ.java
+++ b/src/main/java/forge/Gui_DownloadSetPictures_LQ.java
@@ -394,7 +394,7 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
for (int j = 0; j < cSetInfo.size(); j++) {
c.setCurSetCode(cSetInfo.get(j).Code);
String SC3 = c.getCurSetCode();
- String SC2 = SetInfoUtil.getSetCode2_SetCode3(c.getCurSetCode());
+ String SC2 = SetInfoUtil.getCode2ByCode(c.getCurSetCode());
int n = 0;
if (cSetInfo.get(j).PicCount > 0) {
diff --git a/src/main/java/forge/Gui_MigrateLocalMWSSetPictures_HQ.java b/src/main/java/forge/Gui_MigrateLocalMWSSetPictures_HQ.java
index 165c1b78b75..5b7a8799b49 100644
--- a/src/main/java/forge/Gui_MigrateLocalMWSSetPictures_HQ.java
+++ b/src/main/java/forge/Gui_MigrateLocalMWSSetPictures_HQ.java
@@ -402,7 +402,7 @@ public class Gui_MigrateLocalMWSSetPictures_HQ extends DefaultBoundedRangeModel
for (int j = 0; j < cSetInfo.size(); j++) {
c.setCurSetCode(cSetInfo.get(j).Code);
String SC3 = c.getCurSetCode();
- String SC2 = SetInfoUtil.getSetCode2_SetCode3(c.getCurSetCode());
+ String SC2 = SetInfoUtil.getCode2ByCode(c.getCurSetCode());
int n = 0;
if (cSetInfo.get(j).PicCount > 0) {
diff --git a/src/main/java/forge/SetInfoUtil.java b/src/main/java/forge/SetInfoUtil.java
index 5c0b8c296b2..04229d95514 100644
--- a/src/main/java/forge/SetInfoUtil.java
+++ b/src/main/java/forge/SetInfoUtil.java
@@ -1,7 +1,14 @@
package forge;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
+
+import net.slightlymagic.maxmtg.Predicate;
+
+import forge.card.CardSet;
/**
* SetInfoUtil class.
@@ -11,7 +18,8 @@ import java.util.HashMap;
*/
public class SetInfoUtil {
/** Constant setData */
- private static ArrayList> setData = new ArrayList>();
+ private static HashMap setsByCode = new HashMap();
+ private static List allSets = new ArrayList();
/**
* loadSetData.
@@ -19,57 +27,51 @@ public class SetInfoUtil {
private static void loadSetData() {
ArrayList fData = FileUtil.readFile("res/blockdata/setdata.txt");
- if (fData.size() > 0) {
- for (int i = 0; i < fData.size(); i++) {
- String s = fData.get(i);
- if (s.length() > 5) {
- HashMap sm = new HashMap();
+ for (String s : fData) {
+ if (s.length() < 6) { continue; }
- String ss[] = s.split("\\|");
- for (int j = 0; j < ss.length; j++) {
- String kv[] = ss[j].split(":");
- sm.put(kv[0], kv[1]);
- }
+ String[] sParts = s.trim().split("\\|");
+ String code = null, code2 = null, name = null;
- setData.add(sm);
+ int index = -1;
+ String alias = null;
+ for (String sPart : sParts) {
+ String[] kv = sPart.split(":", 2);
+ String key = kv[0].toLowerCase();
+ if ("code3".equals(key)) {
+ code = kv[1];
+ } else if ("code2".equals(key)) {
+ code2 = kv[1];
+ } else if ("name".equals(key)) {
+ name = kv[1];
+ } else if ("index".equals(key)) {
+ index = Integer.parseInt(kv[1]);
+ } else if ("alias".equals(key)) {
+ alias = kv[1];
}
}
-
+ CardSet set = new CardSet(index, name, code, code2);
+ setsByCode.put(code, set);
+ if (alias != null) { setsByCode.put(alias, set); }
+ allSets.add(set);
}
+ Collections.sort(allSets);
}
- /**
- * getSetCode2List.
- *
- * @return a {@link java.util.ArrayList} object.
- */
- public static ArrayList getSetCode2List() {
- ArrayList scl = new ArrayList();
-
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- scl.add(setData.get(i).get("Code2"));
-
- return scl;
+ public static CardSet getSetByCode(final String code) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ return setsByCode.get(code);
+ }
+ public static CardSet getSetByCodeOrThrow(final String code) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ CardSet set = setsByCode.get(code);
+ if (null == set) { throw new RuntimeException(String.format("Set with code '%s' not found", code)); }
+ return set;
}
- /**
- * getSetCode3List.
- *
- * @return a {@link java.util.ArrayList} object.
- */
- public static ArrayList getSetCode3List() {
- ArrayList scl = new ArrayList();
-
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- scl.add(setData.get(i).get("Code3"));
-
- return scl;
+ public static List getCodeList() {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ return new ArrayList(setsByCode.keySet());
}
/**
@@ -77,101 +79,26 @@ public class SetInfoUtil {
*
* @return a {@link java.util.ArrayList} object.
*/
- public static ArrayList getSetNameList() {
- ArrayList snl = new ArrayList();
+ public static List getNameList() {
+ if (setsByCode.isEmpty()) { loadSetData(); }
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- snl.add(setData.get(i).get("Name"));
-
- return snl;
+ return Predicate.getTrue(CardSet.class).select(allSets, CardSet.fn1, CardSet.fnGetName);
}
- /**
- * getSetCode2_SetName.
- *
- * @param SetName a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- public static String getSetCode2_SetName(String SetName) {
- if (setData.size() == 0)
- loadSetData();
+ public static String getCode3ByName(final String setName) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Name").equals(SetName))
- return setData.get(i).get("Code2");
+ for (CardSet s : setsByCode.values()) {
+ if (s.getName().equals(setName)) { return s.getCode(); }
+ }
return "";
}
- /**
- * getSetCode3_SetName.
- *
- * @param SetName a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- public static String getSetCode3_SetName(String SetName) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Name").equals(SetName))
- return setData.get(i).get("Code3");
-
- return "";
- }
-
- /**
- * getSetCode2_SetCode3.
- *
- * @param SetCode3 a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- public static String getSetCode2_SetCode3(String SetCode3) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Code3").equals(SetCode3))
- return setData.get(i).get("Code2");
-
- return "";
- }
-
- /**
- * getSetCode3_SetCode2.
- *
- * @param SetCode2 a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- public static String getSetCode3_SetCode2(String SetCode2) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Code2").equals(SetCode2))
- return setData.get(i).get("Code3");
-
- return "";
- }
-
- /**
- * getSetName_SetCode2.
- *
- * @param SetCode2 a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- public static String getSetName_SetCode2(String SetCode2) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Code2").equals(SetCode2))
- return setData.get(i).get("Name");
-
- return "";
+ public static String getCode2ByCode(final String code) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ CardSet set = setsByCode.get(code);
+ return set == null ? "" : set.getCode2();
}
/**
@@ -180,15 +107,10 @@ public class SetInfoUtil {
* @param SetCode3 a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
- public static String getSetName_SetCode3(String SetCode3) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++)
- if (setData.get(i).get("Code3").equals(SetCode3))
- return setData.get(i).get("Name");
-
- return "";
+ public static String getNameByCode(String code) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ CardSet set = setsByCode.get(code);
+ return set == null ? "" : set.getName();
}
/**
@@ -197,28 +119,18 @@ public class SetInfoUtil {
* @param alSI a {@link java.util.ArrayList} object.
* @return a {@link java.lang.String} object.
*/
- public static String getMostRecentSet(ArrayList alSI) {
- if (setData.size() == 0)
- loadSetData();
+ public static String getMostRecentSet(final ArrayList alSI) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
- int mostRecent = -1;
+ int size = alSI.size();
+ if (size == 0) { return ""; }
+ if (size == 1) { return alSI.get(0).Code; }
- for (SetInfo s : alSI) {
- for (int j = 0; j < setData.size(); j++) {
- if (setData.get(j).get("Code3").equals(s.Code)) {
- if (j > mostRecent) {
- mostRecent = j;
- break;
- }
- }
- }
+ CardSet[] sets = new CardSet[size];
+ for (int i = 0; i < size; i++) { sets[i] = setsByCode.get(alSI.get(i).Code); }
+ Arrays.sort(sets);
- }
-
- if (mostRecent > -1)
- return setData.get(mostRecent).get("Code3");
-
- return "";
+ return sets[sets.length - 1].getCode();
}
/**
@@ -233,8 +145,7 @@ public class SetInfoUtil {
for (int i = 0; i < SetList.size(); i++) {
si = SetList.get(i);
- if (si.Code.equals(SetCode))
- return si;
+ if (si.Code.equals(SetCode)) { return si; }
}
return null;
@@ -246,16 +157,10 @@ public class SetInfoUtil {
* @param SetCode a {@link java.lang.String} object.
* @return a int.
*/
- public static int getSetIndex(String SetCode) {
- if (setData.size() == 0)
- loadSetData();
-
- for (int i = 0; i < setData.size(); i++) {
- if (setData.get(i).get("Code3").equals(SetCode))
- return Integer.parseInt(setData.get(i).get("Index"));
- }
-
- return 0;
+ public static int getIndexByCode(final String code) {
+ if (setsByCode.isEmpty()) { loadSetData(); }
+ CardSet set = setsByCode.get(code);
+ return set == null ? 0 : set.getIndex();
}
/** Constant blockData */
diff --git a/src/main/java/forge/TableSorter.java b/src/main/java/forge/TableSorter.java
index 29e07f8b14c..20ef64d58c9 100644
--- a/src/main/java/forge/TableSorter.java
+++ b/src/main/java/forge/TableSorter.java
@@ -119,8 +119,8 @@ public class TableSorter implements Comparator, NewConstants {
bCom = getValue(b);
} else if (column == 7 && col7mod == true)//Set
{
- aCom = SetInfoUtil.getSetIndex(a.getCurSetCode());
- bCom = SetInfoUtil.getSetIndex(b.getCurSetCode());
+ aCom = SetInfoUtil.getIndexByCode(a.getCurSetCode());
+ bCom = SetInfoUtil.getIndexByCode(b.getCurSetCode());
} else if (column == 8)//AI
{
aCom = getAI(a);
diff --git a/src/main/java/forge/card/CardManaCost.java b/src/main/java/forge/card/CardManaCost.java
index ab3339ea472..0eab45247c9 100644
--- a/src/main/java/forge/card/CardManaCost.java
+++ b/src/main/java/forge/card/CardManaCost.java
@@ -4,8 +4,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-
/**
* CardManaCost class.
*
diff --git a/src/main/java/forge/card/CardPrinted.java b/src/main/java/forge/card/CardPrinted.java
index 1f699b9b2c1..c0a18d3be90 100644
--- a/src/main/java/forge/card/CardPrinted.java
+++ b/src/main/java/forge/card/CardPrinted.java
@@ -1,11 +1,13 @@
package forge.card;
import java.util.Arrays;
+import java.util.List;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
import forge.AllZone;
import forge.Card;
+import forge.CardUtil;
/**
* CardReference class.
@@ -27,7 +29,10 @@ public final class CardPrinted implements Comparable {
private final transient CardRarity rarity; // rarity is given in ctor when set is assigned
// need this to be sure that different cased names won't break the system (and create uniqie cardref entries)
- private final transient String _name_lcase;
+ private final transient String nameLcase;
+
+ // image filename is calculated only after someone request it
+ private transient String imageFilename = null;
// field RO accessors
public String getName() { return name; }
@@ -36,22 +41,27 @@ public final class CardPrinted implements Comparable {
public boolean isFoil() { return foiled; }
public CardRules getCard() { return card; }
public CardRarity getRarity() { return rarity; }
-
+ public String getImageFilename() {
+ if (imageFilename == null) { imageFilename = CardUtil.buildFilename(this); }
+ return imageFilename;
+ }
- // Lambda to get rules for selects from list of printed cards
+ // Lambda to get rules for selects from list of printed cards
public static final Lambda1 fnGetRules = new Lambda1() {
@Override public CardRules apply(final CardPrinted from) { return from.card; }
};
// Constructor is private. All non-foiled instances are stored in CardDb
- private CardPrinted(final CardRules c, final String set, final CardRarity rare, final int index, boolean foil) {
+ private CardPrinted(final CardRules c, final String set, final CardRarity rare,
+ final int index, final boolean foil)
+ {
card = c;
name = c.getName();
cardSet = set;
artIndex = index;
foiled = foil;
rarity = rare;
- _name_lcase = name.toLowerCase();
+ nameLcase = name.toLowerCase();
}
/* package visibility */
@@ -81,7 +91,7 @@ public final class CardPrinted implements Comparable {
@Override
public int hashCode() {
- int code = _name_lcase.hashCode() * 11 + cardSet.hashCode() * 59 + artIndex * 2;
+ int code = nameLcase.hashCode() * 11 + cardSet.hashCode() * 59 + artIndex * 2;
if (foiled) { return code + 1; }
return code;
}
@@ -93,13 +103,18 @@ public final class CardPrinted implements Comparable {
public Card toForgeCard() {
Card c = AllZone.getCardFactory().getCard(name, null);
- c.setCurSetCode(getSet());
+ if (c != null) {
+ c.setCurSetCode(getSet());
+ c.setRandomPicture(artIndex);
+ c.setImageFilename(getImageFilename());
+ }
+ // else throw "Unsupported card";
return c;
}
@Override
public int compareTo(final CardPrinted o) {
- int nameCmp = _name_lcase.compareTo(o._name_lcase);
+ int nameCmp = nameLcase.compareTo(o.nameLcase);
if (0 != nameCmp) { return nameCmp; }
// TODO: compare sets properly
return cardSet.compareTo(o.cardSet);
@@ -111,9 +126,9 @@ public final class CardPrinted implements Comparable {
{
return new PredicateRarity(value, isEqual);
}
- public static Predicate printedInSets(final String[] value)
+ public static Predicate printedInSets(final List value, final boolean shouldContain)
{
- return new PredicateSets(value);
+ return new PredicateSets(value, shouldContain);
}
private static class PredicateRarity extends Predicate {
@@ -132,16 +147,20 @@ public final class CardPrinted implements Comparable {
}
private static class PredicateSets extends Predicate {
- private final String[] sets;
+ private final List sets;
+ private final boolean mustContain;
@Override public boolean isTrue(final CardPrinted card) {
- return Arrays.binarySearch(sets, card.rarity) >= 0;
+ return sets.contains(card.cardSet) == mustContain;
}
- public PredicateSets(final String[] wantSets) {
- sets = wantSets.clone();
- Arrays.sort(sets);
+ public PredicateSets(final List wantSets, boolean shouldContain) {
+ sets = wantSets; // maybe should make a copy here?
+ mustContain = shouldContain;
}
}
+ /**
+ * Pre-built predicates are stored here to allow their re-usage and easier access from code
+ */
public abstract static class Presets {
// Think twice before using these, since rarity is a prop of printed card.
public static final Predicate isCommon = rarity(true, CardRarity.Common);
@@ -149,14 +168,12 @@ public final class CardPrinted implements Comparable {
public static final Predicate isRare = rarity(true, CardRarity.Rare);
public static final Predicate isMythicRare = rarity(true, CardRarity.MythicRare);
public static final Predicate isRareOrMythic = Predicate.or(isRare, isMythicRare);
-
public static final Predicate isSpecial = rarity(true, CardRarity.Special);
-
public static final Predicate exceptLands = rarity(false, CardRarity.BasicLand);
// TODO: Update this code on each rotation (or move this list to a file)
public static final Predicate isStandard = printedInSets(
- new String[] {"M12", "NPH", "MBS", "SOM", "M11", "ROE", "WWK", "ZEN"});
+ Arrays.asList(new String[] {"M12", "NPH", "MBS", "SOM", "M11", "ROE", "WWK", "ZEN"}), true);
}
}
diff --git a/src/main/java/forge/card/CardRulesReader.java b/src/main/java/forge/card/CardRulesReader.java
index 18d1707bdbf..c076ce0457c 100644
--- a/src/main/java/forge/card/CardRulesReader.java
+++ b/src/main/java/forge/card/CardRulesReader.java
@@ -1,25 +1,11 @@
package forge.card;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-//import java.util.Enumeration;
-import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
-import java.util.regex.Pattern;
-
import org.apache.commons.lang3.StringUtils;
-//import java.util.zip.ZipEntry;
-//import java.util.zip.ZipFile;
import forge.card.CardManaCost.ManaParser;
-import forge.error.ErrorViewer;
-import forge.properties.NewConstants;
/**