mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
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:
@@ -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,11 +16,11 @@ 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];
|
||||
public static final boolean[] DevMode = new boolean[1]; // one for normal mode one for quest mode
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package forge.card;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import net.slightlymagic.maxmtg.Predicate;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
@@ -42,6 +44,18 @@ public class DeckManager {
|
||||
return name.endsWith(".dck");
|
||||
}
|
||||
};
|
||||
|
||||
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";
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
addButton.setText("Add to Deck");
|
||||
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));
|
||||
}
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -28,6 +30,10 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
|
||||
// CardPools and Table data for top and bottom lists
|
||||
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
|
||||
@@ -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()
|
||||
|
||||
}
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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;
|
||||
|
||||
public void execute() {
|
||||
new OldGuiNewGame();
|
||||
}
|
||||
};
|
||||
editor.show(exit);
|
||||
editor.setVisible(true);
|
||||
} // if
|
||||
|
||||
// refresh decks:
|
||||
allDecks = getDecks();
|
||||
|
||||
// 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);
|
||||
Command exit = new Command() {
|
||||
private static final long serialVersionUID = -9133358399503226853L;
|
||||
|
||||
public void execute() {
|
||||
|
||||
updateDeckComboBoxes();
|
||||
OldGuiNewGame.this.setVisible(true);
|
||||
}
|
||||
};
|
||||
|
||||
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
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user