diff --git a/.gitattributes b/.gitattributes index 8851f5ac1d8..09f010cd33e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -20,27 +20,75 @@ forge-core/.settings/org.eclipse.jdt.core.prefs -text forge-core/.settings/org.eclipse.m2e.core.prefs -text forge-core/pom.xml -text forge-core/src/main/java/forge/Constant.java svneol=native#text/plain +forge-core/src/main/java/forge/ICardStorageReader.java -text +forge-core/src/main/java/forge/StaticData.java -text forge-core/src/main/java/forge/card/AggregationMethod.java -text +forge-core/src/main/java/forge/card/BoosterSlots.java -text +forge-core/src/main/java/forge/card/CardAiHints.java -text forge-core/src/main/java/forge/card/CardCharacteristicName.java -text forge-core/src/main/java/forge/card/CardCoreType.java -text +forge-core/src/main/java/forge/card/CardDb.java -text +forge-core/src/main/java/forge/card/CardEdition.java -text forge-core/src/main/java/forge/card/CardRarity.java -text +forge-core/src/main/java/forge/card/CardRules.java -text +forge-core/src/main/java/forge/card/CardRulesPredicates.java -text forge-core/src/main/java/forge/card/CardSplitType.java -text forge-core/src/main/java/forge/card/CardSuperType.java -text forge-core/src/main/java/forge/card/CardType.java -text forge-core/src/main/java/forge/card/ColorSet.java -text +forge-core/src/main/java/forge/card/DeckHints.java -text +forge-core/src/main/java/forge/card/EditionCollection.java svneol=native#text/plain +forge-core/src/main/java/forge/card/FatPackTemplate.java -text +forge-core/src/main/java/forge/card/FormatCollection.java -text forge-core/src/main/java/forge/card/ICardCharacteristics.java -text +forge-core/src/main/java/forge/card/ICardDatabase.java -text forge-core/src/main/java/forge/card/ICardFace.java -text forge-core/src/main/java/forge/card/ICardRawAbilites.java -text +forge-core/src/main/java/forge/card/IUnOpenedProduct.java -text forge-core/src/main/java/forge/card/MagicColor.java -text +forge-core/src/main/java/forge/card/PrintSheet.java -text forge-core/src/main/java/forge/card/mana/IParserManaCost.java -text forge-core/src/main/java/forge/card/mana/ManaAtom.java -text forge-core/src/main/java/forge/card/mana/ManaCost.java -text forge-core/src/main/java/forge/card/mana/ManaCostParser.java -text forge-core/src/main/java/forge/card/mana/ManaCostShard.java -text forge-core/src/main/java/forge/card/mana/package-info.java svneol=native#text/plain +forge-core/src/main/java/forge/deck/CardPool.java -text +forge-core/src/main/java/forge/deck/package-info.java -text +forge-core/src/main/java/forge/game/GameFormat.java -text +forge-core/src/main/java/forge/game/package-info.java -text +forge-core/src/main/java/forge/item/IPaperCard.java -text +forge-core/src/main/java/forge/item/InventoryItem.java -text +forge-core/src/main/java/forge/item/InventoryItemFromSet.java -text +forge-core/src/main/java/forge/item/PaperCard.java -text +forge-core/src/main/java/forge/item/PaperToken.java -text +forge-core/src/main/java/forge/item/package-info.java -text forge-core/src/main/java/forge/package-info.java -text +forge-core/src/main/java/forge/util/Aggregates.java -text forge-core/src/main/java/forge/util/BinaryUtil.java -text +forge-core/src/main/java/forge/util/CollectionSuppliers.java -text +forge-core/src/main/java/forge/util/ComparableOp.java -text +forge-core/src/main/java/forge/util/FileSection.java -text +forge-core/src/main/java/forge/util/FileSectionManual.java -text +forge-core/src/main/java/forge/util/FileUtil.java svneol=native#text/plain +forge-core/src/main/java/forge/util/IHasName.java -text +forge-core/src/main/java/forge/util/IItemReader.java -text +forge-core/src/main/java/forge/util/IItemSerializer.java -text +forge-core/src/main/java/forge/util/ItemPool.java -text +forge-core/src/main/java/forge/util/ItemPoolSorter.java -text +forge-core/src/main/java/forge/util/ItemPoolView.java -text +forge-core/src/main/java/forge/util/Lang.java -text +forge-core/src/main/java/forge/util/MyRandom.java svneol=native#text/plain +forge-core/src/main/java/forge/util/PredicateString.java -text +forge-core/src/main/java/forge/util/TextUtil.java -text forge-core/src/main/java/forge/util/package-info.java -text +forge-core/src/main/java/forge/util/storage/IStorage.java -text +forge-core/src/main/java/forge/util/storage/StorageBase.java -text +forge-core/src/main/java/forge/util/storage/StorageReaderBase.java -text +forge-core/src/main/java/forge/util/storage/StorageReaderFile.java -text +forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java -text +forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java -text +forge-core/src/main/java/forge/util/storage/package-info.java -text forge-gui/.classpath -text forge-gui/.project -text forge-gui/.settings/org.eclipse.core.resources.prefs -text @@ -14632,21 +14680,11 @@ forge-gui/src/main/java/forge/Singletons.java svneol=native#text/plain forge-gui/src/main/java/forge/StaticEffect.java svneol=native#text/plain forge-gui/src/main/java/forge/StaticEffects.java svneol=native#text/plain forge-gui/src/main/java/forge/card/BoosterGenerator.java svneol=native#text/plain -forge-gui/src/main/java/forge/card/CardAiHints.java -text forge-gui/src/main/java/forge/card/CardBlock.java -text forge-gui/src/main/java/forge/card/CardCharacteristics.java -text -forge-gui/src/main/java/forge/card/CardDb.java -text -forge-gui/src/main/java/forge/card/CardEdition.java -text +forge-gui/src/main/java/forge/card/CardEditionPredicates.java -text forge-gui/src/main/java/forge/card/CardFace.java -text -forge-gui/src/main/java/forge/card/CardRules.java -text -forge-gui/src/main/java/forge/card/CardRulesPredicates.java -text forge-gui/src/main/java/forge/card/CardRulesReader.java svneol=native#text/plain -forge-gui/src/main/java/forge/card/DeckHints.java -text -forge-gui/src/main/java/forge/card/EditionCollection.java svneol=native#text/plain -forge-gui/src/main/java/forge/card/FatPackTemplate.java -text -forge-gui/src/main/java/forge/card/FormatCollection.java -text -forge-gui/src/main/java/forge/card/ICardDatabase.java -text -forge-gui/src/main/java/forge/card/IUnOpenedProduct.java -text forge-gui/src/main/java/forge/card/MetaSet.java -text forge-gui/src/main/java/forge/card/TriggerReplacementBase.java -text forge-gui/src/main/java/forge/card/UnOpenedMeta.java -text @@ -15032,7 +15070,6 @@ forge-gui/src/main/java/forge/control/KeyboardShortcuts.java -text forge-gui/src/main/java/forge/control/RestartUtil.java -text forge-gui/src/main/java/forge/control/package-info.java -text forge-gui/src/main/java/forge/deck/CardCollections.java -text -forge-gui/src/main/java/forge/deck/CardPool.java -text forge-gui/src/main/java/forge/deck/Deck.java svneol=native#text/plain forge-gui/src/main/java/forge/deck/DeckBase.java -text forge-gui/src/main/java/forge/deck/DeckFormat.java -text @@ -15062,7 +15099,6 @@ forge-gui/src/main/java/forge/game/GameAction.java svneol=native#text/plain forge-gui/src/main/java/forge/game/GameActionUtil.java svneol=native#text/plain forge-gui/src/main/java/forge/game/GameAge.java -text forge-gui/src/main/java/forge/game/GameEndReason.java -text -forge-gui/src/main/java/forge/game/GameFormat.java -text forge-gui/src/main/java/forge/game/GameNew.java -text forge-gui/src/main/java/forge/game/GameOutcome.java -text forge-gui/src/main/java/forge/game/GameType.java -text @@ -15474,18 +15510,9 @@ forge-gui/src/main/java/forge/gui/workshop/views/VCardScript.java -text forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java -text forge-gui/src/main/java/forge/item/BoosterPack.java -text forge-gui/src/main/java/forge/item/FatPack.java -text -forge-gui/src/main/java/forge/item/IPaperCard.java -text -forge-gui/src/main/java/forge/item/InventoryItem.java -text -forge-gui/src/main/java/forge/item/InventoryItemFromSet.java -text -forge-gui/src/main/java/forge/item/ItemPool.java -text -forge-gui/src/main/java/forge/item/ItemPoolSorter.java -text -forge-gui/src/main/java/forge/item/ItemPoolView.java -text forge-gui/src/main/java/forge/item/ItemPredicate.java -text forge-gui/src/main/java/forge/item/OpenablePack.java -text -forge-gui/src/main/java/forge/item/PaperCard.java -text -forge-gui/src/main/java/forge/item/PaperToken.java -text forge-gui/src/main/java/forge/item/PreconDeck.java -text -forge-gui/src/main/java/forge/item/PrintSheet.java -text forge-gui/src/main/java/forge/item/TournamentPack.java -text forge-gui/src/main/java/forge/item/package-info.java -text forge-gui/src/main/java/forge/model/BuildInfo.java -text @@ -15587,28 +15614,15 @@ forge-gui/src/main/java/forge/sound/IAudioClip.java -text forge-gui/src/main/java/forge/sound/NoSoundClip.java -text forge-gui/src/main/java/forge/sound/SoundEffectType.java -text forge-gui/src/main/java/forge/sound/SoundSystem.java -text -forge-gui/src/main/java/forge/util/Aggregates.java -text forge-gui/src/main/java/forge/util/Base64Coder.java svneol=native#text/plain -forge-gui/src/main/java/forge/util/ComparableOp.java -text forge-gui/src/main/java/forge/util/Expressions.java -text -forge-gui/src/main/java/forge/util/FileSection.java -text -forge-gui/src/main/java/forge/util/FileSectionManual.java -text -forge-gui/src/main/java/forge/util/FileUtil.java svneol=native#text/plain forge-gui/src/main/java/forge/util/HttpUtil.java svneol=native#text/plain -forge-gui/src/main/java/forge/util/IHasName.java -text -forge-gui/src/main/java/forge/util/IItemReader.java -text -forge-gui/src/main/java/forge/util/IItemSerializer.java -text forge-gui/src/main/java/forge/util/IgnoringXStream.java -text -forge-gui/src/main/java/forge/util/Lang.java -text forge-gui/src/main/java/forge/util/LineReader.java -text forge-gui/src/main/java/forge/util/MultiplexOutputStream.java svneol=native#text/plain -forge-gui/src/main/java/forge/util/MyRandom.java svneol=native#text/plain -forge-gui/src/main/java/forge/util/PredicateString.java -text forge-gui/src/main/java/forge/util/ReflectionUtil.java -text -forge-gui/src/main/java/forge/util/TextUtil.java -text forge-gui/src/main/java/forge/util/TypeUtil.java -text forge-gui/src/main/java/forge/util/XmlUtil.java -text -forge-gui/src/main/java/forge/util/maps/CollectionSuppliers.java -text forge-gui/src/main/java/forge/util/maps/EnumMapOfLists.java -text forge-gui/src/main/java/forge/util/maps/EnumMapToAmount.java -text forge-gui/src/main/java/forge/util/maps/HashMapOfLists.java -text @@ -15618,14 +15632,8 @@ forge-gui/src/main/java/forge/util/maps/TreeMapOfLists.java -text forge-gui/src/main/java/forge/util/maps/TreeMapToAmount.java -text forge-gui/src/main/java/forge/util/maps/package-info.java -text forge-gui/src/main/java/forge/util/package-info.java -text -forge-gui/src/main/java/forge/util/storage/IStorage.java -text -forge-gui/src/main/java/forge/util/storage/StorageBase.java -text forge-gui/src/main/java/forge/util/storage/StorageImmediatelySerialized.java svneol=native#text/plain forge-gui/src/main/java/forge/util/storage/StorageNestedFolders.java -text -forge-gui/src/main/java/forge/util/storage/StorageReaderBase.java -text -forge-gui/src/main/java/forge/util/storage/StorageReaderFile.java -text -forge-gui/src/main/java/forge/util/storage/StorageReaderFileSections.java -text -forge-gui/src/main/java/forge/util/storage/StorageReaderFolder.java -text forge-gui/src/main/java/forge/util/storage/package-info.java -text forge-gui/src/main/java/forge/view/ButtonUtil.java svneol=native#text/plain forge-gui/src/main/java/forge/view/FDialog.java -text diff --git a/forge-core/src/main/java/forge/Constant.java b/forge-core/src/main/java/forge/Constant.java index cb1950ccf29..a2225037c7b 100644 --- a/forge-core/src/main/java/forge/Constant.java +++ b/forge-core/src/main/java/forge/Constant.java @@ -19,7 +19,6 @@ package forge; import java.util.ArrayList; import java.util.List; -import com.google.common.collect.ImmutableList; /** *

