removed player's picks map from boosterDraft interface (interface should not hold static data)

removed the getCardsNumber function from BoosterGenerator (it doesn't know in advance how many cards caller will ask to generate)
moved upload picks from draft deckeditor to boosterDraft class
added an enum to describe limited game type
tests may start failing - they would need an initialized CardDb
This commit is contained in:
Maxmtg
2011-09-14 17:46:24 +00:00
parent 5b3c267162
commit 9988efc847
10 changed files with 176 additions and 169 deletions

1
.gitattributes vendored
View File

@@ -9822,6 +9822,7 @@ src/main/java/forge/game/limited/BoosterDraft.java svneol=native#text/plain
src/main/java/forge/game/limited/BoosterDraftAI.java svneol=native#text/plain src/main/java/forge/game/limited/BoosterDraftAI.java svneol=native#text/plain
src/main/java/forge/game/limited/BoosterDraft_1.java svneol=native#text/plain src/main/java/forge/game/limited/BoosterDraft_1.java svneol=native#text/plain
src/main/java/forge/game/limited/CCnt.java svneol=native#text/plain src/main/java/forge/game/limited/CCnt.java svneol=native#text/plain
src/main/java/forge/game/limited/CardPoolLimitation.java -text
src/main/java/forge/game/limited/CustomLimited.java svneol=native#text/plain src/main/java/forge/game/limited/CustomLimited.java svneol=native#text/plain
src/main/java/forge/game/limited/DeckColors.java svneol=native#text/plain src/main/java/forge/game/limited/DeckColors.java svneol=native#text/plain
src/main/java/forge/game/limited/SealedDeck.java svneol=native#text/plain src/main/java/forge/game/limited/SealedDeck.java svneol=native#text/plain

View File

@@ -215,15 +215,6 @@ public class BoosterGenerator {
return temp; return temp;
} }
/**
* <p>getBoosterPackSize.</p>
*
* @return a int.
*/
public final int getBoosterPackSize() {
return numCommons + numUncommons + numRareSlots + numSpecials;
}
private void addToRarity(final CardPrinted c) { private void addToRarity(final CardPrinted c) {
switch(c.getRarity()) { switch(c.getRarity()) {
case Common: commons.add(c); break; case Common: commons.add(c); break;

View File

@@ -4,9 +4,6 @@ import forge.deck.Deck;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.item.ItemPoolView; import forge.item.ItemPoolView;
import java.util.Map;
import java.util.TreeMap;
/** /**
* <p>BoosterDraft interface.</p> * <p>BoosterDraft interface.</p>
* *
@@ -45,11 +42,11 @@ public interface BoosterDraft {
/** Constant <code>LandSetCode="{}"</code>. */ /** Constant <code>LandSetCode="{}"</code>. */
public String LandSetCode[] = {""}; public String LandSetCode[] = {""};
/** Constant <code>draftFormat="{}"</code>. */ /**
public String draftFormat[] = {""}; * Called when drafting is over - to upload picks.
*/
void finishedDrafting();
/** Constant <code>draftPicks="{}"</code>. */
public Map<String,Float> draftPicks = new TreeMap<String,Float>();
} }

View File

@@ -5,6 +5,7 @@ import forge.Card;
import forge.CardList; import forge.CardList;
import forge.Constant; import forge.Constant;
import forge.FileUtil; import forge.FileUtil;
import forge.HttpUtil;
import forge.SetUtils; import forge.SetUtils;
import forge.card.BoosterGenerator; import forge.card.BoosterGenerator;
import forge.card.CardBlock; import forge.card.CardBlock;
@@ -20,9 +21,14 @@ import forge.item.ItemPoolView;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.TreeMap;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import org.apache.commons.lang3.ArrayUtils;
import net.slightlymagic.braids.util.lambda.Lambda1; import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Closure1; import net.slightlymagic.maxmtg.Closure1;
@@ -31,113 +37,96 @@ import net.slightlymagic.maxmtg.Closure1;
* TODO Write javadoc for this type. * TODO Write javadoc for this type.
* *
*/ */
public class BoosterDraft_1 implements BoosterDraft { public final class BoosterDraft_1 implements BoosterDraft {
private final BoosterDraftAI draftAI = new BoosterDraftAI(); private final BoosterDraftAI draftAI = new BoosterDraftAI();
private static final int nPlayers = 8; private static final int nPlayers = 8;
//private static int boosterPackSize = 14; // 10 com + 3 unc + 1 rare/myth
private static int stopCount = 42; //boosterPackSize * 3;//should total of 42 - because you don't draft lands
private int currentCount = 0; private int nextBoosterGroup = 0;
private int currentBoosterSize = 0;
private int currentBoosterPick = 0;
private List<List<CardPrinted>> pack; //size 8 private List<List<CardPrinted>> pack; //size 8
//private BoosterGenerator packs[] = {new BoosterGenerator(), new BoosterGenerator(), new BoosterGenerator()};
public Map<String,Float> draftPicks = new TreeMap<String,Float>();
private CardPoolLimitation draftFormat;
private ArrayList<Closure1<List<CardPrinted>, BoosterGenerator>> packs = new ArrayList<Closure1<List<CardPrinted>, BoosterGenerator>>(); private ArrayList<Closure1<List<CardPrinted>, BoosterGenerator>> packs = new ArrayList<Closure1<List<CardPrinted>, BoosterGenerator>>();
private int currentBoosterPack = 0;
//helps the computer choose which booster packs to pick from
//the first row says "pick from boosters 1-7, skip 0" since the players picks from 0
//the second row says "pick from 0 and 2-7 boosters, skip 1" - player chooses from 1
private final int[][] computerChoose = {
{1, 2, 3, 4, 5, 6, 7},
{0, 2, 3, 4, 5, 6, 7},
{0, 1, 3, 4, 5, 6, 7},
{0, 1, 2, 4, 5, 6, 7},
{0, 1, 2, 3, 5, 6, 7},
{0, 1, 2, 3, 4, 6, 7},
{0, 1, 2, 3, 4, 5, 7},
{0, 1, 2, 3, 4, 5, 6}
};
/**
*
* TODO Write javadoc for Constructor.
*/
public BoosterDraft_1() {
pack = get8BoosterPack();
}
/** /**
* <p>Constructor for BoosterDraft_1.</p> * <p>Constructor for BoosterDraft_1.</p>
* *
* @param draftType a {@link java.lang.String} object. * @param draftType a {@link java.lang.String} object.
*/ */
public BoosterDraft_1(String draftType) { public BoosterDraft_1(CardPoolLimitation draftType) {
draftAI.bd = this; draftAI.bd = this;
draftFormat[0] = draftType; draftFormat = draftType;
if (draftType.equals("Full")) { // Draft from all cards in Forge switch (draftType) {
BoosterGenerator bpFull = new BoosterGenerator(CardDb.instance().getAllUniqueCards()); case Full: // Draft from all cards in Forge
Closure1<List<CardPrinted>, BoosterGenerator> picker = BoosterGenerator.getSimplePicker(bpFull); BoosterGenerator bpFull = new BoosterGenerator(CardDb.instance().getAllUniqueCards());
for (int i = 0; i < 3; i++) { Closure1<List<CardPrinted>, BoosterGenerator> picker = BoosterGenerator.getSimplePicker(bpFull);
packs.add(picker); for (int i = 0; i < 3; i++) {
}
LandSetCode[0] = AllZone.getCardFactory().getCard("Plains", AllZone.getHumanPlayer()).getMostRecentSet();
} else if (draftType.equals("Block")) { // Draft from cards by block or set
List<CardBlock> blocks = SetUtils.getBlocks();
Object o = GuiUtils.getChoice("Choose Block", blocks.toArray());
CardBlock block = (CardBlock) o;
CardSet[] cardSets = block.getSets();
String[] sets = new String[cardSets.length];
for (int k = cardSets.length - 1; k >= 0 ; --k) { sets[k] = cardSets[k].getCode();}
int nPacks = block.getCntBoostersDraft();
ArrayList<String> setCombos = new ArrayList<String>();
if (sets.length >= 2) {
setCombos.add(String.format("%s/%s/%s", sets[0], sets[0], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[0], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[1]));
}
if (sets.length >= 3) {
setCombos.add(String.format("%s/%s/%s", sets[2], sets[1], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[1]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[2]));
}
int sumCards = 0;
if (sets.length > 1) {
Object p = GuiUtils.getChoice("Choose Set Combination", setCombos.toArray());
String[] pp = p.toString().split("/");
for (int i = 0; i < nPacks; i++) {
BoosterGenerator bpMulti = new BoosterGenerator(pp[i]);
Closure1<List<CardPrinted>, BoosterGenerator> picker = BoosterGenerator.getSimplePicker(bpMulti);
packs.add(picker); packs.add(picker);
sumCards += bpMulti.getBoosterPackSize();
} }
} else {
BoosterGenerator bpOne = new BoosterGenerator(sets[0]); LandSetCode[0] = CardDb.instance().getCard("Plains").getSet();
Closure1<List<CardPrinted>, BoosterGenerator> picker = BoosterGenerator.getSimplePicker(bpOne); break;
for (int i = 0; i < nPacks; i++) {
packs.add(picker); case Block: // Draft from cards by block or set
sumCards += bpOne.getBoosterPackSize(); List<CardBlock> blocks = SetUtils.getBlocks();
Object o = GuiUtils.getChoice("Choose Block", blocks.toArray());
CardBlock block = (CardBlock) o;
CardSet[] cardSets = block.getSets();
String[] sets = new String[cardSets.length];
for (int k = cardSets.length - 1; k >= 0 ; --k) { sets[k] = cardSets[k].getCode();}
int nPacks = block.getCntBoostersDraft();
ArrayList<String> setCombos = new ArrayList<String>();
if (sets.length >= 2) {
setCombos.add(String.format("%s/%s/%s", sets[0], sets[0], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[0], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[1]));
}
if (sets.length >= 3) {
setCombos.add(String.format("%s/%s/%s", sets[2], sets[1], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[0]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[1]));
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[2]));
} }
}
stopCount = sumCards;
LandSetCode[0] = block.getLandSet().getCode();
} else if (draftType.equals("Custom")) { // Draft from user-defined cardpools
List<CustomLimited> myDrafts = loadCustomDrafts("res/draft/", ".draft");
if (myDrafts.size() < 1) { if (sets.length > 1) {
JOptionPane.showMessageDialog(null, "No custom draft files found.", "", JOptionPane.INFORMATION_MESSAGE); Object p = GuiUtils.getChoice("Choose Set Combination", setCombos.toArray());
} else { String[] pp = p.toString().split("/");
CustomLimited draft = (CustomLimited) GuiUtils.getChoice("Choose Custom Draft", myDrafts.toArray()); for (int i = 0; i < nPacks; i++) {
setupCustomDraft(draft); BoosterGenerator bpMulti = new BoosterGenerator(pp[i]);
} packs.add(BoosterGenerator.getSimplePicker(bpMulti));
}
} else {
BoosterGenerator bpOne = new BoosterGenerator(sets[0]);
Closure1<List<CardPrinted>, BoosterGenerator> pick1 = BoosterGenerator.getSimplePicker(bpOne);
for (int i = 0; i < nPacks; i++) { packs.add(pick1); }
}
LandSetCode[0] = block.getLandSet().getCode();
break;
case Custom:
List<CustomLimited> myDrafts = loadCustomDrafts("res/draft/", ".draft");
if (myDrafts.size() < 1) {
JOptionPane.showMessageDialog(null, "No custom draft files found.", "", JOptionPane.INFORMATION_MESSAGE);
} else {
CustomLimited draft = (CustomLimited) GuiUtils.getChoice("Choose Custom Draft", myDrafts.toArray());
setupCustomDraft(draft);
}
break;
default:
throw new NoSuchElementException("Draft for mode " + draftType + " has not been set up!");
} }
pack = get8BoosterPack(); pack = get8BoosterPack();
@@ -162,13 +151,7 @@ public class BoosterDraft_1 implements BoosterDraft {
}; };
Closure1<List<CardPrinted>, BoosterGenerator> picker = new Closure1<List<CardPrinted>, BoosterGenerator>(fnPick, bpCustom); Closure1<List<CardPrinted>, BoosterGenerator> picker = new Closure1<List<CardPrinted>, BoosterGenerator>(fnPick, bpCustom);
for (int i = 0; i < draft.NumPacks; i++) { packs.add(picker); }
int n = 0;
for (int i = 0; i < draft.NumPacks; i++) {
packs.add(picker);
n += draft.NumCards; //bpCustom.getBoosterPackSize();
}
stopCount = n;
LandSetCode[0] = draft.LandSetCode; LandSetCode[0] = draft.LandSetCode;
} }
@@ -206,7 +189,7 @@ public class BoosterDraft_1 implements BoosterDraft {
* *
* @return a {@link forge.CardList} object. * @return a {@link forge.CardList} object.
*/ */
public final ItemPoolView<CardPrinted> nextChoice() { public ItemPoolView<CardPrinted> nextChoice() {
if (pack.get(getCurrentBoosterIndex()).size() == 0) { if (pack.get(getCurrentBoosterIndex()).size() == 0) {
pack = get8BoosterPack(); pack = get8BoosterPack();
} }
@@ -220,19 +203,17 @@ public class BoosterDraft_1 implements BoosterDraft {
* *
* @return an array of {@link forge.CardList} objects. * @return an array of {@link forge.CardList} objects.
*/ */
public final List<List<CardPrinted>> get8BoosterPack() { public List<List<CardPrinted>> get8BoosterPack() {
if (nextBoosterGroup >= packs.size()) { return null; }
List<List<CardPrinted>> list = new ArrayList<List<CardPrinted>>(); List<List<CardPrinted>> list = new ArrayList<List<CardPrinted>>();
for (int i = 0; i < 8; i++) { list.add(packs.get(nextBoosterGroup).apply()); }
if (currentBoosterPack < packs.size()) { nextBoosterGroup++;
for (int i = 0; i < 8; i++) { currentBoosterSize = list.get(0).size();
list.add(packs.get(currentBoosterPack).apply()); currentBoosterPick = 0;
}
}
currentBoosterPack++;
return list; return list;
} //get8BoosterPack() }
//size 7, all the computers decks //size 7, all the computers decks
@@ -241,21 +222,24 @@ public class BoosterDraft_1 implements BoosterDraft {
* *
* @return an array of {@link forge.deck.Deck} objects. * @return an array of {@link forge.deck.Deck} objects.
*/ */
public final Deck[] getDecks() { public Deck[] getDecks() {
return draftAI.getDecks(); return draftAI.getDecks();
} }
private void computerChoose() { private void computerChoose() {
int[] row = computerChoose[getCurrentBoosterIndex()];
for (int i = 0; i < row.length; i++) { int iHumansBooster = getCurrentBoosterIndex();
int iPlayer = 0;
for (int i = 0; i < pack.size(); i++) {
if (iHumansBooster == i) { continue; } // don't touch player's booster
CardList forAi = new CardList(); CardList forAi = new CardList();
List<CardPrinted> booster = pack.get(row[i]); List<CardPrinted> booster = pack.get(i);
for (CardPrinted cr : booster) { for (CardPrinted cr : booster) {
forAi.add(cr.toForgeCard()); forAi.add(cr.toForgeCard());
} }
// TODO Please write this drafting code to work without heavy cards // TODO: Please write this drafting code to work without heavy card objects
Card aiPick = draftAI.choose(forAi, i); Card aiPick = draftAI.choose(forAi, iPlayer++);
String pickedName = aiPick.getName(); String pickedName = aiPick.getName();
for (int pick = booster.size() - 1; pick >= 0; pick--) { for (int pick = booster.size() - 1; pick >= 0; pick--) {
@@ -269,7 +253,7 @@ public class BoosterDraft_1 implements BoosterDraft {
} //computerChoose() } //computerChoose()
private int getCurrentBoosterIndex() { private int getCurrentBoosterIndex() {
return currentCount % nPlayers; return currentBoosterPick % nPlayers;
} }
/** /**
@@ -277,12 +261,15 @@ public class BoosterDraft_1 implements BoosterDraft {
* *
* @return a boolean. * @return a boolean.
*/ */
public final boolean hasNextChoice() { public boolean hasNextChoice() {
return currentCount < stopCount; boolean isLastGroup = nextBoosterGroup >= packs.size();
boolean isBoosterDepleted = currentBoosterPick >= currentBoosterSize;
boolean noMoreCards = isLastGroup && isBoosterDepleted;
return !noMoreCards;
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
public final void setChoice(final CardPrinted c) { public void setChoice(final CardPrinted c) {
List<CardPrinted> thisBooster = pack.get(getCurrentBoosterIndex()); List<CardPrinted> thisBooster = pack.get(getCurrentBoosterIndex());
if (!thisBooster.contains(c)) { if (!thisBooster.contains(c)) {
@@ -296,7 +283,7 @@ public class BoosterDraft_1 implements BoosterDraft {
float pickValue = 0; float pickValue = 0;
if (cc.equals(c)) { if (cc.equals(c)) {
pickValue = thisBooster.size() * (1f - ((float) currentCount) / stopCount) * 2f; pickValue = thisBooster.size() * (1f - ((float) currentBoosterPick / currentBoosterSize) * 2f);
} else { } else {
pickValue = 0; pickValue = 0;
} }
@@ -312,6 +299,26 @@ public class BoosterDraft_1 implements BoosterDraft {
} }
thisBooster.remove(c); thisBooster.remove(c);
currentCount++; currentBoosterPick++;
} //setChoice() } //setChoice()
/** This will upload drafting picks to cardforge HQ */
@Override public void finishedDrafting() {
if (Constant.Runtime.UpldDrft[0]) {
if (draftPicks.size() > 1) {
ArrayList<String> outDraftData = new ArrayList<String>();
String[] keys = draftPicks.keySet().toArray(ArrayUtils.EMPTY_STRING_ARRAY);
for (int i = 0; i < keys.length; i++) {
outDraftData.add(keys[i] + "|" + draftPicks.get(keys[i]));
}
FileUtil.writeFile("res/draft/tmpDraftData.txt", outDraftData);
HttpUtil poster = new HttpUtil();
poster.upload("http://cardforge.org/draftAI/submitDraftData.php?fmt=" + draftFormat, "res/draft/tmpDraftData.txt");
}
}
}
} }

View File

@@ -0,0 +1,11 @@
package forge.game.limited;
/**
* TODO: Write javadoc for this type.
*
*/
public enum CardPoolLimitation {
Full,
Block,
Custom
}

View File

@@ -2,8 +2,6 @@ package forge.gui.deckeditor;
import forge.AllZone; import forge.AllZone;
import forge.Constant; import forge.Constant;
import forge.FileUtil;
import forge.HttpUtil;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckManager; import forge.deck.DeckManager;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
@@ -19,17 +17,26 @@ import forge.properties.ForgeProps;
import forge.properties.NewConstants; import forge.properties.NewConstants;
import forge.view.swing.OldGuiNewGame; import forge.view.swing.OldGuiNewGame;
import javax.swing.*;
import org.apache.commons.lang3.ArrayUtils;
import net.slightlymagic.maxmtg.Predicate; import net.slightlymagic.maxmtg.Predicate;
import java.awt.*; import java.awt.Rectangle;
import java.awt.event.*; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTable;
/** /**
* <p>Gui_BoosterDraft class.</p> * <p>Gui_BoosterDraft class.</p>
@@ -169,7 +176,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
jButtonPick.setBounds(new Rectangle(238, 418, 147, 44)); jButtonPick.setBounds(new Rectangle(238, 418, 147, 44));
jButtonPick.setFont(new java.awt.Font("Dialog", 0, 16)); jButtonPick.setFont(new java.awt.Font("Dialog", 0, 16));
jButtonPick.setText("Choose Card"); jButtonPick.setText("Choose Card");
jButtonPick.addActionListener(new java.awt.event.ActionListener() { jButtonPick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
jButtonPickClicked(e); jButtonPickClicked(e);
} }
@@ -200,22 +207,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
if (boosterDraft.hasNextChoice()) { if (boosterDraft.hasNextChoice()) {
showChoices(boosterDraft.nextChoice()); showChoices(boosterDraft.nextChoice());
} else { } else {
if (Constant.Runtime.UpldDrft[0]) { boosterDraft.finishedDrafting();
if (BoosterDraft.draftPicks.size() > 1) {
ArrayList<String> outDraftData = new ArrayList<String>();
String[] keys = BoosterDraft.draftPicks.keySet().toArray(ArrayUtils.EMPTY_STRING_ARRAY);
for (int i = 0; i < keys.length; i++) {
outDraftData.add(keys[i] + "|" + BoosterDraft.draftPicks.get(keys[i]));
}
FileUtil.writeFile("res/draft/tmpDraftData.txt", outDraftData);
HttpUtil poster = new HttpUtil();
poster.upload("http://cardforge.org/draftAI/submitDraftData.php?fmt=" + BoosterDraft.draftFormat[0], "res/draft/tmpDraftData.txt");
}
}
//quit //quit
saveDraft(); saveDraft();

View File

@@ -10,6 +10,7 @@ import forge.error.BugzReporter;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.game.GameType; import forge.game.GameType;
import forge.game.limited.BoosterDraft_1; import forge.game.limited.BoosterDraft_1;
import forge.game.limited.CardPoolLimitation;
import forge.game.limited.SealedDeck; import forge.game.limited.SealedDeck;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.ListChooser; import forge.gui.ListChooser;
@@ -392,15 +393,15 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Object o = GuiUtils.getChoice(prompt, draftTypes.toArray()); Object o = GuiUtils.getChoice(prompt, draftTypes.toArray());
if (o.toString().equals(draftTypes.get(0))) { if (o.toString().equals(draftTypes.get(0))) {
draft.showGui(new BoosterDraft_1("Full")); draft.showGui(new BoosterDraft_1(CardPoolLimitation.Full));
} }
else if (o.toString().equals(draftTypes.get(1))) { else if (o.toString().equals(draftTypes.get(1))) {
draft.showGui(new BoosterDraft_1("Block")); draft.showGui(new BoosterDraft_1(CardPoolLimitation.Block));
} }
else if (o.toString().equals(draftTypes.get(2))) { else if (o.toString().equals(draftTypes.get(2))) {
draft.showGui(new BoosterDraft_1("Custom")); draft.showGui(new BoosterDraft_1(CardPoolLimitation.Custom));
} }
} }

View File

@@ -72,4 +72,9 @@ public class BoosterDraftTest implements BoosterDraft {
public CardList getUnchosenCards() { public CardList getUnchosenCards() {
return null; return null;
} }
@Override
public void finishedDrafting() {
}
} }

View File

@@ -4,6 +4,7 @@ import org.testng.annotations.Test;
import forge.game.limited.BoosterDraft_1; import forge.game.limited.BoosterDraft_1;
import forge.game.limited.CardPoolLimitation;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.item.ItemPoolView; import forge.item.ItemPoolView;
@@ -19,7 +20,7 @@ public class BoosterDraft_1Test {
*/ */
@Test(groups = {"UnitTest", "fast"}, timeOut = 1000) @Test(groups = {"UnitTest", "fast"}, timeOut = 1000)
public void BoosterDraft_1Test1() throws Exception { public void BoosterDraft_1Test1() throws Exception {
BoosterDraft_1 draft = new BoosterDraft_1(); BoosterDraft_1 draft = new BoosterDraft_1(CardPoolLimitation.Full);
while (draft.hasNextChoice()) { while (draft.hasNextChoice()) {
ItemPoolView<CardPrinted> list = draft.nextChoice(); ItemPoolView<CardPrinted> list = draft.nextChoice();
System.out.println(list.countAll()); System.out.println(list.countAll());

View File

@@ -3,6 +3,7 @@ package forge;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType; import forge.game.GameType;
import forge.game.limited.BoosterDraft_1; import forge.game.limited.BoosterDraft_1;
import forge.game.limited.CardPoolLimitation;
import forge.gui.deckeditor.DeckEditorDraft; import forge.gui.deckeditor.DeckEditorDraft;
import org.testng.Assert; import org.testng.Assert;
@@ -25,7 +26,7 @@ public class GuiBoosterDraftTest {
Constant.Runtime.HumanDeck[0] = new Deck(GameType.Sealed); Constant.Runtime.HumanDeck[0] = new Deck(GameType.Sealed);
DeckEditorDraft g = new DeckEditorDraft(); DeckEditorDraft g = new DeckEditorDraft();
g.showGui(new BoosterDraft_1()); g.showGui(new BoosterDraft_1(CardPoolLimitation.Full));
Assert.assertNotNull(g); Assert.assertNotNull(g);
g.dispose(); g.dispose();
} }