gameType is now a Enum,

Deckeditors no longer save all decks on close (there may remain minor bugs)
Deckeditors have mostly been cleaned of usage of global variables
OldGuiNewGame updates deck comboboxes properly
Download deck from tcgplayer feature temporary removed
cleaned up some warnings
This commit is contained in:
Maxmtg
2011-09-09 11:08:29 +00:00
parent dc66b2556c
commit 2ecc716b83
23 changed files with 474 additions and 1190 deletions

View File

@@ -2,10 +2,7 @@ package forge;
import forge.deck.Deck;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import forge.game.GameType;
/**
@@ -19,10 +16,10 @@ public interface Constant {
public static final String ProgramName = "Forge - http://cardforge.org";
//used to pass information between the GUI screens
public interface Runtime {
public abstract class Runtime {
public static final Deck[] HumanDeck = new Deck[1];
public static final Deck[] ComputerDeck = new Deck[1];
public static final String[] GameType = new String[1];
public static GameType gameType = GameType.Constructed;
public static final boolean[] Smooth = new boolean[1];
public static final boolean[] Mill = new boolean[1];
@@ -40,14 +37,6 @@ public interface Constant {
public static final int[] stackOffset = new int[1];
}
public interface GameType {
public static final String Constructed = "constructed";
public static final String Sealed = "sealed";
public static final String Draft = "draft";
public static final List<String> GameTypes = Collections.unmodifiableList(Arrays.asList(Constructed,
Sealed, Draft));
}
//public interface IO {
// probably should read this from a file, or set from GUI

View File

@@ -1,12 +1,20 @@
package forge;
import forge.error.ErrorViewer;
import forge.properties.ForgeProps;
import forge.properties.NewConstants.LANG.Gui_DownloadPictures.ERRORS;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.Proxy;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -114,4 +122,30 @@ public final class FileUtil {
return list;
} //readFile()
public static void downloadUrlIntoFile(final String url, final File target)
{
try{
byte[] buf = new byte[1024];
int len;
Proxy p = Proxy.NO_PROXY;
BufferedInputStream in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(target));
//while - read and write file
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}//while - read and write file
in.close();
out.flush();
out.close();
}
catch (IOException ioex)
{
ErrorViewer.showError(ioex, ForgeProps.getLocalized(ERRORS.OTHER), "deck_temp.html", url);
}
}
}

View File

@@ -21,6 +21,7 @@ import forge.card.trigger.Trigger;
import forge.deck.Deck;
import forge.game.GameEndReason;
import forge.game.GameSummary;
import forge.game.GameType;
import forge.game.PlayerIndex;
import forge.gui.GuiUtils;
import forge.gui.input.Input_Mulligan;
@@ -1120,7 +1121,7 @@ public class GameAction {
Card.resetUniqueNumber();
boolean canRandomFoil = Constant.Runtime.RndCFoil[0] && Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed);
boolean canRandomFoil = Constant.Runtime.RndCFoil[0] && Constant.Runtime.gameType.equals(GameType.Constructed);
Random generator = MyRandom.random;
for (Entry<CardPrinted, Integer> stackOfCards : humanDeck.getMain()) {

View File

@@ -9,7 +9,6 @@ import forge.game.GamePlayerRating;
import forge.game.GameSummary;
import forge.game.PlayerIndex;
import forge.gui.CardListViewer;
import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
@@ -38,7 +37,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**

View File

@@ -9,8 +9,6 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import net.slightlymagic.maxmtg.Predicate;
import forge.card.CardBlock;
import forge.card.CardSet;
import forge.game.GameFormat;

View File

@@ -1,7 +1,6 @@
package forge.card;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.slightlymagic.maxmtg.Predicate;

View File

@@ -3,7 +3,6 @@ package forge.card;
import java.util.Arrays;
import java.util.List;
import org.apache.axis.utils.ArrayUtil;
import org.apache.commons.lang3.ArrayUtils;
import net.slightlymagic.braids.util.lambda.Lambda1;

View File

@@ -1,11 +1,11 @@
package forge.deck;
import forge.Constant;
import forge.PlayerType;
import forge.card.CardDb;
import forge.card.CardPool;
import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.game.GameType;
import java.io.Serializable;
import java.util.*;
@@ -22,10 +22,10 @@ public final class Deck implements Comparable<Deck>, Serializable {
*/
private static final long serialVersionUID = -7478025567887481994L;
//gameType is from Constant.GameType, like Constant.GameType.Regular
//gameType is from Constant.GameType, like GameType.Regular
private String name;
private String deckType;
private GameType deckType;
private String comment = null;
private PlayerType playerType = null;
@@ -37,7 +37,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
//gameType is from Constant.GameType, like Constant.GameType.Regular
//gameType is from Constant.GameType, like GameType.Regular
/**
* <p>Constructor for Deck.</p>
*/
@@ -54,7 +54,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* @param sideboard a {@link java.util.List} object.
* @param name a {@link java.lang.String} object.
*/
public Deck(String deckType, List<String> main, List<String> sideboard, String name) {
public Deck(GameType deckType, List<String> main, List<String> sideboard, String name) {
setDeckType(deckType);
setName(name);
@@ -67,7 +67,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
*
* @param type a {@link java.lang.String} object.
*/
public Deck(final String type) {
public Deck(final GameType type) {
this();
setDeckType(type);
}
@@ -95,7 +95,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
*
* @return a {@link java.lang.String} object.
*/
public String getDeckType() {
public GameType getDeckType() {
return deckType;
}
@@ -105,17 +105,12 @@ public final class Deck implements Comparable<Deck>, Serializable {
*
* @param deckType a {@link java.lang.String} object.
*/
void setDeckType(String deckType) {
void setDeckType(GameType deckType) {
if (this.getDeckType() != null) {
throw new IllegalStateException(
"Deck : setDeckType() error, deck type has already been set");
}
if (!Constant.GameType.GameTypes.contains(deckType)) {
throw new RuntimeException(
"Deck : setDeckType() error, invalid deck type - " + deckType);
}
this.deckType = deckType;
}
@@ -202,7 +197,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* @return a boolean.
*/
public boolean isDraft() {
return getDeckType().equals(Constant.GameType.Draft);
return getDeckType().equals(GameType.Draft);
}
/**
@@ -211,7 +206,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* @return a boolean.
*/
public boolean isSealed() {
return getDeckType().equals(Constant.GameType.Sealed);
return getDeckType().equals(GameType.Sealed);
}
/**
@@ -220,7 +215,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* @return a boolean.
*/
public boolean isRegular() {
return getDeckType().equals(Constant.GameType.Constructed);
return getDeckType().equals(GameType.Constructed);
}
/**

View File

@@ -1,10 +1,12 @@
package forge.deck;
import forge.Constant;
import forge.PlayerType;
import forge.card.CardPrinted;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import java.io.*;
import java.util.*;
@@ -13,12 +15,12 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
import org.apache.commons.lang3.StringUtils;
import static java.lang.Integer.parseInt;
import static java.lang.String.format;
import static java.util.Arrays.asList;
//reads and writeDeck Deck objects
@@ -43,6 +45,18 @@ public class DeckManager {
}
};
public static final FileFilter dckFilter = new FileFilter() {
@Override
public boolean accept(File f) {
return f.getName().endsWith(".dck") || f.isDirectory();
}
@Override
public String getDescription() {
return "Simple Deck File .dck";
}
};
private static final String NAME = "Name";
private static final String DECK_TYPE = "Deck Type";
private static final String COMMENT = "Comment";
@@ -119,7 +133,7 @@ public class DeckManager {
* @param deck a {@link forge.deck.Deck} object.
*/
public void addDeck(Deck deck) {
if (deck.getDeckType().equals(Constant.GameType.Draft)) {
if (deck.getDeckType().equals(GameType.Draft)) {
throw new RuntimeException(
"DeckManager : addDeck() error, deck type is Draft");
}
@@ -174,6 +188,9 @@ public class DeckManager {
}
draftMap.remove(deckName);
// delete from disk as well
File f = makeFileName(deckName, GameType.Draft);
f.delete();
}
/**
@@ -183,37 +200,41 @@ public class DeckManager {
*/
private void checkDraftDeck(Deck[] deck) {
if (deck == null || deck.length != 8 || deck[0].getName().equals("")
|| (!deck[0].getDeckType().equals(Constant.GameType.Draft))) {
|| (!deck[0].getDeckType().equals(GameType.Draft))) {
throw new RuntimeException("DeckManager : checkDraftDeck() error, invalid deck");
}
}
/**
* <p>getDecks.</p>
*
* @return a {@link java.util.Collection} object.
*/
public Collection<Deck> getDecks() {
return deckMap.values();
}
/**
* <p>getDraftDecks.</p>
*
* @return a {@link java.util.Map} object.
*/
public Map<String, Deck[]> getDraftDecks() {
return new HashMap<String, Deck[]>(draftMap);
}
/**
* <p>close.</p>
*/
public void close() {
writeAllDecks();
}
public ArrayList<String> getDeckNames(final GameType deckType) {
ArrayList<String> list = new ArrayList<String>();
//only get decks according to the OldGuiNewGame screen option
if (deckType.equals(GameType.Draft)) {
for (String s : getDraftDecks().keySet()) {
list.add(s);
}
} else {
for (Deck deck : getDecks()) {
if (deckType.equals(deck.getDeckType())) {
list.add(deck.toString());
}
}
}
Collections.sort(list);
return list;
}
/**
* <p>readAllDecks.</p>
@@ -305,7 +326,7 @@ public class DeckManager {
} else if (COMMENT.equalsIgnoreCase(field)) {
d.setComment(linedata[1]);
} else if (DECK_TYPE.equalsIgnoreCase(field)) {
d.setDeckType(linedata[1]);
d.setDeckType(GameType.smartValueOf(linedata[1]));
} else if (PLAYER.equalsIgnoreCase(field)) {
if ("human".equalsIgnoreCase(linedata[1])) {
d.setPlayerType(PlayerType.HUMAN);
@@ -344,7 +365,7 @@ public class DeckManager {
}
//readDeck deck type
String deckType = iterator.next();
GameType deckType = GameType.smartValueOf(iterator.next());
Deck d = new Deck();
d.setName(name);
@@ -404,61 +425,52 @@ public class DeckManager {
return result;
}
/**
* <p>deriveFileName.</p>
*
* @param deckName a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
private String deriveFileName(String deckName) {
private static String deriveFileName(String deckName) {
//skips all but the listed characters
return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", "");
}
//only accepts numbers, letters or dashes up to 20 characters in length
public static String cleanDeckName(String in)
{
char[] c = in.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < c.length && i < 20; i++) {
if (Character.isLetterOrDigit(c[i]) || c[i] == '-') {
sb.append(c[i]);
}
}
return sb.toString();
}
public static File makeFileName(String deckName, GameType deckType)
{
File path = ForgeProps.getFile(NewConstants.NEW_DECKS);
if (deckType == GameType.Draft)
return new File(path, deriveFileName(deckName) + ".bdk");
else
return new File(path, deriveFileName(deckName) + ".dck");
}
public static File makeFileName(Deck deck)
{
return makeFileName(deck.getName(), deck.getDeckType());
}
/**
* <p>writeAllDecks.</p>
*/
public void writeAllDecks() {
public static void writeDraftDecks(Deck[] drafts) {
try {
//store the files that do exist
List<File> files = new ArrayList<File>();
files.addAll(asList(deckDir.listFiles(DCKFileFilter)));
//save the files and remove them from the list
for (Deck deck : deckMap.values()) {
File f = new File(deckDir, deriveFileName(deck.getName()) + ".dck");
files.remove(f);
BufferedWriter out = new BufferedWriter(new FileWriter(f));
writeDeck(deck, out);
File f = makeFileName(drafts[0]);
f.mkdir();
for (int i = 0; i < drafts.length; i++) {
BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
writeDeck(drafts[i], out);
out.close();
}
//delete the files that were not written out: the decks that were deleted
for (File file : files) {
file.delete();
}
//store the files that do exist
files.clear();
files.addAll(asList(deckDir.listFiles(BDKFileFilter)));
//save the files and remove them from the list
for (Entry<String, Deck[]> e : draftMap.entrySet()) {
File f = new File(deckDir, deriveFileName(e.getValue()[0].getName()) + ".bdk");
f.mkdir();
for (int i = 0; i < e.getValue().length; i++) {
BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
writeDeck(e.getValue()[i], out);
out.close();
}
}
/*
//delete the files that were not written out: the decks that were deleted
for(File file:files) {
for(int i = 0; i < 8; i++)
new File(file, i + ".dck").delete();
file.delete();
}
*/
} catch (IOException ex) {
ErrorViewer.showError(ex);
throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage());
@@ -473,10 +485,10 @@ public class DeckManager {
* @throws java.io.IOException if any.
*/
private static void writeDeck(final Deck d, final BufferedWriter out) throws IOException {
out.write("[metadata]\n");
out.write(format("[metadata]%n"));
out.write(format("%s=%s%n", NAME, d.getName().replaceAll("\n", "")));
out.write(format("%s=%s%n", DECK_TYPE, d.getDeckType().replaceAll("\n", "")));
out.write(format("%s=%s%n", DECK_TYPE, d.getDeckType()));
// these are optional
if (d.getComment() != null) { out.write(format("%s=%s%n", COMMENT, d.getComment().replaceAll("\n", ""))); }
if (d.getPlayerType() != null) { out.write(format("%s=%s%n", PLAYER, d.getPlayerType())); }
@@ -491,26 +503,6 @@ public class DeckManager {
}
}
/**
* <p>count.</p>
*
* @param src a {@link java.util.List} object.
* @return a {@link java.util.Map} object.
*/
/*
private static Map<String, Integer> count(List<String> src) {
Map<String, Integer> result = new HashMap<String, Integer>();
for (String s : src) {
Integer dstValue = result.get(s);
if (dstValue == null) {
result.put(s, 1);
} else {
result.put(s, dstValue + 1);
}
}
return result;
}
*/
/**
* <p>writeDeck.</p>
@@ -522,7 +514,6 @@ public class DeckManager {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(f));
writeDeck(d, writer);
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);

View File

@@ -9,6 +9,7 @@ import forge.Constant;
import forge.MyRandom;
import forge.card.spellability.Ability_Mana;
import forge.deck.Deck;
import forge.game.GameType;
import java.util.*;
@@ -295,7 +296,7 @@ public class BoosterDraftAI {
* @return a {@link forge.deck.Deck} object.
*/
private Deck buildDeck(CardList dList, DeckColors pClrs) {
Deck out = new Deck(Constant.GameType.Draft);
Deck out = new Deck(GameType.Draft);
CardList outList = new CardList();
int cardsNeeded = 22;
int landsNeeded = 18;
@@ -496,7 +497,7 @@ public class BoosterDraftAI {
/* private Deck getDeck(CardList list)
{
Deck out = new Deck(Constant.GameType.Draft);
Deck out = new Deck(GameType.Draft);
for(int i = 0; i < list.size(); i++)
out.addMain(list.get(i).getName());

View File

@@ -16,6 +16,7 @@ import forge.card.CardPool;
import forge.card.CardSet;
import forge.card.spellability.Ability_Mana;
import forge.deck.Deck;
import forge.game.GameType;
import forge.gui.GuiUtils;
import javax.swing.*;
@@ -397,7 +398,7 @@ public class SealedDeck {
}
}
Deck aiDeck = new Deck(Constant.GameType.Sealed);
Deck aiDeck = new Deck(GameType.Sealed);
for (i = 0; i < deck.size(); i++)
aiDeck.addMain(deck.get(i).getName() + "|" + deck.get(i).getCurSetCode());

View File

@@ -1,6 +1,8 @@
package forge.gui.deckeditor;
import forge.card.CardPoolView;
import forge.deck.Deck;
import forge.game.GameType;
/**
* Created by IntelliJ IDEA.
@@ -11,37 +13,19 @@ import forge.card.CardPoolView;
* @version $Id$
*/
public interface DeckDisplay {
/**
* <p>updateDisplay.</p>
*
* @param top a {@link forge.CardList} object.
* @param bottom a {@link forge.CardList} object.
*/
void setDecks(CardPoolView top, CardPoolView bottom);
void setDeck(CardPoolView top, CardPoolView bottom, GameType gameType);
//top shows available card pool
//if constructed, top shows all cards
//if sealed, top shows 5 booster packs
//if draft, top shows cards that were chosen
/**
* <p>getTop.</p>
*
* @return a {@link forge.CardList} object.
*/
CardPoolView getTop();
//bottom shows cards that the user has chosen for his library
/**
* <p>getBottom.</p>
*
* @return a {@link forge.CardList} object.
*/
CardPoolView getBottom();
/**
* <p>setTitle.</p>
*
* @param message a {@link java.lang.String} object.
*/
void setTitle(String message);
Deck getDeck();
GameType getGameType();
}

View File

@@ -4,6 +4,8 @@ import java.awt.Container;
import java.awt.Font;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
@@ -16,13 +18,14 @@ import javax.swing.JCheckBox;
import javax.swing.JLabel;
import net.miginfocom.swing.MigLayout;
import net.slightlymagic.maxmtg.Predicate;
import forge.AllZone;
import forge.Command;
import forge.Constant;
import forge.card.CardDb;
import forge.card.CardPool;
import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer;
import forge.properties.NewConstants;
import forge.game.GameType;
import forge.view.swing.OldGuiNewGame;
/**
@@ -33,7 +36,7 @@ import forge.view.swing.OldGuiNewGame;
* @author Forge
* @version $Id$
*/
public final class DeckEditor extends DeckEditorBase implements NewConstants {
public final class DeckEditor extends DeckEditorBase {
/** Constant <code>serialVersionUID=130339644136746796L</code> */
private static final long serialVersionUID = 130339644136746796L;
@@ -44,17 +47,9 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
private JButton analysisButton = new JButton();
private JButton clearFilterButton = new JButton();
private JLabel jLabelAnalysisGap = new JLabel();
private JLabel jLabelAnalysisGap = new JLabel("");
private FilterNameTypeSetPanel filterNameTypeSet;
private boolean isConstructed = false;
/** {@inheritDoc} */
@Override
public void setTitle(final String message) {
super.setTitle(message);
}
public void show(final Command exitCommand) {
final Command exit = new Command() {
private static final long serialVersionUID = 5210924838133689758L;
@@ -65,7 +60,7 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
}
};
customMenu = new DeckEditorMenu(this, exit);
customMenu = new DeckEditorMenu(this, AllZone.getDeckManager(), exit);
this.setJMenuBar(customMenu);
// do not change this!!!!
@@ -78,11 +73,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setup();
isConstructed = Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed);
// show cards, makes this user friendly
if (isConstructed) {
customMenu.newConstructed();
if (!getGameType().isLimited()) {
customMenu.newConstructed(false);
}
top.sort(1, true);
@@ -115,12 +110,8 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
}
/**
* <p>
* Constructor for Gui_DeckEditor.
* </p>
*/
public DeckEditor() {
public DeckEditor(GameType gameType) {
super(gameType);
try {
filterBoxes = new FilterCheckBoxes(true);
top = new TableWithCards("Avaliable Cards", true, true);
@@ -136,44 +127,28 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
private void jbInit() {
// removeButton.setIcon(upIcon);
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
removeButton.setFont(new java.awt.Font("Dialog", 0, 13));
Font fButtons = new java.awt.Font("Dialog", 0, 13);
removeButton.setFont(fButtons);
addButton.setFont(fButtons);
clearFilterButton.setFont(fButtons);
analysisButton.setFont(fButtons);
}
removeButton.setText("Remove from Deck");
removeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
removeButtonClicked(e);
}
});
addButton.setText("Add to Deck");
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
addButton_actionPerformed(e);
}
});
// addButton.setIcon(downIcon);
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
addButton.setFont(new java.awt.Font("Dialog", 0, 13));
}
removeButton.setText("Remove from Deck");
clearFilterButton.setText("Clear Filter");
clearFilterButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
clearFilterButton_actionPerformed(e);
}
});
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
clearFilterButton.setFont(new java.awt.Font("Dialog", 0, 13));
}
analysisButton.setText("Deck Analysis");
removeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { removeButtonClicked(e); } });
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { addButton_actionPerformed(e); } });
clearFilterButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { clearFilterButton_actionPerformed(e); } });
analysisButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
analysisButton_actionPerformed(e);
}
});
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
analysisButton.setFont(new java.awt.Font("Dialog", 0, 13));
}
public void actionPerformed(final ActionEvent e) { analysisButton_actionPerformed(e); } });
// Type filtering
Font f = new Font("Tahoma", Font.PLAIN, 10);
@@ -195,10 +170,7 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
MigLayout layout = new MigLayout("fill");
pane.setLayout(layout);
// this.getContentPane().add(landCheckBox,
// "cell 0 0, egx checkbox, split 16");
boolean isFirst = true;
for (JCheckBox box : filterBoxes.allTypes) {
String growParameter = "grow";
if (isFirst) {
@@ -214,36 +186,27 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
box.addItemListener(itemListenerUpdatesDisplay);
}
//this.getContentPane().add(filterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(clearFilterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(filterNameTypeSet, "cell 0 1, grow");
this.getContentPane().add(top.getTableDecorated(), "cell 0 2 1 2, pushy, grow");
this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
this.getContentPane().add(top.getLabel(), "cell 0 4");
this.getContentPane().add(addButton, "w 100, h 49, sg button, cell 0 5, split 4");
this.getContentPane().add(removeButton, "w 100, h 49, sg button");
// jLabel4 is used to push the analysis button to the right
// This will separate this button from the add and remove card buttons
jLabelAnalysisGap.setText("");
// Label is used to push the analysis button to the right to separate analysis button from add/remove card ones
this.getContentPane().add(jLabelAnalysisGap, "wmin 100, grow");
this.getContentPane().add(analysisButton, "w 100, h 49, wrap");
this.getContentPane().add(bottom.getTableDecorated(), "cell 0 6, grow");
this.getContentPane().add(bottom.getLabel(), "cell 0 7");
this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
top.getTable().addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() == 2) { addCardToDeck(); }
}
});
@Override public void mouseClicked(final MouseEvent e) { if (e.getClickCount() == 2) { addCardToDeck(); } } });
top.getTable().addKeyListener(new KeyAdapter() {
@Override public void keyPressed(final KeyEvent e) { if (e.getKeyChar() == ' ') { addCardToDeck(); } } });
//javax.swing.JRootPane rootPane = this.getRootPane();
//rootPane.setDefaultButton(filterButton);
@@ -254,6 +217,17 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
return Predicate.and(filterBoxes.buildFilter(), filterNameTypeSet.buildFilter());
}
@Override
public void setDeck(CardPoolView topParam, CardPoolView bottomParam, GameType gt)
{
boolean keepRecievedCards = gt.isLimited() || topParam != null;
// if constructed, can add the all cards above
CardPoolView top = keepRecievedCards ? topParam : new CardPool( CardDb.instance().getAllCards() );
super.setDeck(top, bottomParam, gt);
}
void clearFilterButton_actionPerformed(ActionEvent e) {
// disable automatic update triggered by listeners
isFiltersChangeFiringUpdate = false;
@@ -279,9 +253,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.addCard(card);
if (!isConstructed) {
if (getGameType().isLimited()) {
top.removeCard(card);
}
customMenu.notifyDeckChange();
}
void removeButtonClicked(ActionEvent e) {
@@ -291,31 +267,10 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.removeCard(card);
if (!isConstructed) {
if (getGameType().isLimited()) {
top.addCard(card);
}
customMenu.notifyDeckChange();
}
// refresh Gui from deck, Gui shows the cards in the deck
/**
* <p>
* refreshGui.
* </p>
*/
@SuppressWarnings("unused")
// refreshGui
private void refreshGui() {
Deck deck = Constant.Runtime.HumanDeck[0];
if (deck == null) // this is just a patch, i know
deck = new Deck(Constant.Runtime.GameType[0]);
bottom.setDeck(deck.getMain());
if (deck.isSealed() || deck.isDraft()) {
top.setDeck(deck.getSideboard()); // add sideboard to GUI
} else {
top.setDeck(CardDb.instance().getAllUniqueCards());
}
}
}

View File

@@ -14,6 +14,8 @@ import net.slightlymagic.maxmtg.Predicate;
import forge.GUI_DeckAnalysis;
import forge.card.CardPrinted;
import forge.card.CardPoolView;
import forge.deck.Deck;
import forge.game.GameType;
public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
private static final long serialVersionUID = -401223933343539977L;
@@ -29,6 +31,10 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
protected TableWithCards top;
protected TableWithCards bottom;
private GameType gameType;
public GameType getGameType() { return gameType; }
// top shows available card pool
// if constructed, top shows all cards
// if sealed, top shows N booster packs
@@ -55,7 +61,13 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
}
}
public void setDecks(CardPoolView topParam, CardPoolView bottomParam) {
public DeckEditorBase(GameType gametype)
{
gameType = gametype;
}
public void setDeck(CardPoolView topParam, CardPoolView bottomParam, GameType gt) {
gameType = gt;
top.setDeck(topParam);
bottom.setDeck(bottomParam);
}
@@ -76,4 +88,16 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
@Override public void removeUpdate(DocumentEvent e) { onChange(); }
@Override public void changedUpdate(DocumentEvent e) { } // Happend only on ENTER pressed
}
public Deck getDeck() {
Deck deck = new Deck(gameType);
deck.addMain(getBottom());
//if sealed or draft, move "top" to sideboard
if (gameType.isLimited() && gameType != GameType.Quest) {
deck.addSideboard(getTop());
}
return deck;
}//getDeck()
}