@@ -54,79 +53,6 @@ public final class Constant { public static final int HEIGHT = 0; } - /** - * The Interface Color. - */ - public static class Color { - - /** The Black. */ - public static final String BLACK = "black"; - - /** The Blue. */ - public static final String BLUE = "blue"; - - /** The Green. */ - public static final String GREEN = "green"; - - /** The Red. */ - public static final String RED = "red"; - - /** The White. */ - public static final String WHITE = "white"; - - /** The Colorless. */ - public static final String COLORLESS = "colorless"; - // color order "wubrg" - - /** The only colors. */ - public static final ImmutableList ONLY_COLORS = ImmutableList.of(Color.WHITE, Color.BLUE, Color.BLACK, Color.RED, Color.GREEN); - - /** The Snow. */ - public static final String SNOW = "snow"; - - /** The Basic lands. */ - public static final List BASIC_LANDS = ImmutableList.of("Plains", "Island", "Swamp", "Mountain", "Forest"); - public static final List SNOW_LANDS = ImmutableList.of("Snow-Covered Plains", "Snow-Covered Island", "Snow-Covered Swamp", "Snow-Covered Mountain", "Snow-Covered Forest"); - } - - /** - * The Interface CardTypes. - */ - public static class CardTypes { - - /** The loaded. */ - public static final boolean[] LOADED = { false }; - - /** The card types. */ - public static final List CARD_TYPES = new ArrayList(); - - /** The super types. */ - public static final List SUPER_TYPES = new ArrayList(); - - /** The basic types. */ - public static final List BASIC_TYPES = new ArrayList(); - - /** The land types. */ - public static final List LAND_TYPES = new ArrayList(); - - /** The creature types. */ - public static final List CREATURE_TYPES = new ArrayList(); - - /** The instant types. */ - public static final List INSTANT_TYPES = new ArrayList(); - - /** The sorcery types. */ - public static final List SORCERY_TYPES = new ArrayList(); - - /** The enchantment types. */ - public static final List ENCHANTMENT_TYPES = new ArrayList(); - - /** The artifact types. */ - public static final List ARTIFACT_TYPES = new ArrayList(); - - /** The walker types. */ - public static final List WALKER_TYPES = new ArrayList(); - } /** * The Interface Keywords. diff --git a/forge-core/src/main/java/forge/ICardStorageReader.java b/forge-core/src/main/java/forge/ICardStorageReader.java new file mode 100644 index 00000000000..a0521468dbe --- /dev/null +++ b/forge-core/src/main/java/forge/ICardStorageReader.java @@ -0,0 +1,9 @@ +package forge; + +import java.util.List; + +import forge.card.CardRules; + +public interface ICardStorageReader{ + List loadCards(); +} \ No newline at end of file diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java new file mode 100644 index 00000000000..f22180ce0c3 --- /dev/null +++ b/forge-core/src/main/java/forge/StaticData.java @@ -0,0 +1,120 @@ +package forge; + +import java.io.File; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import forge.card.CardDb; +import forge.card.CardEdition; +import forge.card.CardRules; +import forge.card.EditionCollection; +import forge.card.FatPackTemplate; +import forge.card.FormatCollection; +import forge.card.PrintSheet; +import forge.card.SealedProductTemplate; +import forge.game.GameFormat; +import forge.util.storage.IStorage; +import forge.util.storage.StorageBase; + + + +/** + * The class holding game invariants, such as cards, editions, game formats. All that data, which is not supposed to be changed by player + * + * @author Max + */ +public class StaticData { + + private final CardDb commonCards; + private final CardDb variantCards; + private final EditionCollection editions; + private final FormatCollection formats; + private final IStorage boosters; + private final IStorage specialBoosters; + private final IStorage tournaments; + private final IStorage fatPacks; + private final IStorage printSheets; + + private static StaticData lastInstance = null; + + + public StaticData(ICardStorageReader reader, String editionFolder, String blockDataFolder) { + this.editions = new EditionCollection(new CardEdition.Reader(new File(editionFolder))); + lastInstance = this; + + final Map regularCards = new TreeMap(String.CASE_INSENSITIVE_ORDER); + final Map variantsCards = new TreeMap(String.CASE_INSENSITIVE_ORDER); + + synchronized (CardDb.class) { + List rules = reader.loadCards(); + for (CardRules card : rules) { + if (null == card) continue; + + final String cardName = card.getName(); + if ( card.isVariant() ) + variantsCards.put(cardName, card); + else + regularCards.put(cardName, card); + } + + commonCards = new CardDb(regularCards, editions, false); + variantCards = new CardDb(variantsCards, editions, false); + } + + + this.formats = new FormatCollection(new GameFormat.Reader(new File(blockDataFolder, "formats.txt"))); + this.boosters = new StorageBase("Boosters", editions.getBoosterGenerator()); + this.specialBoosters = new StorageBase("Special boosters", new SealedProductTemplate.Reader(new File(blockDataFolder, "boosters-special.txt"))); + this.tournaments = new StorageBase("Starter sets", new SealedProductTemplate.Reader(new File(blockDataFolder, "starters.txt"))); + this.fatPacks = new StorageBase("Fat packs", new FatPackTemplate.Reader("res/blockdata/fatpacks.txt")); + this.printSheets = new StorageBase("Special print runs", new PrintSheet.Reader(new File(blockDataFolder, "printsheets.txt"))); + } + + public final static StaticData instance() { + return lastInstance; + } + + + public final EditionCollection getEditions() { + return this.editions; + } + + public final FormatCollection getFormats() { + return this.formats; + } + + /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.FatPackTemplate}> */ + public IStorage getFatPacks() { + return fatPacks; + } + + /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.BoosterTemplate}> */ + public final IStorage getTournamentPacks() { + return tournaments; + } + + /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.BoosterTemplate}> */ + public final IStorage getBoosters() { + return boosters; + } + + public final IStorage getSpecialBoosters() { + return specialBoosters; + } + + public IStorage getPrintSheets() { + return printSheets; + } + + +public CardDb getCommonCards() { + return commonCards; +} + + +public CardDb getVariantCards() { + return variantCards; +} + +} diff --git a/forge-core/src/main/java/forge/card/BoosterSlots.java b/forge-core/src/main/java/forge/card/BoosterSlots.java new file mode 100644 index 00000000000..f7ac8f07ce3 --- /dev/null +++ b/forge-core/src/main/java/forge/card/BoosterSlots.java @@ -0,0 +1,14 @@ +package forge.card; + +public class BoosterSlots { + public static final String LAND = "Land"; + public static final String ANY = "Any"; + public static final String COMMON = "Common"; + public static final String UNCOMMON = "Uncommon"; + public static final String UNCOMMON_RARE = "UncommonRare"; + public static final String RARE = "Rare"; + public static final String RARE_MYTHIC = "RareMythic"; + public static final String MYTHIC = "Mythic"; + public static final String BASIC_LAND = "BasicLand"; + public static final String TIME_SHIFTED = "TimeShifted"; +} \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/card/CardAiHints.java b/forge-core/src/main/java/forge/card/CardAiHints.java similarity index 100% rename from forge-gui/src/main/java/forge/card/CardAiHints.java rename to forge-core/src/main/java/forge/card/CardAiHints.java diff --git a/forge-gui/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java similarity index 76% rename from forge-gui/src/main/java/forge/card/CardDb.java rename to forge-core/src/main/java/forge/card/CardDb.java index b4e4fcfc5c8..be51905e35f 100644 --- a/forge-gui/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -36,49 +36,18 @@ import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; -import forge.Card; -import forge.card.CardEdition.Type; import forge.item.PaperCard; import forge.util.Aggregates; +import forge.util.CollectionSuppliers; import forge.util.Lang; import forge.util.MyRandom; -import forge.util.maps.CollectionSuppliers; public final class CardDb implements ICardDatabase { - private static volatile CardDb commonCards = null; // 'volatile' keyword makes this working - private static volatile CardDb variantCards = null; // 'volatile' keyword makes this working public final static String foilSuffix = "+"; private final static int foilSuffixLength = foilSuffix.length(); - public static ICardDatabase instance() { - if (CardDb.commonCards == null) { - throw new NullPointerException("CardDb has not yet been initialized, run setup() first"); - } - return CardDb.commonCards; - } - - public static ICardDatabase variants() { - if (CardDb.variantCards == null) { - throw new NullPointerException("CardDb has not yet been initialized, run setup() first"); - } - return CardDb.variantCards; - } - - public static void setup(final Iterable rules, EditionCollection editions) { - if (CardDb.commonCards != null) { - throw new RuntimeException("CardDb has already been initialized, don't do it twice please"); - } - synchronized (CardDb.class) { - if (CardDb.commonCards == null) { // It's broken under 1.4 and below, on 1.5+ works again! - CardSorter cs = new CardSorter(rules); - commonCards = new CardDb(cs.regularCards, editions, false); - variantCards = new CardDb(cs.variantsCards, editions, false); - } - } - } - // need this to obtain cardReference by name+set+artindex - private final Multimap allCardsByName = Multimaps.newListMultimap(new TreeMap>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); + private final Multimap allCardsByName = Multimaps.newListMultimap(new TreeMap>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); private final Map uniqueCardsByName = new TreeMap(String.CASE_INSENSITIVE_ORDER); private final Map rulesByName; @@ -86,37 +55,34 @@ public final class CardDb implements ICardDatabase { private final List roAllCards = Collections.unmodifiableList(allCards); private final Collection roUniqueCards = Collections.unmodifiableCollection(uniqueCardsByName.values()); private final EditionCollection editions; + - private CardDb(Map rules, EditionCollection editions0, boolean logMissingCards) { + public CardDb(Map rules, EditionCollection editions0, boolean logMissingCards) { this.rulesByName = rules; this.editions = editions0; List missingCards = new ArrayList(); - for (CardEdition e : editions.getOrderedEditions()) { - boolean worthLogging = logMissingCards && ( e.getType() == Type.CORE || e.getType() == Type.EXPANSION || e.getType() == Type.REPRINT ); - if (worthLogging) { + for(CardEdition e : editions.getOrderedEditions()) { + boolean worthLogging = logMissingCards && ( e.getType() == CardEdition.Type.CORE || e.getType() == CardEdition.Type.EXPANSION || e.getType() == CardEdition.Type.REPRINT ); + if(worthLogging) System.out.print(e.getName() + " (" + e.getCards().length + " cards)"); - } String lastCardName = null; int artIdx = 0; - for (CardEdition.CardInSet cis : e.getCards()) { - if (cis.name.equals(lastCardName)) + for(CardEdition.CardInSet cis : e.getCards()) { + if ( cis.name.equals(lastCardName) ) artIdx++; else { artIdx = 0; lastCardName = cis.name; } CardRules cr = rulesByName.get(lastCardName); - if (cr != null) { + if( cr != null ) addCard(new PaperCard(cr, e.getCode(), cis.rarity, artIdx)); - } - else if (worthLogging) { + else if (worthLogging) missingCards.add(cis.name); - } } - if (worthLogging) { - if (missingCards.isEmpty()) { + if(worthLogging) { + if(missingCards.isEmpty()) System.out.println(" ... 100% "); - } else { int missing = (e.getCards().length - missingCards.size()) * 10000 / e.getCards().length; System.out.printf(" ... %.2f%% (%s missing: %s )%n", missing * 0.01f, Lang.nounWithAmount(missingCards.size(), "card"), StringUtils.join(missingCards, " | ") ); @@ -125,8 +91,9 @@ public final class CardDb implements ICardDatabase { } } - for (CardRules cr : rulesByName.values()) { - if (!allCardsByName.containsKey(cr.getName())) { + for(CardRules cr : rulesByName.values()) { + if( !allCardsByName.containsKey(cr.getName()) ) + { System.err.println("The card " + cr.getName() + " was not assigned to any set. Adding it to UNKNOWN set... to fix see res/cardeditions/ folder. "); addCard(new PaperCard(cr, CardEdition.UNKNOWN.getCode(), CardRarity.Special, 0)); } @@ -338,21 +305,6 @@ public final class CardDb implements ICardDatabase { return result; } - // Fetch from Forge's Card instance. Well, there should be no errors, but - // we'll still check - public static PaperCard getCard(final Card forgeCard) { - final String name = forgeCard.getName(); - final String set = forgeCard.getCurSetCode(); - - if (StringUtils.isNotBlank(set)) { - PaperCard cp = variants().tryGetCard(name, set); - - return cp == null ? instance().getCard(name, set) : cp; - } - PaperCard cp = variants().tryGetCard(name, true); - return cp == null ? instance().getCard(name) : cp; - } - // returns a list of all cards from their respective latest editions @Override public Collection getUniqueCards() { @@ -370,25 +322,6 @@ public final class CardDb implements ICardDatabase { return Lists.newArrayList(Iterables.filter(this.roAllCards, predicate)); } - private static class CardSorter{ - // Here are refs, get them by name - public final Map regularCards = new TreeMap(String.CASE_INSENSITIVE_ORDER); - public final Map variantsCards = new TreeMap(String.CASE_INSENSITIVE_ORDER); - - - CardSorter(final Iterable parser) { - for (CardRules card : parser) { - if (null == card) continue; - - final String cardName = card.getName(); - if ( card.isVariant() ) - variantsCards.put(cardName, card); - else - regularCards.put(cardName, card); - } - } - } - public Predicate wasPrintedInSets(List setCodes) { return new PredicateExistsInSets(setCodes); } @@ -403,7 +336,9 @@ public final class CardDb implements ICardDatabase { @Override public boolean apply(final PaperCard subject) { Collection cc = allCardsByName.get(subject.getName()); - for(PaperCard c : cc) if (sets.contains(c.getEdition())) return true; + for(PaperCard c : cc) + if (sets.contains(c.getEdition())) + return true; return false; } } diff --git a/forge-gui/src/main/java/forge/card/CardEdition.java b/forge-core/src/main/java/forge/card/CardEdition.java similarity index 74% rename from forge-gui/src/main/java/forge/card/CardEdition.java rename to forge-core/src/main/java/forge/card/CardEdition.java index 809b2df8784..eeb464ee9f8 100644 --- a/forge-gui/src/main/java/forge/card/CardEdition.java +++ b/forge-core/src/main/java/forge/card/CardEdition.java @@ -29,14 +29,8 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; -import forge.Constant; -import forge.Singletons; -import forge.game.GameFormat; -import forge.util.Aggregates; +import com.google.common.base.Function; import forge.util.FileSection; import forge.util.FileUtil; import forge.util.storage.StorageReaderFolder; @@ -204,76 +198,20 @@ public final class CardEdition implements Comparable { // immutable return whiteBorder; } - - /** - * The Class Predicates. - */ - public abstract static class Predicates { - - /** The Constant canMakeBooster. */ - public static final Predicate CAN_MAKE_BOOSTER = new CanMakeBooster(); - - private static class CanMakeBooster implements Predicate { - @Override - public boolean apply(final CardEdition subject) { - return subject.boosterTpl != null; - } - } - - public static final Predicate HAS_TOURNAMENT_PACK = new CanMakeStarter(); - private static class CanMakeStarter implements Predicate { - @Override - public boolean apply(final CardEdition subject) { - return Singletons.getModel().getTournamentPacks().contains(subject.getCode()); - } - } - - public static final Predicate HAS_FAT_PACK = new CanMakeFatPack(); - private static class CanMakeFatPack implements Predicate { - @Override - public boolean apply(final CardEdition subject) { - return Singletons.getModel().getFatPacks().contains(subject.getCode()); - } - } - - /** - * 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 LegalInFormat implements Predicate { - private final GameFormat format; - - public LegalInFormat(final GameFormat fmt) { - this.format = fmt; - } - - @Override - public boolean apply(final CardEdition subject) { - return this.format.isSetLegal(subject.getCode()); - } - } - - public static final Predicate hasBasicLands = new Predicate() { - @Override - public boolean apply(CardEdition ed) { - for(String landName : Constant.Color.BASIC_LANDS) { - if (null == CardDb.instance().tryGetCard(landName, ed.getCode(), 0)) - return false; - } - return true; - }; - }; - + public int getCntBoosterPictures() { + return boosterArts; } - public static class EditionReader extends StorageReaderFolder { - public EditionReader(File path) { + public SealedProductTemplate getBoosterTemplate() { + return boosterTpl; + } + + public boolean hasBoosterTemplate() { + return boosterTpl != null; + } + + public static class Reader extends StorageReaderFolder { + public Reader(File path) { super(path, CardEdition.FN_GET_CODE); } @@ -360,16 +298,5 @@ public final class CardEdition implements Comparable { // immutable } }; } - - public final static CardEdition getRandomSetWithAllBasicLands(Iterable allEditions) { - return Aggregates.random(Iterables.filter(allEditions, CardEdition.Predicates.hasBasicLands)); - } - public int getCntBoosterPictures() { - return boosterArts; - } - - public SealedProductTemplate getBoosterTemplate() { - return boosterTpl; - } } diff --git a/forge-gui/src/main/java/forge/card/CardRules.java b/forge-core/src/main/java/forge/card/CardRules.java similarity index 89% rename from forge-gui/src/main/java/forge/card/CardRules.java rename to forge-core/src/main/java/forge/card/CardRules.java index 19b30a69aa3..411f59b026c 100644 --- a/forge-gui/src/main/java/forge/card/CardRules.java +++ b/forge-core/src/main/java/forge/card/CardRules.java @@ -17,9 +17,7 @@ */ package forge.card; -import java.io.File; import java.util.List; - import forge.card.mana.ManaCost; /** @@ -30,19 +28,16 @@ import forge.card.mana.ManaCost; * @version $Id: CardRules.java 9708 2011-08-09 19:34:12Z jendave $ */ public final class CardRules implements ICardCharacteristics { - private CardSplitType splitType; - private ICardFace mainPart; - private ICardFace otherPart; + private final CardSplitType splitType; + private final ICardFace mainPart; + private final ICardFace otherPart; //private final Map setsPrinted = new TreeMap(String.CASE_INSENSITIVE_ORDER); private CardAiHints aiHints; - private ColorSet colorIdentity = null; - private File sourceFile; - - public CardRules() { - } - public void setup(ICardFace[] faces, CardSplitType altMode, CardAiHints cah) { + private ColorSet colorIdentity = null; + + public CardRules(ICardFace[] faces, CardSplitType altMode, CardAiHints cah) { splitType = altMode; mainPart = faces[0]; otherPart = faces[1]; @@ -68,15 +63,10 @@ public final class CardRules implements ICardCharacteristics { colMask |= calculateColorIdentity(otherPart); } colorIdentity = ColorSet.fromMask(colMask); - - //reset these - this.deltaHand = 0; - this.deltaLife = 0; - this.dlUrl = null; - this.dlUrlOtherSide = null; } - private byte calculateColorIdentity(ICardFace face) { + private byte calculateColorIdentity(ICardFace face) + { byte res = face.getColor().getColor(); boolean isReminder = false; boolean isSymbol = false; @@ -145,6 +135,7 @@ public final class CardRules implements ICardCharacteristics { } } + @Override public ManaCost getManaCost() { switch(splitType.getAggregationMethod()) { @@ -225,14 +216,7 @@ public final class CardRules implements ICardCharacteristics { } public ColorSet getColorIdentity() { - return this.colorIdentity; - } - - public File getSourceFile() { - return this.sourceFile; - } - - public void setSourceFile(File sourceFile0) { - this.sourceFile = sourceFile0; + return colorIdentity; + } } diff --git a/forge-gui/src/main/java/forge/card/CardRulesPredicates.java b/forge-core/src/main/java/forge/card/CardRulesPredicates.java similarity index 100% rename from forge-gui/src/main/java/forge/card/CardRulesPredicates.java rename to forge-core/src/main/java/forge/card/CardRulesPredicates.java diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index 6c7cca5e811..1100321685e 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -24,8 +24,6 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; -import forge.Constant; - /** *

* Immutable Card type. Can be build only from parsing a string. @@ -236,6 +234,47 @@ public final class CardType implements Comparable { return this.coreType.contains(CardCoreType.Phenomenon); } + + + /** + * The Interface CardTypes. + */ + public static class Constant { + + /** The loaded. */ + public static final boolean[] LOADED = { false }; + + /** The card types. */ + public static final List CARD_TYPES = new ArrayList(); + + /** The super types. */ + public static final List SUPER_TYPES = new ArrayList(); + + /** The basic types. */ + public static final List BASIC_TYPES = new ArrayList(); + + /** The land types. */ + public static final List LAND_TYPES = new ArrayList(); + + /** The creature types. */ + public static final List CREATURE_TYPES = new ArrayList(); + + /** The instant types. */ + public static final List INSTANT_TYPES = new ArrayList(); + + /** The sorcery types. */ + public static final List SORCERY_TYPES = new ArrayList(); + + /** The enchantment types. */ + public static final List ENCHANTMENT_TYPES = new ArrayList(); + + /** The artifact types. */ + public static final List ARTIFACT_TYPES = new ArrayList(); + + /** The walker types. */ + public static final List WALKER_TYPES = new ArrayList(); + } + ///////// Utility methods public static boolean isACardType(final String cardType) { return CardType.getAllCardTypes().contains(cardType); @@ -245,7 +284,7 @@ public final class CardType implements Comparable { final ArrayList types = new ArrayList(); // types.addAll(getCardTypes()); - types.addAll(Constant.CardTypes.CARD_TYPES); + types.addAll(Constant.CARD_TYPES); // not currently used by Forge types.add("Plane"); @@ -258,7 +297,7 @@ public final class CardType implements Comparable { public static ArrayList getBasicTypes() { final ArrayList types = new ArrayList(); - types.addAll(Constant.CardTypes.BASIC_TYPES); + types.addAll(Constant.BASIC_TYPES); return types; } @@ -266,8 +305,8 @@ public final class CardType implements Comparable { public static ArrayList getLandTypes() { final ArrayList types = new ArrayList(); - types.addAll(Constant.CardTypes.BASIC_TYPES); - types.addAll(Constant.CardTypes.LAND_TYPES); + types.addAll(Constant.BASIC_TYPES); + types.addAll(Constant.LAND_TYPES); return types; } @@ -275,13 +314,13 @@ public final class CardType implements Comparable { public static ArrayList getCreatureTypes() { final ArrayList types = new ArrayList(); - types.addAll(Constant.CardTypes.CREATURE_TYPES); + types.addAll(Constant.CREATURE_TYPES); return types; } public static boolean isASuperType(final String cardType) { - return (Constant.CardTypes.SUPER_TYPES.contains(cardType)); + return (Constant.SUPER_TYPES.contains(cardType)); } public static boolean isASubType(final String cardType) { @@ -289,18 +328,18 @@ public final class CardType implements Comparable { } public static boolean isACreatureType(final String cardType) { - return (Constant.CardTypes.CREATURE_TYPES.contains(cardType)); + return (Constant.CREATURE_TYPES.contains(cardType)); } public static boolean isALandType(final String cardType) { - return (Constant.CardTypes.LAND_TYPES.contains(cardType)); + return (Constant.LAND_TYPES.contains(cardType)); } public static boolean isAPlaneswalkerType(final String cardType) { - return (Constant.CardTypes.WALKER_TYPES.contains(cardType)); + return (Constant.WALKER_TYPES.contains(cardType)); } public static boolean isABasicLandType(final String cardType) { - return (Constant.CardTypes.BASIC_TYPES.contains(cardType)); + return (Constant.BASIC_TYPES.contains(cardType)); } } diff --git a/forge-core/src/main/java/forge/card/ColorSet.java b/forge-core/src/main/java/forge/card/ColorSet.java index 9bdbdee6ba5..1cf9869be58 100644 --- a/forge-core/src/main/java/forge/card/ColorSet.java +++ b/forge-core/src/main/java/forge/card/ColorSet.java @@ -17,7 +17,6 @@ */ package forge.card; -import forge.Constant; import forge.card.mana.ManaCost; import forge.util.BinaryUtil; @@ -253,7 +252,7 @@ public final class ColorSet implements Comparable { return "n/a"; } String toReturn = MagicColor.toLongString(myColor); - if (toReturn == Constant.Color.COLORLESS && myColor != 0) { + if (toReturn == MagicColor.Constant.COLORLESS && myColor != 0) { return "multi"; } return toReturn; diff --git a/forge-gui/src/main/java/forge/card/DeckHints.java b/forge-core/src/main/java/forge/card/DeckHints.java similarity index 100% rename from forge-gui/src/main/java/forge/card/DeckHints.java rename to forge-core/src/main/java/forge/card/DeckHints.java diff --git a/forge-gui/src/main/java/forge/card/EditionCollection.java b/forge-core/src/main/java/forge/card/EditionCollection.java similarity index 96% rename from forge-gui/src/main/java/forge/card/EditionCollection.java rename to forge-core/src/main/java/forge/card/EditionCollection.java index fd5d515202e..1db42497cc4 100644 --- a/forge-gui/src/main/java/forge/card/EditionCollection.java +++ b/forge-core/src/main/java/forge/card/EditionCollection.java @@ -17,7 +17,6 @@ */ package forge.card; -import java.io.File; import java.util.Collections; import java.util.List; import java.util.Map; @@ -34,8 +33,8 @@ public final class EditionCollection extends StorageBase { private final Map aliasToEdition = new TreeMap(String.CASE_INSENSITIVE_ORDER); - public EditionCollection(File folder) { - super("Card editions", new CardEdition.EditionReader(folder)); + public EditionCollection(IItemReader reader) { + super("Card editions", reader); for (CardEdition ee : this) { String alias = ee.getAlias(); diff --git a/forge-gui/src/main/java/forge/card/FatPackTemplate.java b/forge-core/src/main/java/forge/card/FatPackTemplate.java similarity index 100% rename from forge-gui/src/main/java/forge/card/FatPackTemplate.java rename to forge-core/src/main/java/forge/card/FatPackTemplate.java diff --git a/forge-gui/src/main/java/forge/card/FormatCollection.java b/forge-core/src/main/java/forge/card/FormatCollection.java similarity index 56% rename from forge-gui/src/main/java/forge/card/FormatCollection.java rename to forge-core/src/main/java/forge/card/FormatCollection.java index 5d1dc59c5cf..0677397cab3 100644 --- a/forge-gui/src/main/java/forge/card/FormatCollection.java +++ b/forge-core/src/main/java/forge/card/FormatCollection.java @@ -17,12 +17,8 @@ */ package forge.card; -import java.util.Arrays; -import java.util.List; - import forge.game.GameFormat; -import forge.util.FileSection; -import forge.util.storage.StorageReaderFileSections; +import forge.util.storage.StorageReaderBase; import forge.util.storage.StorageBase; /** @@ -36,8 +32,8 @@ public final class FormatCollection extends StorageBase { * TODO: Write javadoc for Constructor. * @param io */ - public FormatCollection(String filename) { - super("Format collections", new FormatReader(filename)); + public FormatCollection(StorageReaderBase reader) { + super("Format collections", reader); } /** @@ -75,32 +71,6 @@ public final class FormatCollection extends StorageBase { return this.map.get(format); } - /** - * Instantiates a new format utils. - */ - public static class FormatReader extends StorageReaderFileSections { - public FormatReader(String file0) { - super(file0, GameFormat.FN_GET_NAME); - } - - @Override - protected GameFormat read(String title, Iterable body, int idx) { - List sets = null; // default: all sets allowed - List bannedCards = null; // default: nothing banned - - FileSection section = FileSection.parse(body, ":"); - String strSets = section.get("sets"); - if ( null != strSets ) { - sets = Arrays.asList(strSets.split(", ")); - } - String strCars = section.get("banned"); - if ( strCars != null ) { - bannedCards = Arrays.asList(strCars.split("; ")); - } - - return new GameFormat(title, sets, bannedCards, 1 + idx); - } - } } /** diff --git a/forge-gui/src/main/java/forge/card/ICardDatabase.java b/forge-core/src/main/java/forge/card/ICardDatabase.java similarity index 100% rename from forge-gui/src/main/java/forge/card/ICardDatabase.java rename to forge-core/src/main/java/forge/card/ICardDatabase.java diff --git a/forge-gui/src/main/java/forge/card/IUnOpenedProduct.java b/forge-core/src/main/java/forge/card/IUnOpenedProduct.java similarity index 100% rename from forge-gui/src/main/java/forge/card/IUnOpenedProduct.java rename to forge-core/src/main/java/forge/card/IUnOpenedProduct.java diff --git a/forge-core/src/main/java/forge/card/MagicColor.java b/forge-core/src/main/java/forge/card/MagicColor.java index 5918997397b..f6bd3d63653 100644 --- a/forge-core/src/main/java/forge/card/MagicColor.java +++ b/forge-core/src/main/java/forge/card/MagicColor.java @@ -1,6 +1,8 @@ package forge.card; -import forge.Constant; +import java.util.List; + +import com.google.common.collect.ImmutableList; /** * Holds byte values for each color magic has. @@ -22,31 +24,31 @@ public class MagicColor { public static byte fromName(String s) { if( s == null ) return 0; - if (s.equalsIgnoreCase(Constant.Color.WHITE) || s.equalsIgnoreCase("w")) { + if (s.equalsIgnoreCase(Constant.WHITE) || s.equalsIgnoreCase("w")) { return MagicColor.WHITE; } - if (s.equalsIgnoreCase(Constant.Color.BLUE) || s.equalsIgnoreCase("u")) { + if (s.equalsIgnoreCase(Constant.BLUE) || s.equalsIgnoreCase("u")) { return MagicColor.BLUE; } - if (s.equalsIgnoreCase(Constant.Color.BLACK) || s.equalsIgnoreCase("b")) { + if (s.equalsIgnoreCase(Constant.BLACK) || s.equalsIgnoreCase("b")) { return MagicColor.BLACK; } - if (s.equalsIgnoreCase(Constant.Color.RED) || s.equalsIgnoreCase("r")) { + if (s.equalsIgnoreCase(Constant.RED) || s.equalsIgnoreCase("r")) { return MagicColor.RED; } - if (s.equalsIgnoreCase(Constant.Color.GREEN) || s.equalsIgnoreCase("g")) { + if (s.equalsIgnoreCase(Constant.GREEN) || s.equalsIgnoreCase("g")) { return MagicColor.GREEN; } return 0; // colorless } public static String toShortString(String color) { - if (color.equalsIgnoreCase(Constant.Color.SNOW)) return "S"; // compatibility + if (color.equalsIgnoreCase(Constant.SNOW)) return "S"; // compatibility return toShortString(fromName(color)); } public static String toLongString(String color) { - if (color.equalsIgnoreCase("s")) return Constant.Color.SNOW; // compatibility + if (color.equalsIgnoreCase("s")) return Constant.SNOW; // compatibility return toLongString(fromName(color)); } @@ -63,12 +65,47 @@ public class MagicColor { public static String toLongString(byte color) { switch(color){ - case GREEN: return Constant.Color.GREEN ; - case RED: return Constant.Color.RED; - case BLUE: return Constant.Color.BLUE; - case BLACK: return Constant.Color.BLACK; - case WHITE: return Constant.Color.WHITE; - default: return Constant.Color.COLORLESS; + case GREEN: return Constant.GREEN ; + case RED: return Constant.RED; + case BLUE: return Constant.BLUE; + case BLACK: return Constant.BLACK; + case WHITE: return Constant.WHITE; + default: return Constant.COLORLESS; } } + + /** + * The Interface Color. + */ + public static class Constant { + + /** The Black. */ + public static final String BLACK = "black"; + + /** The Blue. */ + public static final String BLUE = "blue"; + + /** The Green. */ + public static final String GREEN = "green"; + + /** The Red. */ + public static final String RED = "red"; + + /** The White. */ + public static final String WHITE = "white"; + + /** The Colorless. */ + public static final String COLORLESS = "colorless"; + // color order "wubrg" + + /** The only colors. */ + public static final ImmutableList ONLY_COLORS = ImmutableList.of(WHITE, BLUE, BLACK, RED, GREEN); + + /** The Snow. */ + public static final String SNOW = "snow"; + + /** The Basic lands. */ + public static final List BASIC_LANDS = ImmutableList.of("Plains", "Island", "Swamp", "Mountain", "Forest"); + public static final List SNOW_LANDS = ImmutableList.of("Snow-Covered Plains", "Snow-Covered Island", "Snow-Covered Swamp", "Snow-Covered Mountain", "Snow-Covered Forest"); + } } diff --git a/forge-gui/src/main/java/forge/item/PrintSheet.java b/forge-core/src/main/java/forge/card/PrintSheet.java similarity index 90% rename from forge-gui/src/main/java/forge/item/PrintSheet.java rename to forge-core/src/main/java/forge/card/PrintSheet.java index 64c9e9ceaa4..d37b201daa0 100644 --- a/forge-gui/src/main/java/forge/item/PrintSheet.java +++ b/forge-core/src/main/java/forge/card/PrintSheet.java @@ -1,5 +1,6 @@ -package forge.item; +package forge.card; +import java.io.File; import java.util.List; import java.util.Map.Entry; import java.util.ArrayList; @@ -7,7 +8,9 @@ import java.util.Collection; import com.google.common.base.Function; +import forge.util.ItemPool; import forge.deck.CardPool; +import forge.item.PaperCard; import forge.util.MyRandom; import forge.util.storage.StorageReaderFileSections; @@ -30,7 +33,7 @@ public class PrintSheet { this(name0, null); } - private PrintSheet(String name0, ItemPool pool) { + public PrintSheet(String name0, ItemPool pool) { name = name0; cardsWithWeights = pool != null ? pool : new ItemPool(PaperCard.class); } @@ -105,18 +108,6 @@ public class PrintSheet { return result; } - public static class Reader extends StorageReaderFileSections { - public Reader(String fileName) { - super(fileName, PrintSheet.FN_GET_KEY); - } - - @Override - protected PrintSheet read(String title, Iterable body, int idx) { - return new PrintSheet(title, CardPool.fromCardList(body)); - } - - } - public boolean isEmpty() { return cardsWithWeights.isEmpty(); } @@ -125,5 +116,16 @@ public class PrintSheet { return cardsWithWeights.toFlatList(); } + public static class Reader extends StorageReaderFileSections { + public Reader(File file) { + super(file, PrintSheet.FN_GET_KEY); + } + + @Override + protected PrintSheet read(String title, Iterable body, int idx) { + return new PrintSheet(title, CardPool.fromCardList(body)); + } + + } } diff --git a/forge-gui/src/main/java/forge/card/SealedProductTemplate.java b/forge-core/src/main/java/forge/card/SealedProductTemplate.java similarity index 85% rename from forge-gui/src/main/java/forge/card/SealedProductTemplate.java rename to forge-core/src/main/java/forge/card/SealedProductTemplate.java index 17fcaf87ecd..dc23f8e9bc5 100644 --- a/forge-gui/src/main/java/forge/card/SealedProductTemplate.java +++ b/forge-core/src/main/java/forge/card/SealedProductTemplate.java @@ -18,6 +18,7 @@ package forge.card; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -30,12 +31,13 @@ import com.google.common.collect.Lists; import forge.util.TextUtil; import forge.util.storage.StorageReaderFile; + public class SealedProductTemplate { @SuppressWarnings("unchecked") public final static SealedProductTemplate genericBooster = new SealedProductTemplate(null, Lists.newArrayList( - Pair.of(BoosterGenerator.COMMON, 10), Pair.of(BoosterGenerator.UNCOMMON, 3), - Pair.of(BoosterGenerator.RARE_MYTHIC, 1), Pair.of(BoosterGenerator.BASIC_LAND, 1) + Pair.of(BoosterSlots.COMMON, 10), Pair.of(BoosterSlots.UNCOMMON, 3), + Pair.of(BoosterSlots.RARE_MYTHIC, 1), Pair.of(BoosterSlots.BASIC_LAND, 1) )); @@ -61,6 +63,10 @@ public class SealedProductTemplate { name = name0; } + public SealedProductTemplate(String code, String boosterDesc) { + this(code, Reader.parseSlots(boosterDesc)); + } + public int getNumberOfCardsExpected() { int sum = 0; for(Pair p : slots) { @@ -69,7 +75,7 @@ public class SealedProductTemplate { return sum; } - protected static final Function FN_GET_NAME = new Function() { + public static final Function FN_GET_NAME = new Function() { @Override public String apply(SealedProductTemplate arg1) { return arg1.name; @@ -98,9 +104,9 @@ public class SealedProductTemplate { return s.toString(); } - public static final class Reader extends StorageReaderFile { - public Reader(String pathname) { - super(pathname, SealedProductTemplate.FN_GET_NAME); + public final static class Reader extends StorageReaderFile { + public Reader(File file) { + super(file, SealedProductTemplate.FN_GET_NAME); } public static List> parseSlots(String data) { @@ -118,5 +124,5 @@ public class SealedProductTemplate { String[] headAndData = TextUtil.split(line, ':', 2); return new SealedProductTemplate(headAndData[0], parseSlots(headAndData[1])); } - } + } } diff --git a/forge-gui/src/main/java/forge/deck/CardPool.java b/forge-core/src/main/java/forge/deck/CardPool.java similarity index 83% rename from forge-gui/src/main/java/forge/deck/CardPool.java rename to forge-core/src/main/java/forge/deck/CardPool.java index 796fae40c63..f99dedd5252 100644 --- a/forge-gui/src/main/java/forge/deck/CardPool.java +++ b/forge-core/src/main/java/forge/deck/CardPool.java @@ -18,7 +18,6 @@ package forge.deck; import java.util.Iterator; -import java.util.List; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -26,10 +25,9 @@ import java.util.NoSuchElementException; import org.apache.commons.lang3.StringUtils; -import forge.Card; -import forge.card.CardDb; +import forge.StaticData; import forge.item.PaperCard; -import forge.item.ItemPool; +import forge.util.ItemPool; /** * Deck section. @@ -54,15 +52,6 @@ public class CardPool extends ItemPool { this.addAll(cards); } - /** - * Adds the. - * - * @param card - * the card - */ - public void add(final Card card) { - this.add(CardDb.getCard(card)); - } /** * Adds the. @@ -84,9 +73,9 @@ public class CardPool extends ItemPool { * @param amount the amount */ public void add(final String cardName, final String setCode, final int amount) { - PaperCard cp = CardDb.instance().tryGetCard(cardName, setCode); + PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(cardName, setCode); if ( cp == null ) - cp = CardDb.variants().tryGetCard(cardName, setCode); + cp = StaticData.instance().getVariantCards().tryGetCard(cardName, setCode); if ( cp != null) this.add(cp, amount); @@ -94,18 +83,6 @@ public class CardPool extends ItemPool { throw new RuntimeException(String.format("Card %s from %s is not supported by Forge, as it's neither a known common card nor one of casual variants' card.", cardName, setCode )); } - /** - * Adds the. - * - * @param cardList - * the card list - */ - public void add(final List cardList) { - for (final Card c : cardList) { - this.add(c); - } - } - /** * Add all from a List of CardPrinted. * @@ -124,9 +101,9 @@ public class CardPool extends ItemPool { * @param cardName the card name */ public void add(final String cardName, int cnt) { - PaperCard cp = CardDb.instance().tryGetCard(cardName); + PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(cardName); if ( cp == null ) - cp = CardDb.variants().tryGetCard(cardName); + cp = StaticData.instance().getVariantCards().tryGetCard(cardName); if ( cp != null) this.add(cp, cnt); diff --git a/forge-core/src/main/java/forge/deck/package-info.java b/forge-core/src/main/java/forge/deck/package-info.java new file mode 100644 index 00000000000..d7e14544cfe --- /dev/null +++ b/forge-core/src/main/java/forge/deck/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Max + * + */ +package forge.deck; \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/game/GameFormat.java b/forge-core/src/main/java/forge/game/GameFormat.java similarity index 78% rename from forge-gui/src/main/java/forge/game/GameFormat.java rename to forge-core/src/main/java/forge/game/GameFormat.java index b708685b51d..4a9fa2072c5 100644 --- a/forge-gui/src/main/java/forge/game/GameFormat.java +++ b/forge-core/src/main/java/forge/game/GameFormat.java @@ -17,7 +17,9 @@ */ package forge.game; +import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -26,9 +28,11 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Lists; -import forge.card.CardDb; +import forge.StaticData; import forge.item.PaperCard; import forge.item.IPaperCard; +import forge.util.FileSection; +import forge.util.storage.StorageReaderFileSections; /** @@ -90,7 +94,7 @@ public class GameFormat implements Comparable { if (this.allowedSetCodes == null || this.allowedSetCodes.isEmpty()) { return banNames; } - return Predicates.and(banNames, CardDb.instance().wasPrintedInSets(this.allowedSetCodes)); + return Predicates.and(banNames, StaticData.instance().getCommonCards().wasPrintedInSets(this.allowedSetCodes)); } /** @@ -182,4 +186,30 @@ public class GameFormat implements Comparable { return index; } + /** + * Instantiates a new format utils. + */ + public static class Reader extends StorageReaderFileSections { + public Reader(File file0) { + super(file0, GameFormat.FN_GET_NAME); + } + + @Override + protected GameFormat read(String title, Iterable body, int idx) { + List sets = null; // default: all sets allowed + List bannedCards = null; // default: nothing banned + + FileSection section = FileSection.parse(body, ":"); + String strSets = section.get("sets"); + if ( null != strSets ) { + sets = Arrays.asList(strSets.split(", ")); + } + String strCars = section.get("banned"); + if ( strCars != null ) { + bannedCards = Arrays.asList(strCars.split("; ")); + } + + return new GameFormat(title, sets, bannedCards, 1 + idx); + } + } } diff --git a/forge-core/src/main/java/forge/game/package-info.java b/forge-core/src/main/java/forge/game/package-info.java new file mode 100644 index 00000000000..8921a7477e3 --- /dev/null +++ b/forge-core/src/main/java/forge/game/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Max + * + */ +package forge.game; \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/item/IPaperCard.java b/forge-core/src/main/java/forge/item/IPaperCard.java similarity index 100% rename from forge-gui/src/main/java/forge/item/IPaperCard.java rename to forge-core/src/main/java/forge/item/IPaperCard.java diff --git a/forge-gui/src/main/java/forge/item/InventoryItem.java b/forge-core/src/main/java/forge/item/InventoryItem.java similarity index 100% rename from forge-gui/src/main/java/forge/item/InventoryItem.java rename to forge-core/src/main/java/forge/item/InventoryItem.java diff --git a/forge-gui/src/main/java/forge/item/InventoryItemFromSet.java b/forge-core/src/main/java/forge/item/InventoryItemFromSet.java similarity index 100% rename from forge-gui/src/main/java/forge/item/InventoryItemFromSet.java rename to forge-core/src/main/java/forge/item/InventoryItemFromSet.java diff --git a/forge-gui/src/main/java/forge/item/PaperCard.java b/forge-core/src/main/java/forge/item/PaperCard.java similarity index 80% rename from forge-gui/src/main/java/forge/item/PaperCard.java rename to forge-core/src/main/java/forge/item/PaperCard.java index 090842f5075..d4db6cc35b8 100644 --- a/forge-gui/src/main/java/forge/item/PaperCard.java +++ b/forge-core/src/main/java/forge/item/PaperCard.java @@ -19,10 +19,8 @@ package forge.item; import com.google.common.base.Function; -import forge.Card; import forge.card.CardRarity; import forge.card.CardRules; -import forge.card.CardRulesReader; /** @@ -36,10 +34,10 @@ import forge.card.CardRulesReader; */ public final class PaperCard implements Comparable, InventoryItemFromSet, IPaperCard { // Reference to rules - private final transient CardRules rules; + private final transient CardRules card; // These fields are kinda PK for PrintedCard - public String name; + public final String name; public final String edition; public final int artIndex; public final boolean foil; @@ -74,7 +72,7 @@ public final class PaperCard implements Comparable, InventoryItemFro @Override public CardRules getRules() { - return this.rules; + return this.card; } @Override @@ -82,11 +80,15 @@ public final class PaperCard implements Comparable, InventoryItemFro return this.rarity; } + + + // @Override // public String getImageKey() { // return getImageLocator(getImageName(), getArtIndex(), true, false); // } - + + @Override public String getItemType() { return "Card"; @@ -98,7 +100,7 @@ public final class PaperCard implements Comparable, InventoryItemFro public static final Function FN_GET_RULES = new Function() { @Override public CardRules apply(final PaperCard from) { - return from.rules; + return from.card; } }; public static final Function FN_GET_NAME = new Function() { @@ -108,20 +110,19 @@ public final class PaperCard implements Comparable, InventoryItemFro } }; - public PaperCard(final CardRules rules0, final String edition0, final CardRarity rarity0, final int artIndex0) { - this(rules0, edition0, rarity0, artIndex0, false); + public PaperCard(final CardRules c, final String edition0, final CardRarity rare, final int index) { + this(c, edition0, rare, index, false); } - public PaperCard(final CardRules rules0, final String edition0, final CardRarity rarity0, final int artIndex0, final boolean foil0) { - if (edition0 == null || rules0 == null || rarity0 == null) { + public PaperCard(final CardRules c, final String edition0, final CardRarity rare, final int index, final boolean foil) { + if ( edition0 == null || c == null || rare == null ) throw new IllegalArgumentException("Cannot create card without rules, edition or rarity"); - } - this.rules = rules0; - this.name = rules0.getName(); + this.card = c; + this.name = c.getName(); this.edition = edition0; - this.rarity = rarity0; - this.artIndex = artIndex0; - this.foil = foil0; + this.artIndex = index; + this.foil = foil; + this.rarity = rare; } // Want this class to be a key for HashTable @@ -192,10 +193,4 @@ public final class PaperCard implements Comparable, InventoryItemFro // TODO compare sets properly return this.edition.compareTo(o.getEdition()); } - - public void updateRules(String script) { - CardRulesReader.updateCardRules(this.rules, script); - this.name = this.rules.getName(); - Card.updateCard(this); - } } diff --git a/forge-gui/src/main/java/forge/item/PaperToken.java b/forge-core/src/main/java/forge/item/PaperToken.java similarity index 100% rename from forge-gui/src/main/java/forge/item/PaperToken.java rename to forge-core/src/main/java/forge/item/PaperToken.java diff --git a/forge-core/src/main/java/forge/item/package-info.java b/forge-core/src/main/java/forge/item/package-info.java new file mode 100644 index 00000000000..701ee91752c --- /dev/null +++ b/forge-core/src/main/java/forge/item/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Max + * + */ +package forge.item; \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/util/Aggregates.java b/forge-core/src/main/java/forge/util/Aggregates.java similarity index 100% rename from forge-gui/src/main/java/forge/util/Aggregates.java rename to forge-core/src/main/java/forge/util/Aggregates.java diff --git a/forge-gui/src/main/java/forge/util/maps/CollectionSuppliers.java b/forge-core/src/main/java/forge/util/CollectionSuppliers.java similarity index 93% rename from forge-gui/src/main/java/forge/util/maps/CollectionSuppliers.java rename to forge-core/src/main/java/forge/util/CollectionSuppliers.java index 2df22a656c0..c3c1205d29e 100644 --- a/forge-gui/src/main/java/forge/util/maps/CollectionSuppliers.java +++ b/forge-core/src/main/java/forge/util/CollectionSuppliers.java @@ -1,4 +1,4 @@ -package forge.util.maps; +package forge.util; import java.util.ArrayList; import java.util.HashSet; diff --git a/forge-gui/src/main/java/forge/util/ComparableOp.java b/forge-core/src/main/java/forge/util/ComparableOp.java similarity index 100% rename from forge-gui/src/main/java/forge/util/ComparableOp.java rename to forge-core/src/main/java/forge/util/ComparableOp.java diff --git a/forge-gui/src/main/java/forge/util/FileSection.java b/forge-core/src/main/java/forge/util/FileSection.java similarity index 100% rename from forge-gui/src/main/java/forge/util/FileSection.java rename to forge-core/src/main/java/forge/util/FileSection.java diff --git a/forge-gui/src/main/java/forge/util/FileSectionManual.java b/forge-core/src/main/java/forge/util/FileSectionManual.java similarity index 100% rename from forge-gui/src/main/java/forge/util/FileSectionManual.java rename to forge-core/src/main/java/forge/util/FileSectionManual.java diff --git a/forge-gui/src/main/java/forge/util/FileUtil.java b/forge-core/src/main/java/forge/util/FileUtil.java similarity index 93% rename from forge-gui/src/main/java/forge/util/FileUtil.java rename to forge-core/src/main/java/forge/util/FileUtil.java index c5cfc260bb0..3422cd546b4 100644 --- a/forge-gui/src/main/java/forge/util/FileUtil.java +++ b/forge-core/src/main/java/forge/util/FileUtil.java @@ -31,8 +31,6 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import forge.error.BugReporter; - /** *

* FileUtil class. @@ -109,28 +107,20 @@ public final class FileUtil { } p.close(); } catch (final Exception ex) { - BugReporter.reportException(ex); throw new RuntimeException("FileUtil : writeFile() error, problem writing file - " + file + " : " + ex); } } // writeAllDecks() public static String readFileToString(String filename) { - return readFileToString(new File(filename)); - } - - public static String readFileToString(File file) { StringBuilder s = new StringBuilder(); - for (String line : readFile(file)) { - if (s.length() > 0) { - s.append('\n'); - } - s.append(line); + for (String line : readFile(filename)) { + s.append(line).append('\n'); } return s.toString(); } public static List readFile(final String filename) { - return readFile(new File(filename)); + return FileUtil.readFile(new File(filename)); } // reads line by line and adds each line to the ArrayList @@ -152,7 +142,6 @@ public final class FileUtil { } return FileUtil.readAllLines(new FileReader(file), false); } catch (final Exception ex) { - BugReporter.reportException(ex); throw new RuntimeException("FileUtil : readFile() error, " + ex); } } // readFile() @@ -187,7 +176,6 @@ public final class FileUtil { } in.close(); } catch (final IOException ex) { - BugReporter.reportException(ex); throw new RuntimeException("FileUtil : readAllLines() error, " + ex); } return list; diff --git a/forge-gui/src/main/java/forge/util/IHasName.java b/forge-core/src/main/java/forge/util/IHasName.java similarity index 100% rename from forge-gui/src/main/java/forge/util/IHasName.java rename to forge-core/src/main/java/forge/util/IHasName.java diff --git a/forge-gui/src/main/java/forge/util/IItemReader.java b/forge-core/src/main/java/forge/util/IItemReader.java similarity index 100% rename from forge-gui/src/main/java/forge/util/IItemReader.java rename to forge-core/src/main/java/forge/util/IItemReader.java diff --git a/forge-gui/src/main/java/forge/util/IItemSerializer.java b/forge-core/src/main/java/forge/util/IItemSerializer.java similarity index 100% rename from forge-gui/src/main/java/forge/util/IItemSerializer.java rename to forge-core/src/main/java/forge/util/IItemSerializer.java diff --git a/forge-gui/src/main/java/forge/item/ItemPool.java b/forge-core/src/main/java/forge/util/ItemPool.java similarity index 95% rename from forge-gui/src/main/java/forge/item/ItemPool.java rename to forge-core/src/main/java/forge/util/ItemPool.java index e63d8a284ae..26cb7709705 100644 --- a/forge-gui/src/main/java/forge/item/ItemPool.java +++ b/forge-core/src/main/java/forge/util/ItemPool.java @@ -15,11 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package forge.item; +package forge.util; import java.util.Collections; import java.util.Map.Entry; +import forge.item.InventoryItem; + /** *

