diff --git a/.gitattributes b/.gitattributes index aaec2d96137..b2a78059519 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11045,7 +11045,6 @@ src/main/java/forge/Untap.java -text src/main/java/forge/Upkeep.java svneol=native#text/plain src/main/java/forge/ZCTrigger.java svneol=native#text/plain src/main/java/forge/card/BoosterGenerator.java svneol=native#text/plain -src/main/java/forge/card/BoosterUtils.java svneol=native#text/plain src/main/java/forge/card/CardBlock.java -text src/main/java/forge/card/CardCharacteristics.java -text src/main/java/forge/card/CardColor.java -text @@ -11370,6 +11369,7 @@ src/main/java/forge/properties/NewConstants.java svneol=native#text/plain src/main/java/forge/properties/Preferences.java svneol=native#text/plain src/main/java/forge/properties/SavePreferencesListener.java svneol=native#text/plain src/main/java/forge/properties/package-info.java svneol=native#text/plain +src/main/java/forge/quest/BoosterUtils.java svneol=native#text/plain src/main/java/forge/quest/ReadPriceList.java svneol=native#text/plain src/main/java/forge/quest/SellRules.java -text src/main/java/forge/quest/data/PreconReader.java -text diff --git a/src/main/java/forge/card/CardEdition.java b/src/main/java/forge/card/CardEdition.java index ea6e8409d1a..ab5ea7bcb79 100644 --- a/src/main/java/forge/card/CardEdition.java +++ b/src/main/java/forge/card/CardEdition.java @@ -17,6 +17,7 @@ */ package forge.card; +import forge.game.GameFormat; import net.slightlymagic.braids.util.lambda.Lambda1; import net.slightlymagic.maxmtg.Predicate; @@ -352,6 +353,23 @@ public final class CardEdition implements Comparable { // immutable return subject.canGenerateBooster(); } } + + public final static Predicate isLegalInFormat(final GameFormat format) { + return new LegalInFormat(format); + } + + private static class LegalInFormat extends Predicate { + private final GameFormat format; + + public LegalInFormat(final GameFormat fmt) { + this.format = fmt; + } + + @Override + public boolean isTrue(final CardEdition subject) { + return this.format.isSetLegal(subject.getCode()); + } + } } } diff --git a/src/main/java/forge/card/EditionUtils.java b/src/main/java/forge/card/EditionUtils.java index b95d9fa7977..d4182e8368a 100644 --- a/src/main/java/forge/card/EditionUtils.java +++ b/src/main/java/forge/card/EditionUtils.java @@ -26,6 +26,7 @@ import java.util.TreeMap; import org.apache.commons.lang3.StringUtils; +import forge.util.FileSection; import forge.util.FileUtil; /** @@ -145,34 +146,23 @@ public final class EditionUtils { private List loadSetData(final Map boosters) { final ArrayList fData = FileUtil.readFile("res/blockdata/setdata.txt"); + + final List allSets = new ArrayList(); for (final String s : fData) { if (StringUtils.isBlank(s)) { continue; } - final String[] sParts = s.trim().split("\\|"); - String code = null, code2 = null, name = null; + FileSection section = FileSection.parse(s, ":", "|"); + String code = section.get("code3"); + int index = section.getInt("index", -1); + String code2 = section.get("code2"); + String name = section.get("name"); + String alias = section.get("alias"); - int index = -1; - String alias = null; - for (final String sPart : sParts) { - final String[] kv = sPart.split(":", 2); - final 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]; - } - } final CardEdition set = new CardEdition(index, name, code, code2, boosters.get(code)); - boosters.remove(code); + //boosters.remove(code); setsByCode.put(code, set); if (alias != null) { setsByCode.put(alias, set); diff --git a/src/main/java/forge/card/FormatUtils.java b/src/main/java/forge/card/FormatUtils.java index e9f5b6f5a39..29601703902 100644 --- a/src/main/java/forge/card/FormatUtils.java +++ b/src/main/java/forge/card/FormatUtils.java @@ -7,11 +7,8 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; -import net.slightlymagic.maxmtg.Predicate; - import org.apache.commons.lang3.StringUtils; -import forge.Singletons; import forge.game.GameFormat; import forge.util.FileUtil; @@ -92,37 +89,6 @@ public final class FormatUtils { formats.put(name, thisFormat); } } - - public abstract static class Predicates { - - public static final Predicate isLegalInFormat(final GameFormat format) { - return new LegalInFormat(format); - } - - private static class LegalInFormat extends Predicate { - private final GameFormat format; - - public LegalInFormat(final GameFormat fmt) { - this.format = fmt; - } - - @Override - public boolean isTrue(final CardEdition subject) { - return this.format.isSetLegal(subject.getCode()); - } - } - - /** The Constant setsInT2. */ - public static final Predicate SETS_IN_STANDARD = Predicates - .isLegalInFormat(Singletons.getModel().getFormats().getStandard()); - - /** The Constant setsInExt. */ - public static final Predicate SETS_IN_EXT = Predicates.isLegalInFormat(Singletons.getModel().getFormats().getExtended()); - - /** The Constant setsInModern. */ - public static final Predicate SET_IN_MODERN = Predicates.isLegalInFormat(Singletons.getModel().getFormats().getModern()); - - } } /** diff --git a/src/main/java/forge/card/BoosterUtils.java b/src/main/java/forge/quest/BoosterUtils.java similarity index 98% rename from src/main/java/forge/card/BoosterUtils.java rename to src/main/java/forge/quest/BoosterUtils.java index a9b326d8217..0851e01b665 100644 --- a/src/main/java/forge/card/BoosterUtils.java +++ b/src/main/java/forge/quest/BoosterUtils.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package forge.card; +package forge.quest; import java.util.ArrayList; import java.util.Collections; @@ -26,6 +26,8 @@ import net.slightlymagic.maxmtg.Predicate; import org.apache.commons.lang3.StringUtils; import forge.Constant; +import forge.card.CardRarity; +import forge.card.CardRules; import forge.item.CardDb; import forge.item.CardPrinted; import forge.util.MyRandom; @@ -293,7 +295,7 @@ public final class BoosterUtils { * the color * @return the card printed */ - public static CardPrinted findCardOfColor(final List in, final int color) { + private static CardPrinted findCardOfColor(final List in, final int color) { final Predicate filter = CardRules.Predicates.Presets.COLORS.get(color); if (null == filter) { return null; diff --git a/src/main/java/forge/quest/data/QuestUtil.java b/src/main/java/forge/quest/data/QuestUtil.java index 1f8fa088bbf..c91422ef49c 100644 --- a/src/main/java/forge/quest/data/QuestUtil.java +++ b/src/main/java/forge/quest/data/QuestUtil.java @@ -25,9 +25,9 @@ import forge.CardList; import forge.CardUtil; import forge.Constant; import forge.Player; -import forge.card.BoosterUtils; import forge.card.CardRarity; import forge.item.CardPrinted; +import forge.quest.BoosterUtils; /** *

