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
This commit is contained in:
Maxmtg
2012-02-24 07:13:48 +00:00
parent d2b99dfd39
commit 3a30d29235
8 changed files with 41 additions and 64 deletions

2
.gitattributes vendored
View File

@@ -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

View File

@@ -17,6 +17,7 @@
*/
package forge.card;
import forge.game.GameFormat;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
@@ -353,5 +354,22 @@ public final class CardEdition implements Comparable<CardEdition> { // immutable
}
}
public final static Predicate<CardEdition> isLegalInFormat(final GameFormat format) {
return new LegalInFormat(format);
}
private static class LegalInFormat extends Predicate<CardEdition> {
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());
}
}
}
}

View File

@@ -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<CardEdition> loadSetData(final Map<String, CardEdition.BoosterData> boosters) {
final ArrayList<String> fData = FileUtil.readFile("res/blockdata/setdata.txt");
final List<CardEdition> allSets = new ArrayList<CardEdition>();
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);

View File

@@ -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<CardEdition> isLegalInFormat(final GameFormat format) {
return new LegalInFormat(format);
}
private static class LegalInFormat extends Predicate<CardEdition> {
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<CardEdition> SETS_IN_STANDARD = Predicates
.isLegalInFormat(Singletons.getModel().getFormats().getStandard());
/** The Constant setsInExt. */
public static final Predicate<CardEdition> SETS_IN_EXT = Predicates.isLegalInFormat(Singletons.getModel().getFormats().getExtended());
/** The Constant setsInModern. */
public static final Predicate<CardEdition> SET_IN_MODERN = Predicates.isLegalInFormat(Singletons.getModel().getFormats().getModern());
}
}
/**

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<CardPrinted> in, final int color) {
private static CardPrinted findCardOfColor(final List<CardPrinted> in, final int color) {
final Predicate<CardRules> filter = CardRules.Predicates.Presets.COLORS.get(color);
if (null == filter) {
return null;

View File

@@ -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;
/**
* <p>

View File

@@ -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<CardEdition> filterExt = FormatUtils.Predicates.SETS_IN_EXT;
private final FormatUtils formats = Singletons.getModel().getFormats();
private final Predicate<CardEdition> filterExt = CardEdition.Predicates.isLegalInFormat(formats.getExtended());
/** The filter t2booster. */
private final Predicate<CardEdition> 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<CardEdition> 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<CardEdition> filterNotExt = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER,

View File

@@ -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;