From 3a30d29235f4902d6b826f2986a7ac528e3aa128 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 24 Feb 2012 07:13:48 +0000 Subject: [PATCH] BoosterUtils moved to quest (because it is not used from other packages) Predicates for edition's legality in formats moved to CardEdition, so that global references in FormatUtils were eliminated FileSection now trims its tree keys too, editions are parsed by FileSection class --- .gitattributes | 2 +- src/main/java/forge/card/CardEdition.java | 18 ++++++++++ src/main/java/forge/card/EditionUtils.java | 30 ++++++---------- src/main/java/forge/card/FormatUtils.java | 34 ------------------- .../forge/{card => quest}/BoosterUtils.java | 6 ++-- src/main/java/forge/quest/data/QuestUtil.java | 2 +- .../java/forge/quest/data/QuestUtilCards.java | 9 ++--- src/main/java/forge/util/FileSection.java | 4 +-- 8 files changed, 41 insertions(+), 64 deletions(-) rename src/main/java/forge/{card => quest}/BoosterUtils.java (98%) 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;