* ItemPool class. diff --git a/forge-gui/src/main/java/forge/item/ItemPoolSorter.java b/forge-core/src/main/java/forge/util/ItemPoolSorter.java similarity index 95% rename from forge-gui/src/main/java/forge/item/ItemPoolSorter.java rename to forge-core/src/main/java/forge/util/ItemPoolSorter.java index 284d313b089..7525c1a6220 100644 --- a/forge-gui/src/main/java/forge/item/ItemPoolSorter.java +++ b/forge-core/src/main/java/forge/util/ItemPoolSorter.java @@ -15,13 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package forge.item; +package forge.util; import java.util.Comparator; import java.util.Map.Entry; import com.google.common.base.Function; +import forge.item.PaperCard; + /** *

diff --git a/forge-gui/src/main/java/forge/item/ItemPoolView.java b/forge-core/src/main/java/forge/util/ItemPoolView.java similarity index 95% rename from forge-gui/src/main/java/forge/item/ItemPoolView.java rename to forge-core/src/main/java/forge/util/ItemPoolView.java index b9056d87f3f..73a3f84d5b2 100644 --- a/forge-gui/src/main/java/forge/item/ItemPoolView.java +++ b/forge-core/src/main/java/forge/util/ItemPoolView.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.item; +package forge.util; import java.util.ArrayList; import java.util.Hashtable; @@ -27,6 +27,8 @@ import java.util.Map.Entry; import com.google.common.base.Function; import com.google.common.base.Predicate; +import forge.item.InventoryItem; + /** *

diff --git a/forge-gui/src/main/java/forge/util/Lang.java b/forge-core/src/main/java/forge/util/Lang.java similarity index 100% rename from forge-gui/src/main/java/forge/util/Lang.java rename to forge-core/src/main/java/forge/util/Lang.java diff --git a/forge-gui/src/main/java/forge/util/MyRandom.java b/forge-core/src/main/java/forge/util/MyRandom.java similarity index 100% rename from forge-gui/src/main/java/forge/util/MyRandom.java rename to forge-core/src/main/java/forge/util/MyRandom.java diff --git a/forge-gui/src/main/java/forge/util/PredicateString.java b/forge-core/src/main/java/forge/util/PredicateString.java similarity index 100% rename from forge-gui/src/main/java/forge/util/PredicateString.java rename to forge-core/src/main/java/forge/util/PredicateString.java diff --git a/forge-gui/src/main/java/forge/util/TextUtil.java b/forge-core/src/main/java/forge/util/TextUtil.java similarity index 100% rename from forge-gui/src/main/java/forge/util/TextUtil.java rename to forge-core/src/main/java/forge/util/TextUtil.java diff --git a/forge-gui/src/main/java/forge/util/storage/IStorage.java b/forge-core/src/main/java/forge/util/storage/IStorage.java similarity index 100% rename from forge-gui/src/main/java/forge/util/storage/IStorage.java rename to forge-core/src/main/java/forge/util/storage/IStorage.java diff --git a/forge-gui/src/main/java/forge/util/storage/StorageBase.java b/forge-core/src/main/java/forge/util/storage/StorageBase.java similarity index 100% rename from forge-gui/src/main/java/forge/util/storage/StorageBase.java rename to forge-core/src/main/java/forge/util/storage/StorageBase.java diff --git a/forge-gui/src/main/java/forge/util/storage/StorageReaderBase.java b/forge-core/src/main/java/forge/util/storage/StorageReaderBase.java similarity index 100% rename from forge-gui/src/main/java/forge/util/storage/StorageReaderBase.java rename to forge-core/src/main/java/forge/util/storage/StorageReaderBase.java diff --git a/forge-gui/src/main/java/forge/util/storage/StorageReaderFile.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java similarity index 89% rename from forge-gui/src/main/java/forge/util/storage/StorageReaderFile.java rename to forge-core/src/main/java/forge/util/storage/StorageReaderFile.java index 422bee0e823..e23deb1627a 100644 --- a/forge-gui/src/main/java/forge/util/storage/StorageReaderFile.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java @@ -21,8 +21,6 @@ import java.io.File; import java.util.Map; import java.util.TreeMap; -import javax.swing.JOptionPane; - import org.apache.commons.lang3.StringUtils; import com.google.common.base.Function; @@ -76,10 +74,8 @@ public abstract class StorageReaderFile extends StorageReaderBase { final T item = this.read(s, idx); if (null == item) { - final String msg = "An object stored in " + this.file.getPath() - + " failed to load.\nPlease submit this as a bug with the mentioned file attached."; - JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), msg); - continue; + final String msg = "An object stored in " + this.file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file attached."; + throw new RuntimeException(msg); } idx++; diff --git a/forge-gui/src/main/java/forge/util/storage/StorageReaderFileSections.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java similarity index 94% rename from forge-gui/src/main/java/forge/util/storage/StorageReaderFileSections.java rename to forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java index 57974777fe1..88b252d8461 100644 --- a/forge-gui/src/main/java/forge/util/storage/StorageReaderFileSections.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java @@ -23,8 +23,6 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; -import javax.swing.JOptionPane; - import org.apache.commons.lang3.StringUtils; import com.google.common.base.Function; @@ -104,8 +102,7 @@ public abstract class StorageReaderFileSections extends StorageReaderBase if (null != item) return item; final String msg = "An object stored in " + this.file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file attached."; - JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), msg); - return null; + throw new RuntimeException(msg); } /** diff --git a/forge-gui/src/main/java/forge/util/storage/StorageReaderFolder.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java similarity index 67% rename from forge-gui/src/main/java/forge/util/storage/StorageReaderFolder.java rename to forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java index b4ac29cbfa6..3554f7ff0df 100644 --- a/forge-gui/src/main/java/forge/util/storage/StorageReaderFolder.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java @@ -28,15 +28,8 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.TreeMap; -import javax.swing.JOptionPane; - -import org.apache.commons.lang3.StringUtils; - import com.google.common.base.Function; -import forge.deck.io.OldDeckFileFormatException; -import forge.error.BugReporter; - /** * This class treats every file in the given folder as a source for a named * object. The descendant should implement read method to deserialize a single @@ -67,7 +60,7 @@ public abstract class StorageReaderFolder extends StorageReaderBase { this.directory = deckDir0; if (this.directory == null) { - throw new IllegalArgumentException("No deck directory specified"); + throw new IllegalArgumentException("No directory specified"); } try { if (this.directory.isFile()) { @@ -79,55 +72,37 @@ public abstract class StorageReaderFolder extends StorageReaderBase { } } } catch (final IOException ex) { - BugReporter.reportException(ex); - throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage()); + throw new RuntimeException("StorageReaderFolder.ctor() error, " + ex.getMessage()); } } + public final List objectsThatFailedToLoad = new ArrayList(); + /* (non-Javadoc) * @see forge.util.IItemReader#readAll() */ @Override public Map readAll() { final Map result = new TreeMap(); - final List decksThatFailedToLoad = new ArrayList(); + final File[] files = this.directory.listFiles(this.getFileFilter()); - boolean hasWarnedOfOldFormat = false; for (final File file : files) { try { final T newDeck = this.read(file); if (null == newDeck) { - final 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(JOptionPane.getRootFrame(), msg); - continue; + final String msg = "An object stored in " + file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file/directory attached."; + throw new RuntimeException(msg); } String newKey = keySelector.apply(newDeck); if( result.containsKey(newKey)) System.err.println("StorageReader: Overwriting an object with key " + newKey); result.put(newKey, newDeck); - } catch (final OldDeckFileFormatException ex) { - if (!hasWarnedOfOldFormat) { - JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), - "Found a deck in old fileformat in the storage.\nMoving this file and all similiar ones to parent folder.\n\nForge will try to convert them in a second."); - hasWarnedOfOldFormat = true; - } - file.renameTo(new File(this.directory.getParentFile(), file.getName())); } catch (final NoSuchElementException ex) { - final String message = String.format("%s failed to load because ---- %s", file.getName(), - ex.getMessage()); - decksThatFailedToLoad.add(message); + final String message = String.format("%s failed to load because ---- %s", file.getName(), ex.getMessage()); + objectsThatFailedToLoad.add(message); } } - - if (!decksThatFailedToLoad.isEmpty()) { - JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), - StringUtils.join(decksThatFailedToLoad, System.getProperty("line.separator")), - "Some of your objects were not loaded.", JOptionPane.WARNING_MESSAGE); - } - return result; } diff --git a/forge-core/src/main/java/forge/util/storage/package-info.java b/forge-core/src/main/java/forge/util/storage/package-info.java new file mode 100644 index 00000000000..b0d8b0b6968 --- /dev/null +++ b/forge-core/src/main/java/forge/util/storage/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Max + * + */ +package forge.util.storage; \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/Card.java b/forge-gui/src/main/java/forge/Card.java index 48eef513c72..dc0fd8f5035 100644 --- a/forge-gui/src/main/java/forge/Card.java +++ b/forge-gui/src/main/java/forge/Card.java @@ -44,7 +44,6 @@ import com.google.common.collect.Lists; import forge.CardPredicates.Presets; import forge.card.CardCharacteristicName; import forge.card.CardCharacteristics; -import forge.card.CardDb; import forge.card.CardEdition; import forge.card.CardRarity; import forge.card.CardRules; @@ -7743,7 +7742,7 @@ public class Card extends GameEntity implements Comparable { * @return a {@link java.lang.String} object. */ public final String getMostRecentSet() { - return CardDb.instance().getCard(this.getName()).getEdition(); + return Singletons.getMagicDb().getCommonCards().getCard(this.getName()).getEdition(); } public final void setImageKey(final String iFN) { @@ -7892,8 +7891,8 @@ public class Card extends GameEntity implements Comparable { */ public final void setRandomFoil() { CardEdition.FoilType foilType = CardEdition.FoilType.NOT_SUPPORTED; - if (this.getCurSetCode() != null && Singletons.getModel().getEditions().get(this.getCurSetCode()) != null) { - foilType = Singletons.getModel().getEditions().get(this.getCurSetCode()).getFoilType(); + if (this.getCurSetCode() != null && Singletons.getMagicDb().getEditions().get(this.getCurSetCode()) != null) { + foilType = Singletons.getMagicDb().getEditions().get(this.getCurSetCode()).getFoilType(); } if (foilType != CardEdition.FoilType.NOT_SUPPORTED) { this.setFoil(foilType == CardEdition.FoilType.MODERN ? MyRandom.getRandom().nextInt(9) + 1 : MyRandom.getRandom().nextInt(9) + 11); @@ -8711,6 +8710,20 @@ public class Card extends GameEntity implements Comparable { } return fromPaperCard(pc, null); } + + // Fetch from Forge's Card instance. Well, there should be no errors, but + // we'll still check + public PaperCard getPaperCard() { + final String name = getName(); + final String set = getCurSetCode(); + + if (StringUtils.isNotBlank(set)) { + PaperCard cp = Singletons.getMagicDb().getVariantCards().tryGetCard(name, set); + return cp == null ? Singletons.getMagicDb().getCommonCards().getCard(name, set) : cp; + } + PaperCard cp = Singletons.getMagicDb().getVariantCards().tryGetCard(name, true); + return cp == null ? Singletons.getMagicDb().getCommonCards().getCard(name) : cp; + } /** * Update Card instance for the given PaperCard if any diff --git a/forge-gui/src/main/java/forge/CardUtil.java b/forge-gui/src/main/java/forge/CardUtil.java index bc6586e41c1..9e2a5eed612 100644 --- a/forge-gui/src/main/java/forge/CardUtil.java +++ b/forge-gui/src/main/java/forge/CardUtil.java @@ -253,7 +253,7 @@ public final class CardUtil { if (reflectProperty.equals("Is")) { // Meteor Crater for (final Card card1 : cards) { // For each card, go through all the colors and if the card is that color, add - for (final String col : Constant.Color.ONLY_COLORS) { + for (final String col : MagicColor.Constant.ONLY_COLORS) { if (card1.isOfColor(col)) { colors.add(col); if (colors.size() == maxChoices) { @@ -265,14 +265,14 @@ public final class CardUtil { } else if (reflectProperty.equals("Produced")) { // Why is this name so similar to the one below? final String producedColors = abMana instanceof AbilitySub ? (String) abMana.getRootAbility().getTriggeringObject("Produced") : (String) abMana.getTriggeringObject("Produced"); - for (final String col : Constant.Color.ONLY_COLORS) { + for (final String col : MagicColor.Constant.ONLY_COLORS) { final String s = MagicColor.toShortString(col); if (producedColors.contains(s)) { colors.add(col); } } if (maxChoices == 6 && producedColors.contains("1")) { - colors.add(Constant.Color.COLORLESS); + colors.add(MagicColor.Constant.COLORLESS); } } else if (reflectProperty.equals("Produce")) { final List abilities = new ArrayList(); @@ -315,7 +315,7 @@ public final class CardUtil { public static Set canProduce(final int maxChoices, final AbilityManaPart ab, final Set colors) { - for (final String col : Constant.Color.ONLY_COLORS) { + for (final String col : MagicColor.Constant.ONLY_COLORS) { final String s = MagicColor.toShortString(col); if (ab.canProduce(s)) { colors.add(col); @@ -323,7 +323,7 @@ public final class CardUtil { } if (maxChoices == 6 && ab.canProduce("1")) { - colors.add(Constant.Color.COLORLESS); + colors.add(MagicColor.Constant.COLORLESS); } return colors; diff --git a/forge-gui/src/main/java/forge/ImageCache.java b/forge-gui/src/main/java/forge/ImageCache.java index ce21f25fd6b..aa4fbeeb275 100644 --- a/forge-gui/src/main/java/forge/ImageCache.java +++ b/forge-gui/src/main/java/forge/ImageCache.java @@ -32,7 +32,6 @@ import com.google.common.cache.CacheLoader.InvalidCacheLoadException; import com.google.common.cache.LoadingCache; import com.mortennobel.imagescaling.ResampleOp; -import forge.card.CardDb; import forge.card.CardRules; import forge.card.CardSplitType; import forge.game.player.IHasIcon; @@ -237,7 +236,7 @@ public class ImageCache { return ImageCache.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition(); if ( ii instanceof BoosterPack ) { BoosterPack bp = (BoosterPack)ii; - int cntPics = Singletons.getModel().getEditions().get(bp.getEdition()).getCntBoosterPictures(); + int cntPics = Singletons.getMagicDb().getEditions().get(bp.getEdition()).getCntBoosterPictures(); String suffix = (1 >= cntPics) ? "" : ("_" + bp.getArtIndex()); return ImageCache.BOOSTER_PREFIX + bp.getEdition() + suffix; } @@ -264,7 +263,7 @@ public class ImageCache { final int cntPictures; final boolean hasManyPictures; if (includeSet) { - cntPictures = !card.isVariant() ? CardDb.instance().getPrintCount(card.getName(), edition) : CardDb.variants().getPrintCount(card.getName(), edition); + cntPictures = !card.isVariant() ? Singletons.getMagicDb().getCommonCards().getPrintCount(card.getName(), edition) : Singletons.getMagicDb().getVariantCards().getPrintCount(card.getName(), edition); hasManyPictures = cntPictures > 1; } else { // without set number of pictures equals number of urls provided in Svar:Picture @@ -272,7 +271,7 @@ public class ImageCache { cntPictures = StringUtils.countMatches(urls, "\\") + 1; // raise the art index limit to the maximum of the sets this card was printed in - int maxCntPictures = !card.isVariant() ? CardDb.instance().getMaxPrintCount(card.getName()) : CardDb.variants().getMaxPrintCount(card.getName()); + int maxCntPictures = !card.isVariant() ? Singletons.getMagicDb().getCommonCards().getMaxPrintCount(card.getName()) : Singletons.getMagicDb().getVariantCards().getMaxPrintCount(card.getName()); hasManyPictures = maxCntPictures > 1; } @@ -297,7 +296,7 @@ public class ImageCache { } if (includeSet) { - String editionAliased = isDownloadUrl ? Singletons.getModel().getEditions().getCode2ByCode(edition) : getSetFolder(edition); + String editionAliased = isDownloadUrl ? Singletons.getMagicDb().getEditions().getCode2ByCode(edition) : getSetFolder(edition); return String.format("%s/%s", editionAliased, fname); } else { return fname; @@ -311,7 +310,7 @@ public class ImageCache { public static String getSetFolder(String edition) { return !NewConstants.CACHE_CARD_PICS_SUBDIR.containsKey(edition) - ? Singletons.getModel().getEditions().getCode2ByCode(edition) // by default 2-letter codes from MWS are used + ? Singletons.getMagicDb().getEditions().getCode2ByCode(edition) // by default 2-letter codes from MWS are used : NewConstants.CACHE_CARD_PICS_SUBDIR.get(edition); // may use custom paths though } diff --git a/forge-gui/src/main/java/forge/Singletons.java b/forge-gui/src/main/java/forge/Singletons.java index 96f3ce81dec..a57b56c35c8 100644 --- a/forge-gui/src/main/java/forge/Singletons.java +++ b/forge-gui/src/main/java/forge/Singletons.java @@ -17,8 +17,10 @@ */ package forge; +import forge.card.cardfactory.CardStorageReader; import forge.control.FControl; import forge.model.FModel; +import forge.properties.NewConstants; import forge.view.FView; /** @@ -28,6 +30,7 @@ public final class Singletons { private static FModel model = null; private static FView view = null; private static FControl control = null; + private static StaticData magicDb = null; /** * IMPORTANT - does not return view frame! Must call @@ -36,11 +39,23 @@ public final class Singletons { public static FView getView() { return view; } public static FControl getControl() { return control; } public static FModel getModel() { return model; } + public static StaticData getMagicDb() { return magicDb; } - public static void setModel (FModel model0) { model = model0; } - public static void setView (FView view0) { view = view0; } - public static void setControl(FControl control0) { control = control0; } - + public static void initializeOnce(boolean withUi) { + if(withUi) + view = FView.SINGLETON_INSTANCE; + + // Loads all cards (using progress bar). + FThreads.assertExecutedByEdt(false); + final CardStorageReader reader = new CardStorageReader(NewConstants.CARD_DATA_DIR, true, withUi ? view.getSplash().getProgressBar() : null); + magicDb = new StaticData(reader, "res/editions", "res/blockdata"); + model = FModel.getInstance(withUi); + + if(withUi) + control = FControl.instance; + + } + // disallow instantiation private Singletons() { } } diff --git a/forge-gui/src/main/java/forge/card/BoosterGenerator.java b/forge-gui/src/main/java/forge/card/BoosterGenerator.java index 3a3ac5a0ada..b765b5e56ed 100644 --- a/forge-gui/src/main/java/forge/card/BoosterGenerator.java +++ b/forge-gui/src/main/java/forge/card/BoosterGenerator.java @@ -37,7 +37,6 @@ import com.google.common.collect.Lists; import forge.Singletons; import forge.item.PaperCard; import forge.item.IPaperCard; -import forge.item.PrintSheet; import forge.util.TextUtil; /** @@ -50,22 +49,11 @@ import forge.util.TextUtil; */ public class BoosterGenerator { - private static final String LAND = "Land"; - public static final String ANY = "Any"; - public static final String COMMON = "Common"; - public static final String UNCOMMON = "Uncommon"; - public static final String UNCOMMON_RARE = "UncommonRare"; - public static final String RARE = "Rare"; - public static final String RARE_MYTHIC = "RareMythic"; - public static final String MYTHIC = "Mythic"; - public static final String BASIC_LAND = "BasicLand"; - public static final String TIME_SHIFTED = "TimeShifted"; - private final static Map cachedSheets = new TreeMap(String.CASE_INSENSITIVE_ORDER); private static final synchronized PrintSheet getPrintSheet(String key) { if( !cachedSheets.containsKey(key) ) - cachedSheets.put(key, makeSheet(key, CardDb.instance().getAllCards())); + cachedSheets.put(key, makeSheet(key, Singletons.getMagicDb().getCommonCards().getAllCards())); return cachedSheets.get(key); } @@ -77,7 +65,7 @@ public class BoosterGenerator { String[] sType = TextUtil.splitWithParenthesis(slotType, ' '); String setCode = sType.length == 1 && booster.getEdition() != null ? booster.getEdition() : null; - String sheetKey = Singletons.getModel().getEditions().contains(setCode) ? slotType.trim() + " " + setCode: slotType.trim(); + String sheetKey = Singletons.getMagicDb().getEditions().contains(setCode) ? slotType.trim() + " " + setCode: slotType.trim(); PrintSheet ps = getPrintSheet(sheetKey); result.addAll(ps.random(numCards, true)); @@ -100,7 +88,7 @@ public class BoosterGenerator { String mainCode = itMod.next(); if ( mainCode.regionMatches(true, 0, "fromSheet", 0, 9)) { // custom print sheet String sheetName = StringUtils.strip(mainCode.substring(9), "()\" "); - src = Singletons.getModel().getPrintSheets().get(sheetName).toFlatList(); + src = Singletons.getMagicDb().getPrintSheets().get(sheetName).toFlatList(); setPred = Predicates.alwaysTrue(); } else if (mainCode.startsWith("promo")) { // get exactly the named cards, that's a tiny inlined print sheet @@ -108,7 +96,7 @@ public class BoosterGenerator { String[] cardNames = TextUtil.splitWithParenthesis(list, ',', '"', '"'); List srcList = new ArrayList(); for(String cardName: cardNames) - srcList.add(CardDb.instance().getCard(cardName)); + srcList.add(Singletons.getMagicDb().getCommonCards().getCard(cardName)); src = srcList; setPred = Predicates.alwaysTrue(); @@ -121,18 +109,18 @@ public class BoosterGenerator { // only special operators should remain by now - the ones that could not be turned into one predicate String mainCode = operators.isEmpty() ? null : operators.get(0).trim(); - if( null == mainCode || mainCode.equalsIgnoreCase(ANY) ) { // no restriction on rarity + if( null == mainCode || mainCode.equalsIgnoreCase(BoosterSlots.ANY) ) { // no restriction on rarity Predicate predicate = Predicates.and(setPred, extraPred); ps.addAll(Iterables.filter(src, predicate)); - } else if ( mainCode.equalsIgnoreCase(UNCOMMON_RARE) ) { // for sets like ARN, where U1 cards are considered rare and U3 are uncommon + } else if ( mainCode.equalsIgnoreCase(BoosterSlots.UNCOMMON_RARE) ) { // for sets like ARN, where U1 cards are considered rare and U3 are uncommon Predicate predicateRares = Predicates.and(setPred, IPaperCard.Predicates.Presets.IS_RARE, extraPred); ps.addAll(Iterables.filter(src, predicateRares)); Predicate predicateUncommon = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_UNCOMMON, extraPred); ps.addAll(Iterables.filter(src, predicateUncommon), 3); - } else if ( mainCode.equalsIgnoreCase(RARE_MYTHIC) ) { + } else if ( mainCode.equalsIgnoreCase(BoosterSlots.RARE_MYTHIC) ) { // Typical ratio of rares to mythics is 53:15, changing to 35:10 in smaller sets. // To achieve the desired 1:8 are all mythics are added once, and all rares added twice per print sheet. @@ -168,13 +156,13 @@ public class BoosterGenerator { Predicate toAdd = null; if( operator.equalsIgnoreCase("dfc") ) { toAdd = Predicates.compose(CardRulesPredicates.splitType(CardSplitType.Transform), PaperCard.FN_GET_RULES); - } else if ( operator.equalsIgnoreCase(LAND) ) { toAdd = Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES); - } else if ( operator.equalsIgnoreCase(BASIC_LAND)) { toAdd = IPaperCard.Predicates.Presets.IS_BASIC_LAND; - } else if ( operator.equalsIgnoreCase(TIME_SHIFTED)) { toAdd = IPaperCard.Predicates.Presets.IS_SPECIAL; - } else if ( operator.equalsIgnoreCase(MYTHIC)) { toAdd = IPaperCard.Predicates.Presets.IS_MYTHIC_RARE; - } else if ( operator.equalsIgnoreCase(RARE)) { toAdd = IPaperCard.Predicates.Presets.IS_RARE; - } else if ( operator.equalsIgnoreCase(UNCOMMON)) { toAdd = IPaperCard.Predicates.Presets.IS_UNCOMMON; - } else if ( operator.equalsIgnoreCase(COMMON)) { toAdd = IPaperCard.Predicates.Presets.IS_COMMON; + } else if ( operator.equalsIgnoreCase(BoosterSlots.LAND) ) { toAdd = Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES); + } else if ( operator.equalsIgnoreCase(BoosterSlots.BASIC_LAND)) { toAdd = IPaperCard.Predicates.Presets.IS_BASIC_LAND; + } else if ( operator.equalsIgnoreCase(BoosterSlots.TIME_SHIFTED)) { toAdd = IPaperCard.Predicates.Presets.IS_SPECIAL; + } else if ( operator.equalsIgnoreCase(BoosterSlots.MYTHIC)) { toAdd = IPaperCard.Predicates.Presets.IS_MYTHIC_RARE; + } else if ( operator.equalsIgnoreCase(BoosterSlots.RARE)) { toAdd = IPaperCard.Predicates.Presets.IS_RARE; + } else if ( operator.equalsIgnoreCase(BoosterSlots.UNCOMMON)) { toAdd = IPaperCard.Predicates.Presets.IS_UNCOMMON; + } else if ( operator.equalsIgnoreCase(BoosterSlots.COMMON)) { toAdd = IPaperCard.Predicates.Presets.IS_COMMON; } else if ( operator.startsWith("name(") ) { operator = StringUtils.strip(operator.substring(4), "() "); String[] cardNames = TextUtil.splitWithParenthesis(operator, ',', '"', '"'); diff --git a/forge-gui/src/main/java/forge/card/CardBlock.java b/forge-gui/src/main/java/forge/card/CardBlock.java index dc38f3de61f..8c601d50062 100644 --- a/forge-gui/src/main/java/forge/card/CardBlock.java +++ b/forge-gui/src/main/java/forge/card/CardBlock.java @@ -297,6 +297,6 @@ public final class CardBlock implements Comparable { */ public IUnOpenedProduct getBooster(final String code) { MetaSet ms = metaSets.get(code); - return ms == null ? new UnOpenedProduct(Singletons.getModel().getBoosters().get(code)) : ms.getBooster(); + return ms == null ? new UnOpenedProduct(Singletons.getMagicDb().getBoosters().get(code)) : ms.getBooster(); } } diff --git a/forge-gui/src/main/java/forge/card/CardEditionPredicates.java b/forge-gui/src/main/java/forge/card/CardEditionPredicates.java new file mode 100644 index 00000000000..f47fa21de80 --- /dev/null +++ b/forge-gui/src/main/java/forge/card/CardEditionPredicates.java @@ -0,0 +1,80 @@ +package forge.card; + +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; + +import forge.Singletons; +import forge.game.GameFormat; +import forge.util.Aggregates; + +/** + * The Class Predicates. + */ +public abstract class CardEditionPredicates { + + /** The Constant canMakeBooster. */ + public static final Predicate CAN_MAKE_BOOSTER = new CanMakeBooster(); + + private static class CanMakeBooster implements Predicate { + @Override + public boolean apply(final CardEdition subject) { + return subject.hasBoosterTemplate(); + } + } + + + public final static CardEdition getRandomSetWithAllBasicLands(Iterable allEditions) { + return Aggregates.random(Iterables.filter(allEditions, CardEditionPredicates.hasBasicLands)); + } + + public static final Predicate HAS_TOURNAMENT_PACK = new CanMakeStarter(); + private static class CanMakeStarter implements Predicate { + @Override + public boolean apply(final CardEdition subject) { + return Singletons.getMagicDb().getTournamentPacks().contains(subject.getCode()); + } + } + + public static final Predicate HAS_FAT_PACK = new CanMakeFatPack(); + private static class CanMakeFatPack implements Predicate { + @Override + public boolean apply(final CardEdition subject) { + return Singletons.getMagicDb().getFatPacks().contains(subject.getCode()); + } + } + + /** + * 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 LegalInFormat implements Predicate { + private final GameFormat format; + + public LegalInFormat(final GameFormat fmt) { + this.format = fmt; + } + + @Override + public boolean apply(final CardEdition subject) { + return this.format.isSetLegal(subject.getCode()); + } + } + + public static final Predicate hasBasicLands = new Predicate() { + @Override + public boolean apply(CardEdition ed) { + for(String landName : MagicColor.Constant.BASIC_LANDS) { + if (null == Singletons.getMagicDb().getCommonCards().tryGetCard(landName, ed.getCode(), 0)) + return false; + } + return true; + }; + }; + +} \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/card/CardRulesReader.java b/forge-gui/src/main/java/forge/card/CardRulesReader.java index 57448987ea9..fa7cbe882ee 100644 --- a/forge-gui/src/main/java/forge/card/CardRulesReader.java +++ b/forge-gui/src/main/java/forge/card/CardRulesReader.java @@ -18,7 +18,6 @@ package forge.card; import java.util.StringTokenizer; - import org.apache.commons.lang3.StringUtils; import forge.card.mana.IParserManaCost; @@ -48,6 +47,8 @@ public class CardRulesReader { private boolean removedFromRandomDecks = false; private DeckHints hints = null; private DeckHints needs = null; + + // Reset all fields to parse next card (to avoid allocating new // CardRulesReader N times) @@ -69,43 +70,35 @@ public class CardRulesReader { this.needs = null; this.hints = null; } - + /** - * Create new CardRules from read properties + * Gets the card. * * @return the card */ - public final CardRules createCardRules() { - final CardRules rules = new CardRules(); - apply(rules); - return rules; - } - - /** - * Apply read properties to a CardRules object - * - */ - private final void apply(CardRules rules) { + public final CardRules getCard() { CardAiHints cah = new CardAiHints(removedFromAIDecks, removedFromRandomDecks, hints, needs ); faces[0].assignMissingFields(); - if (faces[1] != null) { - faces[1].assignMissingFields(); - } - rules.setup(faces, altMode, cah); - rules.setDlUrls(pictureUrl); - if (StringUtils.isNotBlank(handLife)) { - rules.setVanguardProperties(handLife); - } + if (null != faces[1]) faces[1].assignMissingFields(); + final CardRules result = new CardRules(faces, altMode, cah); + result.setDlUrls(pictureUrl); + if (StringUtils.isNotBlank(handLife)) + result.setVanguardProperties(handLife); + return result; } public final CardRules readCard(final Iterable script) { this.reset(); for (String line : script) { + if (line.isEmpty() || line.charAt(0) == '#') { + continue; + } this.parseLine(line); } - return this.createCardRules(); + return this.getCard(); } - + + /** * Parses the line. * @@ -113,10 +106,6 @@ public class CardRulesReader { * the line */ public final void parseLine(final String line) { - if (line.isEmpty() || line.charAt(0) == '#') { - return; - } - int colonPos = line.indexOf(':'); String key = colonPos > 0 ? line.substring(0, colonPos) : line; String value = colonPos > 0 ? line.substring(1+colonPos).trim() : null; @@ -184,6 +173,7 @@ public class CardRulesReader { case 'O': if ("Oracle".equals(key)) { this.faces[this.curFace].setOracleText(value); + } break; @@ -234,11 +224,11 @@ public class CardRulesReader { } break; } + } /** * Instantiates class, reads a card. Do not use for batch operations. - * * @param script * @return */ @@ -247,22 +237,7 @@ public class CardRulesReader { for(String line : script) { crr.parseLine(line); } - return crr.createCardRules(); - } - - /** - * Instantiates class, reads card rules from script, then updates an existing card. - * - * @param rules - * @param script - */ - public static void updateCardRules(CardRules rules, String script) { - CardRulesReader crr = new CardRulesReader(); - String[] lines = script.split("(\r\n)|\n"); - for (String line : lines) { - crr.parseLine(line); - } - crr.apply(rules); + return crr.getCard(); } /** diff --git a/forge-gui/src/main/java/forge/card/MetaSet.java b/forge-gui/src/main/java/forge/card/MetaSet.java index 81c35021237..77bc7f303ba 100644 --- a/forge-gui/src/main/java/forge/card/MetaSet.java +++ b/forge-gui/src/main/java/forge/card/MetaSet.java @@ -164,13 +164,13 @@ public class MetaSet { return new UnOpenedProduct(SealedProductTemplate.genericBooster); case Booster: - return new UnOpenedProduct(Singletons.getModel().getBoosters().get(data)); + return new UnOpenedProduct(Singletons.getMagicDb().getBoosters().get(data)); case SpecialBooster: - return new UnOpenedProduct(Singletons.getModel().getSpecialBoosters().get(data)); + return new UnOpenedProduct(Singletons.getMagicDb().getSpecialBoosters().get(data)); case Pack: - return new UnOpenedProduct(Singletons.getModel().getTournamentPacks().get(data)); + return new UnOpenedProduct(Singletons.getMagicDb().getTournamentPacks().get(data)); case JoinedSet: Predicate predicate = IPaperCard.Predicates.printedInSets(data.split(" ")); diff --git a/forge-gui/src/main/java/forge/card/UnOpenedProduct.java b/forge-gui/src/main/java/forge/card/UnOpenedProduct.java index 272b32644b3..f6849511980 100644 --- a/forge-gui/src/main/java/forge/card/UnOpenedProduct.java +++ b/forge-gui/src/main/java/forge/card/UnOpenedProduct.java @@ -10,9 +10,10 @@ import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; +import forge.Singletons; import forge.item.PaperCard; -import forge.item.ItemPoolView; -import forge.item.PrintSheet; +import forge.util.ItemPoolView; + public class UnOpenedProduct implements IUnOpenedProduct { @@ -47,7 +48,7 @@ public class UnOpenedProduct implements IUnOpenedProduct { } public UnOpenedProduct(SealedProductTemplate sealedProductTemplate, Predicate filterPrinted) { - this(sealedProductTemplate, Iterables.filter(CardDb.instance().getAllCards(), filterPrinted)); + this(sealedProductTemplate, Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), filterPrinted)); } private void prebuildSheets(Iterable sourceList) { diff --git a/forge-gui/src/main/java/forge/card/ability/ai/ChangeZoneAi.java b/forge-gui/src/main/java/forge/card/ability/ai/ChangeZoneAi.java index 8f8499e4280..0a3e5300f77 100644 --- a/forge-gui/src/main/java/forge/card/ability/ai/ChangeZoneAi.java +++ b/forge-gui/src/main/java/forge/card/ability/ai/ChangeZoneAi.java @@ -15,10 +15,10 @@ import forge.Card; import forge.CardLists; import forge.CardPredicates; import forge.CardPredicates.Presets; -import forge.Constant; import forge.GameEntity; import forge.GameObject; import forge.card.CardCharacteristicName; +import forge.card.MagicColor; import forge.card.ability.AbilityUtils; import forge.card.ability.ApiType; import forge.card.ability.SpellAbilityAi; @@ -456,7 +456,7 @@ public class ChangeZoneAi extends SpellAbilityAi { final ArrayList basics = new ArrayList(); // what types can I go get? - for (final String name : Constant.Color.BASIC_LANDS) { + for (final String name : MagicColor.Constant.BASIC_LANDS) { if (!CardLists.getType(list, name).isEmpty()) { basics.add(name); } @@ -500,7 +500,7 @@ public class ChangeZoneAi extends SpellAbilityAi { */ private static boolean areAllBasics(final String types) { for (String ct : types.split(",")) { - if (!Constant.Color.BASIC_LANDS.contains(ct)) { + if (!MagicColor.Constant.BASIC_LANDS.contains(ct)) { return false; } } diff --git a/forge-gui/src/main/java/forge/card/ability/ai/ProtectAi.java b/forge-gui/src/main/java/forge/card/ability/ai/ProtectAi.java index 15644c0928c..51f4595e40c 100644 --- a/forge-gui/src/main/java/forge/card/ability/ai/ProtectAi.java +++ b/forge-gui/src/main/java/forge/card/ability/ai/ProtectAi.java @@ -7,7 +7,7 @@ import com.google.common.base.Predicate; import forge.Card; import forge.CardLists; -import forge.Constant; +import forge.card.MagicColor; import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityAi; import forge.card.ability.effects.ProtectEffect; @@ -26,7 +26,7 @@ import forge.game.zone.ZoneType; public class ProtectAi extends SpellAbilityAi { private static boolean hasProtectionFrom(final Card card, final String color) { - final ArrayList onlyColors = new ArrayList(Constant.Color.ONLY_COLORS); + final ArrayList onlyColors = new ArrayList(MagicColor.Constant.ONLY_COLORS); // make sure we have a valid color if (!onlyColors.contains(color)) { diff --git a/forge-gui/src/main/java/forge/card/ability/effects/ChooseCardNameEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/ChooseCardNameEffect.java index 0fd7cc06ea7..4928b452160 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/ChooseCardNameEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/ChooseCardNameEffect.java @@ -13,7 +13,7 @@ import com.google.common.collect.Lists; import forge.Card; import forge.CardLists; import forge.CardPredicates.Presets; -import forge.card.CardDb; +import forge.Singletons; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.ability.AbilityUtils; @@ -70,7 +70,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect { Predicate additionalRule = CardRulesPredicates.cmc(ComparableOp.EQUALS, validAmount); - List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); Predicate cpp = Predicates.and(Predicates.compose(baseRule, PaperCard.FN_GET_RULES), Predicates.compose(additionalRule, PaperCard.FN_GET_RULES)); cards = Lists.newArrayList(Iterables.filter(cards, cpp)); @@ -83,7 +83,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect { } else if (p.isHuman()) { final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card."; - List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); if ( StringUtils.containsIgnoreCase(valid, "nonland") ) { Predicate cpp = Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES); diff --git a/forge-gui/src/main/java/forge/card/ability/effects/ChooseColorEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/ChooseColorEffect.java index a28445894da..3be0fc57fce 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/ChooseColorEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/ChooseColorEffect.java @@ -7,7 +7,7 @@ import java.util.List; import forge.Card; import forge.CardLists; import forge.CardPredicates; -import forge.Constant; +import forge.card.MagicColor; import forge.card.ability.SpellAbilityEffect; import forge.card.spellability.SpellAbility; import forge.card.spellability.TargetRestrictions; @@ -39,7 +39,7 @@ public class ChooseColorEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final Card card = sa.getSourceCard(); - List colorChoices = new ArrayList(Constant.Color.ONLY_COLORS); + List colorChoices = new ArrayList(MagicColor.Constant.ONLY_COLORS); if (sa.hasParam("Choices")) { String[] restrictedChoices = sa.getParam("Choices").split(","); colorChoices = Arrays.asList(restrictedChoices); @@ -112,9 +112,9 @@ public class ChooseColorEffect extends SpellAbilityEffect { else if (logic.equals("MostProminentKeywordInComputerDeck")) { List list = ai.getAllCards(); int max = 0; - String chosenColor = Constant.Color.WHITE; + String chosenColor = MagicColor.Constant.WHITE; - for (final String c : Constant.Color.ONLY_COLORS) { + for (final String c : MagicColor.Constant.ONLY_COLORS) { final int cmp = CardLists.filter(list, CardPredicates.containsKeyword(c)).size(); if (cmp > max) { max = cmp; @@ -125,7 +125,7 @@ public class ChooseColorEffect extends SpellAbilityEffect { } } if (chosen.size() == 0) { - chosen.add(Constant.Color.GREEN); + chosen.add(MagicColor.Constant.GREEN); } GuiChoose.one("Computer picked: ", chosen); final ArrayList colorTemp = new ArrayList(); diff --git a/forge-gui/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java index cfec03eb3b5..4a4f7950457 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java @@ -6,7 +6,6 @@ import java.util.Arrays; import java.util.List; import forge.Card; -import forge.Constant; import forge.card.CardType; import forge.card.ability.SpellAbilityEffect; import forge.card.spellability.SpellAbility; @@ -39,7 +38,7 @@ public class ChooseTypeEffect extends SpellAbilityEffect { } if (type.equals("Card")) { - if (validTypes.isEmpty()) validTypes.addAll(Constant.CardTypes.CARD_TYPES); + if (validTypes.isEmpty()) validTypes.addAll(CardType.Constant.CARD_TYPES); } else if (type.equals("Creature")) { if (validTypes.isEmpty()) validTypes.addAll(CardType.getCreatureTypes()); } else if (type.equals("Basic Land")) { diff --git a/forge-gui/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java index 72873c52c9f..4fde6704501 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java @@ -15,8 +15,8 @@ import forge.Card; import forge.CardLists; import forge.Command; import forge.GameEntity; +import forge.Singletons; import forge.card.CardCharacteristicName; -import forge.card.CardDb; import forge.card.CardRulesPredicates; import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityEffect; @@ -71,7 +71,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { final TargetRestrictions tgt = sa.getTargetRestrictions(); if (sa.hasParam("ValidSupportedCopy")) { - List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); String valid = sa.getParam("ValidSupportedCopy"); if (valid.contains("X")) { valid = valid.replace("X", Integer.toString(AbilityUtils.calculateAmount(hostCard, "X", sa))); @@ -154,7 +154,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { if (!c.isToken() || c.isCopiedToken()) { // copy creature and put it onto the battlefield - copy = CardFactory.getCard(CardDb.getCard(c), sa.getActivatingPlayer()); + copy = CardFactory.getCard(c.getPaperCard(), sa.getActivatingPlayer()); copy.setToken(true); copy.setCopiedToken(true); diff --git a/forge-gui/src/main/java/forge/card/ability/effects/ManaEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/ManaEffect.java index 534a17f0173..d293e8bdc3c 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/ManaEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/ManaEffect.java @@ -6,7 +6,6 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; import forge.Card; -import forge.Constant; import forge.CounterType; import forge.card.MagicColor; import forge.card.ability.AbilityUtils; @@ -60,7 +59,7 @@ public class ManaEffect extends SpellAbilityEffect { } } else { - colorMenu = Constant.Color.ONLY_COLORS; + colorMenu = MagicColor.Constant.ONLY_COLORS; } for (int nMana = 1; nMana <= amount; nMana++) { String choice = ""; @@ -83,12 +82,12 @@ public class ManaEffect extends SpellAbilityEffect { else { // TODO: Add some logic for AI choice (ArsenalNut 2012/09/16) if (!sa.hasParam("AILogic") || sa.getParam("AILogic").equals("MostProminentInComputerHand")) { - String chosen = Constant.Color.BLACK; + String chosen = MagicColor.Constant.BLACK; List hand = new ArrayList(activator.getCardsIn(ZoneType.Hand)); hand.addAll(activator.getCardsIn(ZoneType.Stack)); chosen = ComputerUtilCard.getMostProminentColor(hand); if (chosen.equals("")) { - chosen = Constant.Color.BLACK; + chosen = MagicColor.Constant.BLACK; } GuiChoose.one("Computer picked: ", new String[]{chosen}); String manaString = ""; @@ -124,7 +123,7 @@ public class ManaEffect extends SpellAbilityEffect { } } else { - colorMenu = Constant.Color.ONLY_COLORS; + colorMenu = MagicColor.Constant.ONLY_COLORS; } String s = GuiChoose.one("Select Mana to Produce", colorMenu); if (s == null) { @@ -141,12 +140,12 @@ public class ManaEffect extends SpellAbilityEffect { else { if (abMana.getExpressChoice().isEmpty()) { final String logic = sa.hasParam("AILogic") ? sa.getParam("AILogic") : null; - String chosen = Constant.Color.BLACK; + String chosen = MagicColor.Constant.BLACK; if (logic == null || logic.equals("MostProminentInComputerHand")) { chosen = ComputerUtilCard.getMostProminentColor(act.getCardsIn(ZoneType.Hand)); } if (chosen.equals("")) { - chosen = Constant.Color.GREEN; + chosen = MagicColor.Constant.GREEN; } GuiChoose.one("Computer picked: ", new String[]{chosen}); abMana.setExpressChoice(MagicColor.toShortString(chosen)); diff --git a/forge-gui/src/main/java/forge/card/ability/effects/PlayEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/PlayEffect.java index 772fe816a62..0521b44c40e 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/PlayEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/PlayEffect.java @@ -11,8 +11,8 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.Card; +import forge.Singletons; import forge.card.CardCharacteristicName; -import forge.card.CardDb; import forge.card.CardRulesPredicates; import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityEffect; @@ -85,7 +85,7 @@ public class PlayEffect extends SpellAbilityEffect { useEncoded = true; } else if (sa.hasParam("AnySupportedCard")) { - List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); String valid = sa.getParam("AnySupportedCard"); if (StringUtils.containsIgnoreCase(valid, "sorcery")) { Predicate cpp = Predicates.compose(CardRulesPredicates.Presets.IS_SORCERY, PaperCard.FN_GET_RULES); @@ -160,7 +160,7 @@ public class PlayEffect extends SpellAbilityEffect { } Card original = tgtCard; if (sa.hasParam("CopyCard")) { - tgtCard = Card.fromPaperCard(CardDb.getCard(tgtCard), sa.getActivatingPlayer()); + tgtCard = Card.fromPaperCard(tgtCard.getPaperCard(), sa.getActivatingPlayer()); tgtCard.setToken(true); tgtCard.setCopiedSpell(true); diff --git a/forge-gui/src/main/java/forge/card/ability/effects/ProtectEffect.java b/forge-gui/src/main/java/forge/card/ability/effects/ProtectEffect.java index 90ab94d207a..52c31a8a73f 100644 --- a/forge-gui/src/main/java/forge/card/ability/effects/ProtectEffect.java +++ b/forge-gui/src/main/java/forge/card/ability/effects/ProtectEffect.java @@ -9,7 +9,7 @@ import forge.Card; import forge.CardLists; import forge.CardUtil; import forge.Command; -import forge.Constant; +import forge.card.MagicColor; import forge.card.ability.SpellAbilityEffect; import forge.card.spellability.SpellAbility; import forge.card.spellability.TargetRestrictions; @@ -229,7 +229,7 @@ public class ProtectEffect extends SpellAbilityEffect { // Replace AnyColor with the 5 colors if (choices.contains("AnyColor")) { - gains.addAll(Constant.Color.ONLY_COLORS); + gains.addAll(MagicColor.Constant.ONLY_COLORS); choices = choices.replaceAll("AnyColor,?", ""); } // Add any remaining choices diff --git a/forge-gui/src/main/java/forge/card/cardfactory/CardFactory.java b/forge-gui/src/main/java/forge/card/cardfactory/CardFactory.java index 6cc225867b3..0c49c3f22b6 100644 --- a/forge-gui/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/forge-gui/src/main/java/forge/card/cardfactory/CardFactory.java @@ -28,7 +28,6 @@ import forge.CardUtil; import forge.ImageCache; import forge.card.CardCharacteristicName; import forge.card.CardCharacteristics; -import forge.card.CardDb; import forge.card.CardRules; import forge.card.CardSplitType; import forge.card.ICardFace; @@ -89,7 +88,8 @@ public class CardFactory { } Card out = null; if (!in.isToken() || in.isCopiedToken()) { - out = assignNewId ? getCard(CardDb.getCard(in), in.getOwner()) : getCard(CardDb.getCard(in), in.getOwner(), in.getUniqueNumber()); + out = assignNewId ? getCard(in.getPaperCard(), in.getOwner()) + : getCard(in.getPaperCard(), in.getOwner(), in.getUniqueNumber()); } else { // token out = assignNewId ? new Card(in.getGame().nextCardId()) : new Card(in.getUniqueNumber()); out = CardFactory.copyStats(in, in.getController()); diff --git a/forge-gui/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/forge-gui/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 87747ffa3ea..8ecadbd6cab 100644 --- a/forge-gui/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/forge-gui/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -31,7 +31,6 @@ import forge.CardPredicates; import forge.CardPredicates.Presets; import forge.CardUtil; import forge.Command; -import forge.Constant; import forge.CounterType; import forge.GameEntity; import forge.GameLogEntryType; @@ -877,7 +876,7 @@ public class CardFactoryUtil { int n = 0; final List someCards = new ArrayList(); someCards.addAll(player.getCardsIn(ZoneType.Battlefield)); - final List basic = Constant.Color.BASIC_LANDS; + final List basic = MagicColor.Constant.BASIC_LANDS; for (int i = 0; i < basic.size(); i++) { if (!CardLists.getType(someCards, basic.get(i)).isEmpty()) { @@ -1423,7 +1422,7 @@ public class CardFactoryUtil { int n = 0; Player neededPlayer = sq[0].equals("DomainActivePlayer") ? activePlayer : cc; List someCards = CardLists.filter(neededPlayer.getCardsIn(ZoneType.Battlefield), Presets.LANDS); - for (String basic : Constant.Color.BASIC_LANDS) { + for (String basic : MagicColor.Constant.BASIC_LANDS) { if (!CardLists.getType(someCards, basic).isEmpty()) { n++; } @@ -1636,7 +1635,7 @@ public class CardFactoryUtil { } // String sq0 = sq[0].toLowerCase(); -// for(String color : Constant.Color.ONLY_COLORS) { +// for(String color : MagicColor.Constant.ONLY_COLORS) { // if( sq0.contains(color) ) // someCards = someCards.filter(CardListFilter.WHITE); // } diff --git a/forge-gui/src/main/java/forge/card/cardfactory/CardStorageReader.java b/forge-gui/src/main/java/forge/card/cardfactory/CardStorageReader.java index 3e1d98f1a4e..d7b09a3a97d 100644 --- a/forge-gui/src/main/java/forge/card/cardfactory/CardStorageReader.java +++ b/forge-gui/src/main/java/forge/card/cardfactory/CardStorageReader.java @@ -43,6 +43,7 @@ import javax.swing.SwingUtilities; import org.apache.commons.lang.time.StopWatch; import forge.FThreads; +import forge.ICardStorageReader; import forge.card.CardRules; import forge.card.CardRulesReader; import forge.error.BugReporter; @@ -58,7 +59,8 @@ import forge.util.FileUtil; * @author Forge * @version $Id$ */ -public class CardStorageReader { + +public class CardStorageReader implements ICardStorageReader { private static final String CARD_FILE_DOT_EXTENSION = ".txt"; @@ -334,7 +336,7 @@ public class CardStorageReader { try { fileInputStream = new FileInputStream(file); CardRules rules = this.loadCard(reader, fileInputStream); - rules.setSourceFile(file); + //rules.setSourceFile(file); return rules; } catch (final FileNotFoundException ex) { BugReporter.reportException(ex, "File \"%s\" exception", file.getAbsolutePath()); diff --git a/forge-gui/src/main/java/forge/card/spellability/AbilityManaPart.java b/forge-gui/src/main/java/forge/card/spellability/AbilityManaPart.java index 0638515e6db..0167d581c00 100644 --- a/forge-gui/src/main/java/forge/card/spellability/AbilityManaPart.java +++ b/forge-gui/src/main/java/forge/card/spellability/AbilityManaPart.java @@ -27,7 +27,6 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import forge.Card; -import forge.Constant; import forge.card.ColorSet; import forge.card.MagicColor; import forge.card.mana.Mana; @@ -621,9 +620,9 @@ public class AbilityManaPart implements java.io.Serializable { m.appendTail(sb); String replaced = sb.toString(); while (replaced.contains("Any")) { - String rs = Constant.Color.GREEN; + String rs = MagicColor.Constant.GREEN; if (act != null) { - rs = act.getController().chooseSingleColor(Constant.Color.ONLY_COLORS); + rs = act.getController().chooseSingleColor(MagicColor.Constant.ONLY_COLORS); } replaced = replaced.replaceFirst("Any", MagicColor.toShortString(rs)); } diff --git a/forge-gui/src/main/java/forge/card/staticability/StaticAbility.java b/forge-gui/src/main/java/forge/card/staticability/StaticAbility.java index 1009c56d14b..cde49f790e8 100644 --- a/forge-gui/src/main/java/forge/card/staticability/StaticAbility.java +++ b/forge-gui/src/main/java/forge/card/staticability/StaticAbility.java @@ -22,8 +22,8 @@ import java.util.List; import java.util.Map; import forge.Card; -import forge.Constant; import forge.GameEntity; +import forge.card.MagicColor; import forge.card.ability.AbilityUtils; import forge.card.cost.Cost; import forge.card.mana.ManaCostBeingPaid; @@ -499,11 +499,11 @@ public class StaticAbility { return false; } } else if (condition.equals("PermanentOfEachColor")) { - if ((controller.getColoredCardsInPlay(Constant.Color.BLACK).isEmpty() - || controller.getColoredCardsInPlay(Constant.Color.BLUE).isEmpty() - || controller.getColoredCardsInPlay(Constant.Color.GREEN).isEmpty() - || controller.getColoredCardsInPlay(Constant.Color.RED).isEmpty() - || controller.getColoredCardsInPlay(Constant.Color.WHITE).isEmpty())) { + if ((controller.getColoredCardsInPlay(MagicColor.Constant.BLACK).isEmpty() + || controller.getColoredCardsInPlay(MagicColor.Constant.BLUE).isEmpty() + || controller.getColoredCardsInPlay(MagicColor.Constant.GREEN).isEmpty() + || controller.getColoredCardsInPlay(MagicColor.Constant.RED).isEmpty() + || controller.getColoredCardsInPlay(MagicColor.Constant.WHITE).isEmpty())) { return false; } } else if (condition.equals("FatefulHour")) { diff --git a/forge-gui/src/main/java/forge/deck/Deck.java b/forge-gui/src/main/java/forge/deck/Deck.java index e62041b8ad2..b25847a5588 100644 --- a/forge-gui/src/main/java/forge/deck/Deck.java +++ b/forge-gui/src/main/java/forge/deck/Deck.java @@ -35,12 +35,12 @@ import com.google.common.base.Function; import forge.card.CardDb; import forge.deck.io.DeckFileHeader; import forge.deck.io.DeckSerializer; -import forge.item.ItemPoolSorter; import forge.item.PaperCard; import forge.item.IPaperCard; -import forge.item.ItemPoolView; import forge.util.FileSection; import forge.util.FileUtil; +import forge.util.ItemPoolSorter; +import forge.util.ItemPoolView; /** diff --git a/forge-gui/src/main/java/forge/deck/DeckFormat.java b/forge-gui/src/main/java/forge/deck/DeckFormat.java index ac9c8cf92c0..64515e70af6 100644 --- a/forge-gui/src/main/java/forge/deck/DeckFormat.java +++ b/forge-gui/src/main/java/forge/deck/DeckFormat.java @@ -26,7 +26,6 @@ import org.apache.commons.lang.math.IntRange; import forge.Singletons; import forge.card.CardCoreType; -import forge.card.CardDb; import forge.card.ColorSet; import forge.item.PaperCard; import forge.item.IPaperCard; @@ -233,7 +232,7 @@ public enum DeckFormat { // should group all cards by name, so that different editions of same card are really counted as the same card for (Entry cp : Aggregates.groupSumBy(tmp, PaperCard.FN_GET_NAME)) { - IPaperCard simpleCard = CardDb.instance().getCard(cp.getKey()); + IPaperCard simpleCard = Singletons.getMagicDb().getCommonCards().getCard(cp.getKey()); boolean canHaveMultiple = simpleCard.getRules().getType().isBasicLand() || limitExceptions.contains(cp.getKey()); if (!canHaveMultiple && cp.getValue() > maxCopies) { diff --git a/forge-gui/src/main/java/forge/deck/DeckRecognizer.java b/forge-gui/src/main/java/forge/deck/DeckRecognizer.java index 4e3434e19e9..541ed95169c 100644 --- a/forge-gui/src/main/java/forge/deck/DeckRecognizer.java +++ b/forge-gui/src/main/java/forge/deck/DeckRecognizer.java @@ -24,7 +24,7 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; -import forge.card.CardDb; +import forge.Singletons; import forge.card.ICardDatabase; import forge.item.PaperCard; @@ -169,7 +169,7 @@ public class DeckRecognizer { public DeckRecognizer(boolean fromLatestSet) { useLastSet = fromLatestSet; - db = CardDb.instance(); + db = Singletons.getMagicDb().getCommonCards(); } public Token recognizeLine(final String rawLine) { diff --git a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java index 4a4a7a1e610..9cc76f11791 100644 --- a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java +++ b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java @@ -15,7 +15,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.Singletons; -import forge.card.CardDb; import forge.deck.generate.Generate2ColorDeck; import forge.deck.generate.Generate3ColorDeck; import forge.deck.generate.Generate5ColorDeck; @@ -23,13 +22,13 @@ import forge.deck.generate.GenerateColoredDeckBase; import forge.deck.generate.GenerateMonoColorDeck; import forge.deck.generate.GenerateThemeDeck; import forge.item.PaperCard; -import forge.item.ItemPoolView; import forge.item.PreconDeck; import forge.quest.QuestController; import forge.quest.QuestEvent; import forge.quest.QuestEventChallenge; import forge.quest.QuestEventDuel; import forge.util.Aggregates; +import forge.util.ItemPoolView; import forge.util.Lang; import forge.util.MyRandom; import forge.util.storage.IStorage; @@ -305,7 +304,7 @@ public class DeckgenUtil { public static CardPool generateSchemeDeck() { CardPool schemes = new CardPool(); List allSchemes = new ArrayList(); - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { if (c.getRules().getType().isScheme()) { allSchemes.add(c); } @@ -330,7 +329,7 @@ public class DeckgenUtil { public static CardPool generatePlanarDeck() { CardPool res = new CardPool(); List allPlanars = new ArrayList(); - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { if (c.getRules().getType().isPlane() || c.getRules().getType().isPhenomenon()) { allPlanars.add(c); } diff --git a/forge-gui/src/main/java/forge/deck/generate/Generate2ColorDeck.java b/forge-gui/src/main/java/forge/deck/generate/Generate2ColorDeck.java index a6c4568bed6..4986a881a00 100644 --- a/forge-gui/src/main/java/forge/deck/generate/Generate2ColorDeck.java +++ b/forge-gui/src/main/java/forge/deck/generate/Generate2ColorDeck.java @@ -27,7 +27,7 @@ import forge.card.ColorSet; import forge.card.MagicColor; import forge.deck.generate.GenerateDeckUtil.FilterCMC; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** *

diff --git a/forge-gui/src/main/java/forge/deck/generate/Generate3ColorDeck.java b/forge-gui/src/main/java/forge/deck/generate/Generate3ColorDeck.java index 7167d173dec..53f9f663efd 100644 --- a/forge-gui/src/main/java/forge/deck/generate/Generate3ColorDeck.java +++ b/forge-gui/src/main/java/forge/deck/generate/Generate3ColorDeck.java @@ -27,7 +27,7 @@ import forge.card.ColorSet; import forge.card.MagicColor; import forge.deck.generate.GenerateDeckUtil.FilterCMC; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; import forge.util.MyRandom; /** diff --git a/forge-gui/src/main/java/forge/deck/generate/Generate5ColorDeck.java b/forge-gui/src/main/java/forge/deck/generate/Generate5ColorDeck.java index 443717f39ad..e11180761a1 100644 --- a/forge-gui/src/main/java/forge/deck/generate/Generate5ColorDeck.java +++ b/forge-gui/src/main/java/forge/deck/generate/Generate5ColorDeck.java @@ -26,7 +26,7 @@ import com.google.common.collect.Lists; import forge.card.ColorSet; import forge.deck.generate.GenerateDeckUtil.FilterCMC; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** *

diff --git a/forge-gui/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java b/forge-gui/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java index 393adf72a3c..66b57f4387e 100644 --- a/forge-gui/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java +++ b/forge-gui/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java @@ -31,19 +31,17 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.Constant; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.ColorSet; import forge.card.MagicColor; import forge.deck.generate.GenerateDeckUtil.FilterCMC; import forge.item.PaperCard; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.properties.ForgePreferences.FPref; import forge.util.Aggregates; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.MyRandom; /** @@ -132,8 +130,8 @@ public abstract class GenerateColoredDeckBase { } while ((this.cardCounts.get(s) > 3) && (lc <= 20)); // not an error if looped too much - could play singleton mode, with 6 slots for 3 non-basic lands. - PaperCard cp = CardDb.instance().getCard(s); - tDeck.add(CardDb.instance().getCard(cp.getName(), false)); + PaperCard cp = Singletons.getMagicDb().getCommonCards().getCard(s); + tDeck.add(Singletons.getMagicDb().getCommonCards().getCard(cp.getName(), false)); final int n = this.cardCounts.get(s); this.cardCounts.put(s, n + 1); @@ -169,10 +167,10 @@ public abstract class GenerateColoredDeckBase { // just to prevent a null exception by the deck size fixing code this.cardCounts.put(color, nLand); - PaperCard cp = CardDb.instance().getCard(color); + PaperCard cp = Singletons.getMagicDb().getCommonCards().getCard(color); String basicLandSet = cp.getEdition(); - tDeck.add(CardDb.instance().getCard(cp.getName(), basicLandSet), nLand); + tDeck.add(Singletons.getMagicDb().getCommonCards().getCard(cp.getName(), basicLandSet), nLand); landsLeft -= nLand; } } @@ -222,7 +220,7 @@ public abstract class GenerateColoredDeckBase { final List curvedRandomized = Lists.newArrayList(); for (PaperCard c : curved) { this.cardCounts.put(c.getName(), 0); - curvedRandomized.add(CardDb.instance().getCard(c.getName(), false)); + curvedRandomized.add(Singletons.getMagicDb().getCommonCards().getCard(c.getName(), false)); } addSome(addOfThisCmc, curvedRandomized); @@ -239,7 +237,7 @@ public abstract class GenerateColoredDeckBase { if (!Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS)) { hasColor = Predicates.or(hasColor, GenerateDeckUtil.COLORLESS_CARDS); } - return Iterables.filter(CardDb.instance().getAllCards(), Predicates.compose(Predicates.and(canPlay, hasColor), PaperCard.FN_GET_RULES)); + return Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), Predicates.compose(Predicates.and(canPlay, hasColor), PaperCard.FN_GET_RULES)); } protected static Map countLands(ItemPool outList) { @@ -254,15 +252,15 @@ public abstract class GenerateColoredDeckBase { int profile = cpe.getKey().getRules().getManaCost().getColorProfile(); if ((profile & MagicColor.WHITE) != 0) { - increment(res, Constant.Color.BASIC_LANDS.get(0), cpe.getValue()); + increment(res, MagicColor.Constant.BASIC_LANDS.get(0), cpe.getValue()); } else if ((profile & MagicColor.BLUE) != 0) { - increment(res, Constant.Color.BASIC_LANDS.get(1), cpe.getValue()); + increment(res, MagicColor.Constant.BASIC_LANDS.get(1), cpe.getValue()); } else if ((profile & MagicColor.BLACK) != 0) { - increment(res, Constant.Color.BASIC_LANDS.get(2), cpe.getValue()); + increment(res, MagicColor.Constant.BASIC_LANDS.get(2), cpe.getValue()); } else if ((profile & MagicColor.RED) != 0) { - increment(res, Constant.Color.BASIC_LANDS.get(3), cpe.getValue()); + increment(res, MagicColor.Constant.BASIC_LANDS.get(3), cpe.getValue()); } else if ((profile & MagicColor.GREEN) != 0) { - increment(res, Constant.Color.BASIC_LANDS.get(4), cpe.getValue()); + increment(res, MagicColor.Constant.BASIC_LANDS.get(4), cpe.getValue()); } } diff --git a/forge-gui/src/main/java/forge/deck/generate/GenerateMonoColorDeck.java b/forge-gui/src/main/java/forge/deck/generate/GenerateMonoColorDeck.java index b5c9ffe32aa..b84128e097b 100644 --- a/forge-gui/src/main/java/forge/deck/generate/GenerateMonoColorDeck.java +++ b/forge-gui/src/main/java/forge/deck/generate/GenerateMonoColorDeck.java @@ -27,7 +27,7 @@ import forge.card.ColorSet; import forge.card.MagicColor; import forge.deck.generate.GenerateDeckUtil.FilterCMC; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** *

diff --git a/forge-gui/src/main/java/forge/deck/generate/GenerateThemeDeck.java b/forge-gui/src/main/java/forge/deck/generate/GenerateThemeDeck.java index 1c9f2297399..150b1331b73 100644 --- a/forge-gui/src/main/java/forge/deck/generate/GenerateThemeDeck.java +++ b/forge-gui/src/main/java/forge/deck/generate/GenerateThemeDeck.java @@ -22,11 +22,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import forge.card.CardDb; +import forge.Singletons; import forge.error.BugReporter; import forge.item.PaperCard; -import forge.item.ItemPoolView; import forge.util.FileUtil; +import forge.util.ItemPoolView; import forge.util.MyRandom; /** @@ -130,7 +130,7 @@ public class GenerateThemeDeck extends GenerateColoredDeckBase { } final int n = cardCounts.get(s); - tDeck.add(CardDb.instance().getCard(s)); + tDeck.add(Singletons.getMagicDb().getCommonCards().getCard(s)); cardCounts.put(s, n + 1); tmpDeck += s + "\n"; diff --git a/forge-gui/src/main/java/forge/game/GameAction.java b/forge-gui/src/main/java/forge/game/GameAction.java index fe067a6c1bc..bcc98729fd7 100644 --- a/forge-gui/src/main/java/forge/game/GameAction.java +++ b/forge-gui/src/main/java/forge/game/GameAction.java @@ -44,7 +44,6 @@ import forge.GameEntity; import forge.GameLogEntryType; import forge.GameObject; import forge.card.CardCharacteristicName; -import forge.card.CardDb; import forge.card.CardType; import forge.card.TriggerReplacementBase; import forge.card.ability.AbilityFactory; @@ -75,7 +74,7 @@ import forge.game.zone.PlayerZoneBattlefield; import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.util.Aggregates; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.HashMapOfLists; import forge.util.maps.MapOfLists; @@ -906,7 +905,7 @@ public class GameAction { c.unEnchantEntity(perm); if (c.isBestowed()) { // TODO : support for tokens - ArrayList type = CardFactory.getCard(CardDb.getCard(c), c.getController()).getType(); + ArrayList type = CardFactory.getCard(c.getPaperCard(), c.getController()).getType(); final long timestamp = game.getNextTimestamp(); c.addChangedCardTypes(type, Lists.newArrayList("Aura"), false, false, false, false, timestamp); c.addChangedCardKeywords(new ArrayList(), Lists.newArrayList("Enchant creature"), false, timestamp); @@ -938,7 +937,7 @@ public class GameAction { if (c.isInPlay() && !c.isEnchanting()) { if (c.isBestowed()) { // TODO : support for tokens - ArrayList type = CardFactory.getCard(CardDb.getCard(c), c.getController()).getType(); + ArrayList type = CardFactory.getCard(c.getPaperCard(), c.getController()).getType(); final long timestamp = game.getNextTimestamp(); c.addChangedCardTypes(type, Lists.newArrayList("Aura"), false, false, false, false, timestamp); c.addChangedCardKeywords(new ArrayList(), Lists.newArrayList("Enchant creature"), false, timestamp); diff --git a/forge-gui/src/main/java/forge/game/GameActionUtil.java b/forge-gui/src/main/java/forge/game/GameActionUtil.java index df50c8e35c1..a71b9a8a843 100644 --- a/forge-gui/src/main/java/forge/game/GameActionUtil.java +++ b/forge-gui/src/main/java/forge/game/GameActionUtil.java @@ -33,7 +33,6 @@ import forge.CardLists; import forge.CardPredicates; import forge.CardPredicates.Presets; import forge.Command; -import forge.Constant; import forge.card.MagicColor; import forge.card.ability.AbilityFactory; import forge.card.ability.AbilityFactory.AbilityRecordType; @@ -217,7 +216,7 @@ public final class GameActionUtil { // add all appropriate mana abilities based on current types for (int i = 0; i < MagicColor.WUBRG.length; i++ ) { - String landType = Constant.Color.BASIC_LANDS.get(i); + String landType = MagicColor.Constant.BASIC_LANDS.get(i); String color = MagicColor.toShortString(MagicColor.WUBRG[i]); String abString = "AB$ Mana | Cost$ T | Produced$ " + color + " | SpellDescription$ Add {" + color + "} to your mana pool."; for (final Card land : lands) { diff --git a/forge-gui/src/main/java/forge/game/GameNew.java b/forge-gui/src/main/java/forge/game/GameNew.java index fcec237f09f..afb0d674335 100644 --- a/forge-gui/src/main/java/forge/game/GameNew.java +++ b/forge-gui/src/main/java/forge/game/GameNew.java @@ -19,7 +19,7 @@ import forge.Card; import forge.CardLists; import forge.CardPredicates; import forge.GameLogEntryType; -import forge.card.CardDb; +import forge.Singletons; import forge.card.replacement.ReplacementEffect; import forge.card.replacement.ReplacementHandler; import forge.card.trigger.Trigger; @@ -38,9 +38,9 @@ import forge.net.FServer; import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; import forge.util.Aggregates; +import forge.util.CollectionSuppliers; import forge.util.MyRandom; import forge.util.TextUtil; -import forge.util.maps.CollectionSuppliers; import forge.util.maps.HashMapOfLists; import forge.util.maps.MapOfLists; @@ -155,9 +155,9 @@ public class GameNew { PaperCard cpi = cp; // apply random pictures for cards if (preferences.getPrefBoolean(FPref.UI_RANDOM_CARD_ART)) { - cpi = CardDb.instance().getCard(cp.getName(), cp.getEdition(), -1); + cpi = Singletons.getMagicDb().getCommonCards().getCard(cp.getName(), cp.getEdition(), -1); if ( cp.isFoil() ) - cpi = CardDb.instance().getFoiled(cpi); + cpi = Singletons.getMagicDb().getCommonCards().getFoiled(cpi); } final Card card = Card.fromPaperCard(cpi, player); diff --git a/forge-gui/src/main/java/forge/game/ai/AiController.java b/forge-gui/src/main/java/forge/game/ai/AiController.java index a82287b3416..1f49aa76257 100644 --- a/forge-gui/src/main/java/forge/game/ai/AiController.java +++ b/forge-gui/src/main/java/forge/game/ai/AiController.java @@ -32,8 +32,8 @@ import forge.Card; import forge.CardLists; import forge.CardPredicates; import forge.CardPredicates.Presets; -import forge.Constant; import forge.GameEntity; +import forge.card.CardType; import forge.card.MagicColor; import forge.card.ability.ApiType; import forge.card.cardfactory.CardFactoryUtil; @@ -344,7 +344,7 @@ public class AiController { byte color = MagicColor.WUBRG[i]; if (!CardLists.filter(oneDrops, CardPredicates.isColor(color)).isEmpty()) { for (Card land : landList) { - if (land.isType(Constant.Color.BASIC_LANDS.get(i))) + if (land.isType(MagicColor.Constant.BASIC_LANDS.get(i))) return land; for (final SpellAbility m : ComputerUtilMana.getAIPlayableMana(land)) { @@ -365,7 +365,7 @@ public class AiController { final ArrayList basics = new ArrayList(); // what types can I go get? - for (final String name : Constant.CardTypes.BASIC_TYPES) { + for (final String name : CardType.Constant.BASIC_TYPES) { if (Iterables.any(landList, CardPredicates.isType(name))) { basics.add(name); } diff --git a/forge-gui/src/main/java/forge/game/ai/ComputerUtil.java b/forge-gui/src/main/java/forge/game/ai/ComputerUtil.java index f12a612b00b..3fa4f6d5238 100644 --- a/forge-gui/src/main/java/forge/game/ai/ComputerUtil.java +++ b/forge-gui/src/main/java/forge/game/ai/ComputerUtil.java @@ -32,7 +32,6 @@ import com.google.common.collect.Iterables; import forge.Card; import forge.CardLists; import forge.CardPredicates; -import forge.Constant; import forge.CounterType; import forge.CardPredicates.Presets; import forge.CardUtil; @@ -1654,7 +1653,7 @@ public class ComputerUtil { if (logic.equals("MostNeededType")) { // Choose a type that is in the deck, but not in hand or on the battlefield final ArrayList basics = new ArrayList(); - basics.addAll(Constant.CardTypes.BASIC_TYPES); + basics.addAll(CardType.Constant.BASIC_TYPES); List presentCards = ai.getCardsIn(ZoneType.Battlefield); presentCards.addAll(ai.getCardsIn(ZoneType.Hand)); List possibleCards = ai.getAllCards(); diff --git a/forge-gui/src/main/java/forge/game/ai/ComputerUtilCard.java b/forge-gui/src/main/java/forge/game/ai/ComputerUtilCard.java index 7750d84ab2b..26181a0b3e8 100644 --- a/forge-gui/src/main/java/forge/game/ai/ComputerUtilCard.java +++ b/forge-gui/src/main/java/forge/game/ai/ComputerUtilCard.java @@ -21,7 +21,6 @@ import forge.Card; import forge.CardLists; import forge.CardPredicates; import forge.CardUtil; -import forge.Constant; import forge.card.CardType; import forge.card.ColorSet; import forge.card.MagicColor; @@ -145,7 +144,7 @@ public class ComputerUtilCard { int iminBL = 20000; // hopefully no one will ever have more than 20000 // lands of one type.... int n = 0; - for (String name : Constant.Color.BASIC_LANDS) { + for (String name : MagicColor.Constant.BASIC_LANDS) { n = CardLists.getType(land, name).size(); if ((n < iminBL) && (n > 0)) { // if two or more are tied, only the @@ -745,7 +744,7 @@ public class ComputerUtilCard { if ( (colors & c) != 0 ) return MagicColor.toLongString(c); } - return Constant.Color.WHITE; // no difference, there was no prominent color + return MagicColor.Constant.WHITE; // no difference, there was no prominent color } public static String getMostProminentColor(final List list, final List restrictedToColors) { diff --git a/forge-gui/src/main/java/forge/game/ai/ComputerUtilMana.java b/forge-gui/src/main/java/forge/game/ai/ComputerUtilMana.java index 381543c2e39..e4189302674 100644 --- a/forge-gui/src/main/java/forge/game/ai/ComputerUtilMana.java +++ b/forge-gui/src/main/java/forge/game/ai/ComputerUtilMana.java @@ -16,7 +16,6 @@ import com.google.common.base.Predicate; import forge.Card; import forge.CardLists; import forge.CardUtil; -import forge.Constant; import forge.FThreads; import forge.card.MagicColor; import forge.card.ability.AbilityUtils; @@ -36,7 +35,7 @@ import forge.game.Game; import forge.game.GameActionUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.EnumMapOfLists; import forge.util.maps.MapOfLists; import forge.util.maps.TreeMapOfLists; @@ -667,19 +666,19 @@ public class ComputerUtilMana { Set reflectedColors = CardUtil.getReflectableManaColors(m); // find possible colors - if (mp.canProduce("W", m) || reflectedColors.contains(Constant.Color.WHITE)) { + if (mp.canProduce("W", m) || reflectedColors.contains(MagicColor.Constant.WHITE)) { manaMap.add(ManaAtom.WHITE, m); } - if (mp.canProduce("U", m) || reflectedColors.contains(Constant.Color.BLUE)) { + if (mp.canProduce("U", m) || reflectedColors.contains(MagicColor.Constant.BLUE)) { manaMap.add(ManaAtom.BLUE, m); } - if (mp.canProduce("B", m) || reflectedColors.contains(Constant.Color.BLACK)) { + if (mp.canProduce("B", m) || reflectedColors.contains(MagicColor.Constant.BLACK)) { manaMap.add(ManaAtom.BLACK, m); } - if (mp.canProduce("R", m) || reflectedColors.contains(Constant.Color.RED)) { + if (mp.canProduce("R", m) || reflectedColors.contains(MagicColor.Constant.RED)) { manaMap.add(ManaAtom.RED, m); } - if (mp.canProduce("G", m) || reflectedColors.contains(Constant.Color.GREEN)) { + if (mp.canProduce("G", m) || reflectedColors.contains(MagicColor.Constant.GREEN)) { manaMap.add(ManaAtom.GREEN, m); } if (mp.isSnow()) { diff --git a/forge-gui/src/main/java/forge/game/combat/CombatUtil.java b/forge-gui/src/main/java/forge/game/combat/CombatUtil.java index fec9c4e0b0b..7195de005fc 100644 --- a/forge-gui/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-gui/src/main/java/forge/game/combat/CombatUtil.java @@ -29,7 +29,6 @@ import com.google.common.collect.Lists; import forge.Card; import forge.CardLists; import forge.CardPredicates; -import forge.Constant; import forge.GameEntity; import forge.card.CardType; import forge.card.MagicColor; @@ -232,7 +231,7 @@ public class CombatUtil { ArrayList walkTypes = new ArrayList(); - for (String basic : Constant.Color.BASIC_LANDS) { + for (String basic : MagicColor.Constant.BASIC_LANDS) { StringBuilder sbLand = new StringBuilder(); sbLand.append(basic); sbLand.append("walk"); diff --git a/forge-gui/src/main/java/forge/game/limited/BoosterDraft.java b/forge-gui/src/main/java/forge/game/limited/BoosterDraft.java index 72f748a12ac..56595559c15 100644 --- a/forge-gui/src/main/java/forge/game/limited/BoosterDraft.java +++ b/forge-gui/src/main/java/forge/game/limited/BoosterDraft.java @@ -37,6 +37,7 @@ import forge.Constant.Preferences; import forge.Singletons; import forge.card.CardBlock; import forge.card.CardEdition; +import forge.card.CardEditionPredicates; import forge.card.IUnOpenedProduct; import forge.card.SealedProductTemplate; import forge.card.UnOpenedProduct; @@ -44,11 +45,11 @@ import forge.deck.Deck; import forge.gui.GuiChoose; import forge.item.PaperCard; import forge.item.IPaperCard; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.properties.NewConstants; import forge.util.FileUtil; import forge.util.HttpUtil; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.storage.IStorage; /** @@ -88,7 +89,7 @@ public final class BoosterDraft implements IBoosterDraft { Supplier> s = new UnOpenedProduct(SealedProductTemplate.genericBooster); for (int i = 0; i < 3; i++) this.product.add(s); - IBoosterDraft.LAND_SET_CODE[0] = CardEdition.getRandomSetWithAllBasicLands(Singletons.getModel().getEditions()); + IBoosterDraft.LAND_SET_CODE[0] = CardEditionPredicates.getRandomSetWithAllBasicLands(Singletons.getMagicDb().getEditions()); break; case Block: case FantasyBlock: // Draft from cards by block or set @@ -165,7 +166,7 @@ public final class BoosterDraft implements IBoosterDraft { this.product.add(toAdd); } - IBoosterDraft.LAND_SET_CODE[0] = Singletons.getModel().getEditions().get(draft.getLandSetCode()); + IBoosterDraft.LAND_SET_CODE[0] = Singletons.getMagicDb().getEditions().get(draft.getLandSetCode()); } /** Looks for res/draft/*.draft files, reads them, returns a list. */ diff --git a/forge-gui/src/main/java/forge/game/limited/CustomLimited.java b/forge-gui/src/main/java/forge/game/limited/CustomLimited.java index 10b6bf52e6d..e0b7c104ba4 100644 --- a/forge-gui/src/main/java/forge/game/limited/CustomLimited.java +++ b/forge-gui/src/main/java/forge/game/limited/CustomLimited.java @@ -25,15 +25,14 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import forge.Singletons; -import forge.card.CardDb; -import forge.card.CardEdition; +import forge.card.CardEditionPredicates; import forge.card.SealedProductTemplate; import forge.deck.Deck; import forge.deck.DeckBase; import forge.item.PaperCard; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.util.FileSection; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.TextUtil; import forge.util.storage.IStorage; @@ -67,7 +66,7 @@ public class CustomLimited extends DeckBase { private transient ItemPoolView cardPool; /** The Land set code. */ - private String landSetCode = CardEdition.getRandomSetWithAllBasicLands(Singletons.getModel().getEditions()).getCode(); + private String landSetCode = CardEditionPredicates.getRandomSetWithAllBasicLands(Singletons.getMagicDb().getEditions()).getCode(); private boolean singleton; @@ -109,7 +108,7 @@ public class CustomLimited extends DeckBase { cd.numPacks = data.getInt("NumPacks"); cd.singleton = data.getBoolean("Singleton"); final Deck deckCube = cubes.get(data.get("DeckFile")); - cd.cardPool = deckCube == null ? ItemPool.createFrom(CardDb.instance().getUniqueCards(), PaperCard.class) : deckCube.getMain(); + cd.cardPool = deckCube == null ? ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getUniqueCards(), PaperCard.class) : deckCube.getMain(); return cd; } diff --git a/forge-gui/src/main/java/forge/game/limited/IBoosterDraft.java b/forge-gui/src/main/java/forge/game/limited/IBoosterDraft.java index 5a19ae294f1..86e7b23bfa3 100644 --- a/forge-gui/src/main/java/forge/game/limited/IBoosterDraft.java +++ b/forge-gui/src/main/java/forge/game/limited/IBoosterDraft.java @@ -20,7 +20,7 @@ package forge.game.limited; import forge.card.CardEdition; import forge.deck.Deck; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** *

diff --git a/forge-gui/src/main/java/forge/game/limited/LimitedDeckBuilder.java b/forge-gui/src/main/java/forge/game/limited/LimitedDeckBuilder.java index 426d7067d71..e61f53b1648 100644 --- a/forge-gui/src/main/java/forge/game/limited/LimitedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/game/limited/LimitedDeckBuilder.java @@ -16,12 +16,11 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.Constant; import forge.Singletons; import forge.Constant.Preferences; import forge.card.CardAiHints; -import forge.card.CardDb; import forge.card.CardEdition; +import forge.card.CardEditionPredicates; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.ColorSet; @@ -269,8 +268,8 @@ public class LimitedDeckBuilder { private void findBasicLandSets() { Set sets = new HashSet(); for (PaperCard cp : aiPlayables) { - CardEdition ee = Singletons.getModel().getEditions().get(cp.edition); - if( !sets.contains(cp.getEdition()) && CardEdition.Predicates.hasBasicLands.apply(ee)) + CardEdition ee = Singletons.getMagicDb().getEditions().get(cp.edition); + if( !sets.contains(cp.getEdition()) && CardEditionPredicates.hasBasicLands.apply(ee)) sets.add(cp.getEdition()); } setsWithBasicLands.addAll(sets); @@ -303,7 +302,7 @@ public class LimitedDeckBuilder { final float p = (float) clrCnts[i] / (float) totalColor; final int nLand = Math.round(landsNeeded * p); // desired truncation to int if (Preferences.DEV_MODE) { - System.out.printf("Basics[%s]: %d/%d = %f%% = %d cards%n", Constant.Color.BASIC_LANDS.get(i), clrCnts[i], totalColor, 100*p, nLand); + System.out.printf("Basics[%s]: %d/%d = %f%% = %d cards%n", MagicColor.Constant.BASIC_LANDS.get(i), clrCnts[i], totalColor, 100*p, nLand); } for (int j = 0; j < nLand; j++) { @@ -326,7 +325,7 @@ public class LimitedDeckBuilder { } else { set = setsWithBasicLands.get(0); } - return CardDb.instance().getCard(Constant.Color.BASIC_LANDS.get(basicLand), set); + return Singletons.getMagicDb().getCommonCards().getCard(MagicColor.Constant.BASIC_LANDS.get(basicLand), set); } /** diff --git a/forge-gui/src/main/java/forge/game/limited/ReadDraftRankings.java b/forge-gui/src/main/java/forge/game/limited/ReadDraftRankings.java index aee635eff03..33204212ed2 100644 --- a/forge-gui/src/main/java/forge/game/limited/ReadDraftRankings.java +++ b/forge-gui/src/main/java/forge/game/limited/ReadDraftRankings.java @@ -6,7 +6,7 @@ import java.util.Map; import com.esotericsoftware.minlog.Log; -import forge.Constant; +import forge.card.MagicColor; import forge.properties.NewConstants; import forge.util.FileUtil; @@ -91,7 +91,7 @@ public class ReadDraftRankings { Double rank = null; // Basic lands should be excluded from the evaluation --BBU - if ( Constant.Color.BASIC_LANDS.contains(cardName)) + if ( MagicColor.Constant.BASIC_LANDS.contains(cardName)) return null; if (draftRankings.containsKey(edition)) { diff --git a/forge-gui/src/main/java/forge/game/limited/SealedCardPoolGenerator.java b/forge-gui/src/main/java/forge/game/limited/SealedCardPoolGenerator.java index 80d5482fb9c..d68e08b68b5 100644 --- a/forge-gui/src/main/java/forge/game/limited/SealedCardPoolGenerator.java +++ b/forge-gui/src/main/java/forge/game/limited/SealedCardPoolGenerator.java @@ -29,6 +29,7 @@ import org.apache.commons.lang.ArrayUtils; import forge.Singletons; import forge.card.CardBlock; import forge.card.CardEdition; +import forge.card.CardEditionPredicates; import forge.card.IUnOpenedProduct; import forge.card.SealedProductTemplate; import forge.card.UnOpenedMeta; @@ -36,8 +37,8 @@ import forge.card.UnOpenedProduct; import forge.deck.CardPool; import forge.gui.GuiChoose; import forge.item.PaperCard; -import forge.item.ItemPool; import forge.util.FileUtil; +import forge.util.ItemPool; import forge.util.TextUtil; /** @@ -71,7 +72,7 @@ public class SealedCardPoolGenerator { // Choose number of boosters chooseNumberOfBoosters(new UnOpenedProduct(SealedProductTemplate.genericBooster)); - landSetCode = CardEdition.getRandomSetWithAllBasicLands(Singletons.getModel().getEditions()).getCode(); + landSetCode = CardEditionPredicates.getRandomSetWithAllBasicLands(Singletons.getMagicDb().getEditions()).getCode(); break; case Block: diff --git a/forge-gui/src/main/java/forge/game/limited/SealedDeckBuilder.java b/forge-gui/src/main/java/forge/game/limited/SealedDeckBuilder.java index 0f35e77cbcb..58d5e250d5b 100644 --- a/forge-gui/src/main/java/forge/game/limited/SealedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/game/limited/SealedDeckBuilder.java @@ -9,11 +9,10 @@ import org.apache.commons.lang3.tuple.Pair; import com.google.common.collect.Iterables; -import forge.Constant; -import forge.Constant.Color; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.ColorSet; +import forge.card.MagicColor; import forge.item.PaperCard; import forge.util.MyRandom; @@ -61,14 +60,14 @@ public class SealedDeckBuilder extends LimitedDeckBuilder { List secondColors = new ArrayList(); for (int i = 0; i < 5; i++) { if (countsCopy[4] == colorCounts[i]) { - maxColors.add(Constant.Color.ONLY_COLORS.get(i)); + maxColors.add(MagicColor.Constant.ONLY_COLORS.get(i)); } else if (countsCopy[3] == colorCounts[i]) { - secondColors.add(Constant.Color.ONLY_COLORS.get(i)); + secondColors.add(MagicColor.Constant.ONLY_COLORS.get(i)); } } - String color1 = Color.GREEN; - String color2 = Color.BLACK; + String color1 = MagicColor.Constant.GREEN; + String color2 = MagicColor.Constant.BLACK; final Random r = MyRandom.getRandom(); if (maxColors.size() > 1) { int n = r.nextInt(maxColors.size()); diff --git a/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java b/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java index 654dc1458b7..6359ac0b489 100644 --- a/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java @@ -59,7 +59,7 @@ import forge.game.player.Player; import forge.game.player.PlayerController.ManaPaymentPurpose; import forge.game.zone.ZoneType; import forge.properties.ForgePreferences.FPref; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.HashMapOfLists; import forge.util.maps.MapOfLists; diff --git a/forge-gui/src/main/java/forge/game/zone/MagicStack.java b/forge-gui/src/main/java/forge/game/zone/MagicStack.java index a951aab4c4a..114c8fa0b8f 100644 --- a/forge-gui/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-gui/src/main/java/forge/game/zone/MagicStack.java @@ -39,7 +39,6 @@ import forge.GameObject; import forge.Singletons; import forge.CardPredicates.Presets; import forge.GameLogEntryType; -import forge.card.CardDb; import forge.card.ability.AbilityFactory; import forge.card.ability.AbilityUtils; import forge.card.cardfactory.CardFactory; @@ -522,7 +521,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable type = CardFactory.getCard(CardDb.getCard(source), source.getController()).getType(); + ArrayList type = CardFactory.getCard(source.getPaperCard(), source.getController()).getType(); final long timestamp = game.getNextTimestamp(); source.addChangedCardTypes(type, Lists.newArrayList("Aura"), false, false, false, false, timestamp); source.addChangedCardKeywords(new ArrayList(), Lists.newArrayList("Enchant creature"), false, timestamp); diff --git a/forge-gui/src/main/java/forge/game/zone/Zone.java b/forge-gui/src/main/java/forge/game/zone/Zone.java index c172cefcda6..9013926ed73 100644 --- a/forge-gui/src/main/java/forge/game/zone/Zone.java +++ b/forge-gui/src/main/java/forge/game/zone/Zone.java @@ -33,7 +33,7 @@ import forge.game.Game; import forge.game.event.EventValueChangeType; import forge.game.event.GameEventZone; import forge.game.player.Player; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.EnumMapOfLists; import forge.util.maps.MapOfLists; diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java index 39f153b351e..f85cd5da2bc 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java @@ -20,7 +20,7 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import forge.card.CardDb; +import forge.Singletons; import forge.deck.CardPool; import forge.error.BugReporter; import forge.item.PaperCard; @@ -153,7 +153,7 @@ public class GauntletIO { final String nodename = reader.getNodeName(); if ("string".equals(nodename)) { - result.add(CardDb.instance().getCard(reader.getValue())); + result.add(Singletons.getMagicDb().getCommonCards().getCard(reader.getValue())); } else if ("card".equals(nodename)) { // new format result.add(this.readCardPrinted(reader), cnt); } @@ -183,8 +183,8 @@ public class GauntletIO { final String sIndex = reader.getAttribute("i"); final short index = StringUtils.isNumeric(sIndex) ? Short.parseShort(sIndex) : 0; final boolean foil = "1".equals(reader.getAttribute("foil")); - final PaperCard card = CardDb.instance().getCard(name, set, index); - return foil ? CardDb.instance().getFoiled(card) : card; + final PaperCard card = Singletons.getMagicDb().getCommonCards().getCard(name, set, index); + return foil ? Singletons.getMagicDb().getCommonCards().getFoiled(card) : card; } } } diff --git a/forge-gui/src/main/java/forge/gui/CardDetailPanel.java b/forge-gui/src/main/java/forge/gui/CardDetailPanel.java index 70261fb8389..6d1a2bfcf91 100644 --- a/forge-gui/src/main/java/forge/gui/CardDetailPanel.java +++ b/forge-gui/src/main/java/forge/gui/CardDetailPanel.java @@ -181,7 +181,7 @@ public class CardDetailPanel extends FPanel { setInfoLabel.setOpaque(false); setInfoLabel.setBorder(null); } else { - CardEdition edition = Singletons.getModel().getEditions().get(set); + CardEdition edition = Singletons.getMagicDb().getEditions().get(set); if (null != edition) { setInfoLabel.setToolTipText(edition.getName()); } @@ -236,7 +236,7 @@ public class CardDetailPanel extends FPanel { String set = card.getCurSetCode(); this.setInfoLabel.setText(set); if (null != set && !set.isEmpty()) { - CardEdition edition = Singletons.getModel().getEditions().get(set); + CardEdition edition = Singletons.getMagicDb().getEditions().get(set); if (null == edition) { setInfoLabel.setToolTipText(card.getRarity().name()); } else { diff --git a/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java b/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java index fc72af55da3..908a701cf12 100644 --- a/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java @@ -42,7 +42,6 @@ import forge.CardPredicates; import forge.CounterType; import forge.Singletons; import forge.card.CardCharacteristicName; -import forge.card.CardDb; import forge.card.spellability.AbilityManaPart; import forge.card.spellability.SpellAbility; import forge.card.trigger.TriggerType; @@ -202,7 +201,7 @@ public final class GuiDisplayUtil { for (final String element : data) { final String[] cardinfo = element.trim().split("\\|"); - final Card c = Card.fromPaperCard(CardDb.instance().getCard(cardinfo[0]), player); + final Card c = Card.fromPaperCard(Singletons.getMagicDb().getCommonCards().getCard(cardinfo[0]), player); boolean hasSetCurSet = false; for (final String info : cardinfo) { @@ -373,7 +372,7 @@ public final class GuiDisplayUtil { return; } - final List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + final List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); Collections.sort(cards); // use standard forge's list selection dialog @@ -394,7 +393,7 @@ public final class GuiDisplayUtil { return; } - final List cards = Lists.newArrayList(CardDb.instance().getUniqueCards()); + final List cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards()); Collections.sort(cards); // use standard forge's list selection dialog @@ -468,7 +467,7 @@ public final class GuiDisplayUtil { final Player p = game.getPhaseHandler().getPlayerTurn(); final List allPlanars = new ArrayList(); - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { if (c.getRules().getType().isPlane() || c.getRules().getType().isPhenomenon()) { allPlanars.add(c); } diff --git a/forge-gui/src/main/java/forge/gui/ImportSourceAnalyzer.java b/forge-gui/src/main/java/forge/gui/ImportSourceAnalyzer.java index 1caf756ee6d..e6fe5379cdd 100644 --- a/forge-gui/src/main/java/forge/gui/ImportSourceAnalyzer.java +++ b/forge-gui/src/main/java/forge/gui/ImportSourceAnalyzer.java @@ -30,7 +30,6 @@ import com.google.common.collect.Iterables; import forge.ImageCache; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardEdition; import forge.card.CardRules; import forge.card.EditionCollection; @@ -101,7 +100,7 @@ public class ImportSourceAnalyzer { else if ("pics_product".equalsIgnoreCase(dirname)) { _analyzeProductPicsDir(root); } else if ("preferences".equalsIgnoreCase(dirname)) { _analyzePreferencesDir(root); } else if ("quest".equalsIgnoreCase(dirname)) { _analyzeQuestDir(root); } - else if (null != Singletons.getModel().getEditions().get(dirname)) { _analyzeCardPicsSetDir(root); } + else if (null != Singletons.getMagicDb().getEditions().get(dirname)) { _analyzeCardPicsSetDir(root); } else { // look at files in directory and make a semi-educated guess based on file extensions int numUnhandledFiles = 0; @@ -323,13 +322,13 @@ public class ImportSourceAnalyzer { _defaultPicNames = new TreeMap(String.CASE_INSENSITIVE_ORDER); _defaultPicOldNameToCurrentName = new TreeMap(String.CASE_INSENSITIVE_ORDER); - for (PaperCard c : CardDb.instance().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getCommonCards().getAllCards()) { _addDefaultPicNames(c, false); if (ImageCache.hasBackFacePicture(c)) _addDefaultPicNames(c, true); } - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { _addDefaultPicNames(c, false); // variants never have backfaces } @@ -378,11 +377,11 @@ public class ImportSourceAnalyzer { private void _analyzeCardPicsSetDir(File root) { if (null == _cardFileNamesBySet) { _cardFileNamesBySet = new TreeMap>(String.CASE_INSENSITIVE_ORDER); - for (CardEdition ce : Singletons.getModel().getEditions()) { + for (CardEdition ce : Singletons.getMagicDb().getEditions()) { Map cardFileNames = new TreeMap(String.CASE_INSENSITIVE_ORDER); Predicate filter = IPaperCard.Predicates.printedInSet(ce.getCode()); - _addSetCards(cardFileNames, CardDb.instance().getAllCards(), filter); - _addSetCards(cardFileNames, CardDb.variants().getAllCards(), filter); + _addSetCards(cardFileNames, Singletons.getMagicDb().getCommonCards().getAllCards(), filter); + _addSetCards(cardFileNames, Singletons.getMagicDb().getVariantCards().getAllCards(), filter); _cardFileNamesBySet.put(ce.getCode2(), cardFileNames); } @@ -395,7 +394,7 @@ public class ImportSourceAnalyzer { } }; - for (PaperCard c : Iterables.filter(CardDb.variants().getAllCards(), predPlanes)) { + for (PaperCard c : Iterables.filter(Singletons.getMagicDb().getVariantCards().getAllCards(), predPlanes)) { String baseName = ImageCache.getImageKey(c,false, true); _nameUpdates.put(baseName + ".full.jpg", baseName + ".jpg"); if (ImageCache.hasBackFacePicture(c)) { @@ -405,7 +404,7 @@ public class ImportSourceAnalyzer { } } - EditionCollection editions = Singletons.getModel().getEditions(); + EditionCollection editions = Singletons.getMagicDb().getEditions(); String editionCode = root.getName(); CardEdition edition = editions.get(editionCode); if (null == edition) { diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java index edf06385cc4..40d148cdb10 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java @@ -186,7 +186,7 @@ public enum CCardCatalog implements ICDoc { } }, canSearch()); JMenu fmt = new JMenu("Format"); - for (final GameFormat f : Singletons.getModel().getFormats()) { + for (final GameFormat f : Singletons.getMagicDb().getFormats()) { GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() { @Override public void run() { @@ -503,7 +503,7 @@ public enum CCardCatalog implements ICDoc { } private Pair> buildFormatRestriction(String displayName, GameFormat format, boolean allowReprints) { - EditionCollection editions = Singletons.getModel().getEditions(); + EditionCollection editions = Singletons.getMagicDb().getEditions(); StringBuilder tooltip = new StringBuilder("Sets:"); int lastLen = 0; diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CDeckgen.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CDeckgen.java index 9e68130dfd6..3753f4b82de 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CDeckgen.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CDeckgen.java @@ -5,10 +5,9 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.Command; -import forge.Constant; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardRulesPredicates; +import forge.card.MagicColor; import forge.deck.Deck; import forge.deck.DeckBase; import forge.deck.generate.Generate2ColorDeck; @@ -82,10 +81,10 @@ public enum CDeckgen implements ICDoc { final Deck randomDeck = new Deck(); Predicate notBasicLand = Predicates.not(Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, PaperCard.FN_GET_RULES)); - Iterable source = Iterables.filter(CardDb.instance().getUniqueCards(), notBasicLand); + Iterable source = Iterables.filter(Singletons.getMagicDb().getCommonCards().getUniqueCards(), notBasicLand); randomDeck.getMain().addAllFlat(Aggregates.random(source, 15 * 5)); - for(String landName : Constant.Color.BASIC_LANDS) { + for(String landName : MagicColor.Constant.BASIC_LANDS) { randomDeck.getMain().add(landName, 1); } randomDeck.getMain().add("Terramorphic Expanse", 1); diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorCommander.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorCommander.java index becd43a3a39..0f1f126fc74 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorCommander.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorCommander.java @@ -27,7 +27,6 @@ import com.google.common.base.Supplier; import forge.Command; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardRulesPredicates; import forge.deck.Deck; import forge.deck.DeckSection; @@ -46,10 +45,10 @@ import forge.gui.toolbox.itemmanager.SItemManagerIO.EditorPreference; import forge.gui.toolbox.itemmanager.table.TableColumnInfo; import forge.gui.toolbox.itemmanager.table.SColumnUtil; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; -import forge.item.ItemPoolView; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** * Child controller for constructed deck editor UI. @@ -83,8 +82,8 @@ public final class CEditorCommander extends ACEditorBase { allSections.add(DeckSection.Sideboard); allSections.add(DeckSection.Commander); - commanderPool = ItemPool.createFrom(CardDb.instance().getAllCards(Predicates.compose(Predicates.and(CardRulesPredicates.Presets.IS_CREATURE,CardRulesPredicates.Presets.IS_LEGENDARY), PaperCard.FN_GET_RULES)),PaperCard.class); - normalPool = ItemPool.createFrom(CardDb.instance().getAllCards(), PaperCard.class); + commanderPool = ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(Predicates.compose(Predicates.and(CardRulesPredicates.Presets.IS_CREATURE,CardRulesPredicates.Presets.IS_LEGENDARY), PaperCard.FN_GET_RULES)),PaperCard.class); + normalPool = ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(), PaperCard.class); boolean wantUnique = SItemManagerIO.getPref(EditorPreference.display_unique_only); diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java index f23141b53c7..d1945f791a6 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java @@ -26,7 +26,6 @@ import com.google.common.base.Supplier; import forge.Command; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardRulesPredicates; import forge.deck.Deck; import forge.deck.DeckSection; @@ -44,8 +43,8 @@ import forge.gui.toolbox.itemmanager.table.SColumnUtil; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** * Child controller for constructed deck editor UI. @@ -84,9 +83,9 @@ public final class CEditorConstructed extends ACEditorBase { allSections.add(DeckSection.Planes); //allSections.add(DeckSection.Commander); - avatarPool = ItemPool.createFrom(CardDb.variants().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)),PaperCard.class); - planePool = ItemPool.createFrom(CardDb.variants().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)),PaperCard.class); - schemePool = ItemPool.createFrom(CardDb.variants().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)),PaperCard.class); + avatarPool = ItemPool.createFrom(Singletons.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)),PaperCard.class); + planePool = ItemPool.createFrom(Singletons.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)),PaperCard.class); + schemePool = ItemPool.createFrom(Singletons.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)),PaperCard.class); boolean wantUnique = SItemManagerIO.getPref(EditorPreference.display_unique_only); @@ -178,7 +177,7 @@ public final class CEditorConstructed extends ACEditorBase { @Override public void resetTables() { // Constructed mode can use all cards, no limitations. - this.getCatalogManager().setPool(ItemPool.createFrom(CardDb.instance().getAllCards(), PaperCard.class), true); + this.getCatalogManager().setPool(ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(), PaperCard.class), true); this.getDeckManager().setPool(this.controller.getModel().getMain()); } @@ -210,7 +209,7 @@ public final class CEditorConstructed extends ACEditorBase { case Main: lstCatalogCols.remove(SColumnUtil.getColumn(ColumnName.CAT_QUANTITY)); this.getCatalogManager().getTable().setAvailableColumns(lstCatalogCols); - this.getCatalogManager().setPool(ItemPool.createFrom(CardDb.instance().getAllCards(), PaperCard.class), true); + this.getCatalogManager().setPool(ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(), PaperCard.class), true); this.getDeckManager().setPool(this.controller.getModel().getMain()); showOptions = true; title = "Title: "; diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java index 68db1c4d687..e09de413fef 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java @@ -20,10 +20,9 @@ package forge.gui.deckeditor.controllers; import javax.swing.JOptionPane; import javax.swing.ListSelectionModel; -import forge.Constant; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardEdition; +import forge.card.MagicColor; import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckGroup; @@ -42,7 +41,7 @@ import forge.gui.toolbox.itemmanager.CardManager; import forge.gui.toolbox.itemmanager.table.SColumnUtil; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** * Updates the deck editor UI as necessary draft selection mode. @@ -162,8 +161,8 @@ public class CEditorDraftingProcess extends ACEditorBase { final CardEdition landSet = IBoosterDraft.LAND_SET_CODE[0]; final int landsCount = 20; - for(String landName : Constant.Color.BASIC_LANDS) { - side.add(CardDb.instance().getCard(landName, landSet.getCode()), landsCount); + for(String landName : MagicColor.Constant.BASIC_LANDS) { + side.add(Singletons.getMagicDb().getCommonCards().getCard(landName, landSet.getCode()), landsCount); } return deck; diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuest.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuest.java index 9125938a64b..cc2263755d6 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuest.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuest.java @@ -46,8 +46,8 @@ import forge.gui.toolbox.itemmanager.table.SColumnUtil; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; import forge.quest.QuestController; +import forge.util.ItemPool; //import forge.quest.data.QuestBoosterPack; diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java index 451340f7ec6..86b5dd8deb6 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java @@ -33,7 +33,6 @@ import com.google.common.base.Function; import forge.Command; import forge.Singletons; -import forge.card.CardDb; import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckBase; @@ -59,13 +58,13 @@ import forge.item.PaperCard; import forge.item.FatPack; import forge.item.IPaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.item.OpenablePack; import forge.item.PreconDeck; import forge.item.TournamentPack; import forge.quest.QuestController; import forge.quest.io.ReadPriceList; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** * Child controller for quest card shop UI. @@ -99,7 +98,7 @@ public final class CEditorQuestCardShop extends ACEditorBase cardsForSale; private final ItemPool fullCatalogCards = - ItemPool.createFrom(CardDb.instance().getAllCards(), InventoryItem.class); + ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(), InventoryItem.class); private boolean showingFullCatalog = false; private DragCell allDecksParent = null; private DragCell deckGenParent = null; diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorVariant.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorVariant.java index de18a3cdbf3..8b1c27ef4a7 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorVariant.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorVariant.java @@ -23,7 +23,7 @@ import com.google.common.base.Predicate; import com.google.common.base.Supplier; import com.google.common.collect.Iterables; -import forge.card.CardDb; +import forge.Singletons; import forge.deck.Deck; import forge.deck.DeckSection; import forge.gui.deckeditor.SEditorIO; @@ -40,7 +40,7 @@ import forge.gui.toolbox.itemmanager.table.SColumnUtil; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; +import forge.util.ItemPool; import forge.util.storage.IStorage; /** @@ -130,7 +130,7 @@ public final class CEditorVariant extends ACEditorBase { */ @Override public void resetTables() { - Iterable allNT = CardDb.variants().getAllCards(); + Iterable allNT = Singletons.getMagicDb().getVariantCards().getAllCards(); allNT = Iterables.filter(allNT, cardPoolCondition); this.getCatalogManager().setPool(ItemPool.createFrom(allNT, PaperCard.class), true); diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CProbabilities.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CProbabilities.java index 7312e001a32..9a7c321bbc8 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CProbabilities.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CProbabilities.java @@ -15,8 +15,8 @@ import forge.gui.framework.ICDoc; import forge.gui.toolbox.FLabel; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.MyRandom; /** diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CStatistics.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CStatistics.java index b865b349aa3..49a6b68bc8b 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CStatistics.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CStatistics.java @@ -18,8 +18,8 @@ import forge.gui.framework.ICDoc; import forge.gui.toolbox.itemmanager.SItemManagerUtil; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** diff --git a/forge-gui/src/main/java/forge/gui/download/GuiDownloadPicturesLQ.java b/forge-gui/src/main/java/forge/gui/download/GuiDownloadPicturesLQ.java index b2a9ead4172..1a83f1278a3 100644 --- a/forge-gui/src/main/java/forge/gui/download/GuiDownloadPicturesLQ.java +++ b/forge-gui/src/main/java/forge/gui/download/GuiDownloadPicturesLQ.java @@ -24,7 +24,7 @@ import java.util.TreeMap; import org.apache.commons.lang3.StringUtils; import forge.ImageCache; -import forge.card.CardDb; +import forge.Singletons; import forge.card.CardRules; import forge.item.PaperCard; import forge.properties.NewConstants; @@ -39,13 +39,13 @@ public class GuiDownloadPicturesLQ extends GuiDownloader { protected final Map getNeededImages() { Map downloads = new TreeMap(String.CASE_INSENSITIVE_ORDER); - for (PaperCard c : CardDb.instance().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getCommonCards().getAllCards()) { addDLObject(c, downloads, false); if (ImageCache.hasBackFacePicture(c)) addDLObject(c, downloads, true); } - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { addDLObject(c, downloads, false); } diff --git a/forge-gui/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java b/forge-gui/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java index c0dd2fe15ce..f2da7611985 100644 --- a/forge-gui/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java +++ b/forge-gui/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java @@ -26,7 +26,7 @@ import org.apache.commons.lang3.StringUtils; import com.google.common.collect.Iterables; import forge.ImageCache; -import forge.card.CardDb; +import forge.Singletons; import forge.card.CardEdition; import forge.item.PaperCard; import forge.properties.NewConstants; @@ -41,7 +41,7 @@ public class GuiDownloadSetPicturesLQ extends GuiDownloader { protected final Map getNeededImages() { Map downloads = new TreeMap(String.CASE_INSENSITIVE_ORDER); - for (final PaperCard c : Iterables.concat(CardDb.instance().getAllCards(), CardDb.variants().getAllCards())) { + for (final PaperCard c : Iterables.concat(Singletons.getMagicDb().getCommonCards().getAllCards(), Singletons.getMagicDb().getVariantCards().getAllCards())) { final String setCode3 = c.getEdition(); if (StringUtils.isBlank(setCode3) || CardEdition.UNKNOWN.getCode().equals(setCode3)) { // we don't want cards from unknown sets diff --git a/forge-gui/src/main/java/forge/gui/framework/SLayoutIO.java b/forge-gui/src/main/java/forge/gui/framework/SLayoutIO.java index 21a41c27866..15b80f71f0f 100644 --- a/forge-gui/src/main/java/forge/gui/framework/SLayoutIO.java +++ b/forge-gui/src/main/java/forge/gui/framework/SLayoutIO.java @@ -31,7 +31,7 @@ import forge.Singletons; import forge.gui.toolbox.FAbsolutePositioner; import forge.properties.FileLocation; import forge.properties.NewConstants; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.HashMapOfLists; import forge.util.maps.MapOfLists; import forge.view.FFrame; diff --git a/forge-gui/src/main/java/forge/gui/home/quest/DialogChooseSets.java b/forge-gui/src/main/java/forge/gui/home/quest/DialogChooseSets.java index 9ae7912cac3..2b4a6e72b78 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/DialogChooseSets.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/DialogChooseSets.java @@ -37,7 +37,7 @@ public class DialogChooseSets { // create a local copy of the editions list so we can sort it List editions = new ArrayList(); - for (CardEdition ce : Singletons.getModel().getEditions()) { + for (CardEdition ce : Singletons.getMagicDb().getEditions()) { editions.add(ce); } Collections.sort(editions); diff --git a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestData.java b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestData.java index 62e5e4e6440..ee4dd75b9e2 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestData.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestData.java @@ -18,7 +18,6 @@ import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.text.WordUtils; -import forge.Constant; import forge.Singletons; import forge.card.MagicColor; import forge.deck.CardCollections; @@ -239,7 +238,7 @@ public enum VSubmenuQuestData implements IVSubmenu { cbxPrizedCards.addItem(StartingPoolType.CustomFormat); cbxPrizedCards.addActionListener(alPrizesPool); - for (GameFormat gf : Singletons.getModel().getFormats()) { + for (GameFormat gf : Singletons.getMagicDb().getFormats()) { cbxFormat.addItem(gf); cbxPrizeFormat.addItem(gf); } @@ -247,12 +246,12 @@ public enum VSubmenuQuestData implements IVSubmenu { // Initialize color balance selection cbxPreferredColor.addItem(stringBalancedDistribution); cbxPreferredColor.addItem(stringRandomizedDistribution); - cbxPreferredColor.addItem(Constant.Color.WHITE + stringBias); - cbxPreferredColor.addItem(Constant.Color.BLUE + stringBias); - cbxPreferredColor.addItem(Constant.Color.BLACK + stringBias); - cbxPreferredColor.addItem(Constant.Color.RED + stringBias); - cbxPreferredColor.addItem(Constant.Color.GREEN + stringBias); - cbxPreferredColor.addItem(Constant.Color.COLORLESS + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.WHITE + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.BLUE + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.BLACK + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.RED + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.GREEN + stringBias); + cbxPreferredColor.addItem(MagicColor.Constant.COLORLESS + stringBias); for (QuestWorld qw : Singletons.getModel().getWorlds()) { cbxStartingWorld.addItem(qw); diff --git a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java index f8c36553515..bc1c8d40417 100644 --- a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java +++ b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java @@ -15,8 +15,8 @@ import javax.swing.SwingUtilities; import org.apache.commons.lang3.StringUtils; import forge.Command; -import forge.Constant; import forge.Singletons; +import forge.card.MagicColor; import forge.deck.Deck; import forge.deck.DeckBase; import forge.deck.DeckGroup; @@ -34,7 +34,7 @@ import forge.gui.framework.FScreen; import forge.gui.framework.ICDoc; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; +import forge.util.ItemPool; import forge.util.storage.IStorage; /** @@ -175,7 +175,7 @@ public enum CSubmenuSealed implements ICDoc { final Deck deck = new Deck(sDeckName); deck.getOrCreate(DeckSection.Sideboard).addAll(humanPool); - for (final String element : Constant.Color.BASIC_LANDS) { + for (final String element : MagicColor.Constant.BASIC_LANDS) { deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), 18); } diff --git a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java index 9d511c96d62..04eeda6f207 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java @@ -18,7 +18,7 @@ import javax.swing.event.ListSelectionListener; import net.miginfocom.swing.MigLayout; import forge.Card; -import forge.card.CardDb; +import forge.Singletons; import forge.gui.CardDetailPanel; import forge.gui.deckchooser.FDeckChooser; import forge.gui.framework.DragCell; @@ -365,7 +365,7 @@ public enum VSubmenuVanguard implements IVSubmenu { */ public Iterable getAllAvatars() { if (allAvatars.isEmpty()) { - for (PaperCard c : CardDb.variants().getAllCards()) { + for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) { if (c.getRules().getType().isVanguard()) { allAvatars.add(c); } diff --git a/forge-gui/src/main/java/forge/gui/match/ControlWinLose.java b/forge-gui/src/main/java/forge/gui/match/ControlWinLose.java index b24fdab8669..3032fa248c5 100644 --- a/forge-gui/src/main/java/forge/gui/match/ControlWinLose.java +++ b/forge-gui/src/main/java/forge/gui/match/ControlWinLose.java @@ -9,7 +9,6 @@ import javax.swing.JButton; import forge.Card; import forge.Singletons; -import forge.card.CardDb; import forge.deck.Deck; import forge.game.Game; import forge.game.GameOutcome; @@ -138,7 +137,7 @@ public class ControlWinLose { Deck oDeck = psc.getOriginalDeck(); for (Card c : compAntes) { - PaperCard toRemove = CardDb.getCard(c); + PaperCard toRemove = (PaperCard) c.getPaperCard(); cDeck.getMain().remove(toRemove); if ( cDeck != oDeck ) oDeck.getMain().remove(toRemove); diff --git a/forge-gui/src/main/java/forge/gui/match/QuestWinLose.java b/forge-gui/src/main/java/forge/gui/match/QuestWinLose.java index 92e20198ded..d7ed637f097 100644 --- a/forge-gui/src/main/java/forge/gui/match/QuestWinLose.java +++ b/forge-gui/src/main/java/forge/gui/match/QuestWinLose.java @@ -32,7 +32,6 @@ import org.apache.commons.lang.StringUtils; import forge.Card; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardEdition; import forge.card.IUnOpenedProduct; import forge.card.SealedProductTemplate; @@ -141,7 +140,7 @@ public class QuestWinLose extends ControlWinLose { continue; } for (Card c : p.getCardsIn(ZoneType.Ante)) { - anteCards.add(CardDb.getCard(c)); + anteCards.add(c.getPaperCard()); } } @@ -543,7 +542,7 @@ public class QuestWinLose extends ControlWinLose { String preferredFormat = Singletons.getModel().getQuestPreferences().getPref(QPref.BOOSTER_FORMAT); GameFormat pref = null; - for (GameFormat f : Singletons.getModel().getFormats()) { + for (GameFormat f : Singletons.getMagicDb().getFormats()) { formats.add(f); if (f.toString().equals(preferredFormat)) { pref = f; @@ -564,7 +563,7 @@ public class QuestWinLose extends ControlWinLose { } else { final List sets = new ArrayList(); - for (SealedProductTemplate bd : Singletons.getModel().getBoosters()) { + for (SealedProductTemplate bd : Singletons.getMagicDb().getBoosters()) { if (bd != null && qData.getFormat().isSetLegal(bd.getEdition())) { sets.add(bd.getEdition()); } @@ -585,13 +584,13 @@ public class QuestWinLose extends ControlWinLose { int ix = MyRandom.getRandom().nextInt(sets.size()); String set = sets.get(ix); sets.remove(ix); - options.add(Singletons.getModel().getEditions().get(set)); + options.add(Singletons.getMagicDb().getEditions().get(set)); maxChoices--; } final CardEdition chooseEd = GuiChoose.one("Choose bonus booster set:", options); - IUnOpenedProduct product = new UnOpenedProduct(Singletons.getModel().getBoosters().get(chooseEd.getCode())); + IUnOpenedProduct product = new UnOpenedProduct(Singletons.getMagicDb().getBoosters().get(chooseEd.getCode())); cardsWon = product.get(); qData.getCards().addAllCards(cardsWon); this.lblTemp1 = new TitleLabel("Bonus " + chooseEd.getName() + " booster pack!"); diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java index 88a713ee071..daa781fbe3a 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java @@ -46,7 +46,7 @@ public final class CardManager extends ItemManager { @Override protected void buildFilterMenu(JPopupMenu menu) { JMenu fmt = new JMenu("Format"); - for (final GameFormat f : Singletons.getModel().getFormats()) { + for (final GameFormat f : Singletons.getMagicDb().getFormats()) { GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() { @Override public void run() { diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java index b23c009ff63..c50573f5ad9 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java @@ -48,9 +48,9 @@ import forge.gui.toolbox.itemmanager.filters.ItemFilter; import forge.gui.toolbox.itemmanager.table.ItemTable; import forge.gui.toolbox.itemmanager.table.ItemTableModel; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.util.Aggregates; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.TypeUtil; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java index efe91c4e535..3472b8e7e96 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java @@ -21,8 +21,8 @@ import java.util.List; import java.util.Map.Entry; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** *

diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java index 29a70585b3e..7bc7f84fb54 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java @@ -12,8 +12,8 @@ import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin.SkinImage; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPoolView; import forge.util.Aggregates; +import forge.util.ItemPoolView; import forge.util.TextUtil; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java index 4a20bfa578c..fd58cd25ada 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java @@ -42,8 +42,8 @@ import forge.gui.toolbox.itemmanager.ItemManagerModel; import forge.gui.toolbox.itemmanager.SItemManagerIO; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; import forge.gui.toolbox.itemmanager.table.SColumnUtil.SortState; -import forge.item.ItemPoolSorter; import forge.item.InventoryItem; +import forge.util.ItemPoolSorter; /** *

diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SColumnUtil.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SColumnUtil.java index bb2928da108..bff798ff79a 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SColumnUtil.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SColumnUtil.java @@ -317,7 +317,7 @@ public final class SColumnUtil { } private static CardEdition toSetCmp(final InventoryItem i) { - return i instanceof InventoryItemFromSet ? Singletons.getModel().getEditions() + return i instanceof InventoryItemFromSet ? Singletons.getMagicDb().getEditions() .get(((InventoryItemFromSet) i).getEdition()) : CardEdition.UNKNOWN; } diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SetCodeRenderer.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SetCodeRenderer.java index 06cf946393c..c41c8635671 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SetCodeRenderer.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/SetCodeRenderer.java @@ -32,7 +32,7 @@ public class SetCodeRenderer extends DefaultTableCellRenderer implements AlwaysS String setAbbrev = getText(); String setFullName = "Unknown set"; - EditionCollection editions = Singletons.getModel().getEditions(); + EditionCollection editions = Singletons.getMagicDb().getEditions(); if (null != setAbbrev && editions.contains(setAbbrev)) { setFullName = editions.get(setAbbrev).getName(); diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/TableSorterCascade.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/TableSorterCascade.java index 7803891a847..36e97c4f3a4 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/TableSorterCascade.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/table/TableSorterCascade.java @@ -21,8 +21,8 @@ import java.util.Comparator; import java.util.List; import java.util.Map.Entry; -import forge.item.ItemPoolSorter; import forge.item.InventoryItem; +import forge.util.ItemPoolSorter; /** *

diff --git a/forge-gui/src/main/java/forge/gui/workshop/controllers/CCardScript.java b/forge-gui/src/main/java/forge/gui/workshop/controllers/CCardScript.java index e9b78847da3..f4bef073f0a 100644 --- a/forge-gui/src/main/java/forge/gui/workshop/controllers/CCardScript.java +++ b/forge-gui/src/main/java/forge/gui/workshop/controllers/CCardScript.java @@ -83,16 +83,16 @@ public enum CCardScript implements ICDoc { String text = ""; boolean editable = false; if (this.currentCard != null) { - File sourceFile = this.currentCard.getRules().getSourceFile(); - if (sourceFile != null) { - try { - text = FileUtil.readFileToString(sourceFile); - editable = true; - } - catch (final Exception ex) { - text = "Couldn't read file - " + sourceFile + "\n\nException:\n" + ex.toString(); - } - } +// File sourceFile = this.currentCard.getRules().getSourceFile(); +// if (sourceFile != null) { +// try { +// text = FileUtil.readFileToString(sourceFile); +// editable = true; +// } +// catch (final Exception ex) { +// text = "Couldn't read file - " + sourceFile + "\n\nException:\n" + ex.toString(); +// } +// } } this.baseText = text; @@ -129,28 +129,29 @@ public enum CCardScript implements ICDoc { public boolean saveChanges() { if (!hasChanges()) { return true; } //not need if text hasn't been changed - File sourceFile = this.currentCard.getRules().getSourceFile(); - if (sourceFile == null) { return true; } - - try { - String text = VCardScript.SINGLETON_INSTANCE.getTxtScript().getText(); - - PrintWriter p = new PrintWriter(sourceFile); - p.print(text); - p.close(); - - this.baseText = text; - updateDirtyFlag(); - - this.currentCard.updateRules(text); - VWorkshopCatalog.SINGLETON_INSTANCE.getCardManager().repaint(); - CDetail.SINGLETON_INSTANCE.showCard(this.currentCard); - CPicture.SINGLETON_INSTANCE.showImage(this.currentCard); - return true; - } catch (final Exception ex) { - JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "FileUtil : writeFile() error, problem writing file - " + sourceFile + " : " + ex); - return false; - } +// File sourceFile = this.currentCard.getRules().getSourceFile(); +// if (sourceFile == null) { return true; } +// +// try { +// String text = VCardScript.SINGLETON_INSTANCE.getTxtScript().getText(); +// +// PrintWriter p = new PrintWriter(sourceFile); +// p.print(text); +// p.close(); +// +// this.baseText = text; +// updateDirtyFlag(); +// +// this.currentCard.updateRules(text); +// VWorkshopCatalog.SINGLETON_INSTANCE.getCardManager().repaint(); +// CDetail.SINGLETON_INSTANCE.showCard(this.currentCard); +// CPicture.SINGLETON_INSTANCE.showImage(this.currentCard); +// return true; +// } catch (final Exception ex) { +// JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "FileUtil : writeFile() error, problem writing file - " + sourceFile + " : " + ex); +// return false; +// } + return false; } //========== Overridden methods diff --git a/forge-gui/src/main/java/forge/gui/workshop/controllers/CWorkshopCatalog.java b/forge-gui/src/main/java/forge/gui/workshop/controllers/CWorkshopCatalog.java index e7e1bf54ce0..6151a70a9c0 100644 --- a/forge-gui/src/main/java/forge/gui/workshop/controllers/CWorkshopCatalog.java +++ b/forge-gui/src/main/java/forge/gui/workshop/controllers/CWorkshopCatalog.java @@ -174,7 +174,7 @@ public enum CWorkshopCatalog implements ICDoc { } }, canSearch()); JMenu fmt = new JMenu("Format"); - for (final GameFormat f : Singletons.getModel().getFormats()) { + for (final GameFormat f : Singletons.getMagicDb().getFormats()) { GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() { @Override public void run() { @@ -490,7 +490,7 @@ public enum CWorkshopCatalog implements ICDoc { } private Pair> buildFormatRestriction(String displayName, GameFormat format, boolean allowReprints) { - EditionCollection editions = Singletons.getModel().getEditions(); + EditionCollection editions = Singletons.getMagicDb().getEditions(); StringBuilder tooltip = new StringBuilder("Sets:"); int lastLen = 0; diff --git a/forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java b/forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java index a98bb94443e..cd827986ec1 100644 --- a/forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java +++ b/forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java @@ -18,7 +18,7 @@ import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.tuple.Pair; import forge.Command; -import forge.card.CardDb; +import forge.Singletons; import forge.gui.WrapLayout; import forge.gui.deckeditor.views.VCardCatalog.RangeTypes; import forge.gui.framework.DragCell; @@ -37,8 +37,8 @@ import forge.gui.toolbox.itemmanager.ItemManagerContainer; import forge.gui.toolbox.itemmanager.SItemManagerUtil; import forge.gui.workshop.controllers.CCardScript; import forge.gui.workshop.controllers.CWorkshopCatalog; -import forge.item.ItemPool; import forge.item.PaperCard; +import forge.util.ItemPool; /** * Assembles Swing components of card catalog in workshop. @@ -125,7 +125,7 @@ public enum VWorkshopCatalog implements IVDoc { } this.cardManager = new CardManager(this.statLabels, true); - this.cardManager.setPool(ItemPool.createFrom(CardDb.instance().getAllCards(), PaperCard.class), true); + this.cardManager.setPool(ItemPool.createFrom(Singletons.getMagicDb().getCommonCards().getAllCards(), PaperCard.class), true); this.cardManagerContainer.setItemManager(this.cardManager); this.cardManager.addSelectionListener(new ListSelectionListener() { diff --git a/forge-gui/src/main/java/forge/item/BoosterPack.java b/forge-gui/src/main/java/forge/item/BoosterPack.java index b937925b452..c1f84aebc91 100644 --- a/forge-gui/src/main/java/forge/item/BoosterPack.java +++ b/forge-gui/src/main/java/forge/item/BoosterPack.java @@ -32,14 +32,14 @@ public class BoosterPack extends OpenablePack { public static final Function FN_FROM_SET = new Function() { @Override public BoosterPack apply(final CardEdition arg1) { - SealedProductTemplate d = Singletons.getModel().getBoosters().get(arg1.getCode()); + SealedProductTemplate d = Singletons.getMagicDb().getBoosters().get(arg1.getCode()); return new BoosterPack(arg1.getName(), d); } }; public BoosterPack(final String name0, final SealedProductTemplate boosterData) { super(name0, boosterData); - int maxIdx = Singletons.getModel().getEditions().get(boosterData.getEdition()).getCntBoosterPictures(); + int maxIdx = Singletons.getMagicDb().getEditions().get(boosterData.getEdition()).getCntBoosterPictures(); artIndex = MyRandom.getRandom().nextInt(maxIdx) + 1; hash = super.hashCode() ^ artIndex; } diff --git a/forge-gui/src/main/java/forge/item/FatPack.java b/forge-gui/src/main/java/forge/item/FatPack.java index 4d67a708da9..ae6df71b3c0 100644 --- a/forge-gui/src/main/java/forge/item/FatPack.java +++ b/forge-gui/src/main/java/forge/item/FatPack.java @@ -32,7 +32,7 @@ public class FatPack extends OpenablePack { public static final Function FN_FROM_SET = new Function() { @Override public FatPack apply(final CardEdition arg1) { - FatPackTemplate d = Singletons.getModel().getFatPacks().get(arg1.getCode()); + FatPackTemplate d = Singletons.getMagicDb().getFatPacks().get(arg1.getCode()); return new FatPack(arg1.getName(), d); } }; @@ -40,7 +40,7 @@ public class FatPack extends OpenablePack { private final FatPackTemplate fpData; public FatPack(final String name0, final FatPackTemplate fpData0) { - super(name0, Singletons.getModel().getBoosters().get(fpData0.getEdition())); + super(name0, Singletons.getMagicDb().getBoosters().get(fpData0.getEdition())); fpData = fpData0; } diff --git a/forge-gui/src/main/java/forge/item/OpenablePack.java b/forge-gui/src/main/java/forge/item/OpenablePack.java index e654adb7e21..2f15f9b54a5 100644 --- a/forge-gui/src/main/java/forge/item/OpenablePack.java +++ b/forge-gui/src/main/java/forge/item/OpenablePack.java @@ -26,8 +26,8 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; +import forge.Singletons; import forge.card.BoosterGenerator; -import forge.card.CardDb; import forge.card.CardRulesPredicates; import forge.card.SealedProductTemplate; import forge.util.Aggregates; @@ -104,6 +104,6 @@ public abstract class OpenablePack implements InventoryItemFromSet { Predicate cardsRule = Predicates.and( IPaperCard.Predicates.printedInSet(setCode), Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, PaperCard.FN_GET_RULES)); - return Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), cardsRule), count); + return Aggregates.random(Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), cardsRule), count); } } diff --git a/forge-gui/src/main/java/forge/item/PreconDeck.java b/forge-gui/src/main/java/forge/item/PreconDeck.java index 4a4d6e2facf..49fca865cd4 100644 --- a/forge-gui/src/main/java/forge/item/PreconDeck.java +++ b/forge-gui/src/main/java/forge/item/PreconDeck.java @@ -80,7 +80,7 @@ public class PreconDeck implements InventoryItemFromSet { imageFilename = kv.get("Image"); description = kv.get("Description"); String deckEdition = kv.get("set"); - this.set = deckEdition == null || Singletons.getModel().getEditions().get(deckEdition.toUpperCase()) == null ? "n/a" : deckEdition; + this.set = deckEdition == null || Singletons.getMagicDb().getEditions().get(deckEdition.toUpperCase()) == null ? "n/a" : deckEdition; this.recommendedDeals = new SellRules(sections.get("shop")); } diff --git a/forge-gui/src/main/java/forge/item/TournamentPack.java b/forge-gui/src/main/java/forge/item/TournamentPack.java index 746046bdb1a..9357da452f5 100644 --- a/forge-gui/src/main/java/forge/item/TournamentPack.java +++ b/forge-gui/src/main/java/forge/item/TournamentPack.java @@ -32,7 +32,7 @@ public class TournamentPack extends OpenablePack { public static final Function FN_FROM_SET = new Function() { @Override public TournamentPack apply(final CardEdition arg1) { - SealedProductTemplate d = Singletons.getModel().getTournamentPacks().get(arg1.getCode()); + SealedProductTemplate d = Singletons.getMagicDb().getTournamentPacks().get(arg1.getCode()); return new TournamentPack(arg1.getName(), d); } }; diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index be71b1bf860..8db507d2225 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -24,23 +24,16 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.List; - import forge.Constant; import forge.Constant.Preferences; -import forge.FThreads; +import forge.Singletons; import forge.card.CardBlock; -import forge.card.CardDb; -import forge.card.EditionCollection; -import forge.card.FatPackTemplate; -import forge.card.FormatCollection; -import forge.card.SealedProductTemplate; -import forge.card.cardfactory.CardStorageReader; +import forge.card.CardType; import forge.deck.CardCollections; import forge.error.ExceptionHandler; import forge.game.ai.AiProfileUtil; import forge.game.limited.GauntletMini; import forge.gauntlet.GauntletData; -import forge.item.PrintSheet; import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; import forge.properties.NewConstants; @@ -78,16 +71,10 @@ public class FModel { private final QuestController quest; private final CardCollections decks; - private final EditionCollection editions; - private final FormatCollection formats; - private final IStorage boosters; - private final IStorage specialBoosters; - private final IStorage tournaments; - private final IStorage fatPacks; private final IStorage blocks; private final IStorage fantasyBlocks; private final IStorage worlds; - private final IStorage printSheets; + private static FModel instance = null; @@ -146,24 +133,13 @@ public class FModel { throw new RuntimeException(exn); } + this.blocks = new StorageBase("Block definitions", new CardBlock.Reader("res/blockdata/blocks.txt", Singletons.getMagicDb().getEditions())); this.questPreferences = new QuestPreferences(); this.gauntletData = new GauntletData(); - this.editions = new EditionCollection(new File("res/editions")); - // Loads all cards (using progress bar). - FThreads.assertExecutedByEdt(false); - final CardStorageReader reader = new CardStorageReader(NewConstants.CARD_DATA_DIR, true, initWithUi ? FView.SINGLETON_INSTANCE.getSplash().getProgressBar() : null); - // this fills in our map of card names to Card instances. - CardDb.setup(reader.loadCards(), editions); - - this.formats = new FormatCollection("res/blockdata/formats.txt"); - this.boosters = new StorageBase("Boosters", editions.getBoosterGenerator()); - this.specialBoosters = new StorageBase("Special boosters", new SealedProductTemplate.Reader("res/blockdata/boosters-special.txt")); - this.tournaments = new StorageBase("Starter sets", new SealedProductTemplate.Reader("res/blockdata/starters.txt")); - this.fatPacks = new StorageBase("Fat packs", new FatPackTemplate.Reader("res/blockdata/fatpacks.txt")); - this.blocks = new StorageBase("Block definitions", new CardBlock.Reader("res/blockdata/blocks.txt", editions)); - this.fantasyBlocks = new StorageBase("Custom blocks", new CardBlock.Reader("res/blockdata/fantasyblocks.txt", editions)); + + this.fantasyBlocks = new StorageBase("Custom blocks", new CardBlock.Reader("res/blockdata/fantasyblocks.txt", Singletons.getMagicDb().getEditions())); this.worlds = new StorageBase("Quest worlds", new QuestWorld.Reader("res/quest/world/worlds.txt")); // TODO - there's got to be a better place for this...oblivion? Preferences.DEV_MODE = this.preferences.getPrefBoolean(FPref.DEV_MODE_ENABLED); @@ -177,7 +153,7 @@ public class FModel { this.decks = new CardCollections(); this.quest = new QuestController(); - this.printSheets = new StorageBase("Special print runs", new PrintSheet.Reader("res/blockdata/printsheets.txt")); + // Preload AI profiles AiProfileUtil.loadAllProfiles(); @@ -191,7 +167,7 @@ public class FModel { * Load dynamic gamedata. */ public void loadDynamicGamedata() { - if (!Constant.CardTypes.LOADED[0]) { + if (!CardType.Constant.LOADED[0]) { final List typeListFile = FileUtil.readFile(NewConstants.TYPE_LIST_FILE); List tList = null; @@ -201,43 +177,43 @@ public class FModel { final String s = typeListFile.get(i); if (s.equals("[CardTypes]")) { - tList = Constant.CardTypes.CARD_TYPES; + tList = CardType.Constant.CARD_TYPES; } else if (s.equals("[SuperTypes]")) { - tList = Constant.CardTypes.SUPER_TYPES; + tList = CardType.Constant.SUPER_TYPES; } else if (s.equals("[BasicTypes]")) { - tList = Constant.CardTypes.BASIC_TYPES; + tList = CardType.Constant.BASIC_TYPES; } else if (s.equals("[LandTypes]")) { - tList = Constant.CardTypes.LAND_TYPES; + tList = CardType.Constant.LAND_TYPES; } else if (s.equals("[CreatureTypes]")) { - tList = Constant.CardTypes.CREATURE_TYPES; + tList = CardType.Constant.CREATURE_TYPES; } else if (s.equals("[InstantTypes]")) { - tList = Constant.CardTypes.INSTANT_TYPES; + tList = CardType.Constant.INSTANT_TYPES; } else if (s.equals("[SorceryTypes]")) { - tList = Constant.CardTypes.SORCERY_TYPES; + tList = CardType.Constant.SORCERY_TYPES; } else if (s.equals("[EnchantmentTypes]")) { - tList = Constant.CardTypes.ENCHANTMENT_TYPES; + tList = CardType.Constant.ENCHANTMENT_TYPES; } else if (s.equals("[ArtifactTypes]")) { - tList = Constant.CardTypes.ARTIFACT_TYPES; + tList = CardType.Constant.ARTIFACT_TYPES; } else if (s.equals("[WalkerTypes]")) { - tList = Constant.CardTypes.WALKER_TYPES; + tList = CardType.Constant.WALKER_TYPES; } else if (s.length() > 1) { @@ -245,19 +221,19 @@ public class FModel { } } } - Constant.CardTypes.LOADED[0] = true; + CardType.Constant.LOADED[0] = true; /* * if (Constant.Runtime.DevMode[0]) { - * System.out.println(Constant.CardTypes.cardTypes[0].list); - * System.out.println(Constant.CardTypes.superTypes[0].list); - * System.out.println(Constant.CardTypes.basicTypes[0].list); - * System.out.println(Constant.CardTypes.landTypes[0].list); - * System.out.println(Constant.CardTypes.creatureTypes[0].list); - * System.out.println(Constant.CardTypes.instantTypes[0].list); - * System.out.println(Constant.CardTypes.sorceryTypes[0].list); - * System.out.println(Constant.CardTypes.enchantmentTypes[0].list); - * System.out.println(Constant.CardTypes.artifactTypes[0].list); - * System.out.println(Constant.CardTypes.walkerTypes[0].list); } + * System.out.println(CardType.Constant.cardTypes[0].list); + * System.out.println(CardType.Constant.superTypes[0].list); + * System.out.println(CardType.Constant.basicTypes[0].list); + * System.out.println(CardType.Constant.landTypes[0].list); + * System.out.println(CardType.Constant.creatureTypes[0].list); + * System.out.println(CardType.Constant.instantTypes[0].list); + * System.out.println(CardType.Constant.sorceryTypes[0].list); + * System.out.println(CardType.Constant.enchantmentTypes[0].list); + * System.out.println(CardType.Constant.artifactTypes[0].list); + * System.out.println(CardType.Constant.walkerTypes[0].list); } */ } @@ -279,12 +255,12 @@ public class FModel { } /* - * if (!Constant.Color.loaded[0]) { ArrayList lcListFile = + * if (!MagicColor.Constant.loaded[0]) { ArrayList lcListFile = * FileUtil.readFile("res/gamedata/LandColorList"); * * if (lcListFile.size() > 1) { for (int i=0; i 1) - * Constant.Color.LandColor[0].map.add(s); } } + * MagicColor.Constant.LandColor[0].map.add(s); } } * Constant.Keywords.loaded[0] = true; if (Constant.Runtime.DevMode[0]) * { System.out.println(Constant.Keywords.NonStackingList[0].list); } } */ @@ -299,6 +275,11 @@ public class FModel { return this.preferences; } + + /** @return {@link forge.util.storage.IStorageView}<{@link forge.CardBlock}> */ + public IStorage getBlocks() { + return blocks; + } /** * Gets the quest preferences. * @@ -321,25 +302,6 @@ public class FModel { return this.decks; } - /** - * TODO: Write javadoc for this method. - * - * @return the editions - */ - - public final EditionCollection getEditions() { - return this.editions; - } - - /** - * Gets the formats. - * - * @return the formats - */ - public final FormatCollection getFormats() { - return this.formats; - } - /** * Gets the game worlds. * @@ -359,39 +321,7 @@ public class FModel { logFileStream.close(); } - /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.CardBlock}> */ - public IStorage getBlocks() { - return blocks; - } - /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.CardBlock}> */ - public IStorage getFantasyBlocks() { - return fantasyBlocks; - } - - /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.FatPackTemplate}> */ - public IStorage getFatPacks() { - return fatPacks; - } - - /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.BoosterTemplate}> */ - public final IStorage getTournamentPacks() { - return tournaments; - } - - /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.BoosterTemplate}> */ - public final IStorage getBoosters() { - return boosters; - } - - public final IStorage getSpecialBoosters() { - return specialBoosters; - } - - public IStorage getPrintSheets() { - return printSheets; - } - /** * TODO: Write javadoc for this method. * @param data0 {@link forge.gauntlet.GauntletData} @@ -400,6 +330,10 @@ public class FModel { this.gauntletData = data0; } + /** @return {@link forge.util.storage.IStorageView}<{@link forge.card.CardBlock}> */ + public IStorage getFantasyBlocks() { + return fantasyBlocks; + } public GauntletMini getGauntletMini() { if (gauntlet == null) { diff --git a/forge-gui/src/main/java/forge/net/FServer.java b/forge-gui/src/main/java/forge/net/FServer.java index df5928f0e0c..4be64013417 100644 --- a/forge-gui/src/main/java/forge/net/FServer.java +++ b/forge-gui/src/main/java/forge/net/FServer.java @@ -15,7 +15,6 @@ import forge.game.Game; import forge.game.GameType; import forge.game.Match; import forge.game.RegisteredPlayer; -import forge.model.FModel; import forge.util.Lang; @@ -51,7 +50,9 @@ public enum FServer { * @param args */ public void simulateMatches(String[] args) { - Singletons.setModel(FModel.getInstance(false)); + + Singletons.initializeOnce(false); + interactiveMode = false; System.out.println("Simulation mode"); if(args.length < 3 ) { diff --git a/forge-gui/src/main/java/forge/quest/BoosterUtils.java b/forge-gui/src/main/java/forge/quest/BoosterUtils.java index b81ff2e85da..d45031e1f9a 100644 --- a/forge-gui/src/main/java/forge/quest/BoosterUtils.java +++ b/forge-gui/src/main/java/forge/quest/BoosterUtils.java @@ -29,15 +29,14 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.MagicColor; +import forge.card.PrintSheet; import forge.item.BoosterPack; import forge.item.PaperCard; import forge.item.IPaperCard; import forge.item.InventoryItem; -import forge.item.PrintSheet; import forge.item.TournamentPack; import forge.quest.data.QuestPreferences.QPref; import forge.util.Aggregates; @@ -111,7 +110,7 @@ public final class BoosterUtils { } // This will save CPU time when sets are limited - final List cardpool = Lists.newArrayList(Iterables.filter(CardDb.instance().getAllCards(), filter)); + final List cardpool = Lists.newArrayList(Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), filter)); final Predicate pCommon = IPaperCard.Predicates.Presets.IS_COMMON; cards.addAll(BoosterUtils.generateDefinetlyColouredCards(cardpool, pCommon, biasAdjustedCommons, colorFilters)); @@ -256,7 +255,7 @@ public final class BoosterUtils { PrintSheet ps = new PrintSheet("Quest rewards"); Predicate predicate = preds.size() == 1 ? preds.get(0) : Predicates.and(preds); - ps.addAll(Iterables.filter(CardDb.instance().getAllCards(), predicate)); + ps.addAll(Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), predicate)); rewards.addAll(ps.random(qty, true)); } else if (temp.length == 2 && temp[0].equalsIgnoreCase("duplicate") && temp[1].equalsIgnoreCase("card")) { // Type 2: a duplicate card of the players choice @@ -266,14 +265,14 @@ public final class BoosterUtils { rewards.add(new QuestRewardCardFiltered(temp)); } else if (temp.length >= 3 && temp[0].equalsIgnoreCase("booster") && temp[1].equalsIgnoreCase("pack")) { // Type 4: a predetermined extra booster pack - rewards.add(BoosterPack.FN_FROM_SET.apply(Singletons.getModel().getEditions().get(temp[2]))); + rewards.add(BoosterPack.FN_FROM_SET.apply(Singletons.getMagicDb().getEditions().get(temp[2]))); } else if (temp.length >= 3 && temp[0].equalsIgnoreCase("tournament") && temp[1].equalsIgnoreCase("pack")) { // Type 5: a predetermined extra tournament ("starter") pack - rewards.add(TournamentPack.FN_FROM_SET.apply(Singletons.getModel().getEditions().get(temp[2]))); + rewards.add(TournamentPack.FN_FROM_SET.apply(Singletons.getMagicDb().getEditions().get(temp[2]))); } else if (temp.length > 0) { // default: assume we are asking for a single copy of a specific card - final PaperCard specific = CardDb.instance().getCard(s); + final PaperCard specific = Singletons.getMagicDb().getCommonCards().getCard(s); if (specific != null) { rewards.add(specific); } diff --git a/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java b/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java index 765aceee428..deec88a0aca 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java @@ -28,7 +28,7 @@ import forge.Singletons; import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences.DifficultyPrefs; import forge.quest.io.QuestDuelReader; -import forge.util.maps.CollectionSuppliers; +import forge.util.CollectionSuppliers; import forge.util.maps.EnumMapOfLists; import forge.util.maps.MapOfLists; import forge.util.storage.IStorage; diff --git a/forge-gui/src/main/java/forge/quest/QuestRewardCard.java b/forge-gui/src/main/java/forge/quest/QuestRewardCard.java index 728d60a34fc..47f58cb06a5 100644 --- a/forge-gui/src/main/java/forge/quest/QuestRewardCard.java +++ b/forge-gui/src/main/java/forge/quest/QuestRewardCard.java @@ -66,7 +66,7 @@ public abstract class QuestRewardCard implements InventoryItem, IQuestRewardCard if (setcodes.length > 0) { List sets = new ArrayList(); for (String code : setcodes) { - if (Singletons.getModel().getEditions().contains(code)) { + if (Singletons.getMagicDb().getEditions().contains(code)) { // System.out.println("Set " + code + " was found!"); sets.add(code); } diff --git a/forge-gui/src/main/java/forge/quest/QuestRewardCardChooser.java b/forge-gui/src/main/java/forge/quest/QuestRewardCardChooser.java index e4b27626d20..6b9ec883ad9 100644 --- a/forge-gui/src/main/java/forge/quest/QuestRewardCardChooser.java +++ b/forge-gui/src/main/java/forge/quest/QuestRewardCardChooser.java @@ -9,10 +9,9 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.Singletons; -import forge.card.CardDb; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; +import forge.util.ItemPool; /** * Resolves a card chooser InventoryItem into a CardPrinted. @@ -108,7 +107,7 @@ public class QuestRewardCardChooser extends QuestRewardCard implements Inventory } else if (type == poolType.predicateFilter) { List cardChoices = new ArrayList(); - for (final PaperCard card : Iterables.filter(CardDb.instance().getAllCards(), predicates)) { + for (final PaperCard card : Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), predicates)) { cardChoices.add(card); } Collections.sort(cardChoices); diff --git a/forge-gui/src/main/java/forge/quest/QuestRewardCardDuplicate.java b/forge-gui/src/main/java/forge/quest/QuestRewardCardDuplicate.java index 166751569d0..c8014eac524 100644 --- a/forge-gui/src/main/java/forge/quest/QuestRewardCardDuplicate.java +++ b/forge-gui/src/main/java/forge/quest/QuestRewardCardDuplicate.java @@ -7,7 +7,7 @@ import java.util.Map; import forge.Singletons; import forge.item.PaperCard; -import forge.item.ItemPool; +import forge.util.ItemPool; /** * Allows the player to choose a duplicate copy of a currently owned card. diff --git a/forge-gui/src/main/java/forge/quest/QuestRewardCardFiltered.java b/forge-gui/src/main/java/forge/quest/QuestRewardCardFiltered.java index e8ca07cb787..b46ae1d4449 100644 --- a/forge-gui/src/main/java/forge/quest/QuestRewardCardFiltered.java +++ b/forge-gui/src/main/java/forge/quest/QuestRewardCardFiltered.java @@ -7,7 +7,7 @@ import java.util.List; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import forge.card.CardDb; +import forge.Singletons; import forge.item.PaperCard; /** @@ -58,7 +58,7 @@ public class QuestRewardCardFiltered extends QuestRewardCard implements IQuestRe @Override public final List getChoices() { List cardChoices = new ArrayList(); - for (final PaperCard card : Iterables.filter(CardDb.instance().getAllCards(), predicates)) { + for (final PaperCard card : Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), predicates)) { cardChoices.add(card); } Collections.sort(cardChoices); diff --git a/forge-gui/src/main/java/forge/quest/QuestUtil.java b/forge-gui/src/main/java/forge/quest/QuestUtil.java index 75cd66a590e..daecf80fbf5 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtil.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtil.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.List; import forge.Card; -import forge.card.CardDb; +import forge.Singletons; import forge.card.CardEdition; import forge.card.CardRulesReader; import forge.item.PaperToken; @@ -167,7 +167,7 @@ public class QuestUtil { return tempcard; } // Standard card creation - return CardDb.instance().getCard(name, true); + return Singletons.getMagicDb().getCommonCards().getCard(name, true); } } // QuestUtil diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java index 35da3274b6f..ad632218912 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java @@ -29,14 +29,15 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.Constant; import forge.Singletons; import forge.card.BoosterGenerator; -import forge.card.CardDb; +import forge.card.BoosterSlots; import forge.card.CardEdition; +import forge.card.CardEditionPredicates; import forge.card.CardRarity; import forge.card.FormatCollection; import forge.card.ICardDatabase; +import forge.card.MagicColor; import forge.card.SealedProductTemplate; import forge.card.UnOpenedProduct; import forge.deck.Deck; @@ -46,8 +47,6 @@ import forge.item.PaperCard; import forge.item.FatPack; import forge.item.IPaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.item.OpenablePack; import forge.item.PreconDeck; import forge.item.TournamentPack; @@ -58,6 +57,8 @@ import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences.DifficultyPrefs; import forge.quest.data.QuestPreferences.QPref; import forge.util.Aggregates; +import forge.util.ItemPool; +import forge.util.ItemPoolView; import forge.util.MyRandom; /** @@ -90,7 +91,7 @@ public final class QuestUtilCards { * @return the item pool view */ public static ItemPoolView generateBasicLands(final int nBasic, final int nSnow, final GameFormatQuest usedFormat) { - final ICardDatabase db = CardDb.instance(); + final ICardDatabase db = Singletons.getMagicDb().getCommonCards(); final ItemPool pool = new ItemPool(PaperCard.class); List landCodes = new ArrayList(); @@ -100,9 +101,9 @@ public final class QuestUtilCards { List availableEditions = usedFormat.getAllowedSetCodes(); for (String edCode : availableEditions) { - CardEdition ed = Singletons.getModel().getEditions().get(edCode); + CardEdition ed = Singletons.getMagicDb().getEditions().get(edCode); // Duel decks might have only 2 types of basic lands - if (CardEdition.Predicates.hasBasicLands.apply(ed)) { + if (CardEditionPredicates.hasBasicLands.apply(ed)) { landCodes.add(edCode); } } @@ -113,8 +114,8 @@ public final class QuestUtilCards { snowLandCodes.add("CSP"); } } else { - Iterable allEditions = Singletons.getModel().getEditions(); - for (CardEdition edition : Iterables.filter(allEditions, CardEdition.Predicates.hasBasicLands)) { + Iterable allEditions = Singletons.getMagicDb().getEditions(); + for (CardEdition edition : Iterables.filter(allEditions, CardEditionPredicates.hasBasicLands)) { landCodes.add(edition.getCode()); } snowLandCodes.add("ICE"); @@ -126,14 +127,14 @@ public final class QuestUtilCards { landCode = "M10"; } - for (String landName : Constant.Color.BASIC_LANDS) { + for (String landName : MagicColor.Constant.BASIC_LANDS) { pool.add(db.getCard(landName, landCode), nBasic); } if (!snowLandCodes.isEmpty()) { String snowLandCode = Aggregates.random(snowLandCodes); - for (String landName : Constant.Color.SNOW_LANDS) { + for (String landName : MagicColor.Constant.SNOW_LANDS) { pool.add(db.getCard(landName, snowLandCode), nSnow); } } @@ -204,7 +205,7 @@ public final class QuestUtilCards { final Predicate myFilter = applyFormatFilter(QuestUtilCards.RARE_PREDICATE); - final PaperCard card = Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), myFilter)); + final PaperCard card = Aggregates.random(Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), myFilter)); this.addSingleCard(card, 1); return card; } @@ -219,7 +220,7 @@ public final class QuestUtilCards { public List addRandomRare(final int n) { final Predicate myFilter = applyFormatFilter(QuestUtilCards.RARE_PREDICATE); - final List newCards = Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), myFilter), n); + final List newCards = Aggregates.random(Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), myFilter), n); this.addAllCards(newCards); return newCards; } @@ -429,21 +430,21 @@ public final class QuestUtilCards { /** * Generate cards in shop. */ - private final FormatCollection formats = Singletons.getModel().getFormats(); - private final Predicate filterExt = CardEdition.Predicates.isLegalInFormat(this.formats.getExtended()); + private final FormatCollection formats = Singletons.getMagicDb().getFormats(); + private final Predicate filterExt = CardEditionPredicates.isLegalInFormat(this.formats.getExtended()); /** The filter t2booster. */ - private final Predicate filterT2booster = Predicates.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, - CardEdition.Predicates.isLegalInFormat(this.formats.getStandard())); + private final Predicate filterT2booster = Predicates.and(CardEditionPredicates.CAN_MAKE_BOOSTER, + CardEditionPredicates.isLegalInFormat(this.formats.getStandard())); /** The filter ext but t2. */ private final Predicate filterExtButT2 = Predicates.and( - CardEdition.Predicates.CAN_MAKE_BOOSTER, + CardEditionPredicates.CAN_MAKE_BOOSTER, Predicates.and(this.filterExt, - Predicates.not(CardEdition.Predicates.isLegalInFormat(this.formats.getStandard())))); + Predicates.not(CardEditionPredicates.isLegalInFormat(this.formats.getStandard())))); /** The filter not ext. */ - private final Predicate filterNotExt = Predicates.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, + private final Predicate filterNotExt = Predicates.and(CardEditionPredicates.CAN_MAKE_BOOSTER, Predicates.not(this.filterExt)); /** @@ -469,9 +470,9 @@ public final class QuestUtilCards { Predicate filter = rollD100 < 40 ? this.filterT2booster : (rollD100 < 75 ? this.filterExtButT2 : this.filterNotExt); if (qc.getFormat() != null) { - filter = Predicates.and(CardEdition.Predicates.CAN_MAKE_BOOSTER, isLegalInQuestFormat(qc.getFormat())); + filter = Predicates.and(CardEditionPredicates.CAN_MAKE_BOOSTER, isLegalInQuestFormat(qc.getFormat())); } - Iterable rightEditions = Iterables.filter(Singletons.getModel().getEditions(), filter); + Iterable rightEditions = Iterables.filter(Singletons.getMagicDb().getEditions(), filter); this.qa.getShopList().add(BoosterPack.FN_FROM_SET.apply(Aggregates.random(rightEditions))); } } @@ -483,11 +484,11 @@ public final class QuestUtilCards { * the count */ private void generateTournamentsInShop(final int count) { - Predicate formatFilter = CardEdition.Predicates.HAS_TOURNAMENT_PACK; + Predicate formatFilter = CardEditionPredicates.HAS_TOURNAMENT_PACK; if (qc.getFormat() != null) { formatFilter = Predicates.and(formatFilter, isLegalInQuestFormat(qc.getFormat())); } - Iterable rightEditions = Iterables.filter(Singletons.getModel().getEditions(), formatFilter); + Iterable rightEditions = Iterables.filter(Singletons.getMagicDb().getEditions(), formatFilter); this.qa.getShopList().addAllFlat(Aggregates.random(Iterables.transform(rightEditions, TournamentPack.FN_FROM_SET), count)); } @@ -498,11 +499,11 @@ public final class QuestUtilCards { * the count */ private void generateFatPacksInShop(final int count) { - Predicate formatFilter = CardEdition.Predicates.HAS_FAT_PACK; + Predicate formatFilter = CardEditionPredicates.HAS_FAT_PACK; if (qc.getFormat() != null) { formatFilter = Predicates.and(formatFilter, isLegalInQuestFormat(qc.getFormat())); } - Iterable rightEditions = Iterables.filter(Singletons.getModel().getEditions(), formatFilter); + Iterable rightEditions = Iterables.filter(Singletons.getMagicDb().getEditions(), formatFilter); this.qa.getShopList().addAllFlat(Aggregates.random(Iterables.transform(rightEditions, FatPack.FN_FROM_SET), count)); } @@ -526,18 +527,18 @@ public final class QuestUtilCards { @SuppressWarnings("unchecked") private SealedProductTemplate getShopBoosterTemplate() { return new SealedProductTemplate(Lists.newArrayList( - Pair.of(BoosterGenerator.COMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_COMMON)), - Pair.of(BoosterGenerator.UNCOMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_UNCOMMON)), - Pair.of(BoosterGenerator.RARE_MYTHIC, this.qpref.getPrefInt(QPref.SHOP_SINGLES_RARE)) + Pair.of(BoosterSlots.COMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_COMMON)), + Pair.of(BoosterSlots.UNCOMMON, this.qpref.getPrefInt(QPref.SHOP_SINGLES_UNCOMMON)), + Pair.of(BoosterSlots.RARE_MYTHIC, this.qpref.getPrefInt(QPref.SHOP_SINGLES_RARE)) )); } @SuppressWarnings("unchecked") private SealedProductTemplate getBoosterTemplate() { return new SealedProductTemplate(Lists.newArrayList( - Pair.of(BoosterGenerator.COMMON, this.qpref.getPrefInt(QPref.BOOSTER_COMMONS)), - Pair.of(BoosterGenerator.UNCOMMON, this.qpref.getPrefInt(QPref.BOOSTER_UNCOMMONS)), - Pair.of(BoosterGenerator.RARE_MYTHIC, this.qpref.getPrefInt(QPref.BOOSTER_RARES)) + Pair.of(BoosterSlots.COMMON, this.qpref.getPrefInt(QPref.BOOSTER_COMMONS)), + Pair.of(BoosterSlots.UNCOMMON, this.qpref.getPrefInt(QPref.BOOSTER_UNCOMMONS)), + Pair.of(BoosterSlots.RARE_MYTHIC, this.qpref.getPrefInt(QPref.BOOSTER_RARES)) )); } @@ -654,7 +655,7 @@ public final class QuestUtilCards { public int getCompletionPercent(String edition) { // get all cards in the specified edition Predicate filter = IPaperCard.Predicates.printedInSet(edition); - Iterable editionCards = Iterables.filter(CardDb.instance().getAllCards(), filter); + Iterable editionCards = Iterables.filter(Singletons.getMagicDb().getCommonCards().getAllCards(), filter); ItemPool ownedCards = qa.getCardPool(); // 100% means at least one of every basic land and at least 4 of every other card in the set diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilUnlockSets.java b/forge-gui/src/main/java/forge/quest/QuestUtilUnlockSets.java index 19204b7876b..36353c4ab24 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtilUnlockSets.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtilUnlockSets.java @@ -133,11 +133,11 @@ public class QuestUtilUnlockSets { List options = new ArrayList(); // Sort current sets by date - List allowedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getAllowedSetCodes(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE)); + List allowedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getAllowedSetCodes(), Singletons.getMagicDb().getEditions().FN_EDITION_BY_CODE)); Collections.sort(allowedSets); // Sort unlockable sets by date - List excludedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getLockedSets(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE)); + List excludedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getLockedSets(), Singletons.getMagicDb().getEditions().FN_EDITION_BY_CODE)); Collections.sort(excludedSets); // get a number of sets between an excluded and any included set @@ -182,8 +182,8 @@ public class QuestUtilUnlockSets { */ public static void doUnlock(QuestController qData, final CardEdition unlockedSet) { - IStorage starters = Singletons.getModel().getTournamentPacks(); - IStorage boosters = Singletons.getModel().getBoosters(); + IStorage starters = Singletons.getMagicDb().getTournamentPacks(); + IStorage boosters = Singletons.getMagicDb().getBoosters(); qData.getFormat().unlockSet(unlockedSet.getCode()); List cardsWon = new ArrayList(); diff --git a/forge-gui/src/main/java/forge/quest/data/GameFormatQuest.java b/forge-gui/src/main/java/forge/quest/data/GameFormatQuest.java index a2bab1c49fc..04df85d125c 100644 --- a/forge-gui/src/main/java/forge/quest/data/GameFormatQuest.java +++ b/forge-gui/src/main/java/forge/quest/data/GameFormatQuest.java @@ -82,7 +82,7 @@ public final class GameFormatQuest extends GameFormat { return exSets; } - for (CardEdition ce : Singletons.getModel().getEditions()) { + for (CardEdition ce : Singletons.getMagicDb().getEditions()) { if (!isSetLegal(ce.getCode())) { exSets.add(ce.getCode()); } diff --git a/forge-gui/src/main/java/forge/quest/data/QuestAssets.java b/forge-gui/src/main/java/forge/quest/data/QuestAssets.java index afe7335c58f..6c1a3bcaa52 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestAssets.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestAssets.java @@ -25,13 +25,13 @@ import forge.Singletons; import forge.deck.Deck; import forge.item.PaperCard; import forge.item.InventoryItem; -import forge.item.ItemPool; -import forge.item.ItemPoolView; import forge.quest.QuestDeckMap; import forge.quest.QuestMode; import forge.quest.QuestUtilCards; import forge.quest.bazaar.QuestItemType; import forge.quest.data.QuestPreferences.QPref; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** */ public class QuestAssets { diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index fe81f43b7fc..1e81b9dd5e1 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -54,7 +54,6 @@ import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import forge.Singletons; -import forge.card.CardDb; import forge.card.CardEdition; import forge.deck.CardPool; import forge.deck.Deck; @@ -64,7 +63,6 @@ import forge.item.BoosterPack; import forge.item.PaperCard; import forge.item.FatPack; import forge.item.InventoryItem; -import forge.item.ItemPool; import forge.item.PreconDeck; import forge.item.TournamentPack; import forge.properties.NewConstants; @@ -77,6 +75,7 @@ import forge.quest.data.QuestAssets; import forge.quest.data.QuestData; import forge.quest.data.QuestItemCondition; import forge.util.IgnoringXStream; +import forge.util.ItemPool; import forge.util.XmlUtil; /** @@ -539,7 +538,7 @@ public class QuestDataIO { final int cnt = StringUtils.isNumeric(sCnt) ? Integer.parseInt(sCnt) : 1; final String nodename = reader.getNodeName(); if ("string".equals(nodename)) { - pool.add(CardDb.instance().getCard(reader.getValue())); + pool.add(Singletons.getMagicDb().getCommonCards().getCard(reader.getValue())); } else if ("card".equals(nodename)) { // new format pool.add(this.readCardPrinted(reader), cnt); } @@ -633,7 +632,7 @@ public class QuestDataIO { final String nodename = reader.getNodeName(); if ("string".equals(nodename)) { - result.add(CardDb.instance().getCard(reader.getValue())); + result.add(Singletons.getMagicDb().getCommonCards().getCard(reader.getValue())); } else if ("card".equals(nodename)) { // new format result.add(this.readCardPrinted(reader), cnt); } else if ("booster".equals(nodename)) { @@ -662,17 +661,17 @@ public class QuestDataIO { } protected BoosterPack readBooster(final HierarchicalStreamReader reader) { - final CardEdition ed = Singletons.getModel().getEditions().get(reader.getAttribute("s")); + final CardEdition ed = Singletons.getMagicDb().getEditions().get(reader.getAttribute("s")); return BoosterPack.FN_FROM_SET.apply(ed); } protected TournamentPack readTournamentPack(final HierarchicalStreamReader reader) { - final CardEdition ed = Singletons.getModel().getEditions().get(reader.getAttribute("s")); + final CardEdition ed = Singletons.getMagicDb().getEditions().get(reader.getAttribute("s")); return TournamentPack.FN_FROM_SET.apply(ed); } protected FatPack readFatPack(final HierarchicalStreamReader reader) { - final CardEdition ed = Singletons.getModel().getEditions().get(reader.getAttribute("s")); + final CardEdition ed = Singletons.getMagicDb().getEditions().get(reader.getAttribute("s")); return FatPack.FN_FROM_SET.apply(ed); } @@ -682,9 +681,9 @@ public class QuestDataIO { final String sIndex = reader.getAttribute("i"); final short index = StringUtils.isNumeric(sIndex) ? Short.parseShort(sIndex) : 0; final boolean foil = "1".equals(reader.getAttribute("foil")); - PaperCard c = CardDb.instance().tryGetCard(name, set, index); - if ( null == c ) c = CardDb.instance().getCard(name); - return foil ? CardDb.instance().getFoiled(c) : c; + PaperCard c = Singletons.getMagicDb().getCommonCards().tryGetCard(name, set, index); + if ( null == c ) c = Singletons.getMagicDb().getCommonCards().getCard(name); + return foil ? Singletons.getMagicDb().getCommonCards().getFoiled(c) : c; } } } diff --git a/forge-gui/src/main/java/forge/quest/io/ReadPriceList.java b/forge-gui/src/main/java/forge/quest/io/ReadPriceList.java index 7bf77b0a933..c0e42477980 100644 --- a/forge-gui/src/main/java/forge/quest/io/ReadPriceList.java +++ b/forge-gui/src/main/java/forge/quest/io/ReadPriceList.java @@ -24,7 +24,7 @@ import java.util.Random; import com.esotericsoftware.minlog.Log; -import forge.Constant; +import forge.card.MagicColor; import forge.properties.NewConstants; import forge.util.FileUtil; import forge.util.MyRandom; @@ -94,7 +94,7 @@ public class ReadPriceList { try { int val = Integer.parseInt(price.trim()); - if (!(Constant.Color.BASIC_LANDS.contains(name) || Constant.Color.SNOW_LANDS.contains(name))) { + if (!(MagicColor.Constant.BASIC_LANDS.contains(name) || MagicColor.Constant.SNOW_LANDS.contains(name))) { float ff = 0; if (r.nextInt(100) < 90) { ff = r.nextInt(10) * (float) .01; diff --git a/forge-gui/src/main/java/forge/view/Main.java b/forge-gui/src/main/java/forge/view/Main.java index 5a5f5911c30..1d847ebcf6a 100644 --- a/forge-gui/src/main/java/forge/view/Main.java +++ b/forge-gui/src/main/java/forge/view/Main.java @@ -19,8 +19,6 @@ package forge.view; import forge.Singletons; import forge.card.cardfactory.CardStorageReader; -import forge.control.FControl; -import forge.model.FModel; import forge.net.FServer; /** @@ -39,9 +37,7 @@ public final class Main { // Start splash screen first, then data models, then controller. if (args.length == 0) { - Singletons.setView(FView.SINGLETON_INSTANCE); - Singletons.setModel(FModel.getInstance(true)); - Singletons.setControl(FControl.instance); + Singletons.initializeOnce(true); // Controller can now step in and take over. Singletons.getControl().initialize(); diff --git a/forge-gui/src/main/java/forge/view/arcane/CardPanel.java b/forge-gui/src/main/java/forge/view/arcane/CardPanel.java index e6ad5dc508d..5c87a052de1 100644 --- a/forge-gui/src/main/java/forge/view/arcane/CardPanel.java +++ b/forge-gui/src/main/java/forge/view/arcane/CardPanel.java @@ -333,7 +333,7 @@ public class CardPanel extends JPanel implements CardContainer { // White border if card is known to have it. if (this.getGameCard() != null && !this.getGameCard().isFaceDown()) { - CardEdition ed = Singletons.getModel().getEditions().get(this.getGameCard().getCurSetCode()); + CardEdition ed = Singletons.getMagicDb().getEditions().get(this.getGameCard().getCurSetCode()); if (ed != null && ed.isWhiteBorder() && this.getGameCard().getFoil() == 0) { g2d.setColor(Color.white); int ins = 1; diff --git a/forge-gui/src/test/java/forge/BoosterDraft1Test.java b/forge-gui/src/test/java/forge/BoosterDraft1Test.java index ea99070d02e..0329f4fd131 100644 --- a/forge-gui/src/test/java/forge/BoosterDraft1Test.java +++ b/forge-gui/src/test/java/forge/BoosterDraft1Test.java @@ -5,7 +5,7 @@ import org.testng.annotations.Test; import forge.game.limited.BoosterDraft; import forge.game.limited.LimitedPoolType; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** * Unit test for simple App. diff --git a/forge-gui/src/test/java/forge/BoosterDraftTest.java b/forge-gui/src/test/java/forge/BoosterDraftTest.java index a98debf707a..92cb7fa6401 100644 --- a/forge-gui/src/test/java/forge/BoosterDraftTest.java +++ b/forge-gui/src/test/java/forge/BoosterDraftTest.java @@ -9,8 +9,8 @@ import forge.card.SealedProductTemplate; import forge.deck.Deck; import forge.game.limited.IBoosterDraft; import forge.item.PaperCard; -import forge.item.ItemPool; -import forge.item.ItemPoolView; +import forge.util.ItemPool; +import forge.util.ItemPoolView; /** *

@@ -49,7 +49,7 @@ public class BoosterDraftTest implements IBoosterDraft { @Override public ItemPoolView nextChoice() { this.n--; - SealedProductTemplate booster = Singletons.getModel().getBoosters().get("M11"); + SealedProductTemplate booster = Singletons.getMagicDb().getBoosters().get("M11"); return ItemPool.createFrom(BoosterGenerator.getBoosterPack(booster), PaperCard.class); } diff --git a/forge-gui/src/test/java/forge/RunTest.java b/forge-gui/src/test/java/forge/RunTest.java index 6846619de02..963d1bf4165 100644 --- a/forge-gui/src/test/java/forge/RunTest.java +++ b/forge-gui/src/test/java/forge/RunTest.java @@ -53,74 +53,74 @@ public class RunTest { // ********* test ManaCost ManaCost manaCost = new ManaCost("G"); this.check("21", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("22", manaCost.isPaid()); manaCost = new ManaCost("7"); this.check("23", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLACK); + manaCost.payMana(MagicColor.Constant.BLACK); this.check("24", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("25", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.COLORLESS); + manaCost.payMana(MagicColor.Constant.COLORLESS); this.check("26", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("27", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.RED); + manaCost.payMana(MagicColor.Constant.RED); this.check("28", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.WHITE); + manaCost.payMana(MagicColor.Constant.WHITE); this.check("29", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.WHITE); + manaCost.payMana(MagicColor.Constant.WHITE); this.check("30", manaCost.isPaid()); manaCost = new ManaCost("2 W W G G B B U U R R"); this.check("31", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.WHITE); + manaCost.payMana(MagicColor.Constant.WHITE); this.check("32", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.WHITE); + manaCost.payMana(MagicColor.Constant.WHITE); this.check("32.1", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLACK); + manaCost.payMana(MagicColor.Constant.BLACK); this.check("33", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLACK); + manaCost.payMana(MagicColor.Constant.BLACK); this.check("34", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("35", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("36", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("37", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("38", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.RED); + manaCost.payMana(MagicColor.Constant.RED); this.check("39", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.RED); + manaCost.payMana(MagicColor.Constant.RED); this.check("40", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.RED); + manaCost.payMana(MagicColor.Constant.RED); this.check("41", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("42", manaCost.isPaid()); manaCost = new ManaCost("G G"); this.check("43", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("44", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.GREEN); + manaCost.payMana(MagicColor.Constant.GREEN); this.check("45", manaCost.isPaid()); manaCost = new ManaCost("1 U B"); this.check("45", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLACK); + manaCost.payMana(MagicColor.Constant.BLACK); this.check("46", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("47", !manaCost.isPaid()); - manaCost.payMana(Constant.Color.BLUE); + manaCost.payMana(MagicColor.Constant.BLUE); this.check("48", manaCost.isPaid()); // ********* test CardUtil.getColors() c = new Card(); c.setManaCost(new CardManaCost(new ManaCostParser("G"))); ArrayList color = CardUtil.getColors(c); - this.check("49", color.contains(Constant.Color.GREEN)); + this.check("49", color.contains(MagicColor.Constant.GREEN)); this.check("50", color.size() == 1); c = new Card(); @@ -129,38 +129,38 @@ public class RunTest { final Set set = new HashSet(color); System.out.println("color: " + color); this.check("51", set.size() == 5); - this.check("52", color.contains(Constant.Color.BLACK)); - this.check("53", color.contains(Constant.Color.BLUE)); - this.check("54", color.contains(Constant.Color.GREEN)); - this.check("55", color.contains(Constant.Color.RED)); - this.check("56", color.contains(Constant.Color.WHITE)); + this.check("52", color.contains(MagicColor.Constant.BLACK)); + this.check("53", color.contains(MagicColor.Constant.BLUE)); + this.check("54", color.contains(MagicColor.Constant.GREEN)); + this.check("55", color.contains(MagicColor.Constant.RED)); + this.check("56", color.contains(MagicColor.Constant.WHITE)); c = new Card(); c.setManaCost(new CardManaCost(new ManaCostParser("2"))); color = CardUtil.getColors(c); this.check("57", color.size() == 1); - this.check("58", color.contains(Constant.Color.COLORLESS)); + this.check("58", color.contains(MagicColor.Constant.COLORLESS)); c = new Card(); color = CardUtil.getColors(c); this.check("59", color.size() == 1); - this.check("60", color.contains(Constant.Color.COLORLESS)); + this.check("60", color.contains(MagicColor.Constant.COLORLESS)); c = new Card(); c.setManaCost(new CardManaCost(new ManaCostParser(""))); color = CardUtil.getColors(c); this.check("61", color.size() == 1); - this.check("62", color.contains(Constant.Color.COLORLESS)); + this.check("62", color.contains(MagicColor.Constant.COLORLESS)); c = cf.getCard("Bayou", null); color = CardUtil.getColors(c); this.check("63", color.size() == 1); - this.check("64", color.contains(Constant.Color.COLORLESS)); + this.check("64", color.contains(MagicColor.Constant.COLORLESS)); c = cf.getCard("Elvish Warrior", null); color = CardUtil.getColors(c); this.check("65", color.size() == 1); - this.check("66", color.contains(Constant.Color.GREEN)); + this.check("66", color.contains(MagicColor.Constant.GREEN)); c = new Card(); c.setManaCost(new CardManaCost(new ManaCostParser("11 W W B B U U R R G G"))); @@ -172,7 +172,7 @@ public class RunTest { c.setManaCost(new CardManaCost(new ManaCostParser("11"))); color = CardUtil.getColors(c); this.check("68", color.size() == 1); - this.check("69", color.contains(Constant.Color.COLORLESS)); + this.check("69", color.contains(MagicColor.Constant.COLORLESS)); this.check("70", c.isCreature()); this.check("71", !c.isArtifact()); @@ -210,27 +210,27 @@ public class RunTest { this.check("97", c.isUntapped()); // test Input_PayManaCostUtil - this.check("98", InputPayManaCostUtil.getLongColorString("G").equals(Constant.Color.GREEN)); - this.check("99", InputPayManaCostUtil.getLongColorString("1").equals(Constant.Color.COLORLESS)); + this.check("98", InputPayManaCostUtil.getLongColorString("G").equals(MagicColor.Constant.GREEN)); + this.check("99", InputPayManaCostUtil.getLongColorString("1").equals(MagicColor.Constant.COLORLESS)); */ /* - * check("101", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Green, + * check("101", Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Green, * new ManaCost("5")) == true); check("102", - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.Blue, new + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Blue, new * ManaCost("4")) == true); check("103", - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.White, new + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.White, new * ManaCost("3")) == true); check("104", - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.Black, new + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Black, new * ManaCost("2")) == true); check("105", - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.Red, new + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Red, new * ManaCost("1")) == true); */ /* * ManaCost cost = new ManaCost("1 B B"); - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.Black, cost); - * cost.subtractMana(Constant.Color.Black); - * cost.subtractMana(Constant.Color.Green); check("106", - * Input_PayManaCostUtil.isManaNeeded(Constant.Color.Green, cost) == + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Black, cost); + * cost.subtractMana(MagicColor.Constant.Black); + * cost.subtractMana(MagicColor.Constant.Green); check("106", + * Input_PayManaCostUtil.isManaNeeded(MagicColor.Constant.Green, cost) == * false); */ diff --git a/forge-gui/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java b/forge-gui/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java index 0ddac83f8a3..710d77bec36 100644 --- a/forge-gui/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java +++ b/forge-gui/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java @@ -4,7 +4,7 @@ import org.testng.Assert; import org.testng.annotations.Test; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** * Created by IntelliJ IDEA. User: dhudson diff --git a/forge-gui/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java b/forge-gui/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java index 6ed489c16a0..0000138366f 100644 --- a/forge-gui/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java +++ b/forge-gui/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java @@ -4,7 +4,7 @@ import org.testng.Assert; import org.testng.annotations.Test; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** * Created by IntelliJ IDEA. User: dhudson diff --git a/forge-gui/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java b/forge-gui/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java index e9ed91e3bd5..ba16c147a9f 100644 --- a/forge-gui/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java +++ b/forge-gui/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java @@ -4,7 +4,7 @@ import org.testng.Assert; import org.testng.annotations.Test; import forge.item.PaperCard; -import forge.item.ItemPoolView; +import forge.util.ItemPoolView; /** * Created by IntelliJ IDEA. User: dhudson diff --git a/forge-gui/src/test/java/forge/item/DeckHintsTest.java b/forge-gui/src/test/java/forge/item/DeckHintsTest.java index a890b537f43..cd264a77d1b 100644 --- a/forge-gui/src/test/java/forge/item/DeckHintsTest.java +++ b/forge-gui/src/test/java/forge/item/DeckHintsTest.java @@ -138,7 +138,7 @@ public class DeckHintsTest { crr.parseLine(line); } // Don't care what the actual set or rarity is here. - return new PaperCard(crr.createCardRules(), "M11", CardRarity.Common, 0); + return new PaperCard(crr.getCard(), "M11", CardRarity.Common, 0); } }