diff --git a/src/main/java/forge/quest/data/QuestUtilCards.java b/src/main/java/forge/quest/data/QuestUtilCards.java index 560daee1239..7f1daa75a9b 100644 --- a/src/main/java/forge/quest/data/QuestUtilCards.java +++ b/src/main/java/forge/quest/data/QuestUtilCards.java @@ -25,7 +25,6 @@ import net.slightlymagic.braids.util.lambda.Lambda1; import net.slightlymagic.maxmtg.Predicate; import forge.Singletons; import forge.card.BoosterGenerator; -import forge.card.BoosterUtils; import forge.card.CardRarity; import forge.card.CardEdition; import forge.card.FormatUtils; @@ -37,6 +36,7 @@ import forge.item.InventoryItem; import forge.item.ItemPool; import forge.item.ItemPoolView; import forge.item.PreconDeck; +import forge.quest.BoosterUtils; import forge.quest.data.QuestPreferences.QPref; import forge.util.MyRandom; @@ -317,15 +317,16 @@ public final class QuestUtilCards { /** * Generate cards in shop. */ - private final Predicate filterExt = FormatUtils.Predicates.SETS_IN_EXT; + private final FormatUtils formats = Singletons.getModel().getFormats(); + private final Predicate filterExt = CardEdition.Predicates.isLegalInFormat(formats.getExtended()); /** The filter t2booster. */ private final Predicate filterT2booster = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, - FormatUtils.Predicates.SETS_IN_STANDARD); + CardEdition.Predicates.isLegalInFormat(formats.getStandard())); /** The filter ext but t2. */ private final Predicate filterExtButT2 = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, - Predicate.and(this.filterExt, Predicate.not(FormatUtils.Predicates.SETS_IN_STANDARD))); + Predicate.and(this.filterExt, Predicate.not(CardEdition.Predicates.isLegalInFormat(formats.getStandard())))); /** The filter not ext. */ private final Predicate filterNotExt = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, diff --git a/src/main/java/forge/util/FileSection.java b/src/main/java/forge/util/FileSection.java index 01bed20d7e0..432e3574d3c 100644 --- a/src/main/java/forge/util/FileSection.java +++ b/src/main/java/forge/util/FileSection.java @@ -25,7 +25,7 @@ public class FileSection { for (final String dd : pairs) { final String[] v = splitter.split(dd, 2); - result.lines.put(v[0], v.length > 1 ? v[1].trim() : ""); + result.lines.put(v[0].trim(), v.length > 1 ? v[1].trim() : ""); } return result; @@ -36,7 +36,7 @@ public class FileSection { Pattern splitter = Pattern.compile(Pattern.quote(kvSeparator)); for (final String dd : lines) { final String[] v = splitter.split(dd, 2); - result.lines.put(v[0], v.length > 1 ? v[1].trim() : ""); + result.lines.put(v[0].trim(), v.length > 1 ? v[1].trim() : ""); } return result;