diff --git a/.gitattributes b/.gitattributes index 4cb92c05b4b..5203190fdc4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9655,6 +9655,7 @@ src/main/java/forge/UndoCommand.java svneol=native#text/plain src/main/java/forge/Upkeep.java svneol=native#text/plain src/main/java/forge/ZCTrigger.java svneol=native#text/plain src/main/java/forge/card/BoosterGenerator.java svneol=native#text/plain +src/main/java/forge/card/BoosterUtils.java svneol=native#text/plain src/main/java/forge/card/CardBlock.java -text src/main/java/forge/card/CardColor.java -text src/main/java/forge/card/CardCoreType.java -text @@ -9668,8 +9669,6 @@ src/main/java/forge/card/CardSet.java -text src/main/java/forge/card/CardSuperType.java -text src/main/java/forge/card/CardType.java -text src/main/java/forge/card/MtgDataParser.java -text -src/main/java/forge/card/QuestBoosterPack.java svneol=native#text/plain -src/main/java/forge/card/ReadBoosterPack.java svneol=native#text/plain src/main/java/forge/card/abilityFactory/AbilityFactory.java svneol=native#text/plain src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java svneol=native#text/plain src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java svneol=native#text/plain @@ -9874,7 +9873,7 @@ src/main/java/forge/gui/input/Input_PayManaCostUtil.java svneol=native#text/plai src/main/java/forge/gui/input/Input_PayManaCost_Ability.java svneol=native#text/plain src/main/java/forge/gui/input/package-info.java svneol=native#text/plain src/main/java/forge/gui/package-info.java svneol=native#text/plain -src/main/java/forge/item/Booster.java -text +src/main/java/forge/item/BoosterPack.java -text src/main/java/forge/item/CardDb.java -text src/main/java/forge/item/CardPrinted.java -text src/main/java/forge/item/InventoryItem.java -text @@ -9995,7 +9994,6 @@ src/test/java/forge/GuiQuestOptionsTest.java svneol=native#text/plain src/test/java/forge/GuiWinLoseTest.java svneol=native#text/plain src/test/java/forge/PanelTest.java svneol=native#text/plain src/test/java/forge/PhaseTest.java svneol=native#text/plain -src/test/java/forge/ReadBoosterPackTest.java svneol=native#text/plain src/test/java/forge/ReadQuestAssignmentTest.java svneol=native#text/plain src/test/java/forge/RunTest.java svneol=native#text/plain src/test/java/forge/TinyTest.java svneol=native#text/plain diff --git a/src/main/java/forge/card/BoosterGenerator.java b/src/main/java/forge/card/BoosterGenerator.java index 40f51e9c042..bb72c894adc 100644 --- a/src/main/java/forge/card/BoosterGenerator.java +++ b/src/main/java/forge/card/BoosterGenerator.java @@ -43,8 +43,8 @@ public class BoosterGenerator { private final List mythics = new ArrayList(); private final List specials = new ArrayList(); - private List commonCreatures; - private List commonNonCreatures; + //private List commonCreatures; + //private List commonNonCreatures; private static final List emptyList = Collections.unmodifiableList( new ArrayList(0) ); @@ -70,14 +70,6 @@ public class BoosterGenerator { public BoosterGenerator(Deck dPool) { - /* - //DeckManager dio = new DeckManager(ForgeProps.getFile(NewConstants.NEW_DECKS)); - DeckManager dio = AllZone.getDeckManager(); - Deck dPool = dio.getDeck(deckFile); - if (dPool == null) { - throw new RuntimeException("BoosterGenerator : deck not found - " + deckFile); - }*/ - for (Entry e : dPool.getMain()) { addToRarity(e.getKey()); } } @@ -177,19 +169,18 @@ public class BoosterGenerator { public final List getBoosterPack() { - return getBoosterPack(numCommons, 0, 0, numUncommons, numRareSlots, 0, 0, numSpecials, 0); + return getBoosterPack(numCommons, numUncommons, numRareSlots, 0, 0, numSpecials, 0); } /** - *

getBoosterPack.

