diff --git a/.gitattributes b/.gitattributes index 993eb213420..e5568474465 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9768,6 +9768,7 @@ src/main/java/forge/card/trigger/Trigger_Unequip.java svneol=native#text/plain src/main/java/forge/card/trigger/Trigger_Untaps.java svneol=native#text/plain src/main/java/forge/card/trigger/package-info.java svneol=native#text/plain src/main/java/forge/deck/Deck.java svneol=native#text/plain +src/main/java/forge/deck/DeckGeneration.java -text src/main/java/forge/deck/DeckManager.java svneol=native#text/plain src/main/java/forge/deck/DownloadDeck.java svneol=native#text/plain src/main/java/forge/deck/generate/Generate2ColorDeck.java svneol=native#text/plain diff --git a/src/main/java/forge/Constant.java b/src/main/java/forge/Constant.java index 050441d36a2..a7cf7c710e0 100644 --- a/src/main/java/forge/Constant.java +++ b/src/main/java/forge/Constant.java @@ -132,22 +132,22 @@ public interface Constant { } public interface CardTypes { - boolean[] loaded = {false}; - Constant_StringArrayList[] cardTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] superTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] basicTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] landTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] creatureTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] instantTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] sorceryTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] enchantmentTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] artifactTypes = new Constant_StringArrayList[1]; - Constant_StringArrayList[] walkerTypes = new Constant_StringArrayList[1]; + boolean[] loaded = {false}; + Constant_StringArrayList[] cardTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] superTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] basicTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] landTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] creatureTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] instantTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] sorceryTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] enchantmentTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] artifactTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] walkerTypes = new Constant_StringArrayList[1]; } public interface Keywords { - boolean[] loaded = {false}; - Constant_StringArrayList[] NonStackingList = new Constant_StringArrayList[1]; + boolean[] loaded = {false}; + Constant_StringArrayList[] NonStackingList = new Constant_StringArrayList[1]; } diff --git a/src/main/java/forge/deck/DeckGeneration.java b/src/main/java/forge/deck/DeckGeneration.java new file mode 100644 index 00000000000..de6003a448d --- /dev/null +++ b/src/main/java/forge/deck/DeckGeneration.java @@ -0,0 +1,314 @@ +package forge.deck; + +import java.util.ArrayList; +import java.util.Random; + +import forge.CardList; +import forge.Constant; +import forge.MyRandom; +import forge.PlayerType; +import forge.deck.generate.Generate2ColorDeck; +import forge.deck.generate.Generate3ColorDeck; +import forge.deck.generate.Generate5ColorDeck; +import forge.deck.generate.GenerateConstructedDeck; +import forge.deck.generate.GenerateConstructedMultiColorDeck; +import forge.deck.generate.GenerateThemeDeck; +import forge.game.GameType; +import forge.gui.GuiUtils; + +/** + * Utility class to hold add deck generation routines, methods moved from OldGuiNewGame + * + */ +public abstract class DeckGeneration { + /** + *
+ * genDecks. + *
+ * + * @param playerType + * {@link java.lang.String} object. + */ + public static void genDecks(final PlayerType playerType) { + // TODO: jendave to refactor deck generation + Deck d = null; + + ArrayList+ * generateConstructedDeck. + *
+ * + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generateConstructedDeck() { + GenerateConstructedDeck gen = new GenerateConstructedDeck(); + CardList name = gen.generateDeck(); + Deck deck = new Deck(GameType.Constructed); + + for (int i = 0; i < 60; i++) { + deck.addMain(name.get(i).getName()); + } + return deck; + } + + /** + *+ * generateConstructed3ColorDeck. + *
+ * + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generateConstructed3ColorDeck() { + GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); + CardList name = gen.generate3ColorDeck(); + Deck deck = new Deck(GameType.Constructed); + + for (int i = 0; i < 60; i++) { + deck.addMain(name.get(i).getName()); + } + return deck; + } + + /** + *+ * generateConstructed5ColorDeck. + *
+ * + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generateConstructed5ColorDeck() { + GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); + CardList name = gen.generate5ColorDeck(); + Deck deck = new Deck(GameType.Constructed); + + for (int i = 0; i < 60; i++) { + deck.addMain(name.get(i).getName()); + } + return deck; + } + + /** + *+ * generateConstructedThemeDeck. + *
+ * + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generateConstructedThemeDeck() { + GenerateThemeDeck gen = new GenerateThemeDeck(); + ArrayList+ * generate2ColorDeck. + *
+ * + * @param p + * a {@link java.lang.String} object. + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generate2ColorDeck(final PlayerType p) { + Random r = MyRandom.random; + + ArrayList+ * generate3ColorDeck. + *
+ * + * @param p + * a {@link java.lang.String} object. + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generate3ColorDeck(final PlayerType p) { + Random r = MyRandom.random; + + ArrayList+ * generate5ColorDeck. + *
+ * + * @param p + * a {@link java.lang.String} object. + * @return a {@link forge.deck.Deck} object. + */ + private static Deck generate5ColorDeck(final PlayerType p) { + //Random r = MyRandom.random; + + //ArrayListserialVersionUID=-4037993759604768755L */
private static final long serialVersionUID = -4037993759604768755L;
@@ -44,7 +44,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
private static File previousDirectory = null;
private DeckManager deckManager;
-
+
private boolean isDeckSaved = true;
private String currentDeckName;
@@ -130,8 +130,8 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
} //setupSortMenu()
- public void newConstructed(boolean careAboutOldDeck) {
- if (careAboutOldDeck && !canLeaveCurrentDeck()) return;
+ public void newConstructed(final boolean careAboutOldDeck) {
+ if (careAboutOldDeck && !canLeaveCurrentDeck()) { return; }
setDeckData("", true);
@@ -139,7 +139,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
private void newRandomConstructed() {
- if (!canLeaveCurrentDeck()) return;
+ if (!canLeaveCurrentDeck()) { return; }
setDeckData("", false);
@@ -159,14 +159,14 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
private void newGenerateConstructed() {
- if (!canLeaveCurrentDeck()) return;
+ if (!canLeaveCurrentDeck()) { return; }
setDeckData("", false);
GenerateConstructedDeck gen = new GenerateConstructedDeck();
CardPool generated = new CardPool();
- for (Card c : gen.generateDeck()) { generated.add( CardDb.instance().getCard(c)); }
+ for (Card c : gen.generateDeck()) { generated.add(CardDb.instance().getCard(c)); }
deckDisplay.setDeck(null, generated, GameType.Constructed);
}
@@ -296,7 +296,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
private void saveAs() {
- String name = getUserInput_GetDeckName();
+ String name = getDeckNameFromDialog();
if (name.equals("")) { return; }
setDeckData(name, true);
@@ -312,8 +312,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
all[0] = deck;
deckManager.addDraftDeck(all);
DeckManager.writeDraftDecks(all);
- } else//constructed and sealed
- {
+ } else {//constructed and sealed
deckManager.addDeck(deck);
DeckManager.writeDeck(deck, DeckManager.makeFileName(deck));
}
@@ -345,10 +344,10 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
private boolean canLeaveCurrentDeck() {
- if (isSaved()) return true;
+ if (isSaved()) { return true; }
String message = String.format("Do you wish to save changes you made to your current deck '%s'?", currentDeckName);
int choice = JOptionPane.showConfirmDialog((Component) deckDisplay, message,
- "You have unsaved changes in your deck", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
+ "You have unsaved changes in your deck", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (JOptionPane.CANCEL_OPTION == choice) { return false; }
if (JOptionPane.NO_OPTION == choice) { return true; }
@@ -357,43 +356,42 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
DeckManager.writeDeck(deck, DeckManager.makeFileName(deck));
return true;
}
-
- private Deck getDeck()
- {
+
+ private Deck getDeck() {
Deck deck = deckDisplay.getDeck();
deck.setName(currentDeckName);
return deck;
}
- private void setDeckData(final String deckName, final boolean in_isDeckSaved) {
+ private void setDeckData(final String deckName, final boolean inDeckSaved) {
currentDeckName = deckName;
- isDeckSaved = in_isDeckSaved;
+ isDeckSaved = inDeckSaved;
deckDisplay.setTitle("Deck Editor : " + currentDeckName);
}
- public final String getDeckName() { return currentDeckName; }
- public final boolean isSaved() { return isDeckSaved; }
+ public String getDeckName() { return currentDeckName; }
+ public boolean isSaved() { return isDeckSaved; }
/**
* getUserInput_GetDeckName.
* * @return a {@link java.lang.String} object. */ - private String getUserInput_GetDeckName() { + private String getDeckNameFromDialog() { Object o = JOptionPane.showInputDialog(null, "Save As", "Deck Name", JOptionPane.OK_CANCEL_OPTION); if (o == null) { return ""; } String deckName = DeckManager.cleanDeckName(o.toString()); - boolean isDraft = deckDisplay.getGameType() == GameType.Draft; + boolean isDraft = deckDisplay.getGameType() == GameType.Draft; boolean isUniqueName = isDraft ? deckManager.isUniqueDraft(deckName) : deckManager.isUnique(deckName); boolean isGoodName = isUniqueName && StringUtils.isNotBlank(deckName); if (isGoodName) { return deckName; } JOptionPane.showMessageDialog(null, "Please pick another deck name, another deck currently has that name."); - return getUserInput_GetDeckName(); + return getDeckNameFromDialog(); } private String getUserInput_OpenDeck(final GameType deckType) { diff --git a/src/main/java/forge/view/swing/OldGuiNewGame.java b/src/main/java/forge/view/swing/OldGuiNewGame.java index d32c6db56a3..78673d8863d 100644 --- a/src/main/java/forge/view/swing/OldGuiNewGame.java +++ b/src/main/java/forge/view/swing/OldGuiNewGame.java @@ -5,6 +5,7 @@ import com.esotericsoftware.minlog.Log; import forge.*; import forge.card.CardPool; import forge.deck.Deck; +import forge.deck.DeckGeneration; import forge.deck.DeckManager; import forge.deck.generate.*; import forge.error.BugzReporter; @@ -723,7 +724,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants. if (humanGenerate) { if (constructed) { - genDecks(PlayerType.HUMAN); + DeckGeneration.genDecks(PlayerType.HUMAN); } // else if(sealed) // Constant.Runtime.HumanDeck[0] = generateSealedDeck(); @@ -743,7 +744,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants. if (computerGenerate) { if (constructed) { - genDecks(PlayerType.COMPUTER); + DeckGeneration.genDecks(PlayerType.COMPUTER); } // Constant.Runtime.ComputerDeck[0] = // generateConstructedDeck(); // else if(sealed) @@ -775,299 +776,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants. dispose(); } // startButton_actionPerformed() - /** - *- * genDecks. - *
- * - * @param playerType - * {@link java.lang.String} object. - */ - private void genDecks(final PlayerType playerType) { - // TODO: jendave to refactor deck generation - Deck d = null; - - ArrayList- * generateConstructedDeck. - *
- * - * @return a {@link forge.deck.Deck} object. - */ - private Deck generateConstructedDeck() { - GenerateConstructedDeck gen = new GenerateConstructedDeck(); - CardList name = gen.generateDeck(); - Deck deck = new Deck(GameType.Constructed); - - for (int i = 0; i < 60; i++) { - deck.addMain(name.get(i).getName()); - } - return deck; - } - - /** - *- * generateConstructed3ColorDeck. - *
- * - * @return a {@link forge.deck.Deck} object. - */ - private Deck generateConstructed3ColorDeck() { - GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); - CardList name = gen.generate3ColorDeck(); - Deck deck = new Deck(GameType.Constructed); - - for (int i = 0; i < 60; i++) { - deck.addMain(name.get(i).getName()); - } - return deck; - } - - /** - *- * generateConstructed5ColorDeck. - *
- * - * @return a {@link forge.deck.Deck} object. - */ - private Deck generateConstructed5ColorDeck() { - GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); - CardList name = gen.generate5ColorDeck(); - Deck deck = new Deck(GameType.Constructed); - - for (int i = 0; i < 60; i++) { - deck.addMain(name.get(i).getName()); - } - return deck; - } - - /** - *- * generateConstructedThemeDeck. - *
- * - * @return a {@link forge.deck.Deck} object. - */ - private Deck generateConstructedThemeDeck() { - GenerateThemeDeck gen = new GenerateThemeDeck(); - ArrayList- * generate2ColorDeck. - *
- * - * @param p - * a {@link java.lang.String} object. - * @return a {@link forge.deck.Deck} object. - */ - private Deck generate2ColorDeck(final PlayerType p) { - Random r = MyRandom.random; - - ArrayList- * generate3ColorDeck. - *
- * - * @param p - * a {@link java.lang.String} object. - * @return a {@link forge.deck.Deck} object. - */ - private Deck generate3ColorDeck(final PlayerType p) { - Random r = MyRandom.random; - - ArrayList- * generate3ColorDeck. - *
- * - * @param p - * a {@link java.lang.String} object. - * @return a {@link forge.deck.Deck} object. - */ - private Deck generate5ColorDeck(final PlayerType p) { - //Random r = MyRandom.random; - - //ArrayList@@ -1105,46 +813,45 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants. computerComboBox.removeAllItems(); allDecks = getDecks(); - switch(Constant.Runtime.gameType) - { - case Sealed: - humanComboBox.addItem("New Sealed"); - computerComboBox.addItem("New Sealed"); + switch (Constant.Runtime.gameType) { + case Sealed: + humanComboBox.addItem("New Sealed"); + computerComboBox.addItem("New Sealed"); - for (Deck allDeck : allDecks) { - if (allDeck.getDeckType().equals(GameType.Sealed)) { - JComboBox boxToAdd = allDeck.getPlayerType() == PlayerType.COMPUTER ? computerComboBox : humanComboBox; - boxToAdd.addItem(allDeck.getName()); + for (Deck allDeck : allDecks) { + if (allDeck.getDeckType().equals(GameType.Sealed)) { + JComboBox boxToAdd = allDeck.getPlayerType() == PlayerType.COMPUTER ? computerComboBox : humanComboBox; + boxToAdd.addItem(allDeck.getName()); + } + } // for + break; + case Constructed: + humanComboBox.addItem("Generate Deck"); + computerComboBox.addItem("Generate Deck"); + + humanComboBox.addItem("Random"); + computerComboBox.addItem("Random"); + + for (Deck allDeck : allDecks) { + 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 - break; - case Constructed: - humanComboBox.addItem("Generate Deck"); - computerComboBox.addItem("Generate Deck"); - humanComboBox.addItem("Random"); - computerComboBox.addItem("Random"); - - for (Deck allDeck : allDecks) { - if (allDeck.getDeckType().equals(GameType.Constructed)) { - humanComboBox.addItem(allDeck.getName()); - computerComboBox.addItem(allDeck.getName()); + for (int i = 0; i < 7; i++) { + computerComboBox.addItem("" + (i + 1)); } - } // 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; + break; } // not sure if the code below is useful or not // this will select the deck that you previously used