From d2f240af553a47a6b6486b3340c551ecb94ecd2a Mon Sep 17 00:00:00 2001
From: Maxmtg
Date: Mon, 20 Feb 2012 20:01:32 +0000
Subject: [PATCH] renamed CardSet to CardEdition, moved static ???Utils classes
to AllZone (not a best place, but better than just static classes) divided
formats from sets
---
.gitattributes | 9 +-
src/main/java/forge/AllZone.java | 16 ++
src/main/java/forge/Card.java | 3 +-
src/main/java/forge/CardFilter.java | 2 +
src/main/java/forge/CardList.java | 1 +
src/main/java/forge/CardReader.java | 1 +
src/main/java/forge/CardUtil.java | 3 +-
.../java/forge/GuiDownloadSetPicturesLQ.java | 4 +-
.../GuiMigrateLocalMWSSetPicturesHQ.java | 3 +-
.../java/forge/card/BoosterGenerator.java | 129 +++++-------
src/main/java/forge/card/CardBlock.java | 14 +-
.../java/forge/card/CardCharacteristics.java | 1 -
.../card/{CardSet.java => CardEdition.java} | 66 ++-----
src/main/java/forge/card/FormatUtils.java | 131 +++++++++++++
src/main/java/forge/{ => card}/SetInfo.java | 2 +-
src/main/java/forge/{ => card}/SetUtils.java | 184 ++++--------------
src/main/java/forge/deck/DeckBase.java | 12 ++
.../forge/deck/io/DeckGroupSerializer.java | 5 +-
.../java/forge/deck/io/DeckSerializer.java | 5 +-
.../java/forge/game/limited/BoosterDraft.java | 11 +-
.../java/forge/game/limited/SealedDeck.java | 11 +-
.../forge/gui/deckeditor/PresetColumns.java | 10 +-
.../deckeditor/elements/CardPanelLite.java | 6 +-
.../elements/FilterNameTypeSetPanel.java | 12 +-
src/main/java/forge/item/BoosterPack.java | 20 +-
src/main/java/forge/item/CardDb.java | 6 +-
src/main/java/forge/item/PreconDeck.java | 4 +-
.../java/forge/quest/data/PreconReader.java | 4 +-
src/main/java/forge/quest/data/QuestData.java | 4 +-
.../java/forge/quest/data/QuestUtilCards.java | 21 +-
.../FolderStorageReader.java} | 25 +--
.../forge/view/match/QuestWinLoseHandler.java | 12 +-
src/test/java/forge/BoosterDraftTest.java | 2 +-
33 files changed, 357 insertions(+), 382 deletions(-)
rename src/main/java/forge/card/{CardSet.java => CardEdition.java} (74%)
create mode 100644 src/main/java/forge/card/FormatUtils.java
rename src/main/java/forge/{ => card}/SetInfo.java (99%)
rename src/main/java/forge/{ => card}/SetUtils.java (50%)
rename src/main/java/forge/{deck/io/DeckReaderBase.java => util/FolderStorageReader.java} (77%)
diff --git a/.gitattributes b/.gitattributes
index 53cf4f461dc..713fe30b31a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -11017,8 +11017,6 @@ src/main/java/forge/PlayerType.java svneol=native#text/plain
src/main/java/forge/PlayerUtil.java svneol=native#text/plain
src/main/java/forge/PlayerZone.java svneol=native#text/plain
src/main/java/forge/PlayerZoneComesIntoPlay.java svneol=native#text/plain
-src/main/java/forge/SetInfo.java svneol=native#text/plain
-src/main/java/forge/SetUtils.java svneol=native#text/plain
src/main/java/forge/SimpleCombat.java svneol=native#text/plain
src/main/java/forge/Singletons.java svneol=native#text/plain
src/main/java/forge/StaticEffect.java svneol=native#text/plain
@@ -11033,6 +11031,7 @@ src/main/java/forge/card/CardBlock.java -text
src/main/java/forge/card/CardCharacteristics.java -text
src/main/java/forge/card/CardColor.java -text
src/main/java/forge/card/CardCoreType.java -text
+src/main/java/forge/card/CardEdition.java -text
src/main/java/forge/card/CardInSet.java -text
src/main/java/forge/card/CardManaCost.java -text
src/main/java/forge/card/CardManaCostShard.java -text
@@ -11040,10 +11039,12 @@ src/main/java/forge/card/CardRarity.java -text
src/main/java/forge/card/CardRuleCharacteristics.java -text
src/main/java/forge/card/CardRules.java -text
src/main/java/forge/card/CardRulesReader.java svneol=native#text/plain
-src/main/java/forge/card/CardSet.java -text
src/main/java/forge/card/CardSuperType.java -text
src/main/java/forge/card/CardType.java -text
+src/main/java/forge/card/FormatUtils.java -text
src/main/java/forge/card/MtgDataParser.java -text
+src/main/java/forge/card/SetInfo.java svneol=native#text/plain
+src/main/java/forge/card/SetUtils.java svneol=native#text/plain
src/main/java/forge/card/TriggerReplacementBase.java -text
src/main/java/forge/card/abilityfactory/AbilityFactory.java svneol=native#text/plain
src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java svneol=native#text/plain
@@ -11243,7 +11244,6 @@ src/main/java/forge/deck/generate/GenerateThemeDeck.java svneol=native#text/plai
src/main/java/forge/deck/generate/package-info.java svneol=native#text/plain
src/main/java/forge/deck/io/DeckFileHeader.java -text
src/main/java/forge/deck/io/DeckGroupSerializer.java -text
-src/main/java/forge/deck/io/DeckReaderBase.java -text
src/main/java/forge/deck/io/DeckSerializer.java -text
src/main/java/forge/deck/io/OldDeckParser.java -text
src/main/java/forge/deck/package-info.java svneol=native#text/plain
@@ -11377,6 +11377,7 @@ src/main/java/forge/util/FileSection.java -text
src/main/java/forge/util/FileUtil.java svneol=native#text/plain
src/main/java/forge/util/FolderMap.java svneol=native#text/plain
src/main/java/forge/util/FolderMapView.java -text
+src/main/java/forge/util/FolderStorageReader.java -text
src/main/java/forge/util/HttpUtil.java svneol=native#text/plain
src/main/java/forge/util/IFolderMap.java -text
src/main/java/forge/util/IFolderMapView.java -text
diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java
index d9a4d90bc11..b1a368f6357 100644
--- a/src/main/java/forge/AllZone.java
+++ b/src/main/java/forge/AllZone.java
@@ -22,6 +22,8 @@ import java.util.List;
import net.slightlymagic.braids.util.UtilFunctions;
import forge.Constant.Zone;
+import forge.card.FormatUtils;
+import forge.card.SetUtils;
import forge.card.cardfactory.CardFactoryInterface;
import forge.card.cardfactory.PreloadingCardFactory;
import forge.card.replacement.ReplacementHandler;
@@ -570,4 +572,18 @@ public final class AllZone {
return AllZone.cardRatings;
}
+ /**
+ * TODO: Write javadoc for this method.
+ * @return
+ */
+ private static SetUtils setUtils = null;
+ public static SetUtils getEditions() {
+ return setUtils != null ? setUtils : (setUtils = new SetUtils());
+ }
+
+ private static FormatUtils formats = null;
+ public static FormatUtils getFormats() {
+ return formats != null ? formats : ( formats = new FormatUtils());
+ }
+
} // AllZone
diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java
index a4fde6947b9..a851ca0be91 100644
--- a/src/main/java/forge/Card.java
+++ b/src/main/java/forge/Card.java
@@ -33,6 +33,7 @@ import com.esotericsoftware.minlog.Log;
import forge.Constant.Zone;
import forge.card.CardCharacteristics;
+import forge.card.SetInfo;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.mana.ManaCost;
@@ -8218,7 +8219,7 @@ public class Card extends GameEntity implements Comparable {
*
*
* @param sInfo
- * a {@link forge.SetInfo} object.
+ * a {@link forge.card.SetInfo} object.
*/
public final void addSet(final SetInfo sInfo) {
this.getCharacteristics().getSets().add(sInfo);
diff --git a/src/main/java/forge/CardFilter.java b/src/main/java/forge/CardFilter.java
index af98bb9112b..e44d6a25b58 100644
--- a/src/main/java/forge/CardFilter.java
+++ b/src/main/java/forge/CardFilter.java
@@ -25,6 +25,8 @@ import net.slightlymagic.braids.util.lambda.Lambda1;
import com.google.code.jyield.Generator;
+import forge.card.SetInfo;
+
/**
*
* CardFilter class.
diff --git a/src/main/java/forge/CardList.java b/src/main/java/forge/CardList.java
index 8fdd770f585..31e30ccbf24 100644
--- a/src/main/java/forge/CardList.java
+++ b/src/main/java/forge/CardList.java
@@ -26,6 +26,7 @@ import java.util.List;
import com.google.code.jyield.Generator;
import com.google.code.jyield.Yieldable;
+import forge.card.SetInfo;
import forge.card.spellability.SpellAbility;
import forge.util.MyRandom;
diff --git a/src/main/java/forge/CardReader.java b/src/main/java/forge/CardReader.java
index 489805badd7..99e21801157 100644
--- a/src/main/java/forge/CardReader.java
+++ b/src/main/java/forge/CardReader.java
@@ -46,6 +46,7 @@ import com.google.code.jyield.YieldUtils;
import forge.card.CardRules;
import forge.card.CardRulesReader;
+import forge.card.SetInfo;
import forge.card.replacement.ReplacementHandler;
import forge.card.trigger.TriggerHandler;
import forge.error.ErrorViewer;
diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java
index 38eb923af38..8b109c9d004 100644
--- a/src/main/java/forge/CardUtil.java
+++ b/src/main/java/forge/CardUtil.java
@@ -31,6 +31,7 @@ import net.slightlymagic.maxmtg.Predicate;
import org.apache.commons.lang3.StringUtils;
import forge.card.CardCharacteristics;
+import forge.card.SetInfo;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityList;
@@ -731,7 +732,7 @@ public final class CardUtil {
}
// Second, try 2 letter set code with MWS filename format
- final String mwsSet2 = String.format("%s/%s%s.full", SetUtils.getCode2ByCode(setName), mwsCardName, nn);
+ final String mwsSet2 = String.format("%s/%s%s.full", AllZone.getEditions().getCode2ByCode(setName), mwsCardName, nn);
f = new File(path, mwsSet2 + ".jpg");
if (f.exists()) {
return mwsSet2;
diff --git a/src/main/java/forge/GuiDownloadSetPicturesLQ.java b/src/main/java/forge/GuiDownloadSetPicturesLQ.java
index f5863f33b66..11d23c4b2df 100644
--- a/src/main/java/forge/GuiDownloadSetPicturesLQ.java
+++ b/src/main/java/forge/GuiDownloadSetPicturesLQ.java
@@ -24,7 +24,7 @@ import javax.swing.JFrame;
import org.apache.commons.lang3.StringUtils;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.properties.ForgeProps;
@@ -71,7 +71,7 @@ public class GuiDownloadSetPicturesLQ extends GuiDownloader {
final String urlBase = ForgeProps.getProperty(NewConstants.CARDFORGE_URL) + "/fpics/";
final String setCode3 = c.getSet();
- final CardSet thisSet = SetUtils.getSetByCode(setCode3);
+ final CardEdition thisSet = AllZone.getEditions().getEditionByCode(setCode3);
final String setCode2 = thisSet.getCode2();
final String imgFN = CardUtil.buildFilename(c, cardName);
diff --git a/src/main/java/forge/GuiMigrateLocalMWSSetPicturesHQ.java b/src/main/java/forge/GuiMigrateLocalMWSSetPicturesHQ.java
index 1f92006e9a2..08a87bb2e4a 100644
--- a/src/main/java/forge/GuiMigrateLocalMWSSetPicturesHQ.java
+++ b/src/main/java/forge/GuiMigrateLocalMWSSetPicturesHQ.java
@@ -51,6 +51,7 @@ import javax.swing.event.ChangeListener;
import com.esotericsoftware.minlog.Log;
+import forge.card.SetInfo;
import forge.error.ErrorViewer;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
@@ -497,7 +498,7 @@ public final class GuiMigrateLocalMWSSetPicturesHQ extends DefaultBoundedRangeMo
for (int j = 0; j < cSetInfo.size(); j++) {
c.setCurSetCode(cSetInfo.get(j).getCode());
final String setCode3 = c.getCurSetCode();
- final String setCode2 = SetUtils.getCode2ByCode(c.getCurSetCode());
+ final String setCode2 = AllZone.getEditions().getCode2ByCode(c.getCurSetCode());
int n = 0;
if (cSetInfo.get(j).getPicCount() > 0) {
diff --git a/src/main/java/forge/card/BoosterGenerator.java b/src/main/java/forge/card/BoosterGenerator.java
index 67a088e56e7..178202e670b 100644
--- a/src/main/java/forge/card/BoosterGenerator.java
+++ b/src/main/java/forge/card/BoosterGenerator.java
@@ -20,6 +20,7 @@ package forge.card;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -42,6 +43,8 @@ import forge.util.MyRandom;
*/
public class BoosterGenerator {
+ private static final int BOOSTERS_TO_FIND_MYTHIC = 8;
+
// Function to open a booster as it is.
/** The Constant IDENTITY_PICK. */
public static final Lambda1, BoosterGenerator> IDENTITY_PICK = new Lambda1, BoosterGenerator>() {
@@ -65,18 +68,12 @@ public class BoosterGenerator {
}
// These lists are to hold cards grouped by rarity in advance.
- private final List basicLands = new ArrayList();
+
private final List allButLands = new ArrayList();
- private final List commons = new ArrayList();
- private final List uncommons = new ArrayList();
- private final List rares = new ArrayList();
- private final List mythics = new ArrayList();
- private final List specials = new ArrayList();
- private final List doubleFacedCommons = new ArrayList();
- private final List doubleFacedUncommons = new ArrayList();
- private final List doubleFacedRares = new ArrayList();
- private final List doubleFacedMythics = new ArrayList();
-
+
+ private final Map> cardsByRarity = new EnumMap>(CardRarity.class);
+ private final Map> twoFacedByRarity = new EnumMap>(CardRarity.class);
+
// private List commonCreatures;
// private List commonNonCreatures;
@@ -90,6 +87,16 @@ public class BoosterGenerator {
private int numDoubleFaced = 0;
private int numSpecials = 0;
+ private BoosterGenerator()
+ {
+ for( CardRarity v : CardRarity.values() )
+ {
+ cardsByRarity.put(v, new ArrayList());
+ twoFacedByRarity.put(v, new ArrayList());
+ }
+ }
+
+
/**
*
* Constructor for BoosterGenerator.
@@ -99,6 +106,7 @@ public class BoosterGenerator {
* the cards
*/
public BoosterGenerator(final Iterable cards) {
+ this();
for (final CardPrinted c : cards) {
this.addToRarity(c);
}
@@ -111,6 +119,7 @@ public class BoosterGenerator {
* the d pool
*/
public BoosterGenerator(final ItemPoolView dPool) {
+ this();
for (final Entry e : dPool) {
this.addToRarity(e.getKey());
}
@@ -124,11 +133,12 @@ public class BoosterGenerator {
* @param cardSet
* the card set
*/
- public BoosterGenerator(final CardSet cardSet) {
+ public BoosterGenerator(final CardEdition cardSet) {
+ this();
if (!cardSet.canGenerateBooster()) {
throw new InvalidParameterException("BoosterGenerator: Set " + cardSet + " cannot generate boosters!");
}
- final CardSet.BoosterData bs = cardSet.getBoosterData();
+ final CardEdition.BoosterData bs = cardSet.getBoosterData();
this.numCommons = bs.getCommon();
this.numUncommons = bs.getUncommon();
@@ -188,7 +198,7 @@ public class BoosterGenerator {
int indexRares = Integer.MAX_VALUE;
int indexMythics = Integer.MAX_VALUE;
for (int iCard = 0; iCard < count; iCard++) {
- final int rollD8 = MyRandom.getRandom().nextInt(8);
+ final int rollD8 = MyRandom.getRandom().nextInt(BOOSTERS_TO_FIND_MYTHIC);
final boolean takeMythic = (mythicsSize > 0) && (rollD8 < 1);
if (takeMythic) {
if (indexMythics >= mythicsSize) {
@@ -271,47 +281,35 @@ public class BoosterGenerator {
final List temp = new ArrayList();
- temp.addAll(this.pickRandomCards(this.commons, nCom));
- /*
- * if( nComCreat > 0 || nComNonCr > 0) { if
- * (commonNonCreatures.isEmpty()) {
- * CardRules.Predicates.Presets.isCreature.split(commons,
- * CardPrinted.fnGetRules, commonCreatures, commonNonCreatures); }
- * temp.addAll(pickRandomCards(commonCreatures, nComCreat));
- * temp.addAll(pickRandomCards(commonNonCreatures, nComNonCr)); }
- */
-
- temp.addAll(this.pickRandomCards(this.uncommons, nUnc));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.Common), nCom));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.Uncommon), nUnc));
if (nRareSlots > 0) {
- temp.addAll(this.pickRandomRaresOrMythics(this.rares, this.mythics, nRareSlots));
+ temp.addAll(this.pickRandomRaresOrMythics(cardsByRarity.get(CardRarity.Rare),
+ cardsByRarity.get(CardRarity.MythicRare), nRareSlots));
}
if ((nRares > 0) || (nMythics > 0)) {
- temp.addAll(this.pickRandomCards(this.rares, nRares));
- temp.addAll(this.pickRandomCards(this.mythics, nMythics));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.Rare), nRares));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.MythicRare), nMythics));
}
if (nDoubls > 0) {
- final int dblFacedRarity = MyRandom.getRandom().nextInt(14);
- List listToUse;
- if (dblFacedRarity < 9) { // Common
- listToUse = this.doubleFacedCommons;
- } else if (dblFacedRarity < 13) { // Uncommon
- listToUse = this.doubleFacedUncommons;
- } else { // Rare or Mythic
- if (MyRandom.getRandom().nextInt(8) == 0) {
- listToUse = this.doubleFacedMythics;
- } else {
- listToUse = this.doubleFacedRares;
- }
- }
- temp.addAll(this.pickRandomCards(listToUse, nDoubls));
+ final int dblFacedRarity = MyRandom.getRandom().nextInt(nCom + nUnc + nRareSlots);
+ CardRarity rarityInSlot = CardRarity.MythicRare;
+ if( dblFacedRarity < nCom )
+ rarityInSlot = CardRarity.Common;
+ else if( dblFacedRarity < nCom + nUnc )
+ rarityInSlot = CardRarity.Uncommon;
+ else if( MyRandom.getRandom().nextInt(BOOSTERS_TO_FIND_MYTHIC) != 0 )
+ rarityInSlot = CardRarity.Rare;
+
+ temp.addAll(this.pickRandomCards(twoFacedByRarity.get(rarityInSlot), nDoubls));
}
- temp.addAll(this.pickRandomCards(this.specials, nSpecs));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.Special), nSpecs));
temp.addAll(this.pickRandomCards(this.allButLands, nAnyCard));
- temp.addAll(this.pickRandomCards(this.basicLands, nLands));
+ temp.addAll(this.pickRandomCards(cardsByRarity.get(CardRarity.BasicLand), nLands));
return temp;
}
@@ -320,48 +318,15 @@ public class BoosterGenerator {
if (c.getCard().isAltState()) {
return;
}
+
+ CardRarity rarity = c.getRarity();
if (c.getCard().isDoubleFaced() && (this.numDoubleFaced > 0)) {
- switch (c.getRarity()) {
- case Common:
- this.doubleFacedCommons.add(c);
- break;
- case Uncommon:
- this.doubleFacedUncommons.add(c);
- break;
- case Rare:
- this.doubleFacedRares.add(c);
- break;
- case MythicRare:
- this.doubleFacedMythics.add(c);
- break;
- default:
- break;
- }
+ twoFacedByRarity.get(rarity).add(c);
} else {
- switch (c.getRarity()) {
- case Common:
- this.commons.add(c);
- break;
- case Uncommon:
- this.uncommons.add(c);
- break;
- case Rare:
- this.rares.add(c);
- break;
- case MythicRare:
- this.mythics.add(c);
- break;
- case Special:
- this.specials.add(c);
- break;
- default:
- break;
- }
+ cardsByRarity.get(rarity).add(c);
}
- if (c.getCard().getType().isBasicLand()) {
- this.basicLands.add(c);
- } else {
+ if (!c.getCard().getType().isBasicLand()) {
this.allButLands.add(c);
}
}
diff --git a/src/main/java/forge/card/CardBlock.java b/src/main/java/forge/card/CardBlock.java
index 310cde64d15..732b82751b7 100644
--- a/src/main/java/forge/card/CardBlock.java
+++ b/src/main/java/forge/card/CardBlock.java
@@ -27,12 +27,12 @@ import forge.item.CardPrinted;
* This is a CardBlock class.
*/
public final class CardBlock implements Comparable {
- private static final CardSet[] EMPTY_SET_ARRAY = new CardSet[] {};
+ private static final CardEdition[] EMPTY_SET_ARRAY = new CardEdition[] {};
private final int orderNum;
private final String name;
- private final CardSet[] sets;
- private final CardSet landSet;
+ private final CardEdition[] sets;
+ private final CardEdition landSet;
private final int cntBoostersDraft;
private final int cntBoostersSealed;
private Predicate filter = null;
@@ -53,7 +53,7 @@ public final class CardBlock implements Comparable {
* @param cntBoostersSealed
* the cnt boosters sealed
*/
- public CardBlock(final int index, final String name, final List sets, final CardSet landSet,
+ public CardBlock(final int index, final String name, final List sets, final CardEdition landSet,
final int cntBoostersDraft, final int cntBoostersSealed) {
this.orderNum = index;
this.name = name;
@@ -77,7 +77,7 @@ public final class CardBlock implements Comparable {
*
* @return the sets
*/
- public CardSet[] getSets() {
+ public CardEdition[] getSets() {
return this.sets;
}
@@ -86,7 +86,7 @@ public final class CardBlock implements Comparable {
*
* @return the land set
*/
- public CardSet getLandSet() {
+ public CardEdition getLandSet() {
return this.landSet;
}
@@ -122,7 +122,7 @@ public final class CardBlock implements Comparable {
private Predicate buildFilter() {
final List setCodes = new ArrayList();
- for (final CardSet set : this.sets) {
+ for (final CardEdition set : this.sets) {
setCodes.add(set.getCode());
}
return CardPrinted.Predicates.printedInSets(setCodes, true);
diff --git a/src/main/java/forge/card/CardCharacteristics.java b/src/main/java/forge/card/CardCharacteristics.java
index bc9b8feb26f..fb89eb3ffe2 100644
--- a/src/main/java/forge/card/CardCharacteristics.java
+++ b/src/main/java/forge/card/CardCharacteristics.java
@@ -20,7 +20,6 @@ package forge.card;
import java.util.ArrayList;
import forge.CardColor;
-import forge.SetInfo;
import forge.card.replacement.ReplacementEffect;
import forge.card.spellability.AbilityMana;
import forge.card.spellability.SpellAbility;
diff --git a/src/main/java/forge/card/CardSet.java b/src/main/java/forge/card/CardEdition.java
similarity index 74%
rename from src/main/java/forge/card/CardSet.java
rename to src/main/java/forge/card/CardEdition.java
index 00a53395947..ea6e8409d1a 100644
--- a/src/main/java/forge/card/CardSet.java
+++ b/src/main/java/forge/card/CardEdition.java
@@ -19,8 +19,6 @@ package forge.card;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
-import forge.SetUtils;
-import forge.game.GameFormat;
/**
*
@@ -30,7 +28,7 @@ import forge.game.GameFormat;
* @author Forge
* @version $Id: CardSet.java 9708 2011-08-09 19:34:12Z jendave $
*/
-public final class CardSet implements Comparable { // immutable
+public final class CardEdition implements Comparable { // immutable
private final int index;
private final String code;
private final String code2;
@@ -49,7 +47,7 @@ public final class CardSet implements Comparable { // immutable
* @param code2
* the code2
*/
- public CardSet(final int index, final String name, final String code, final String code2) {
+ public CardEdition(final int index, final String name, final String code, final String code2) {
this(index, name, code, code2, null);
}
@@ -67,7 +65,7 @@ public final class CardSet implements Comparable { // immutable
* @param booster
* the booster
*/
- public CardSet(final int index, final String name, final String code, final String code2, final BoosterData booster) {
+ public CardEdition(final int index, final String name, final String code, final String code2, final BoosterData booster) {
this.code = code;
this.code2 = code2;
this.index = index;
@@ -76,7 +74,7 @@ public final class CardSet implements Comparable { // immutable
}
/** The Constant unknown. */
- public static final CardSet UNKNOWN = new CardSet(-1, "Undefined", "???", "??");
+ public static final CardEdition UNKNOWN = new CardEdition(-1, "Undefined", "???", "??");
/**
* Gets the name.
@@ -133,17 +131,17 @@ public final class CardSet implements Comparable { // immutable
}
/** The Constant fnGetName. */
- public static final Lambda1 FN_GET_NAME = new Lambda1() {
+ public static final Lambda1 FN_GET_NAME = new Lambda1() {
@Override
- public String apply(final CardSet arg1) {
+ public String apply(final CardEdition arg1) {
return arg1.name;
}
};
/** The Constant fn1. */
- public static final Lambda1 FN1 = new Lambda1() {
+ public static final Lambda1 FN1 = new Lambda1() {
@Override
- public CardSet apply(final CardSet arg1) {
+ public CardEdition apply(final CardEdition arg1) {
return arg1;
}
};
@@ -154,7 +152,7 @@ public final class CardSet implements Comparable { // immutable
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
- public int compareTo(final CardSet o) {
+ public int compareTo(final CardEdition o) {
if (o == null) {
return 1;
}
@@ -188,7 +186,7 @@ public final class CardSet implements Comparable { // immutable
return false;
}
- final CardSet other = (CardSet) obj;
+ final CardEdition other = (CardEdition) obj;
return other.name.equals(this.name) && this.code.equals(other.code);
}
@@ -345,53 +343,15 @@ public final class CardSet implements Comparable { // immutable
public abstract static class Predicates {
/** The Constant canMakeBooster. */
- public static final Predicate CAN_MAKE_BOOSTER = new CanMakeBooster();
+ public static final Predicate CAN_MAKE_BOOSTER = new CanMakeBooster();
- /**
- * Checks if is legal in format.
- *
- * @param format
- * the format
- * @return the predicate
- */
- public static final Predicate isLegalInFormat(final GameFormat format) {
- return new LegalInFormat(format);
- }
- private static class CanMakeBooster extends Predicate {
+ private static class CanMakeBooster extends Predicate {
@Override
- public boolean isTrue(final CardSet subject) {
+ public boolean isTrue(final CardEdition subject) {
return subject.canGenerateBooster();
}
}
- private static class LegalInFormat extends Predicate {
- private final GameFormat format;
-
- public LegalInFormat(final GameFormat fmt) {
- this.format = fmt;
- }
-
- @Override
- public boolean isTrue(final CardSet subject) {
- return this.format.isSetLegal(subject.getCode());
- }
- }
-
- /**
- * The Class Presets.
- */
- public abstract static class Presets {
-
- /** The Constant setsInT2. */
- public static final Predicate SETS_IN_STANDARD = Predicates
- .isLegalInFormat(SetUtils.getStandard());
-
- /** The Constant setsInExt. */
- public static final Predicate SETS_IN_EXT = Predicates.isLegalInFormat(SetUtils.getExtended());
-
- /** The Constant setsInModern. */
- public static final Predicate SET_IN_MODERN = Predicates.isLegalInFormat(SetUtils.getModern());
- }
}
}
diff --git a/src/main/java/forge/card/FormatUtils.java b/src/main/java/forge/card/FormatUtils.java
new file mode 100644
index 00000000000..4c9f4d7d5d9
--- /dev/null
+++ b/src/main/java/forge/card/FormatUtils.java
@@ -0,0 +1,131 @@
+package forge.card;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+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.AllZone;
+import forge.game.GameFormat;
+import forge.util.FileUtil;
+
+public final class FormatUtils {
+
+ private final Map formats = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+
+ /**
+ * Gets the standard.
+ *
+ * @return the standard
+ */
+ public GameFormat getStandard() {
+ return formats.get("Standard");
+ }
+
+ /**
+ * Gets the extended.
+ *
+ * @return the extended
+ */
+ public GameFormat getExtended() {
+ return formats.get("Extended");
+ }
+
+ /**
+ * Gets the modern.
+ *
+ * @return the modern
+ */
+ public GameFormat getModern() {
+ return formats.get("Modern");
+ }
+
+ // list are immutable, no worries
+ /**
+ * Gets the formats.
+ *
+ * @return the formats
+ */
+ public Collection getFormats() {
+ return formats.values();
+ }
+
+ public FormatUtils() {
+ final List fData = FileUtil.readFile("res/blockdata/formats.txt");
+
+ for (final String s : fData) {
+ if (StringUtils.isBlank(s)) {
+ continue;
+ }
+
+ String name = null;
+ final List sets = new ArrayList(); // default: all
+ // sets
+ // allowed
+ final List bannedCards = new ArrayList(); // default:
+ // nothing
+ // banned
+
+ final String[] sParts = s.trim().split("\\|");
+ for (final String sPart : sParts) {
+ final String[] kv = sPart.split(":", 2);
+ final String key = kv[0].toLowerCase();
+ if ("name".equals(key)) {
+ name = kv[1];
+ } else if ("sets".equals(key)) {
+ sets.addAll(Arrays.asList(kv[1].split(", ")));
+ } else if ("banned".equals(key)) {
+ bannedCards.addAll(Arrays.asList(kv[1].split("; ")));
+ }
+ }
+ if (name == null) {
+ throw new RuntimeException("Format must have a name! Check formats.txt file");
+ }
+ final GameFormat thisFormat = new GameFormat(name, sets, bannedCards);
+
+ 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(AllZone.getFormats().getStandard());
+
+ /** The Constant setsInExt. */
+ public static final Predicate SETS_IN_EXT = Predicates.isLegalInFormat(AllZone.getFormats().getExtended());
+
+ /** The Constant setsInModern. */
+ public static final Predicate SET_IN_MODERN = Predicates.isLegalInFormat(AllZone.getFormats().getModern());
+
+ }
+}
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
diff --git a/src/main/java/forge/SetInfo.java b/src/main/java/forge/card/SetInfo.java
similarity index 99%
rename from src/main/java/forge/SetInfo.java
rename to src/main/java/forge/card/SetInfo.java
index ed70c283329..1b1c866a8d3 100644
--- a/src/main/java/forge/SetInfo.java
+++ b/src/main/java/forge/card/SetInfo.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;
+package forge.card;
/**
*
diff --git a/src/main/java/forge/SetUtils.java b/src/main/java/forge/card/SetUtils.java
similarity index 50%
rename from src/main/java/forge/SetUtils.java
rename to src/main/java/forge/card/SetUtils.java
index 80f04c024b2..75c2e4dd9ef 100644
--- a/src/main/java/forge/SetUtils.java
+++ b/src/main/java/forge/card/SetUtils.java
@@ -15,20 +15,17 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge;
+package forge.card;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import org.apache.commons.lang3.StringUtils;
-import forge.card.CardBlock;
-import forge.card.CardSet;
-import forge.game.GameFormat;
import forge.util.FileUtil;
/**
@@ -41,80 +38,28 @@ import forge.util.FileUtil;
*/
public final class SetUtils {
- private SetUtils() {
- throw new AssertionError();
+ private final List allSets;
+
+ public final List getAllSets() {
+ return allSets;
+ }
+
+ public SetUtils() {
+ allSets = loadSetData(loadBoosterData());
+ allBlocks = loadBlockData();
}
/** Constant setData. */
- private static Map setsByCode = new HashMap();
- private static List allSets = new ArrayList();
- private static List allBlocks = new ArrayList();
-
- private static List formats = new ArrayList();
- private static GameFormat fmtStandard = null;
- private static GameFormat fmtExtended = null;
- private static GameFormat fmtModern = null;
-
- /**
- * Gets the standard.
- *
- * @return the standard
- */
- public static GameFormat getStandard() {
- return SetUtils.fmtStandard;
- }
-
- /**
- * Gets the extended.
- *
- * @return the extended
- */
- public static GameFormat getExtended() {
- return SetUtils.fmtExtended;
- }
-
- /**
- * Gets the modern.
- *
- * @return the modern
- */
- public static GameFormat getModern() {
- return SetUtils.fmtModern;
- }
-
- // list are immutable, no worries
- /**
- * Gets the formats.
- *
- * @return the formats
- */
- public static List getFormats() {
- return SetUtils.formats;
- }
+ private final Map setsByCode = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+ private final List allBlocks;
/**
* Gets the blocks.
*
* @return the blocks
*/
- public static List getBlocks() {
- return SetUtils.allBlocks;
- }
-
- /**
- * Gets the all sets.
- *
- * @return the all sets
- */
- public static List getAllSets() {
- return SetUtils.allSets;
- }
-
- // Perform that first of all
- static {
- SetUtils.loadSetData(SetUtils.loadBoosterData());
- SetUtils.loadBlockData();
- SetUtils.loadFormatData();
+ public List getBlocks() {
+ return allBlocks;
}
/**
@@ -124,8 +69,8 @@ public final class SetUtils {
* the code
* @return the sets the by code
*/
- public static CardSet getSetByCode(final String code) {
- return SetUtils.setsByCode.get(code);
+ public CardEdition getEditionByCode(final String code) {
+ return setsByCode.get(code);
}
/**
@@ -135,10 +80,10 @@ public final class SetUtils {
* the code
* @return the sets the by code or throw
*/
- public static CardSet getSetByCodeOrThrow(final String code) {
- final CardSet set = SetUtils.setsByCode.get(code);
+ public CardEdition getEditionByCodeOrThrow(final String code) {
+ final CardEdition set = setsByCode.get(code);
if (null == set) {
- throw new RuntimeException(String.format("Set with code '%s' not found", code));
+ throw new RuntimeException(String.format("Edition with code '%s' not found", code));
}
return set;
}
@@ -151,14 +96,14 @@ public final class SetUtils {
* the code
* @return the code2 by code
*/
- public static String getCode2ByCode(final String code) {
- final CardSet set = SetUtils.setsByCode.get(code);
+ public String getCode2ByCode(final String code) {
+ final CardEdition set = setsByCode.get(code);
return set == null ? "" : set.getCode2();
}
- private static Map loadBoosterData() {
+ private Map loadBoosterData() {
final ArrayList fData = FileUtil.readFile("res/blockdata/boosters.txt");
- final Map result = new HashMap();
+ final Map result = new HashMap();
for (final String s : fData) {
if (StringUtils.isBlank(s)) {
@@ -191,15 +136,16 @@ public final class SetUtils {
nDF = Integer.parseInt(kv[1]);
}
}
- result.put(code, new CardSet.BoosterData(nC, nU, nR, nS, nDF));
+ result.put(code, new CardEdition.BoosterData(nC, nU, nR, nS, nDF));
}
return result;
}
// parser code - quite boring.
- private static void loadSetData(final Map boosters) {
+ 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;
@@ -225,22 +171,22 @@ public final class SetUtils {
alias = kv[1];
}
}
- final CardSet set = new CardSet(index, name, code, code2, boosters.get(code));
+ final CardEdition set = new CardEdition(index, name, code, code2, boosters.get(code));
boosters.remove(code);
- SetUtils.setsByCode.put(code, set);
+ setsByCode.put(code, set);
if (alias != null) {
- SetUtils.setsByCode.put(alias, set);
+ setsByCode.put(alias, set);
}
- SetUtils.allSets.add(set);
+ allSets.add(set);
}
assert boosters.isEmpty();
- Collections.sort(SetUtils.allSets);
- SetUtils.allSets = Collections.unmodifiableList(SetUtils.allSets);
+ return allSets;
}
- private static void loadBlockData() {
+ private List loadBlockData() {
final ArrayList fData = FileUtil.readFile("res/blockdata/blocks.txt");
-
+ final List theBlocks = new ArrayList();
+
for (final String s : fData) {
if (StringUtils.isBlank(s)) {
continue;
@@ -250,8 +196,8 @@ public final class SetUtils {
String name = null;
int index = -1;
- final List sets = new ArrayList(4);
- CardSet landSet = null;
+ final List sets = new ArrayList(4);
+ CardEdition landSet = null;
int draftBoosters = 3;
int sealedBoosters = 6;
@@ -263,9 +209,9 @@ public final class SetUtils {
} else if ("index".equals(key)) {
index = Integer.parseInt(kv[1]);
} else if ("set0".equals(key) || "set1".equals(key) || "set2".equals(key)) {
- sets.add(SetUtils.getSetByCodeOrThrow(kv[1]));
+ sets.add(getEditionByCodeOrThrow(kv[1]));
} else if ("landsetcode".equals(key)) {
- landSet = SetUtils.getSetByCodeOrThrow(kv[1]);
+ landSet = getEditionByCodeOrThrow(kv[1]);
} else if ("draftpacks".equals(key)) {
draftBoosters = Integer.parseInt(kv[1]);
} else if ("sealedpacks".equals(key)) {
@@ -273,56 +219,10 @@ public final class SetUtils {
}
}
- SetUtils.allBlocks.add(new CardBlock(index, name, sets, landSet, draftBoosters, sealedBoosters));
+ theBlocks.add(new CardBlock(index, name, sets, landSet, draftBoosters, sealedBoosters));
}
- Collections.reverse(SetUtils.allBlocks);
- SetUtils.allBlocks = Collections.unmodifiableList(SetUtils.allBlocks);
- }
-
- private static void loadFormatData() {
- final ArrayList fData = FileUtil.readFile("res/blockdata/formats.txt");
-
- for (final String s : fData) {
- if (StringUtils.isBlank(s)) {
- continue;
- }
-
- String name = null;
- final List sets = new ArrayList(); // default: all
- // sets
- // allowed
- final List bannedCards = new ArrayList(); // default:
- // nothing
- // banned
-
- final String[] sParts = s.trim().split("\\|");
- for (final String sPart : sParts) {
- final String[] kv = sPart.split(":", 2);
- final String key = kv[0].toLowerCase();
- if ("name".equals(key)) {
- name = kv[1];
- } else if ("sets".equals(key)) {
- sets.addAll(Arrays.asList(kv[1].split(", ")));
- } else if ("banned".equals(key)) {
- bannedCards.addAll(Arrays.asList(kv[1].split("; ")));
- }
- }
- if (name == null) {
- throw new RuntimeException("Format must have a name! Check formats.txt file");
- }
- final GameFormat thisFormat = new GameFormat(name, sets, bannedCards);
- if (name.equalsIgnoreCase("Standard")) {
- SetUtils.fmtStandard = thisFormat;
- }
- if (name.equalsIgnoreCase("Modern")) {
- SetUtils.fmtModern = thisFormat;
- }
- if (name.equalsIgnoreCase("Extended")) {
- SetUtils.fmtExtended = thisFormat;
- }
- SetUtils.formats.add(thisFormat);
- }
- SetUtils.formats = Collections.unmodifiableList(SetUtils.formats);
+ Collections.reverse(theBlocks);
+ return Collections.unmodifiableList(theBlocks);
}
}
diff --git a/src/main/java/forge/deck/DeckBase.java b/src/main/java/forge/deck/DeckBase.java
index 6a4dca0e06d..485ebba40d4 100644
--- a/src/main/java/forge/deck/DeckBase.java
+++ b/src/main/java/forge/deck/DeckBase.java
@@ -68,4 +68,16 @@ public abstract class DeckBase implements IHasName, Serializable, Comparable implements IItemSerializer {
+public class DeckGroupSerializer extends FolderStorageReader implements IItemSerializer {
/**
* TODO: Write javadoc for Constructor.
* @param deckDir0
@@ -93,7 +94,7 @@ public class DeckGroupSerializer extends DeckReaderBase implements II
}
public File makeFileFor(final DeckGroup decks) {
- return new File(getDirectory(), deriveFileName(cleanDeckName(decks.getName())));
+ return new File(getDirectory(), decks.getBestFileName());
}
/* (non-Javadoc)
diff --git a/src/main/java/forge/deck/io/DeckSerializer.java b/src/main/java/forge/deck/io/DeckSerializer.java
index 382a0656087..4b5f807d4be 100644
--- a/src/main/java/forge/deck/io/DeckSerializer.java
+++ b/src/main/java/forge/deck/io/DeckSerializer.java
@@ -36,6 +36,7 @@ import forge.deck.Deck;
import forge.item.CardPrinted;
import forge.util.FileSection;
import forge.util.FileUtil;
+import forge.util.FolderStorageReader;
import forge.util.IItemSerializer;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
@@ -46,7 +47,7 @@ import freemarker.template.TemplateException;
* TODO: Write javadoc for this type.
*
*/
-public class DeckSerializer extends DeckReaderBase implements IItemSerializer {
+public class DeckSerializer extends FolderStorageReader implements IItemSerializer {
public DeckSerializer(File deckDir0) {
super(deckDir0);
@@ -226,7 +227,7 @@ public class DeckSerializer extends DeckReaderBase implements IItemSeriali
* @return a File
*/
public File makeFileFor(final Deck deck) {
- return new File(getDirectory(), deriveFileName(cleanDeckName(deck.getName())) + ".dck");
+ return new File(getDirectory(), deck.getBestFileName() + ".dck");
}
/* (non-Javadoc)
diff --git a/src/main/java/forge/game/limited/BoosterDraft.java b/src/main/java/forge/game/limited/BoosterDraft.java
index 39611fc4d0c..f75cf725e0c 100644
--- a/src/main/java/forge/game/limited/BoosterDraft.java
+++ b/src/main/java/forge/game/limited/BoosterDraft.java
@@ -35,10 +35,9 @@ import forge.AllZone;
import forge.Card;
import forge.CardList;
import forge.Constant;
-import forge.SetUtils;
import forge.card.BoosterGenerator;
import forge.card.CardBlock;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.deck.Deck;
import forge.gui.GuiUtils;
import forge.item.CardDb;
@@ -94,12 +93,12 @@ public final class BoosterDraft implements IBoosterDraft {
break;
case Block: // Draft from cards by block or set
- final List blocks = SetUtils.getBlocks();
+ final List blocks = AllZone.getEditions().getBlocks();
final Object o = GuiUtils.getChoice("Choose Block", blocks.toArray());
final CardBlock block = (CardBlock) o;
- final CardSet[] cardSets = block.getSets();
+ final CardEdition[] cardSets = block.getSets();
final String[] sets = new String[cardSets.length];
for (int k = cardSets.length - 1; k >= 0; --k) {
sets[k] = cardSets[k].getCode();
@@ -125,12 +124,12 @@ public final class BoosterDraft implements IBoosterDraft {
final Object p = GuiUtils.getChoice("Choose Set Combination", setCombos.toArray());
final String[] pp = p.toString().split("/");
for (int i = 0; i < nPacks; i++) {
- final BoosterGenerator bpMulti = new BoosterGenerator(SetUtils.getSetByCode(pp[i]));
+ final BoosterGenerator bpMulti = new BoosterGenerator(AllZone.getEditions().getEditionByCode(pp[i]));
this.packs.add(BoosterGenerator.getSimplePicker(bpMulti));
}
} else {
- final BoosterGenerator bpOne = new BoosterGenerator(SetUtils.getSetByCode(sets[0]));
+ final BoosterGenerator bpOne = new BoosterGenerator(AllZone.getEditions().getEditionByCode(sets[0]));
final Closure1, BoosterGenerator> pick1 = BoosterGenerator.getSimplePicker(bpOne);
for (int i = 0; i < nPacks; i++) {
this.packs.add(pick1);
diff --git a/src/main/java/forge/game/limited/SealedDeck.java b/src/main/java/forge/game/limited/SealedDeck.java
index c79ff5a4eea..c9ca1dcc68b 100644
--- a/src/main/java/forge/game/limited/SealedDeck.java
+++ b/src/main/java/forge/game/limited/SealedDeck.java
@@ -31,10 +31,9 @@ import forge.CardList;
import forge.CardListFilter;
import forge.CardListUtil;
import forge.Constant;
-import forge.SetUtils;
import forge.card.BoosterGenerator;
import forge.card.CardBlock;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.card.spellability.AbilityMana;
import forge.deck.Deck;
import forge.gui.GuiUtils;
@@ -79,10 +78,10 @@ public class SealedDeck {
this.getLandSetCode()[0] = CardDb.instance().getCard("Plains").getSet();
} else if (sealedType.equals("Block")) {
- final Object o = GuiUtils.getChoice("Choose Block", SetUtils.getBlocks().toArray());
+ final Object o = GuiUtils.getChoice("Choose Block", AllZone.getEditions().getBlocks().toArray());
final CardBlock block = (CardBlock) o;
- final CardSet[] cardSets = block.getSets();
+ final CardEdition[] cardSets = block.getSets();
final String[] sets = new String[cardSets.length];
for (int k = cardSets.length - 1; k >= 0; --k) {
sets[k] = cardSets[k].getCode();
@@ -106,11 +105,11 @@ public class SealedDeck {
final String[] pp = p.toString().split("/");
for (int i = 0; i < nPacks; i++) {
- final BoosterGenerator bpMulti = new BoosterGenerator(SetUtils.getSetByCode(pp[i]));
+ final BoosterGenerator bpMulti = new BoosterGenerator(AllZone.getEditions().getEditionByCode(pp[i]));
this.packs.add(BoosterGenerator.getSimplePicker(bpMulti));
}
} else {
- final BoosterGenerator bpOne = new BoosterGenerator(SetUtils.getSetByCode(sets[0]));
+ final BoosterGenerator bpOne = new BoosterGenerator(AllZone.getEditions().getEditionByCode(sets[0]));
final Closure1, BoosterGenerator> picker = BoosterGenerator.getSimplePicker(bpOne);
for (int i = 0; i < nPacks; i++) {
this.packs.add(picker);
diff --git a/src/main/java/forge/gui/deckeditor/PresetColumns.java b/src/main/java/forge/gui/deckeditor/PresetColumns.java
index 52a99c09d75..4cde2054dc0 100644
--- a/src/main/java/forge/gui/deckeditor/PresetColumns.java
+++ b/src/main/java/forge/gui/deckeditor/PresetColumns.java
@@ -20,11 +20,11 @@ package forge.gui.deckeditor;
import java.util.Map.Entry;
import net.slightlymagic.braids.util.lambda.Lambda1;
-import forge.SetUtils;
+import forge.AllZone;
import forge.card.CardColor;
import forge.card.CardManaCost;
import forge.card.CardRarity;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.InventoryItemFromSet;
@@ -51,9 +51,9 @@ public abstract class PresetColumns {
return i instanceof CardPrinted ? ((CardPrinted) i).getRarity() : CardRarity.Unknown;
}
- private static CardSet toSetCmp(final InventoryItem i) {
- return i instanceof InventoryItemFromSet ? SetUtils.getSetByCode(((InventoryItemFromSet) i).getSet())
- : CardSet.UNKNOWN;
+ private static CardEdition toSetCmp(final InventoryItem i) {
+ return i instanceof InventoryItemFromSet ? AllZone.getEditions().getEditionByCode(((InventoryItemFromSet) i).getSet())
+ : CardEdition.UNKNOWN;
}
private static String toSetStr(final InventoryItem i) {
diff --git a/src/main/java/forge/gui/deckeditor/elements/CardPanelLite.java b/src/main/java/forge/gui/deckeditor/elements/CardPanelLite.java
index 8d98743809f..e4c4144f03e 100644
--- a/src/main/java/forge/gui/deckeditor/elements/CardPanelLite.java
+++ b/src/main/java/forge/gui/deckeditor/elements/CardPanelLite.java
@@ -29,9 +29,9 @@ import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.StringUtils;
+import forge.AllZone;
import forge.Card;
-import forge.SetUtils;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.gui.game.CardDetailPanel;
import forge.gui.game.CardPicturePanel;
import forge.item.BoosterPack;
@@ -116,7 +116,7 @@ public class CardPanelLite extends CardPanelBase {
} else {
if (card instanceof BoosterPack) {
final BoosterPack booster = (BoosterPack) card;
- final CardSet set = SetUtils.getSetByCodeOrThrow(booster.getSet());
+ final CardEdition set = AllZone.getEditions().getEditionByCodeOrThrow(booster.getSet());
final String tpl = "%s booster pack.%n%nContains %d cards.%n%nBuy it to reveal the cards and add them to your inventory.";
this.description.setText(String.format(tpl, set.getName(), set.getBoosterData().getTotal()));
} else if (card instanceof PreconDeck) {
diff --git a/src/main/java/forge/gui/deckeditor/elements/FilterNameTypeSetPanel.java b/src/main/java/forge/gui/deckeditor/elements/FilterNameTypeSetPanel.java
index b097fd8a163..a364e4af064 100644
--- a/src/main/java/forge/gui/deckeditor/elements/FilterNameTypeSetPanel.java
+++ b/src/main/java/forge/gui/deckeditor/elements/FilterNameTypeSetPanel.java
@@ -33,9 +33,9 @@ import net.slightlymagic.maxmtg.PredicateString.StringOp;
import org.apache.commons.lang3.StringUtils;
-import forge.SetUtils;
+import forge.AllZone;
import forge.card.CardRules;
-import forge.card.CardSet;
+import forge.card.CardEdition;
import forge.game.GameFormat;
import forge.item.CardPrinted;
@@ -91,10 +91,10 @@ public class FilterNameTypeSetPanel extends JComponent {
this.searchSetCombo.removeAllItems();
this.searchSetCombo.addItem("(all sets and formats)");
- for (final GameFormat s : SetUtils.getFormats()) {
+ for (final GameFormat s : AllZone.getFormats().getFormats()) {
this.searchSetCombo.addItem(s);
}
- for (final CardSet s : SetUtils.getAllSets()) {
+ for (final CardEdition s : AllZone.getEditions().getAllSets()) {
this.searchSetCombo.addItem(s);
}
@@ -139,8 +139,8 @@ public class FilterNameTypeSetPanel extends JComponent {
if (this.searchSetCombo.getSelectedIndex() != 0) {
final Object selected = this.searchSetCombo.getSelectedItem();
- if (selected instanceof CardSet) {
- rules.add(CardPrinted.Predicates.printedInSets(((CardSet) selected).getCode()));
+ if (selected instanceof CardEdition) {
+ rules.add(CardPrinted.Predicates.printedInSets(((CardEdition) selected).getCode()));
} else if (selected instanceof GameFormat) {
rules.add(((GameFormat) selected).getFilterRules());
}
diff --git a/src/main/java/forge/item/BoosterPack.java b/src/main/java/forge/item/BoosterPack.java
index d63e5de279e..445a118aae4 100644
--- a/src/main/java/forge/item/BoosterPack.java
+++ b/src/main/java/forge/item/BoosterPack.java
@@ -21,10 +21,10 @@ import java.util.List;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
-import forge.SetUtils;
+import forge.AllZone;
import forge.card.BoosterGenerator;
import forge.card.CardRules;
-import forge.card.CardSet;
+import forge.card.CardEdition;
/**
* TODO Write javadoc for this type.
@@ -33,14 +33,14 @@ import forge.card.CardSet;
public class BoosterPack implements InventoryItemFromSet {
/** The Constant fnFromSet. */
- public static final Lambda1 FN_FROM_SET = new Lambda1() {
+ public static final Lambda1 FN_FROM_SET = new Lambda1() {
@Override
- public BoosterPack apply(final CardSet arg1) {
+ public BoosterPack apply(final CardEdition arg1) {
return new BoosterPack(arg1);
}
};
- private final CardSet cardSet;
+ private final CardEdition cardSet;
private final String name;
private List cards = null;
@@ -52,7 +52,7 @@ public class BoosterPack implements InventoryItemFromSet {
* the set
*/
public BoosterPack(final String set) {
- this(SetUtils.getSetByCodeOrThrow(set));
+ this(AllZone.getEditions().getEditionByCodeOrThrow(set));
}
/**
@@ -61,7 +61,7 @@ public class BoosterPack implements InventoryItemFromSet {
* @param set
* the set
*/
- public BoosterPack(final CardSet set) {
+ public BoosterPack(final CardEdition set) {
this.cardSet = set;
this.name = this.cardSet.getName() + " Booster Pack";
}
@@ -111,14 +111,14 @@ public class BoosterPack implements InventoryItemFromSet {
return "booster/" + this.cardSet.getCode() + ".png";
}
- private CardPrinted getRandomBasicLand(final CardSet set) {
+ private CardPrinted getRandomBasicLand(final CardEdition set) {
return Predicate.and(CardPrinted.Predicates.printedInSets(set.getCode()),
CardRules.Predicates.Presets.IS_BASIC_LAND, CardPrinted.FN_GET_RULES).random(
CardDb.instance().getAllCards());
}
private CardPrinted getLandFromNearestSet() {
- final List sets = SetUtils.getAllSets();
+ final List sets = AllZone.getEditions().getAllSets();
final int iThisSet = sets.indexOf(this.cardSet);
for (int iSet = iThisSet; iSet < sets.size(); iSet++) {
final CardPrinted land = this.getRandomBasicLand(sets.get(iSet));
@@ -127,7 +127,7 @@ public class BoosterPack implements InventoryItemFromSet {
}
}
// if not found (though that's impossible)
- return this.getRandomBasicLand(SetUtils.getSetByCode("M12"));
+ return this.getRandomBasicLand(AllZone.getEditions().getEditionByCode("M12"));
}
private void generate() {
diff --git a/src/main/java/forge/item/CardDb.java b/src/main/java/forge/item/CardDb.java
index 71099641704..8efd239e757 100644
--- a/src/main/java/forge/item/CardDb.java
+++ b/src/main/java/forge/item/CardDb.java
@@ -31,8 +31,8 @@ import net.slightlymagic.maxmtg.Predicate;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import forge.AllZone;
import forge.Card;
-import forge.SetUtils;
import forge.card.CardInSet;
import forge.card.CardRules;
import forge.card.MtgDataParser;
@@ -392,10 +392,10 @@ public final class CardDb {
// Find card with maximal set index
result = namedCards.get(0);
- int resIndex = SetUtils.getSetByCode((result).getSet()).getIndex();
+ int resIndex = AllZone.getEditions().getEditionByCode((result).getSet()).getIndex();
for (final CardPrinted card : namedCards) {
- final int thisIndex = SetUtils.getSetByCode((card).getSet()).getIndex();
+ final int thisIndex = AllZone.getEditions().getEditionByCode((card).getSet()).getIndex();
if (thisIndex > resIndex) {
result = card;
resIndex = thisIndex;
diff --git a/src/main/java/forge/item/PreconDeck.java b/src/main/java/forge/item/PreconDeck.java
index e596be96902..f5c81eabd25 100644
--- a/src/main/java/forge/item/PreconDeck.java
+++ b/src/main/java/forge/item/PreconDeck.java
@@ -21,7 +21,7 @@ import java.io.File;
import java.util.List;
import java.util.Map;
-import forge.SetUtils;
+import forge.AllZone;
import forge.deck.Deck;
import forge.quest.SellRules;
import forge.util.FileSection;
@@ -88,7 +88,7 @@ public class PreconDeck implements InventoryItemFromSet {
imageFilename = kv.get("Image");
description = kv.get("Description");
- if( SetUtils.getSetByCode(kv.get("set").toUpperCase()) != null )
+ if( AllZone.getEditions().getEditionByCode(kv.get("set").toUpperCase()) != null )
{ setProxy = kv.get("set"); }
this.set = setProxy;
diff --git a/src/main/java/forge/quest/data/PreconReader.java b/src/main/java/forge/quest/data/PreconReader.java
index 03ff73e3ce2..d07d86e9ded 100644
--- a/src/main/java/forge/quest/data/PreconReader.java
+++ b/src/main/java/forge/quest/data/PreconReader.java
@@ -3,14 +3,14 @@ package forge.quest.data;
import java.io.File;
import java.io.FilenameFilter;
import forge.deck.io.DeckSerializer;
-import forge.deck.io.DeckReaderBase;
import forge.item.PreconDeck;
+import forge.util.FolderStorageReader;
/**
* TODO: Write javadoc for this type.
*
*/
-public class PreconReader extends DeckReaderBase {
+public class PreconReader extends FolderStorageReader {
/**
* TODO: Write javadoc for Constructor.
diff --git a/src/main/java/forge/quest/data/QuestData.java b/src/main/java/forge/quest/data/QuestData.java
index fe48acb2e6e..0b1f063cb76 100644
--- a/src/main/java/forge/quest/data/QuestData.java
+++ b/src/main/java/forge/quest/data/QuestData.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.slightlymagic.maxmtg.Predicate;
-import forge.SetUtils;
+import forge.AllZone;
import forge.Singletons;
import forge.deck.Deck;
import forge.item.CardPrinted;
@@ -235,7 +235,7 @@ public final class QuestData {
public void newGame(final int diff, final String m0de, final boolean standardStart) {
this.setDifficulty(diff);
- final Predicate filter = standardStart ? SetUtils.getStandard().getFilterPrinted()
+ final Predicate filter = standardStart ? AllZone.getFormats().getStandard().getFilterPrinted()
: CardPrinted.Predicates.Presets.IS_TRUE;
this.myCards.setupNewGameCardPool(filter, diff);
diff --git a/src/main/java/forge/quest/data/QuestUtilCards.java b/src/main/java/forge/quest/data/QuestUtilCards.java
index c1ca25a0ba4..413029530f1 100644
--- a/src/main/java/forge/quest/data/QuestUtilCards.java
+++ b/src/main/java/forge/quest/data/QuestUtilCards.java
@@ -23,12 +23,13 @@ import java.util.Map.Entry;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
-import forge.SetUtils;
+import forge.AllZone;
import forge.Singletons;
import forge.card.BoosterGenerator;
import forge.card.BoosterUtils;
import forge.card.CardRarity;
-import forge.card.CardSet;
+import forge.card.CardEdition;
+import forge.card.FormatUtils;
import forge.deck.Deck;
import forge.item.BoosterPack;
import forge.item.CardDb;
@@ -317,18 +318,18 @@ public final class QuestUtilCards {
/**
* Generate cards in shop.
*/
- private final Predicate filterExt = CardSet.Predicates.Presets.SETS_IN_EXT;
+ private final Predicate filterExt = FormatUtils.Predicates.SETS_IN_EXT;
/** The filter t2booster. */
- private final Predicate filterT2booster = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
- CardSet.Predicates.Presets.SETS_IN_STANDARD);
+ private final Predicate filterT2booster = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER,
+ FormatUtils.Predicates.SETS_IN_STANDARD);
/** The filter ext but t2. */
- private final Predicate filterExtButT2 = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
- Predicate.and(this.filterExt, Predicate.not(CardSet.Predicates.Presets.SETS_IN_STANDARD)));
+ private final Predicate filterExtButT2 = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER,
+ Predicate.and(this.filterExt, Predicate.not(FormatUtils.Predicates.SETS_IN_STANDARD)));
/** The filter not ext. */
- private final Predicate filterNotExt = Predicate.and(CardSet.Predicates.CAN_MAKE_BOOSTER,
+ private final Predicate filterNotExt = Predicate.and(CardEdition.Predicates.CAN_MAKE_BOOSTER,
Predicate.not(this.filterExt));
/**
@@ -340,9 +341,9 @@ public final class QuestUtilCards {
public void generateBoostersInShop(final int count) {
for (int i = 0; i < count; i++) {
final int rollD100 = MyRandom.getRandom().nextInt(100);
- final Predicate filter = rollD100 < 40 ? this.filterT2booster
+ final Predicate filter = rollD100 < 40 ? this.filterT2booster
: (rollD100 < 75 ? this.filterExtButT2 : this.filterNotExt);
- this.q.getShopList().addAllFlat(filter.random(SetUtils.getAllSets(), 1, BoosterPack.FN_FROM_SET));
+ this.q.getShopList().addAllFlat(filter.random(AllZone.getEditions().getAllSets(), 1, BoosterPack.FN_FROM_SET));
}
}
diff --git a/src/main/java/forge/deck/io/DeckReaderBase.java b/src/main/java/forge/util/FolderStorageReader.java
similarity index 77%
rename from src/main/java/forge/deck/io/DeckReaderBase.java
rename to src/main/java/forge/util/FolderStorageReader.java
index a3570cbfe22..7dbf76a25dc 100644
--- a/src/main/java/forge/deck/io/DeckReaderBase.java
+++ b/src/main/java/forge/util/FolderStorageReader.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.deck.io;
+package forge.util;
import java.io.File;
import java.io.FilenameFilter;
@@ -31,14 +31,12 @@ import javax.swing.JOptionPane;
import org.apache.commons.lang3.StringUtils;
import forge.error.ErrorViewer;
-import forge.util.IHasName;
-import forge.util.IItemReader;
/**
* TODO: Write javadoc for this type.
*
*/
-public abstract class DeckReaderBase implements IItemReader {
+public abstract class FolderStorageReader implements IItemReader {
private final File directory;
@@ -47,7 +45,7 @@ public abstract class DeckReaderBase implements IItemReader<
}
- public DeckReaderBase(File deckDir0) {
+ public FolderStorageReader(File deckDir0) {
directory = deckDir0;
@@ -69,11 +67,6 @@ public abstract class DeckReaderBase implements IItemReader<
}
}
- public String deriveFileName(final String deckName) {
- // skips all but the listed characters
- return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", "");
- }
-
// only accepts numbers, letters or dashes up to 20 characters in length
/**
*
@@ -83,16 +76,6 @@ public abstract class DeckReaderBase implements IItemReader<
* a String
* @return a String
*/
- protected String cleanDeckName(final String in) {
- final char[] c = in.toCharArray();
- final StringBuilder sb = new StringBuilder();
- for (int i = 0; (i < c.length) && (i < 20); i++) {
- if (Character.isLetterOrDigit(c[i]) || (c[i] == '-')) {
- sb.append(c[i]);
- }
- }
- return sb.toString();
- }
@@ -106,7 +89,7 @@ public abstract class DeckReaderBase implements IItemReader<
final T newDeck = read(file);
if (null == newDeck) {
- String msg = "A deck or similiar object at " + file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file/directory attached.";
+ String msg = "An object stored in " + file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file/directory attached.";
// JOptionPane.showMessageDialog(null, msg); -- This becomes bugged if uncommented, but i need these messages to debug other peoples decks // Max Mtg
continue;
}
diff --git a/src/main/java/forge/view/match/QuestWinLoseHandler.java b/src/main/java/forge/view/match/QuestWinLoseHandler.java
index d0775a7b175..b057c0837b4 100644
--- a/src/main/java/forge/view/match/QuestWinLoseHandler.java
+++ b/src/main/java/forge/view/match/QuestWinLoseHandler.java
@@ -32,7 +32,6 @@ import forge.CardList;
import forge.Constant;
import forge.Constant.Zone;
import forge.Player;
-import forge.SetUtils;
import forge.Singletons;
import forge.control.FControl;
import forge.control.match.ControlWinLose;
@@ -519,13 +518,14 @@ public class QuestWinLoseHandler extends ControlWinLose {
*
*/
private void awardBooster() {
- final List formats = SetUtils.getFormats();
- final ListChooser ch = new ListChooser("Choose bonus booster format", 1,
- formats);
+ final GameFormat[] emptyFormatArray = {};
+ final GameFormat[] formats = AllZone.getFormats().getFormats().toArray(emptyFormatArray) ;
+ final ListChooser ch = new ListChooser("Choose bonus booster format", 1, formats);
+ String prefferedFormat = Singletons.getModel().getQuestPreferences().getPreference(QPref.BOOSTER_FORMAT);
int index = 0;
- for (int i = 0; i < formats.size(); i++) {
- if (formats.get(i).toString().equals(Singletons.getModel().getQuestPreferences().getPreference(QPref.BOOSTER_FORMAT))) {
+ for (int i = 0; i < formats.length; i++) {
+ if (formats[i].toString().equals(prefferedFormat)) {
index = i;
break;
}
diff --git a/src/test/java/forge/BoosterDraftTest.java b/src/test/java/forge/BoosterDraftTest.java
index 442da08d049..d0834de8873 100644
--- a/src/test/java/forge/BoosterDraftTest.java
+++ b/src/test/java/forge/BoosterDraftTest.java
@@ -46,7 +46,7 @@ public class BoosterDraftTest implements IBoosterDraft {
@Override
public ItemPoolView nextChoice() {
this.n--;
- final BoosterGenerator pack = new BoosterGenerator(SetUtils.getSetByCode("M11"));
+ final BoosterGenerator pack = new BoosterGenerator(AllZone.getEditions().getEditionByCode("M11"));
return ItemPool.createFrom(pack.getBoosterPack(), CardPrinted.class);
}