- * - * @return a {@link forge.CardList} object. + * So many parameters needed for custom limited cardpools, */ - public final List getBoosterPack(final int nCom, final int nComCreat, final int nComNonCr, final int nUnc, - final int nRareSlots, final int nRares, final int nMythics, final int nSpecs, final int nAnyCard) { + public final List getBoosterPack(final int nCom, final int nUnc, final int nRareSlots, + final int nRares, final int nMythics, final int nSpecs, final int nAnyCard) { List temp = new ArrayList(); temp.addAll(pickRandomCards(commons, nCom)); + /* if( nComCreat > 0 || nComNonCr > 0) { if (commonNonCreatures.isEmpty()) { CardRules.Predicates.Presets.isCreature.split(commons, CardPrinted.fnGetRules, commonCreatures, commonNonCreatures); @@ -197,6 +188,7 @@ public class BoosterGenerator { temp.addAll(pickRandomCards(commonCreatures, nComCreat)); temp.addAll(pickRandomCards(commonNonCreatures, nComNonCr)); } + */ temp.addAll(pickRandomCards(uncommons, nUnc)); diff --git a/src/main/java/forge/card/QuestBoosterPack.java b/src/main/java/forge/card/BoosterUtils.java similarity index 87% rename from src/main/java/forge/card/QuestBoosterPack.java rename to src/main/java/forge/card/BoosterUtils.java index 871eea1925e..38afcc49340 100644 --- a/src/main/java/forge/card/QuestBoosterPack.java +++ b/src/main/java/forge/card/BoosterUtils.java @@ -1,5 +1,7 @@ package forge.card; +import forge.Constant; +import forge.MyRandom; import forge.item.CardDb; import forge.item.CardPrinted; @@ -18,7 +20,7 @@ import net.slightlymagic.maxmtg.Predicate; * @author Forge * @version $Id$ */ -public final class QuestBoosterPack { +public final class BoosterUtils { public static List getQuestStarterDeck(final Predicate filter, final int numCommon, final int numUncommon, final int numRare) @@ -106,7 +108,7 @@ public final class QuestBoosterPack { } // Left if only for backwards compatibility - public List generateCards(final int num, final CardRarity rarity, final String color) { + public static List generateCards(final int num, final CardRarity rarity, final String color) { Predicate whatYouWant = getPredicateForConditions(rarity, color); return generateDistinctCards(CardDb.instance().getAllUniqueCards(), whatYouWant, num); } @@ -176,6 +178,23 @@ public final class QuestBoosterPack { return Predicate.and(rFilter, colorFilter, CardPrinted.fnGetRules); } + //return List of 5 or 6 cards, one for each color and maybe an artifact + public static List getVariety(List in) { + List out = new ArrayList(); + Collections.shuffle(in, MyRandom.random); + for (int i = 0; i < Constant.Color.Colors.length; i++) { + CardPrinted check = findCardOfColor(in, i); + if (check != null) { out.add(check); } + } + + return out; + }//getVariety() + + public static CardPrinted findCardOfColor(final List in, final int color) { + Predicate filter = CardRules.Predicates.Presets.colors.get(color); + if (null == filter) { return null; } + return filter.first(in, CardPrinted.fnGetRules); + } } diff --git a/src/main/java/forge/card/ReadBoosterPack.java b/src/main/java/forge/card/ReadBoosterPack.java deleted file mode 100644 index 8969b95659a..00000000000 --- a/src/main/java/forge/card/ReadBoosterPack.java +++ /dev/null @@ -1,180 +0,0 @@ -package forge.card; - - -//import java.io.BufferedReader; -//import java.io.File; -//import java.io.FileReader; - -import forge.Constant; -import forge.MyRandom; -import forge.item.CardDb; -import forge.item.CardPrinted; -import forge.item.ItemPool; -import forge.item.ItemPoolView; -import forge.properties.NewConstants; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import net.slightlymagic.maxmtg.Predicate; - - -/** - *

ReadBoosterPack class.

- * - * @author Forge - * @version $Id$ - */ -public class ReadBoosterPack implements NewConstants { - - - //private List mythics; - private List rares; - private List uncommons; - private List commons; - - private List commonCreatures; - private List commonNonCreatures; - /** - *

Constructor for ReadBoosterPack.

- */ - public ReadBoosterPack() { - //mythics = CardPrinted.Predicates.Presets.isMythicRare.select(CardDb.instance().getAllUniqueCards()); - rares = CardPrinted.Predicates.Presets.isRare.select(CardDb.instance().getAllUniqueCards()); - commons = CardPrinted.Predicates.Presets.isCommon.select(CardDb.instance().getAllUniqueCards()); - uncommons = CardPrinted.Predicates.Presets.isUncommon.select(CardDb.instance().getAllUniqueCards()); - - commonCreatures = new ArrayList(); - commonNonCreatures = new ArrayList(); - CardRules.Predicates.Presets.isCreature.split(commons, CardPrinted.fnGetRules, commonCreatures, commonNonCreatures); - } - - /** - *

getBoosterPack5.

- * - * @return a {@link forge.CardList} object. - */ - public ItemPoolView getBoosterPack5() { - ItemPool list = new ItemPool(CardPrinted.class); - for (int i = 0; i < 5; i++) { list.addAll(getBoosterPack()); } - - addBasicLands(list, 20); - addBasicSnowLands(list, 20); - - for (int i = 0; i < 4; i++) - list.add(CardDb.instance().getCard("Terramorphic Expanse", "M10")); - - return list; - }//getBoosterPack5() - - public static final void addBasicLands(final ItemPool pool, final int count) { - for (int i = 0; i < count; i++) { - pool.add(CardDb.instance().getCard("Forest", "M10")); - pool.add(CardDb.instance().getCard("Island", "M10")); - pool.add(CardDb.instance().getCard("Plains", "M10")); - pool.add(CardDb.instance().getCard("Mountain", "M10")); - pool.add(CardDb.instance().getCard("Swamp", "M10")); - } - } - public static final void addBasicSnowLands(final ItemPool pool, final int count) { - for (int i = 0; i < count; i++) { - pool.add(CardDb.instance().getCard("Snow-Covered Forest", "ICE")); - pool.add(CardDb.instance().getCard("Snow-Covered Island", "ICE")); - pool.add(CardDb.instance().getCard("Snow-Covered Plains", "ICE")); - pool.add(CardDb.instance().getCard("Snow-Covered Mountain", "ICE")); - pool.add(CardDb.instance().getCard("Snow-Covered Swamp", "ICE")); - } - } - - /** - *

getBoosterPack.

- * - * @return a {@link forge.CardList} object. - */ - public ItemPoolView getBoosterPack() { - ItemPool pack = new ItemPool(CardPrinted.class); - - pack.add(getRandomCard(rares)); - - for (int i = 0; i < 3; i++) - pack.add(getRandomCard(uncommons)); - - //11 commons, 7 creature 4 noncreature - List variety; - for (int i = 0; i < 7; i++) { - variety = getVariety(commonCreatures); - pack.add(getRandomCard(variety)); - } - - for (int i = 0; i < 4; i++) { - variety = getVariety(commonNonCreatures); - pack.add(getRandomCard(variety)); - } - - if (pack.countAll() != 15) - throw new RuntimeException("ReadBoosterPack : getBoosterPack() error, pack is not 15 card - " - + pack.countAll()); - - return pack; - } - - /** - *

getShopCards.

- * - * @param numberWins a int. - * @param questLevel a int. - * @return a {@link forge.CardList} object. - */ - public ItemPoolView getShopCards(int totalPacks) { - ItemPool list = new ItemPool(CardPrinted.class); - - // Number of Packs granted - - - for (int i = 0; i < totalPacks; i++) { - // TODO: Balance CardPool Availability - // Each "Pack" yields 1 Rare, 3 Uncommon, 7 Commons - list.add(getRandomCard(rares)); - for (int j = 0; j < 7; j++) { - if (j < 3) - list.add(getRandomCard(uncommons)); - - list.add(getRandomCard(commons)); - } - } - - addBasicLands(list, 10); - addBasicSnowLands(list, 5); - - return list; - } - - //return CardList of 5 or 6 cards, one for each color and maybe an artifact - private List getVariety(List in) { - List out = new ArrayList(); - Collections.shuffle(in, MyRandom.random); - - for (int i = 0; i < Constant.Color.Colors.length; i++) { - CardPrinted check = findCardOfColor(in, i); - if (check != null) { out.add(check); } - } - - return out; - }//getVariety() - - private CardPrinted findCardOfColor(final List in, final int color) { - Predicate filter = CardRules.Predicates.Presets.colors.get(color); - if (null == filter) { return null; } - return filter.first(in, CardPrinted.fnGetRules); - } - - private CardPrinted getRandomCard(final List list) { - Collections.shuffle(list, MyRandom.random); - int index = MyRandom.random.nextInt(list.size()); - Collections.shuffle(list, MyRandom.random); - return list.get(index); - }//getRandomCard() - -} - diff --git a/src/main/java/forge/game/limited/BoosterDraft_1.java b/src/main/java/forge/game/limited/BoosterDraft_1.java index 2303114cbc1..b4d62c57fd8 100644 --- a/src/main/java/forge/game/limited/BoosterDraft_1.java +++ b/src/main/java/forge/game/limited/BoosterDraft_1.java @@ -144,9 +144,9 @@ public final class BoosterDraft_1 implements BoosterDraft { Lambda1, BoosterGenerator> fnPick = new Lambda1, BoosterGenerator>() { @Override public List apply(BoosterGenerator pack) { if ( draft.IgnoreRarity ) { - return pack.getBoosterPack(0, 0, 0, 0, 0, 0, 0, 0, draft.NumCards); + return pack.getBoosterPack(0, 0, 0, 0, 0, 0, draft.NumCards); } - return pack.getBoosterPack(draft.NumCommons, 0, 0, draft.NumUncommons, 0, draft.NumRares, draft.NumMythics, draft.NumSpecials, 0); + return pack.getBoosterPack(draft.NumCommons, draft.NumUncommons, 0, draft.NumRares, draft.NumMythics, draft.NumSpecials, 0); } }; @@ -303,7 +303,7 @@ public final class BoosterDraft_1 implements BoosterDraft { } //setChoice() /** This will upload drafting picks to cardforge HQ */ - @Override public void finishedDrafting() { + public void finishedDrafting() { if (Constant.Runtime.UpldDrft[0]) { if (draftPicks.size() > 1) { ArrayList outDraftData = new ArrayList(); diff --git a/src/main/java/forge/game/limited/SealedDeck.java b/src/main/java/forge/game/limited/SealedDeck.java index 4b17caa5177..b8cf8ee805b 100644 --- a/src/main/java/forge/game/limited/SealedDeck.java +++ b/src/main/java/forge/game/limited/SealedDeck.java @@ -133,9 +133,9 @@ public class SealedDeck { Lambda1, BoosterGenerator> fnPick = new Lambda1, BoosterGenerator>() { @Override public List apply(BoosterGenerator pack) { if ( draft.IgnoreRarity ) { - return pack.getBoosterPack(0, 0, 0, 0, 0, 0, 0, 0, draft.NumCards); + return pack.getBoosterPack(0, 0, 0, 0, 0, 0, draft.NumCards); } - return pack.getBoosterPack(draft.NumCommons, 0, 0, draft.NumUncommons, 0, draft.NumRares, draft.NumMythics, draft.NumSpecials, 0); + return pack.getBoosterPack(draft.NumCommons, draft.NumUncommons, 0, draft.NumRares, draft.NumMythics, draft.NumSpecials, 0); } }; diff --git a/src/main/java/forge/gui/CardListViewer.java b/src/main/java/forge/gui/CardListViewer.java index 05ff8b171c4..32f16f87560 100644 --- a/src/main/java/forge/gui/CardListViewer.java +++ b/src/main/java/forge/gui/CardListViewer.java @@ -142,18 +142,28 @@ public class CardListViewer { private class SelListener implements ListSelectionListener { - + private Card[] cache = null; + public void valueChanged(final ListSelectionEvent e) { int row = jList.getSelectedIndex(); // (String) jList.getSelectedValue(); if (row >= 0 && row < list.size()) { - Card card = AllZone.getCardFactory().getCard(list.get(row).getName(), null); - card.setRandomSetCode(); - card.setImageFilename(CardUtil.buildFilename(card)); - detail.setCard(card); - picture.setCard(card); + CardPrinted cp = list.get(row); + ensureCacheHas(row, cp); + detail.setCard(cache[row]); + picture.setCard(cp); } } + + private void ensureCacheHas(int row, CardPrinted cp) { + if (cache == null) { cache = new Card[list.size()]; } + if (null == cache[row]) { + Card card = AllZone.getCardFactory().getCard(cp.getName(), null); + card.setCurSetCode(cp.getSet()); + card.setImageFilename(CardUtil.buildFilename(card)); + cache[row] = card; + } + } } } diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorShop.java b/src/main/java/forge/gui/deckeditor/DeckEditorShop.java index 70925cc6a29..c2d20c6cc39 100644 --- a/src/main/java/forge/gui/deckeditor/DeckEditorShop.java +++ b/src/main/java/forge/gui/deckeditor/DeckEditorShop.java @@ -25,7 +25,9 @@ import forge.Singletons; import forge.deck.Deck; import forge.error.ErrorViewer; import forge.game.GameType; +import forge.gui.CardListViewer; import forge.gui.GuiUtils; +import forge.item.BoosterPack; import forge.item.CardPrinted; import forge.item.InventoryItem; import forge.item.ItemPoolView; @@ -259,17 +261,28 @@ public final class DeckEditorShop extends DeckEditorBase { private void buyButton_actionPerformed(ActionEvent e) { InventoryItem item = top.getSelectedCard(); - if (item == null || !( item instanceof CardPrinted )) { return; } + if (item == null ) { return; } - CardPrinted card = (CardPrinted) item; - - int value = getCardValue(card); + int value = getCardValue(item); if (value <= questData.getCredits()) { - bottom.addCard(card); - top.removeCard(card); + if (item instanceof CardPrinted) { + CardPrinted card = (CardPrinted) item; + bottom.addCard(card); + top.removeCard(card); - questData.getCards().buyCard(card, value); + questData.getCards().buyCard(card, value); + } else if (item instanceof BoosterPack) { + top.removeCard(item); + BoosterPack booster = (BoosterPack) item; + + List newCards = booster.getCards(); + for (CardPrinted card : newCards) { bottom.addCard(card); } + CardListViewer c = new CardListViewer(booster.getName(), "You have found the following new cards inside booster", newCards); + c.show(); + + questData.getCards().buyBooster(booster, value); + } creditsLabel.setText("Total credits: " + questData.getCredits()); } else { diff --git a/src/main/java/forge/gui/deckeditor/TableWithCards.java b/src/main/java/forge/gui/deckeditor/TableWithCards.java index fa77f32fd70..e1991e6be87 100644 --- a/src/main/java/forge/gui/deckeditor/TableWithCards.java +++ b/src/main/java/forge/gui/deckeditor/TableWithCards.java @@ -18,7 +18,6 @@ import net.slightlymagic.maxmtg.Predicate; import forge.Constant; import forge.Singletons; import forge.card.CardRules; -import forge.item.CardPrinted; import forge.item.InventoryItem; import forge.item.ItemPool; import forge.item.ItemPoolView; @@ -151,14 +150,14 @@ public final class TableWithCards { updateView(true); } - public void addCard(final CardPrinted card) { + public void addCard(final InventoryItem card) { //int n = table.getSelectedRow(); pool.add(card); if (isUnfiltered()) { model.addCard(card); } updateView(false); } - public void removeCard(final CardPrinted card) { + public void removeCard(final InventoryItem card) { int n = table.getSelectedRow(); pool.remove(card); if (isUnfiltered()) { model.removeCard(card); } diff --git a/src/main/java/forge/item/Booster.java b/src/main/java/forge/item/Booster.java deleted file mode 100644 index cd725373913..00000000000 --- a/src/main/java/forge/item/Booster.java +++ /dev/null @@ -1,43 +0,0 @@ -package forge.item; - -import java.util.List; - -import forge.SetUtils; -import forge.card.BoosterGenerator; - -/** - * TODO: Write javadoc for this type. - * - */ -public class Booster implements InventoryItemFromSet { - - private final String cardSet; - private final String name; - - private List cards = null; - - public Booster(String set) { - cardSet = set; - name = SetUtils.getSetByCodeOrThrow(set).getName() + " booster"; - } - - @Override public String getSet() { return cardSet; } - @Override public String getName() { return name; } - - @Override public String getImageFilename() { - // TODO: images for boosters - return null; - } - - public List getCards() { - if (null == cards) - { - BoosterGenerator gen = new BoosterGenerator(cardSet); - cards = gen.getBoosterPack(); - // TODO: Add land here! - } - return cards; - } - - -} diff --git a/src/main/java/forge/item/BoosterPack.java b/src/main/java/forge/item/BoosterPack.java new file mode 100644 index 00000000000..18749bac3f1 --- /dev/null +++ b/src/main/java/forge/item/BoosterPack.java @@ -0,0 +1,70 @@ +package forge.item; + +import java.util.List; + +import forge.SetUtils; +import forge.card.BoosterGenerator; + +/** + * TODO: Write javadoc for this type. + * + */ +public class BoosterPack implements InventoryItemFromSet { + + private final String cardSet; + private final String name; + + private List cards = null; + + public BoosterPack(String set) { + cardSet = set; + name = SetUtils.getSetByCodeOrThrow(set).getName() + " booster"; + } + + @Override public String getSet() { return cardSet; } + @Override public String getName() { return name; } + + @Override public String getImageFilename() { + // TODO: need images for boosters + return null; + } + + public List getCards() { + if (null == cards) + { + BoosterGenerator gen = new BoosterGenerator(cardSet); + cards = gen.getBoosterPack(); + // TODO: Add land here! + } + return cards; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((cardSet == null) ? 0 : cardSet.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BoosterPack other = (BoosterPack) obj; + if (cardSet == null) { + if (other.cardSet != null) + return false; + } else if (!cardSet.equals(other.cardSet)) + return false; + return true; + } + + + + +} diff --git a/src/main/java/forge/item/ItemPool.java b/src/main/java/forge/item/ItemPool.java index 127a92383e9..632979d6776 100644 --- a/src/main/java/forge/item/ItemPool.java +++ b/src/main/java/forge/item/ItemPool.java @@ -62,8 +62,10 @@ public final class ItemPool extends ItemPoolView { cards.put(card, amount); isListInSync = false; } - public void addAllCards(final Iterable cards) { - for (T cr : cards) { add(cr); } + + @SuppressWarnings("unchecked") + public void addAllCards(final Iterable cards) { + for (U cr : cards) { if (myClass.isInstance(cr)) { add((T) cr); } } isListInSync = false; } diff --git a/src/main/java/forge/quest/data/QuestData.java b/src/main/java/forge/quest/data/QuestData.java index 09c1d82bc20..b4590059f5e 100644 --- a/src/main/java/forge/quest/data/QuestData.java +++ b/src/main/java/forge/quest/data/QuestData.java @@ -106,7 +106,7 @@ public final class QuestData { */ public QuestData() { initTransients(); - myCards.generateBasicLands(QuestPreferences.getStartingBasic(), QuestPreferences.getStartingSnowBasic()); + myCards.addBasicLands(cardPool, QuestPreferences.getStartingBasic(), QuestPreferences.getStartingSnowBasic()); randomizeOpponents(); } diff --git a/src/main/java/forge/quest/data/QuestDataIO.java b/src/main/java/forge/quest/data/QuestDataIO.java index b8319862ce2..2eea2b1c78c 100644 --- a/src/main/java/forge/quest/data/QuestDataIO.java +++ b/src/main/java/forge/quest/data/QuestDataIO.java @@ -10,7 +10,7 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext; import forge.error.ErrorViewer; import forge.game.GameType; -import forge.item.Booster; +import forge.item.BoosterPack; import forge.item.CardDb; import forge.item.CardPrinted; import forge.item.InventoryItem; @@ -234,7 +234,7 @@ public class QuestDataIO { writer.endNode(); } - private void write(Booster booster, Integer count, HierarchicalStreamWriter writer) + private void write(BoosterPack booster, Integer count, HierarchicalStreamWriter writer) { writer.startNode("booster"); writer.addAttribute("s", booster.getSet()); @@ -252,8 +252,8 @@ public class QuestDataIO { Integer count = e.getValue(); if (item instanceof CardPrinted) { write((CardPrinted) item, count, writer); - } else if (item instanceof Booster) { - write((Booster) item, count, writer); + } else if (item instanceof BoosterPack) { + write((BoosterPack) item, count, writer); } } @@ -280,10 +280,10 @@ public class QuestDataIO { return result; } - private Booster readBooster(final HierarchicalStreamReader reader) + private BoosterPack readBooster(final HierarchicalStreamReader reader) { String set = reader.getAttribute("s"); - return new Booster(set); + return new BoosterPack(set); } private CardPrinted readCardPrinted(final HierarchicalStreamReader reader) diff --git a/src/main/java/forge/quest/data/QuestUtil.java b/src/main/java/forge/quest/data/QuestUtil.java index 51511ded9cf..374dd4736c9 100644 --- a/src/main/java/forge/quest/data/QuestUtil.java +++ b/src/main/java/forge/quest/data/QuestUtil.java @@ -5,7 +5,7 @@ import forge.CardList; import forge.Constant; import forge.Quest_Assignment; import forge.card.CardRarity; -import forge.card.QuestBoosterPack; +import forge.card.BoosterUtils; import forge.item.CardPrinted; import java.util.List; @@ -127,7 +127,6 @@ public class QuestUtil { * @return CardList */ public static List generateCardRewardList(String s) { - QuestBoosterPack pack = new QuestBoosterPack(); String[] temp = s.split(" "); int qty = Integer.parseInt(temp[0]); @@ -162,7 +161,7 @@ public class QuestUtil { col = Constant.Color.White; } - return pack.generateCards(qty, rar, col); + return BoosterUtils.generateCards(qty, rar, col); } /** diff --git a/src/main/java/forge/quest/data/QuestUtilCards.java b/src/main/java/forge/quest/data/QuestUtilCards.java index f9d7d24a12b..0288b03c11e 100644 --- a/src/main/java/forge/quest/data/QuestUtilCards.java +++ b/src/main/java/forge/quest/data/QuestUtilCards.java @@ -7,11 +7,11 @@ import java.util.Map.Entry; import net.slightlymagic.braids.util.lambda.Lambda1; import net.slightlymagic.maxmtg.Predicate; +import forge.card.BoosterGenerator; import forge.card.CardRarity; -import forge.card.QuestBoosterPack; -import forge.card.ReadBoosterPack; +import forge.card.BoosterUtils; import forge.deck.Deck; -import forge.item.Booster; +import forge.item.BoosterPack; import forge.item.CardDb; import forge.item.CardPrinted; import forge.item.InventoryItem; @@ -26,19 +26,19 @@ public final class QuestUtilCards { private QuestData q; public QuestUtilCards(final QuestData qd) { q = qd; } - public void generateBasicLands(final int nBasic, final int nSnow) { + public void addBasicLands(ItemPool pool, final int nBasic, final int nSnow) { CardDb db = CardDb.instance(); - q.cardPool.add(db.getCard("Forest", "M10"), nBasic); - q.cardPool.add(db.getCard("Mountain", "M10"), nBasic); - q.cardPool.add(db.getCard("Swamp", "M10"), nBasic); - q.cardPool.add(db.getCard("Island", "M10"), nBasic); - q.cardPool.add(db.getCard("Plains", "M10"), nBasic); + pool.add(db.getCard("Forest", "M10"), nBasic); + pool.add(db.getCard("Mountain", "M10"), nBasic); + pool.add(db.getCard("Swamp", "M10"), nBasic); + pool.add(db.getCard("Island", "M10"), nBasic); + pool.add(db.getCard("Plains", "M10"), nBasic); - q.cardPool.add(db.getCard("Snow-Covered Forest", "ICE"), nSnow); - q.cardPool.add(db.getCard("Snow-Covered Mountain", "ICE"), nSnow); - q.cardPool.add(db.getCard("Snow-Covered Swamp", "ICE"), nSnow); - q.cardPool.add(db.getCard("Snow-Covered Island", "ICE"), nSnow); - q.cardPool.add(db.getCard("Snow-Covered Plains", "ICE"), nSnow); + pool.add(db.getCard("Snow-Covered Forest", "ICE"), nSnow); + pool.add(db.getCard("Snow-Covered Mountain", "ICE"), nSnow); + pool.add(db.getCard("Snow-Covered Swamp", "ICE"), nSnow); + pool.add(db.getCard("Snow-Covered Island", "ICE"), nSnow); + pool.add(db.getCard("Snow-Covered Plains", "ICE"), nSnow); } //adds 11 cards, to the current card pool @@ -53,9 +53,9 @@ public final class QuestUtilCards { int nRare = QuestPreferences.getNumRare(); ArrayList newCards = new ArrayList(); - newCards.addAll(QuestBoosterPack.generateCards(fSets, nCommon, CardRarity.Common, null)); - newCards.addAll(QuestBoosterPack.generateCards(fSets, nUncommon, CardRarity.Uncommon, null)); - newCards.addAll(QuestBoosterPack.generateCards(fSets, nRare, CardRarity.Rare, null)); + newCards.addAll(BoosterUtils.generateCards(fSets, nCommon, CardRarity.Common, null)); + newCards.addAll(BoosterUtils.generateCards(fSets, nUncommon, CardRarity.Uncommon, null)); + newCards.addAll(BoosterUtils.generateCards(fSets, nRare, CardRarity.Rare, null)); addAllCards(newCards); return newCards; @@ -92,7 +92,7 @@ public final class QuestUtilCards { int nU = QuestPreferences.getStartingUncommons(idxDifficulty); int nR = QuestPreferences.getStartingRares(idxDifficulty); - addAllCards(QuestBoosterPack.getQuestStarterDeck(filter, nC, nU, nR)); + addAllCards(BoosterUtils.getQuestStarterDeck(filter, nC, nU, nR)); } public void buyCard(final CardPrinted card, final int value) { @@ -103,6 +103,14 @@ public final class QuestUtilCards { } } + public void buyBooster(final BoosterPack booster, final int value) { + if (q.credits >= value) { + q.credits -= value; + q.shopList.remove(booster); + addAllCards(booster.getCards()); + } + } + public void sellCard(final CardPrinted card, final int price) { if (price > 0) { q.credits += price; } q.cardPool.remove(card); @@ -142,16 +150,20 @@ public final class QuestUtilCards { } public void generateCardsInShop() { - ReadBoosterPack pack = new ReadBoosterPack(); + BoosterGenerator pack = new BoosterGenerator(CardDb.instance().getAllCards()); int levelPacks = q.getLevel() > 0 ? 4 / q.getLevel() : 4; int winPacks = q.getWin() / 10; int totalPacks = Math.min(levelPacks + winPacks, 6); - ItemPoolView fromBoosters = pack.getShopCards(totalPacks); q.shopList.clear(); - q.shopList.addAll(fromBoosters); - q.shopList.add(new Booster("M10")); + for (int i = 0; i < totalPacks; i++) { + q.shopList.addAllCards(pack.getBoosterPack(7, 3, 1, 0, 0, 0, 0)); + } + + addBasicLands(q.shopList, 10, 5); + + q.shopList.add(new BoosterPack("M10")); } public ItemPool getCardpool() { diff --git a/src/test/java/forge/ReadBoosterPackTest.java b/src/test/java/forge/ReadBoosterPackTest.java deleted file mode 100644 index 13c8bbf4bf5..00000000000 --- a/src/test/java/forge/ReadBoosterPackTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package forge; - -import org.testng.annotations.Test; - -import forge.card.ReadBoosterPack; - -/** - * Created by IntelliJ IDEA. - * User: dhudson - */ -@Test(groups = {"UnitTest"}, timeOut = 10000, enabled = false) -public class ReadBoosterPackTest { - /** - * - * - */ - @Test(timeOut = 10000, enabled = false) - public void ReadBoosterPackTest1() { - //testing - ReadBoosterPack r = new ReadBoosterPack(); - - - for (int i = 0; i < 1000; i++) { - r.getBoosterPack5(); - } - }//main() -}