View File

@@ -10,6 +10,7 @@ import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.deck.DeckManager;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.game.limited.BoosterDraft;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
@@ -106,8 +107,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
this.setResizable(false);
top.getTable().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(final KeyEvent e) {
@Override public void keyPressed(final KeyEvent e) {
if (e.getKeyChar() == ' ') { jButton1_actionPerformed(null); }
}
});
@@ -115,6 +115,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
}
public DeckEditorDraft() {
super(GameType.Draft);
try {
top = new TableWithCards("Choose one card", false);
bottom = new TableWithCards("Previously picked cards", true);
@@ -217,7 +218,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
* @return a {@link forge.deck.Deck} object.
*/
private Deck getPlayersDeck() {
Deck deck = new Deck(Constant.GameType.Draft);
Deck deck = new Deck(GameType.Draft);
Constant.Runtime.HumanDeck[0] = deck;
//add sideboard to deck
@@ -265,7 +266,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
deckManager.addDraftDeck(all);
//write file
deckManager.close();
DeckManager.writeDraftDecks(all);
//close and open next screen
dispose();

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@ import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.properties.NewConstants;
import forge.quest.data.QuestData;
@@ -26,8 +27,6 @@ import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import net.slightlymagic.maxmtg.Predicate;
//import forge.quest.data.QuestBoosterPack;
@@ -90,7 +89,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
&& questData.getDeckNames().contains(Constant.Runtime.HumanDeck[0].getName())) {
deck = questData.getDeck(Constant.Runtime.HumanDeck[0].getName());
} else {
deck = new Deck(Constant.GameType.Sealed);
deck = new Deck(GameType.Sealed);
deck.setName("");
}
@@ -105,7 +104,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
cardpool.removeAll(bottomPool);
// show cards, makes this user friendly, lol, well may, ha
setDecks(cardpool, bottomPool);
setDeck(cardpool, bottomPool, GameType.Quest);
// this affects the card pool
top.sort(4, true);// sort by type
@@ -152,6 +151,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
} // setupAndDisplay()
public DeckEditorQuest(QuestData questData2) {
super(GameType.Quest);
questData = questData2;
try {
filterBoxes = new FilterCheckBoxes(false);

View File

@@ -11,6 +11,7 @@ import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.deck.DeckManager;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.quest.data.QuestData;
@@ -275,7 +276,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
cardpool.add(cp, s.getValue());
questData.getCards().getCardpool().add(cp, s.getValue());
}
deckDisplay.setDecks(cardpool, decklist);
deckDisplay.setDeck(cardpool, decklist, GameType.Quest);
} catch (Exception ex) {
ErrorViewer.showError(ex);
@@ -339,13 +340,13 @@ public class DeckEditorQuestMenu extends JMenuBar {
// show in pool all cards except ones used in deck
cards.removeAll(deck);
deckDisplay.setDecks(cards, deck);
deckDisplay.setDeck(cards, deck, GameType.Quest);
}
};
private final ActionListener newDeckActionListener = new ActionListener() {
public void actionPerformed(final ActionEvent a) {
deckDisplay.setDecks(questData.getCards().getCardpool().getView(), new CardPool());
deckDisplay.setDeck(questData.getCards().getCardpool().getView(), new CardPool(), GameType.Quest);
setPlayerDeckName("");
}
};
@@ -428,7 +429,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
questData.removeDeck(currentDeck.getName());
//show card pool
deckDisplay.setDecks(questData.getCards().getCardpool().getView(), new CardPool());
deckDisplay.setDeck(questData.getCards().getCardpool().getView(), new CardPool(), GameType.Quest);
setPlayerDeckName("");
}
@@ -498,7 +499,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
*/
private Deck cardPoolToDeck(final CardPoolView list) {
//put CardPool into Deck main
Deck deck = new Deck(Constant.GameType.Sealed);
Deck deck = new Deck(GameType.Sealed);
deck.addMain(list);
return deck;
}
@@ -511,7 +512,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
*/
public final void setPlayerDeckName(final String deckName) {
//the gui uses this, Gui_Quest_DeckEditor
currentDeck = new Deck(Constant.GameType.Sealed);
currentDeck = new Deck(GameType.Sealed);
currentDeck.setName(deckName);
deckDisplay.setTitle(deckEditorName + " - " + deckName);

View File

@@ -25,6 +25,7 @@ import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.quest.data.QuestData;
import forge.view.swing.OldGuiNewGame;
@@ -93,7 +94,7 @@ public final class DeckEditorShop extends DeckEditorBase {
CardPoolView owned = questData.getCards().getCardpool().getView();
//newCardsList = questData.getCards().getNewCards();
setDecks(forSale, owned);
setDeck(forSale, owned, GameType.Quest);
double multiPercent = multiplier * 100;
NumberFormat formatter = new DecimalFormat("#0.00");
@@ -162,6 +163,7 @@ public final class DeckEditorShop extends DeckEditorBase {
* a {@link forge.quest.data.QuestData} object.
*/
public DeckEditorShop(final QuestData qd) {
super(GameType.Quest);
questData = qd;
try {
filterBoxes = null;

View File

@@ -105,8 +105,10 @@ public final class TableWithCards {
return show.toString();
} // getStats()
public void sort(final int iCol, final boolean isAsc) {
public TableWithCards sort(final int iCol) { return sort(iCol, true); }
public TableWithCards sort(final int iCol, final boolean isAsc) {
model.sort(iCol, isAsc);
return this;
}
// Call this after deleting an item from table

View File

@@ -14,6 +14,7 @@ import forge.ComputerAI_Input;
import forge.Constant;
import forge.ImageCache;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.view.FView;
@@ -123,7 +124,7 @@ public class ApplicationView implements FView {
if(!splashFrame.getSplashHasBeenClosed()) {
try {
Constant.Runtime.GameType[0] = Constant.GameType.Constructed;
Constant.Runtime.gameType = GameType.Constructed;
SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app
public void run() {
AllZone.setComputer(new ComputerAI_Input(new ComputerAI_General()));

View File

@@ -9,6 +9,7 @@ import forge.deck.DeckManager;
import forge.deck.generate.*;
import forge.error.BugzReporter;
import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.game.limited.BoosterDraft_1;
import forge.game.limited.SealedDeck;
import forge.gui.GuiUtils;
@@ -58,8 +59,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private final DeckManager deckManager = AllZone.getDeckManager();
// with the new IO, there's no reason to use different instances
private List<Deck> allDecks;
/** Constant <code>editor</code>. */
private static DeckEditor editor;
private JLabel titleLabel = new JLabel();
private JLabel jLabel2 = new JLabel();
@@ -131,7 +130,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
public OldGuiNewGame() {
AllZone.setQuestData(null);
allDecks = getDecks();
if (Constant.Runtime.width[0] == 0) {
Constant.Runtime.width[0] = 70;
@@ -155,15 +153,15 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
ErrorViewer.showError(ex);
}
if (Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed)) {
if (Constant.Runtime.gameType.equals(GameType.Constructed)) {
singleRadioButton.setSelected(true);
updateDeckComboBoxes();
}
if (Constant.Runtime.GameType[0].equals(Constant.GameType.Sealed)) {
if (Constant.Runtime.gameType.equals(GameType.Sealed)) {
sealedRadioButton.setSelected(true);
updateDeckComboBoxes();
}
if (Constant.Runtime.GameType[0].equals(Constant.GameType.Draft)) {
if (Constant.Runtime.gameType.equals(GameType.Draft)) {
draftRadioButton.setSelected(true);
draftRadioButtonActionPerformed(null);
}
@@ -291,7 +289,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* </p>
*/
private void setupSealed() {
Deck deck = new Deck(Constant.GameType.Sealed);
Deck deck = new Deck(GameType.Sealed);
// ReadBoosterPack booster = new ReadBoosterPack();
// CardList pack = booster.getBoosterPack5();
@@ -338,23 +336,22 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
String sDeckName = JOptionPane.showInputDialog(null,
ForgeProps.getLocalized(NEW_GAME_TEXT.SAVE_SEALED_MSG),
ForgeProps.getLocalized(NEW_GAME_TEXT.SAVE_SEALED_TTL), JOptionPane.QUESTION_MESSAGE);
deck.setName(sDeckName);
deck.setPlayerType(PlayerType.HUMAN);
Constant.Runtime.HumanDeck[0] = deck;
Constant.Runtime.GameType[0] = Constant.GameType.Sealed;
Constant.Runtime.gameType = GameType.Sealed;
Deck aiDeck = sd.buildAIDeck(sDeck.toForgeCardList());
aiDeck.setName("AI_" + sDeckName);
aiDeck.setPlayerType(PlayerType.COMPUTER);
deckManager.addDeck(aiDeck);
deckManager.writeAllDecks();
deckManager.readAllDecks();
DeckManager.writeDeck(aiDeck, DeckManager.makeFileName(aiDeck));
updateDeckComboBoxes();
deckEditorButtonActionPerformed(null);
editor.customMenu.setCurrentGameType(Constant.GameType.Sealed);
editor.customMenu.showSealedDeck(deck);
deckEditorButtonActionPerformed(GameType.Sealed, deck);
Constant.Runtime.ComputerDeck[0] = aiDeck;
} else {
@@ -456,12 +453,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
jLabel2.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.YOURDECK));
jLabel3.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.OPPONENT));
humanComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
humanComboBoxActionPerformed(e);
}
});
/*
* Settings Panel
*/
@@ -511,7 +502,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
deckEditorButton.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.DECK_EDITOR));
deckEditorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
deckEditorButtonActionPerformed(e);
deckEditorButtonActionPerformed(GameType.Constructed, null);
}
});
@@ -626,35 +617,28 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* @param e
* a {@link java.awt.event.ActionEvent} object.
*/
final void deckEditorButtonActionPerformed(final ActionEvent e) {
if (editor == null) {
final void deckEditorButtonActionPerformed(final GameType gt, final Deck deck) {
editor = new DeckEditor();
DeckEditor editor = new DeckEditor(gt);
Command exit = new Command() {
private static final long serialVersionUID = -9133358399503226853L;
Command exit = new Command() {
private static final long serialVersionUID = -9133358399503226853L;
public void execute() {
new OldGuiNewGame();
}
};
editor.show(exit);
editor.setVisible(true);
} // if
public void execute() {
// refresh decks:
allDecks = getDecks();
updateDeckComboBoxes();
OldGuiNewGame.this.setVisible(true);
}
};
// TODO (TO have DOne) - this seems hacky. If someone knows how to do
// this for real, feel free.
// This make it so the second time you open the Deck Editor, typing a
// card name and pressing enter will filter
//javax.swing.JRootPane rootPane = editor.getRootPane();
//rootPane.setDefaultButton(editor.filterButton);
editor.show(exit);
if (deck != null) {
editor.customMenu.showDeck(deck, gt);
}
this.setVisible(false);
editor.setVisible(true);
dispose();
}
/**
@@ -697,9 +681,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
if (draftRadioButton.isSelected()) {
if (human.equals("New Draft")) {
dispose();
setupDraft();
return;
} else {
@@ -732,9 +714,9 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
}
} else {
// non-draft decks
String format = Constant.Runtime.GameType[0];
// boolean sealed = Constant.GameType.Sealed.equals(format);
boolean constructed = Constant.GameType.Constructed.equals(format);
GameType format = Constant.Runtime.gameType;
// boolean sealed = GameType.Sealed.equals(format);
boolean constructed = GameType.Constructed.equals(format);
boolean humanGenerate = human.equals("Generate Deck");
boolean humanRandom = human.equals("Random");
@@ -857,7 +839,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructedDeck() {
GenerateConstructedDeck gen = new GenerateConstructedDeck();
CardList name = gen.generateDeck();
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -875,7 +857,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructed3ColorDeck() {
GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck();
CardList name = gen.generate3ColorDeck();
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -893,7 +875,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructed5ColorDeck() {
GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck();
CardList name = gen.generate5ColorDeck();
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -923,7 +905,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
}
CardList td = gen.getThemeDeck(stDeck, 60);
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < td.size(); i++) {
deck.addMain(td.get(i).getName());
@@ -977,7 +959,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate2ColorDeck gen = new Generate2ColorDeck(c1, c2);
CardList d = gen.get2ColorDeck(60, p);
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1043,7 +1025,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate3ColorDeck gen = new Generate3ColorDeck(c1, c2, c3);
CardList d = gen.get3ColorDeck(60, p);
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1077,7 +1059,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate5ColorDeck gen = new Generate5ColorDeck("white", "blue", "black", "red", "green");
CardList d = gen.get5ColorDeck(60, p);
Deck deck = new Deck(Constant.GameType.Constructed);
Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1096,7 +1078,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.awt.event.ActionEvent} object.
*/
final void singleRadioButtonActionPerformed(final ActionEvent e) {
Constant.Runtime.GameType[0] = Constant.GameType.Constructed;
Constant.Runtime.gameType = GameType.Constructed;
updateDeckComboBoxes();
}
@@ -1109,7 +1091,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.awt.event.ActionEvent} object.
*/
final void sealedRadioButtonActionPerformed(final ActionEvent e) {
Constant.Runtime.GameType[0] = Constant.GameType.Sealed;
Constant.Runtime.gameType = GameType.Sealed;
updateDeckComboBoxes();
}
@@ -1122,20 +1104,21 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
humanComboBox.removeAllItems();
computerComboBox.removeAllItems();
if (Constant.GameType.Sealed.equals(Constant.Runtime.GameType[0])) {
allDecks = getDecks();
switch(Constant.Runtime.gameType)
{
case Sealed:
humanComboBox.addItem("New Sealed");
computerComboBox.addItem("New Sealed");
for (Deck allDeck : allDecks) {
if (allDeck.getDeckType().equals(Constant.GameType.Sealed)) {
if (allDeck.getPlayerType() == PlayerType.HUMAN) {
humanComboBox.addItem(allDeck.getName());
} else if (allDeck.getPlayerType() == PlayerType.COMPUTER) {
computerComboBox.addItem(allDeck.getName());
}
if (allDeck.getDeckType().equals(GameType.Sealed)) {
JComboBox boxToAdd = allDeck.getPlayerType() == PlayerType.COMPUTER ? computerComboBox : humanComboBox;
boxToAdd.addItem(allDeck.getName());
}
} // for
} else if (Constant.GameType.Constructed.equals(Constant.Runtime.GameType[0])) {
break;
case Constructed:
humanComboBox.addItem("Generate Deck");
computerComboBox.addItem("Generate Deck");
@@ -1143,11 +1126,25 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
computerComboBox.addItem("Random");
for (Deck allDeck : allDecks) {
if (allDeck.getDeckType().equals(Constant.GameType.Constructed)) {
if (allDeck.getDeckType().equals(GameType.Constructed)) {
humanComboBox.addItem(allDeck.getName());
computerComboBox.addItem(allDeck.getName());
}
} // for
break;
case Draft:
humanComboBox.addItem("New Draft");
Object[] key = deckManager.getDraftDecks().keySet().toArray();
Arrays.sort(key);
for (Object aKey : key) {
humanComboBox.addItem(aKey);
}
for (int i = 0; i < 7; i++) {
computerComboBox.addItem("" + (i + 1));
}
break;
}
// not sure if the code below is useful or not
// this will select the deck that you previously used
@@ -1166,11 +1163,11 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.lang.String} object.
* @return an array of {@link forge.deck.Deck} objects.
*/
final Deck[] getDecks(final String gameType) {
final Deck[] getDecks(final GameType gameType) {
ArrayList<Deck> list = new ArrayList<Deck>();
Deck d;
for (Deck allDeck : allDecks) {
for (Deck allDeck : deckManager.getDecks()) {
d = allDeck;
if (d.getDeckType().equals(gameType)) {
@@ -1185,44 +1182,12 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
return out;
} // getDecks()
/**
* <p>
* draftRadioButton_actionPerformed.
* </p>
*
* @param e
* a {@link java.awt.event.ActionEvent} object.
*/
final void draftRadioButtonActionPerformed(final ActionEvent e) {
Constant.Runtime.GameType[0] = Constant.GameType.Draft;
humanComboBox.removeAllItems();
computerComboBox.removeAllItems();
humanComboBox.addItem("New Draft");
Object[] key = deckManager.getDraftDecks().keySet().toArray();
Arrays.sort(key);
for (Object aKey : key) {
humanComboBox.addItem(aKey);
}
for (int i = 0; i < 7; i++) {
computerComboBox.addItem("" + (i + 1));
}
Constant.Runtime.gameType = GameType.Draft;
updateDeckComboBoxes();
}
/**
* <p>
* humanComboBox_actionPerformed.
* </p>
*
* @param e
* a {@link java.awt.event.ActionEvent} object.
*/
void humanComboBoxActionPerformed(final ActionEvent e) {
} /* draftRadioButton_actionPerformed() */
/**
*
* @author dhudson

View File

@@ -1,6 +1,7 @@
package forge;
import forge.deck.Deck;
import forge.game.GameType;
import forge.game.limited.BoosterDraft_1;
import forge.gui.deckeditor.DeckEditorDraft;
@@ -20,8 +21,8 @@ public class GuiBoosterDraftTest {
*/
@Test(groups = {"UnitTest", "fast"})
public void GuiBoosterDraftTest1() {
Constant.Runtime.GameType[0] = Constant.GameType.Draft;
Constant.Runtime.HumanDeck[0] = new Deck(Constant.GameType.Sealed);
Constant.Runtime.gameType = GameType.Draft;
Constant.Runtime.HumanDeck[0] = new Deck(GameType.Sealed);
DeckEditorDraft g = new DeckEditorDraft();
g.showGui(new BoosterDraft_1());