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 forge.deck.Deck;
import forge.game.GameType;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/** /**
@@ -19,10 +16,10 @@ public interface Constant {
public static final String ProgramName = "Forge - http://cardforge.org"; public static final String ProgramName = "Forge - http://cardforge.org";
//used to pass information between the GUI screens //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[] HumanDeck = new Deck[1];
public static final Deck[] ComputerDeck = 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[] Smooth = new boolean[1];
public static final boolean[] Mill = 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 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 { //public interface IO {
// probably should read this from a file, or set from GUI // probably should read this from a file, or set from GUI

View File

@@ -1,12 +1,20 @@
package forge; package forge;
import forge.error.ErrorViewer; 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.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException;
import java.net.Proxy;
import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -114,4 +122,30 @@ public final class FileUtil {
return list; return list;
} //readFile() } //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.deck.Deck;
import forge.game.GameEndReason; import forge.game.GameEndReason;
import forge.game.GameSummary; import forge.game.GameSummary;
import forge.game.GameType;
import forge.game.PlayerIndex; import forge.game.PlayerIndex;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.input.Input_Mulligan; import forge.gui.input.Input_Mulligan;
@@ -1120,7 +1121,7 @@ public class GameAction {
Card.resetUniqueNumber(); 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; Random generator = MyRandom.random;
for (Entry<CardPrinted, Integer> stackOfCards : humanDeck.getMain()) { for (Entry<CardPrinted, Integer> stackOfCards : humanDeck.getMain()) {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,11 +1,11 @@
package forge.deck; package forge.deck;
import forge.Constant;
import forge.PlayerType; import forge.PlayerType;
import forge.card.CardDb; import forge.card.CardDb;
import forge.card.CardPool; import forge.card.CardPool;
import forge.card.CardPoolView; import forge.card.CardPoolView;
import forge.card.CardPrinted; import forge.card.CardPrinted;
import forge.game.GameType;
import java.io.Serializable; import java.io.Serializable;
import java.util.*; import java.util.*;
@@ -22,10 +22,10 @@ public final class Deck implements Comparable<Deck>, Serializable {
*/ */
private static final long serialVersionUID = -7478025567887481994L; 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 name;
private String deckType; private GameType deckType;
private String comment = null; private String comment = null;
private PlayerType playerType = 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> * <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 sideboard a {@link java.util.List} object.
* @param name a {@link java.lang.String} 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); setDeckType(deckType);
setName(name); setName(name);
@@ -67,7 +67,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* *
* @param type a {@link java.lang.String} object. * @param type a {@link java.lang.String} object.
*/ */
public Deck(final String type) { public Deck(final GameType type) {
this(); this();
setDeckType(type); setDeckType(type);
} }
@@ -95,7 +95,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* *
* @return a {@link java.lang.String} object. * @return a {@link java.lang.String} object.
*/ */
public String getDeckType() { public GameType getDeckType() {
return deckType; return deckType;
} }
@@ -105,17 +105,12 @@ public final class Deck implements Comparable<Deck>, Serializable {
* *
* @param deckType a {@link java.lang.String} object. * @param deckType a {@link java.lang.String} object.
*/ */
void setDeckType(String deckType) { void setDeckType(GameType deckType) {
if (this.getDeckType() != null) { if (this.getDeckType() != null) {
throw new IllegalStateException( throw new IllegalStateException(
"Deck : setDeckType() error, deck type has already been set"); "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; this.deckType = deckType;
} }
@@ -202,7 +197,7 @@ public final class Deck implements Comparable<Deck>, Serializable {
* @return a boolean. * @return a boolean.
*/ */
public boolean isDraft() { 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. * @return a boolean.
*/ */
public boolean isSealed() { 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. * @return a boolean.
*/ */
public boolean isRegular() { public boolean isRegular() {
return getDeckType().equals(Constant.GameType.Constructed); return getDeckType().equals(GameType.Constructed);
} }
/** /**

View File

@@ -1,10 +1,12 @@
package forge.deck; package forge.deck;
import forge.Constant;
import forge.PlayerType; import forge.PlayerType;
import forge.card.CardPrinted; import forge.card.CardPrinted;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
@@ -13,12 +15,12 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import static java.lang.Integer.parseInt; import static java.lang.Integer.parseInt;
import static java.lang.String.format; import static java.lang.String.format;
import static java.util.Arrays.asList;
//reads and writeDeck Deck objects //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 NAME = "Name";
private static final String DECK_TYPE = "Deck Type"; private static final String DECK_TYPE = "Deck Type";
private static final String COMMENT = "Comment"; private static final String COMMENT = "Comment";
@@ -119,7 +133,7 @@ public class DeckManager {
* @param deck a {@link forge.deck.Deck} object. * @param deck a {@link forge.deck.Deck} object.
*/ */
public void addDeck(Deck deck) { public void addDeck(Deck deck) {
if (deck.getDeckType().equals(Constant.GameType.Draft)) { if (deck.getDeckType().equals(GameType.Draft)) {
throw new RuntimeException( throw new RuntimeException(
"DeckManager : addDeck() error, deck type is Draft"); "DeckManager : addDeck() error, deck type is Draft");
} }
@@ -174,6 +188,9 @@ public class DeckManager {
} }
draftMap.remove(deckName); 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) { private void checkDraftDeck(Deck[] deck) {
if (deck == null || deck.length != 8 || deck[0].getName().equals("") 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"); throw new RuntimeException("DeckManager : checkDraftDeck() error, invalid deck");
} }
} }
/**
* <p>getDecks.</p>
*
* @return a {@link java.util.Collection} object.
*/
public Collection<Deck> getDecks() { public Collection<Deck> getDecks() {
return deckMap.values(); return deckMap.values();
} }
/**
* <p>getDraftDecks.</p>
*
* @return a {@link java.util.Map} object.
*/
public Map<String, Deck[]> getDraftDecks() { public Map<String, Deck[]> getDraftDecks() {
return new HashMap<String, Deck[]>(draftMap); 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> * <p>readAllDecks.</p>
@@ -305,7 +326,7 @@ public class DeckManager {
} else if (COMMENT.equalsIgnoreCase(field)) { } else if (COMMENT.equalsIgnoreCase(field)) {
d.setComment(linedata[1]); d.setComment(linedata[1]);
} else if (DECK_TYPE.equalsIgnoreCase(field)) { } else if (DECK_TYPE.equalsIgnoreCase(field)) {
d.setDeckType(linedata[1]); d.setDeckType(GameType.smartValueOf(linedata[1]));
} else if (PLAYER.equalsIgnoreCase(field)) { } else if (PLAYER.equalsIgnoreCase(field)) {
if ("human".equalsIgnoreCase(linedata[1])) { if ("human".equalsIgnoreCase(linedata[1])) {
d.setPlayerType(PlayerType.HUMAN); d.setPlayerType(PlayerType.HUMAN);
@@ -344,7 +365,7 @@ public class DeckManager {
} }
//readDeck deck type //readDeck deck type
String deckType = iterator.next(); GameType deckType = GameType.smartValueOf(iterator.next());
Deck d = new Deck(); Deck d = new Deck();
d.setName(name); d.setName(name);
@@ -404,61 +425,52 @@ public class DeckManager {
return result; return result;
} }
/** private static String deriveFileName(String deckName) {
* <p>deriveFileName.</p>
*
* @param deckName a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
private String deriveFileName(String deckName) {
//skips all but the listed characters //skips all but the listed characters
return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", ""); 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> * <p>writeAllDecks.</p>
*/ */
public void writeAllDecks() { public static void writeDraftDecks(Deck[] drafts) {
try { try {
//store the files that do exist File f = makeFileName(drafts[0]);
List<File> files = new ArrayList<File>(); f.mkdir();
files.addAll(asList(deckDir.listFiles(DCKFileFilter))); for (int i = 0; i < drafts.length; i++) {
BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
//save the files and remove them from the list writeDeck(drafts[i], out);
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);
out.close(); 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) { } catch (IOException ex) {
ErrorViewer.showError(ex); ErrorViewer.showError(ex);
throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage()); throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage());
@@ -473,10 +485,10 @@ public class DeckManager {
* @throws java.io.IOException if any. * @throws java.io.IOException if any.
*/ */
private static void writeDeck(final Deck d, final BufferedWriter out) throws IOException { 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", 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 // these are optional
if (d.getComment() != null) { out.write(format("%s=%s%n", COMMENT, d.getComment().replaceAll("\n", ""))); } 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())); } 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> * <p>writeDeck.</p>
@@ -522,7 +514,6 @@ public class DeckManager {
try { try {
BufferedWriter writer = new BufferedWriter(new FileWriter(f)); BufferedWriter writer = new BufferedWriter(new FileWriter(f));
writeDeck(d, writer); writeDeck(d, writer);
writer.close(); writer.close();
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

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

View File

@@ -16,6 +16,7 @@ import forge.card.CardPool;
import forge.card.CardSet; import forge.card.CardSet;
import forge.card.spellability.Ability_Mana; import forge.card.spellability.Ability_Mana;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import javax.swing.*; 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++) for (i = 0; i < deck.size(); i++)
aiDeck.addMain(deck.get(i).getName() + "|" + deck.get(i).getCurSetCode()); aiDeck.addMain(deck.get(i).getName() + "|" + deck.get(i).getCurSetCode());

View File

@@ -1,6 +1,8 @@
package forge.gui.deckeditor; package forge.gui.deckeditor;
import forge.card.CardPoolView; import forge.card.CardPoolView;
import forge.deck.Deck;
import forge.game.GameType;
/** /**
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.
@@ -11,37 +13,19 @@ import forge.card.CardPoolView;
* @version $Id$ * @version $Id$
*/ */
public interface DeckDisplay { public interface DeckDisplay {
/** void setDeck(CardPoolView top, CardPoolView bottom, GameType gameType);
* <p>updateDisplay.</p>
*
* @param top a {@link forge.CardList} object.
* @param bottom a {@link forge.CardList} object.
*/
void setDecks(CardPoolView top, CardPoolView bottom);
//top shows available card pool //top shows available card pool
//if constructed, top shows all cards //if constructed, top shows all cards
//if sealed, top shows 5 booster packs //if sealed, top shows 5 booster packs
//if draft, top shows cards that were chosen //if draft, top shows cards that were chosen
/**
* <p>getTop.</p>
*
* @return a {@link forge.CardList} object.
*/
CardPoolView getTop(); CardPoolView getTop();
//bottom shows cards that the user has chosen for his library //bottom shows cards that the user has chosen for his library
/**
* <p>getBottom.</p>
*
* @return a {@link forge.CardList} object.
*/
CardPoolView getBottom(); CardPoolView getBottom();
/**
* <p>setTitle.</p>
*
* @param message a {@link java.lang.String} object.
*/
void setTitle(String message); 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.Font;
import java.awt.Frame; import java.awt.Frame;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
@@ -16,13 +18,14 @@ import javax.swing.JCheckBox;
import javax.swing.JLabel; import javax.swing.JLabel;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import net.slightlymagic.maxmtg.Predicate; import net.slightlymagic.maxmtg.Predicate;
import forge.AllZone;
import forge.Command; import forge.Command;
import forge.Constant;
import forge.card.CardDb; import forge.card.CardDb;
import forge.card.CardPool;
import forge.card.CardPoolView;
import forge.card.CardPrinted; import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.properties.NewConstants; import forge.game.GameType;
import forge.view.swing.OldGuiNewGame; import forge.view.swing.OldGuiNewGame;
/** /**
@@ -33,7 +36,7 @@ import forge.view.swing.OldGuiNewGame;
* @author Forge * @author Forge
* @version $Id$ * @version $Id$
*/ */
public final class DeckEditor extends DeckEditorBase implements NewConstants { public final class DeckEditor extends DeckEditorBase {
/** Constant <code>serialVersionUID=130339644136746796L</code> */ /** Constant <code>serialVersionUID=130339644136746796L</code> */
private static final long serialVersionUID = 130339644136746796L; 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 analysisButton = new JButton();
private JButton clearFilterButton = new JButton(); private JButton clearFilterButton = new JButton();
private JLabel jLabelAnalysisGap = new JLabel(); private JLabel jLabelAnalysisGap = new JLabel("");
private FilterNameTypeSetPanel filterNameTypeSet; private FilterNameTypeSetPanel filterNameTypeSet;
private boolean isConstructed = false;
/** {@inheritDoc} */
@Override
public void setTitle(final String message) {
super.setTitle(message);
}
public void show(final Command exitCommand) { public void show(final Command exitCommand) {
final Command exit = new Command() { final Command exit = new Command() {
private static final long serialVersionUID = 5210924838133689758L; 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); this.setJMenuBar(customMenu);
// do not change this!!!! // do not change this!!!!
@@ -78,11 +73,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setup(); setup();
isConstructed = Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed);
// show cards, makes this user friendly // show cards, makes this user friendly
if (isConstructed) { if (!getGameType().isLimited()) {
customMenu.newConstructed(); customMenu.newConstructed(false);
} }
top.sort(1, true); top.sort(1, true);
@@ -115,12 +110,8 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
} }
/** public DeckEditor(GameType gameType) {
* <p> super(gameType);
* Constructor for Gui_DeckEditor.
* </p>
*/
public DeckEditor() {
try { try {
filterBoxes = new FilterCheckBoxes(true); filterBoxes = new FilterCheckBoxes(true);
top = new TableWithCards("Avaliable Cards", true, true); top = new TableWithCards("Avaliable Cards", true, true);
@@ -136,44 +127,28 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
private void jbInit() { private void jbInit() {
// removeButton.setIcon(upIcon);
if (!OldGuiNewGame.useLAFFonts.isSelected()) { 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.setText("Add to Deck");
addButton.addActionListener(new java.awt.event.ActionListener() { removeButton.setText("Remove from Deck");
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));
}
clearFilterButton.setText("Clear Filter"); 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"); 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() { analysisButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { public void actionPerformed(final ActionEvent e) { analysisButton_actionPerformed(e); } });
analysisButton_actionPerformed(e);
}
});
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
analysisButton.setFont(new java.awt.Font("Dialog", 0, 13));
}
// Type filtering // Type filtering
Font f = new Font("Tahoma", Font.PLAIN, 10); 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"); MigLayout layout = new MigLayout("fill");
pane.setLayout(layout); pane.setLayout(layout);
// this.getContentPane().add(landCheckBox,
// "cell 0 0, egx checkbox, split 16");
boolean isFirst = true; boolean isFirst = true;
for (JCheckBox box : filterBoxes.allTypes) { for (JCheckBox box : filterBoxes.allTypes) {
String growParameter = "grow"; String growParameter = "grow";
if (isFirst) { if (isFirst) {
@@ -214,36 +186,27 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
box.addItemListener(itemListenerUpdatesDisplay); 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(clearFilterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(filterNameTypeSet, "cell 0 1, grow"); this.getContentPane().add(filterNameTypeSet, "cell 0 1, grow");
this.getContentPane().add(top.getTableDecorated(), "cell 0 2 1 2, pushy, 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(top.getLabel(), "cell 0 4");
this.getContentPane().add(addButton, "w 100, h 49, sg button, cell 0 5, split 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"); this.getContentPane().add(removeButton, "w 100, h 49, sg button");
// Label is used to push the analysis button to the right to separate analysis button from add/remove card ones
// 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("");
this.getContentPane().add(jLabelAnalysisGap, "wmin 100, grow"); this.getContentPane().add(jLabelAnalysisGap, "wmin 100, grow");
this.getContentPane().add(analysisButton, "w 100, h 49, wrap"); this.getContentPane().add(analysisButton, "w 100, h 49, wrap");
this.getContentPane().add(bottom.getTableDecorated(), "cell 0 6, grow"); this.getContentPane().add(bottom.getTableDecorated(), "cell 0 6, grow");
this.getContentPane().add(bottom.getLabel(), "cell 0 7"); this.getContentPane().add(bottom.getLabel(), "cell 0 7");
this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
top.getTable().addMouseListener(new MouseAdapter() { top.getTable().addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(final MouseEvent e) { @Override public void mouseClicked(final MouseEvent e) { if (e.getClickCount() == 2) { addCardToDeck(); } } });
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(); //javax.swing.JRootPane rootPane = this.getRootPane();
//rootPane.setDefaultButton(filterButton); //rootPane.setDefaultButton(filterButton);
@@ -254,6 +217,17 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
return Predicate.and(filterBoxes.buildFilter(), filterNameTypeSet.buildFilter()); 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) { void clearFilterButton_actionPerformed(ActionEvent e) {
// disable automatic update triggered by listeners // disable automatic update triggered by listeners
isFiltersChangeFiringUpdate = false; isFiltersChangeFiringUpdate = false;
@@ -279,9 +253,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved"); setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.addCard(card); bottom.addCard(card);
if (!isConstructed) { if (getGameType().isLimited()) {
top.removeCard(card); top.removeCard(card);
} }
customMenu.notifyDeckChange();
} }
void removeButtonClicked(ActionEvent e) { void removeButtonClicked(ActionEvent e) {
@@ -291,31 +267,10 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved"); setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.removeCard(card); bottom.removeCard(card);
if (!isConstructed) { if (getGameType().isLimited()) {
top.addCard(card); 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.GUI_DeckAnalysis;
import forge.card.CardPrinted; import forge.card.CardPrinted;
import forge.card.CardPoolView; import forge.card.CardPoolView;
import forge.deck.Deck;
import forge.game.GameType;
public abstract class DeckEditorBase extends JFrame implements DeckDisplay { public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
private static final long serialVersionUID = -401223933343539977L; private static final long serialVersionUID = -401223933343539977L;
@@ -29,6 +31,10 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
protected TableWithCards top; protected TableWithCards top;
protected TableWithCards bottom; protected TableWithCards bottom;
private GameType gameType;
public GameType getGameType() { return gameType; }
// top shows available card pool // top shows available card pool
// if constructed, top shows all cards // if constructed, top shows all cards
// if sealed, top shows N booster packs // 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); top.setDeck(topParam);
bottom.setDeck(bottomParam); 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 removeUpdate(DocumentEvent e) { onChange(); }
@Override public void changedUpdate(DocumentEvent e) { } // Happend only on ENTER pressed @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.Deck;
import forge.deck.DeckManager; import forge.deck.DeckManager;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.game.limited.BoosterDraft; import forge.game.limited.BoosterDraft;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.properties.ForgeProps; import forge.properties.ForgeProps;
@@ -106,8 +107,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
this.setResizable(false); this.setResizable(false);
top.getTable().addKeyListener(new KeyAdapter() { top.getTable().addKeyListener(new KeyAdapter() {
@Override @Override public void keyPressed(final KeyEvent e) {
public void keyPressed(final KeyEvent e) {
if (e.getKeyChar() == ' ') { jButton1_actionPerformed(null); } if (e.getKeyChar() == ' ') { jButton1_actionPerformed(null); }
} }
}); });
@@ -115,6 +115,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
} }
public DeckEditorDraft() { public DeckEditorDraft() {
super(GameType.Draft);
try { try {
top = new TableWithCards("Choose one card", false); top = new TableWithCards("Choose one card", false);
bottom = new TableWithCards("Previously picked cards", true); 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. * @return a {@link forge.deck.Deck} object.
*/ */
private Deck getPlayersDeck() { private Deck getPlayersDeck() {
Deck deck = new Deck(Constant.GameType.Draft); Deck deck = new Deck(GameType.Draft);
Constant.Runtime.HumanDeck[0] = deck; Constant.Runtime.HumanDeck[0] = deck;
//add sideboard to deck //add sideboard to deck
@@ -265,7 +266,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
deckManager.addDraftDeck(all); deckManager.addDraftDeck(all);
//write file //write file
deckManager.close(); DeckManager.writeDraftDecks(all);
//close and open next screen //close and open next screen
dispose(); 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.card.CardPrinted;
import forge.deck.Deck; import forge.deck.Deck;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.game.GameType;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.properties.NewConstants; import forge.properties.NewConstants;
import forge.quest.data.QuestData; import forge.quest.data.QuestData;
@@ -26,8 +27,6 @@ import java.util.ArrayList;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JLabel;
import net.slightlymagic.maxmtg.Predicate; import net.slightlymagic.maxmtg.Predicate;
//import forge.quest.data.QuestBoosterPack; //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())) { && questData.getDeckNames().contains(Constant.Runtime.HumanDeck[0].getName())) {
deck = questData.getDeck(Constant.Runtime.HumanDeck[0].getName()); deck = questData.getDeck(Constant.Runtime.HumanDeck[0].getName());
} else { } else {
deck = new Deck(Constant.GameType.Sealed); deck = new Deck(GameType.Sealed);
deck.setName(""); deck.setName("");
} }
@@ -105,7 +104,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
cardpool.removeAll(bottomPool); cardpool.removeAll(bottomPool);
// show cards, makes this user friendly, lol, well may, ha // show cards, makes this user friendly, lol, well may, ha
setDecks(cardpool, bottomPool); setDeck(cardpool, bottomPool, GameType.Quest);
// this affects the card pool // this affects the card pool
top.sort(4, true);// sort by type top.sort(4, true);// sort by type
@@ -152,6 +151,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
} // setupAndDisplay() } // setupAndDisplay()
public DeckEditorQuest(QuestData questData2) { public DeckEditorQuest(QuestData questData2) {
super(GameType.Quest);
questData = questData2; questData = questData2;
try { try {
filterBoxes = new FilterCheckBoxes(false); filterBoxes = new FilterCheckBoxes(false);

View File

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

View File

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

View File

@@ -105,8 +105,10 @@ public final class TableWithCards {
return show.toString(); return show.toString();
} // getStats() } // 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); model.sort(iCol, isAsc);
return this;
} }
// Call this after deleting an item from table // Call this after deleting an item from table

View File

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

View File

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

View File

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