From 10fd05478d72bf431f067f802b0ef7c9c7205d2b Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 13 Jan 2014 14:46:12 +0000 Subject: [PATCH] - Sealed Deck and Booster Draft limited modes now correctly handle and support cards with different art. --- .../src/main/java/forge/deck/CardPool.java | 27 ++++++++++++++----- .../controllers/CEditorDraftingProcess.java | 7 ++--- .../gui/home/sanctioned/CSubmenuSealed.java | 4 ++- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/forge-core/src/main/java/forge/deck/CardPool.java b/forge-core/src/main/java/forge/deck/CardPool.java index b3c20dc4c6c..06f67db1437 100644 --- a/forge-core/src/main/java/forge/deck/CardPool.java +++ b/forge-core/src/main/java/forge/deck/CardPool.java @@ -54,7 +54,7 @@ public class CardPool extends ItemPool { /** - * Adds the. + * Adds the card. * * @param cardName * the card name @@ -62,20 +62,35 @@ public class CardPool extends ItemPool { * the set code */ public void add(final String cardName, final String setCode) { - this.add(cardName, setCode, 1); + this.add(cardName, setCode, -1, 1); } /** - * Adds the. + * Adds the card. + * + * @param cardName + * the card name + * @param setCode + * the set code + * @param amount + * the amount of cards to add + */ + public void add(final String cardName, final String setCode, final int amount) { + this.add(cardName, setCode, -1, amount); + } + + /** + * Adds the card. * * @param cardName the card name * @param setCode the set code + * @param artIndex the card art index, -1 for random * @param amount the amount */ - public void add(final String cardName, final String setCode, final int amount) { - PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(cardName, setCode); + public void add(final String cardName, final String setCode, final int artIndex, final int amount) { + PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(cardName, setCode, artIndex); if ( cp == null ) - cp = StaticData.instance().getVariantCards().tryGetCard(cardName, setCode); + cp = StaticData.instance().getVariantCards().tryGetCard(cardName, setCode, artIndex); if ( cp != null) this.add(cp, amount); 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 681f486ae8e..e78bc9c3b5f 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 @@ -153,13 +153,14 @@ public class CEditorDraftingProcess extends ACEditorBase { final Deck deck = new Deck(); // add sideboard to deck - CardPool side = deck.getOrCreate(DeckSection.Sideboard); - side.addAll(this.getDeckManager().getPool()); + deck.getOrCreate(DeckSection.Sideboard).addAll(this.getDeckManager().getPool()); final CardEdition landSet = IBoosterDraft.LAND_SET_CODE[0]; final int landsCount = 20; for(String landName : MagicColor.Constant.BASIC_LANDS) { - side.add(Singletons.getMagicDb().getCommonCards().getCard(landName, landSet.getCode()), landsCount); + for (int i = 0; i < landsCount; i++) { + deck.get(DeckSection.Sideboard).add(landName, landSet.getCode(), -1, 1); + } } return deck; 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 d8c5bcf66b2..f9c8daede66 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 @@ -172,7 +172,9 @@ public enum CSubmenuSealed implements ICDoc { deck.getOrCreate(DeckSection.Sideboard).addAll(humanPool); for (final String element : MagicColor.Constant.BASIC_LANDS) { - deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), 18); + for (int i = 0; i < 18; i++) { + deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), -1, 1); + } } final IStorage sealedDecks = Singletons.getModel().getDecks().getSealed();