diff --git a/.gitattributes b/.gitattributes index b2a78059519..96d26ae5dc0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11251,12 +11251,9 @@ src/main/java/forge/deck/DeckBase.java -text src/main/java/forge/deck/DeckGroup.java -text src/main/java/forge/deck/DeckRecognizer.java -text src/main/java/forge/deck/DeckSection.java -text -src/main/java/forge/deck/generate/DeckGenerator.java -text src/main/java/forge/deck/generate/Generate2ColorDeck.java svneol=native#text/plain src/main/java/forge/deck/generate/Generate3ColorDeck.java svneol=native#text/plain src/main/java/forge/deck/generate/Generate5ColorDeck.java svneol=native#text/plain -src/main/java/forge/deck/generate/GenerateConstructedDeck.java svneol=native#text/plain -src/main/java/forge/deck/generate/GenerateConstructedMultiColorDeck.java svneol=native#text/plain src/main/java/forge/deck/generate/GenerateDeckUtil.java -text src/main/java/forge/deck/generate/GenerateThemeDeck.java svneol=native#text/plain src/main/java/forge/deck/generate/package-info.java svneol=native#text/plain @@ -11531,8 +11528,6 @@ src/test/java/forge/card/mana/ManaPartTest.java svneol=native#text/plain src/test/java/forge/deck/generate/Generate2ColorDeckTest.java svneol=native#text/plain src/test/java/forge/deck/generate/Generate3ColorDeckTest.java svneol=native#text/plain src/test/java/forge/deck/generate/Generate5ColorDeckTest.java svneol=native#text/plain -src/test/java/forge/deck/generate/GenerateConstructedDeckTest.java svneol=native#text/plain -src/test/java/forge/deck/generate/GenerateConstructedMultiColorDeckTest.java svneol=native#text/plain src/test/java/forge/gui/ListChooserTest.java svneol=native#text/plain src/test/java/forge/gui/game/CardDetailPanelTest.java svneol=native#text/plain src/test/java/forge/model/BuildInfoTest.java -text diff --git a/src/main/java/forge/deck/generate/DeckGenerator.java b/src/main/java/forge/deck/generate/DeckGenerator.java deleted file mode 100644 index b0d27288d47..00000000000 --- a/src/main/java/forge/deck/generate/DeckGenerator.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Forge: Play Magic: the Gathering. - * Copyright (C) 2011 Forge Team - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package forge.deck.generate; - -import java.util.ArrayList; -import java.util.Random; - -import forge.Constant; -import forge.PlayerType; -import forge.deck.Deck; -import forge.gui.GuiUtils; -import forge.util.MyRandom; - -/** - * Utility class to hold add deck generation routines, methods moved from - * OldGuiNewGame. - * - */ -public abstract class DeckGenerator { - - /** - *

- * genDecks. - *

- * - * @param playerType - * the player type {@link java.lang.String} object. - */ - public static void genDecks(final PlayerType playerType) { - // TODO jendave to refactor deck generation - Deck d = null; - - final ArrayList decks = new ArrayList(); - decks.add("2-Color Deck"); - decks.add("3-Color Deck"); - decks.add("5-Color Deck"); - decks.add("2-Color Deck (original)"); - decks.add("3-Color Deck (original)"); - decks.add("5-Color Deck (original)"); - decks.add("Semi-Random Theme Deck"); - - final String playerName = playerType.equals(PlayerType.HUMAN) ? "Human" : "Computer"; - final String prompt = String.format("Generate %s Deck", playerName); - - final Object o = GuiUtils.getChoice(prompt, decks.toArray()); - - if (o.toString().equals(decks.get(0))) { - d = DeckGenerator.generate2ColorDeck(playerType); - } else if (o.toString().equals(decks.get(1))) { - d = DeckGenerator.generate3ColorDeck(playerType); - } else if (o.toString().equals(decks.get(2))) { - d = DeckGenerator.generate5ColorDeck(playerType); - } else if (o.toString().equals(decks.get(3))) { - d = DeckGenerator.generateConstructedDeck(); - } else if (o.toString().equals(decks.get(4))) { - d = DeckGenerator.generateConstructed3ColorDeck(); - } else if (o.toString().equals(decks.get(5))) { - d = DeckGenerator.generateConstructed5ColorDeck(); - } else if (o.toString().equals(decks.get(6))) { - d = DeckGenerator.generateConstructedThemeDeck(); - } - - if (playerType.equals(PlayerType.HUMAN)) { - Constant.Runtime.HUMAN_DECK[0] = d; - } else if (playerType.equals(PlayerType.COMPUTER)) { - Constant.Runtime.COMPUTER_DECK[0] = d; - } - } - - /** - *

- * generateConstructedDeck. - *

- * - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generateConstructedDeck() { - final GenerateConstructedDeck gen = new GenerateConstructedDeck(); - final Deck deck = new Deck(); - deck.getMain().add(gen.generateDeck()); - return deck; - } - - /** - *

- * generateConstructed3ColorDeck. - *

- * - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generateConstructed3ColorDeck() { - final GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); - final Deck deck = new Deck(); - deck.getMain().add(gen.generate3ColorDeck()); - return deck; - } - - /** - *

- * generateConstructed5ColorDeck. - *

- * - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generateConstructed5ColorDeck() { - final GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck(); - final Deck deck = new Deck(); - deck.getMain().add(gen.generate5ColorDeck()); - return deck; - } - - /** - *

- * generateConstructedThemeDeck. - *

- * - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generateConstructedThemeDeck() { - final GenerateThemeDeck gen = new GenerateThemeDeck(); - final ArrayList tNames = GenerateThemeDeck.getThemeNames(); - tNames.add(0, "Random"); - final Object o = GuiUtils.getChoice("Select a theme.", tNames.toArray()); - - String stDeck; - if (o.toString().equals("Random")) { - final Random r = MyRandom.getRandom(); - stDeck = tNames.get(r.nextInt(tNames.size() - 1) + 1); - } else { - stDeck = o.toString(); - } - - final Deck deck = new Deck(); - deck.getMain().add(gen.getThemeDeck(stDeck, 60)); - - return deck; - } - - /** - *

- * generate2ColorDeck. - *

- * - * @param p - * a {@link java.lang.String} object. - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generate2ColorDeck(final PlayerType p) { - final Random r = MyRandom.getRandom(); - - final ArrayList colors = new ArrayList(); - colors.add("Random"); - colors.add("white"); - colors.add("blue"); - colors.add("black"); - colors.add("red"); - colors.add("green"); - - String c1; - String c2; - if (p.equals(PlayerType.HUMAN)) { - c1 = GuiUtils.getChoice("Select first color.", colors.toArray()).toString(); - - if (c1.equals("Random")) { - c1 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - - colors.remove(c1); - - c2 = GuiUtils.getChoice("Select second color.", colors.toArray()).toString(); - - if (c2.equals("Random")) { - c2 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - } else { - // if (p.equals("C")) - c1 = colors.get(r.nextInt(colors.size() - 1) + 1); - colors.remove(c1); - c2 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - final Generate2ColorDeck gen = new Generate2ColorDeck(c1, c2); - - final Deck deck = new Deck(); - deck.getMain().add(gen.get2ColorDeck(60, p)); - return deck; - } - - /** - *

- * generate3ColorDeck. - *

- * - * @param p - * a {@link java.lang.String} object. - * @return a {@link forge.deck.Deck} object. - */ - private static Deck generate3ColorDeck(final PlayerType p) { - final Random r = MyRandom.getRandom(); - - final ArrayList colors = new ArrayList(); - colors.add("Random"); - colors.add("white"); - colors.add("blue"); - colors.add("black"); - colors.add("red"); - colors.add("green"); - - String c1; - String c2; - String c3; - if (p.equals(PlayerType.HUMAN)) { - c1 = GuiUtils.getChoice("Select first color.", colors.toArray()).toString(); - - if (c1.equals("Random")) { - c1 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - - colors.remove(c1); - - c2 = GuiUtils.getChoice("Select second color.", colors.toArray()).toString(); - - if (c2.equals("Random")) { - c2 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - - colors.remove(c2); - - c3 = GuiUtils.getChoice("Select third color.", colors.toArray()).toString(); - if (c3.equals("Random")) { - c3 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - - } else { - // if (p.equals("C")) - c1 = colors.get(r.nextInt(colors.size() - 1) + 1); - colors.remove(c1); - c2 = colors.get(r.nextInt(colors.size() - 1) + 1); - colors.remove(c2); - c3 = colors.get(r.nextInt(colors.size() - 1) + 1); - } - final Generate3ColorDeck gen = new Generate3ColorDeck(c1, c2, c3); - final Deck deck = new Deck(); - deck.getMain().add(gen.get3ColorDeck(60, p)); - return deck; - } - - /** - *

- * 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; - - // ArrayList colors = new ArrayList(); - // colors.add("Random"); - // colors.add("white"); - // colors.add("blue"); - // colors.add("black"); - // colors.add("red"); - // colors.add("green"); - - final Generate5ColorDeck gen = new Generate5ColorDeck("white", "blue", "black", "red", "green"); - final Deck deck = new Deck(); - deck.getMain().add(gen.get5ColorDeck(60, p)); - return deck; - - } - -} diff --git a/src/main/java/forge/deck/generate/GenerateConstructedDeck.java b/src/main/java/forge/deck/generate/GenerateConstructedDeck.java deleted file mode 100644 index 3466dcdc39b..00000000000 --- a/src/main/java/forge/deck/generate/GenerateConstructedDeck.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Forge: Play Magic: the Gathering. - * Copyright (C) 2011 Forge Team - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package forge.deck.generate; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import forge.AllZone; -import forge.Card; -import forge.CardFilter; -import forge.CardList; -import forge.CardListFilter; -import forge.CardListUtil; -import forge.CardUtil; -import forge.Constant; -import forge.Singletons; -import forge.properties.ForgePreferences.FPref; - -/** - *

- * GenerateConstructedDeck class. - *

- * - * @author Forge - * @version $Id$ - */ -public class GenerateConstructedDeck { - private String color1; - private String color2; - - private final Map map = new HashMap(); - - /** - *

- * Constructor for GenerateConstructedDeck. - *

- */ - public GenerateConstructedDeck() { - this.setupMap(); - } - - /** - *

- * setupMap. - *

- */ - private void setupMap() { - this.map.put(Constant.Color.BLACK, "Swamp"); - this.map.put(Constant.Color.BLUE, "Island"); - this.map.put(Constant.Color.GREEN, "Forest"); - this.map.put(Constant.Color.RED, "Mountain"); - this.map.put(Constant.Color.WHITE, "Plains"); - } - - /** - *

- * generateDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - public final CardList generateDeck() { - CardList deck; - - int check; - - do { - deck = this.get2ColorDeck(); - check = deck.getType("Creature").size(); - - } while ((check < 16) || (24 < check)); - - this.addLand(deck); - - if (deck.size() != 60) { - throw new RuntimeException( - "GenerateConstructedDeck() : generateDeck() error, deck size it not 60, deck size is " - + deck.size()); - } - return deck; - } - - // 25 lands - /** - *

- * addLand. - *

- * - * @param list - * a {@link forge.CardList} object. - */ - private void addLand(final CardList list) { - Card land; - for (int i = 0; i < 13; i++) { - land = AllZone.getCardFactory().getCard(this.map.get(this.color1).toString(), AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color2).toString(), AllZone.getComputerPlayer()); - list.add(land); - } - } // addLand() - - /** - * Creates a CardList from the set of all cards that meets the criteria for - * color(s), type, whether the card is suitable for placement in random - * decks and in AI decks, etc. - * - * @see #filterBadCards(Iterable) - * - * @return a subset of cards <= the set of all cards; might be empty, but - * never null - */ - private CardList getCards() { - return this.filterBadCards(AllZone.getCardFactory()); - } // getCards() - - /** - *

- * get2ColorDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - private CardList get2ColorDeck() { - final CardList deck = this.get2Colors(this.getCards()); - - final CardList out = new CardList(); - deck.shuffle(); - - // trim deck size down to 34 cards, presumes 26 land, for a total of 60 - // cards - for (int i = 0; (i < 34) && (i < deck.size()); i++) { - out.add(deck.get(i)); - } - return out; - } - - /** - *

- * get2Colors. - *

- * - * @param in - * a {@link forge.CardList} object. - * @return a {@link forge.CardList} object. - */ - private CardList get2Colors(final CardList in) { - int a; - int b; - - do { - a = CardUtil.getRandomIndex(Constant.Color.ONLY_COLORS); - b = CardUtil.getRandomIndex(Constant.Color.ONLY_COLORS); - } while (a == b); // do not want to get the same color twice - - this.color1 = Constant.Color.ONLY_COLORS[a]; - this.color2 = Constant.Color.ONLY_COLORS[b]; - - CardList out = new CardList(); - out.addAll(CardListUtil.getColor(in, this.color1)); - out.addAll(CardListUtil.getColor(in, this.color2)); - out.shuffle(); - - final CardList artifact = in.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - // is this really a colorless artifact and not something - // weird like Sarcomite Myr which is a colored artifact - return c.isArtifact() && CardUtil.getColors(c).contains(Constant.Color.COLORLESS) - && !Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS); - } - }); - out.addAll(artifact); - - out = out.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - if (c.isCreature() && (c.getNetAttack() <= 1) - && Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_NOSMALL)) { - return false; - } - - return true; - } - }); - - out = this.filterBadCards(out); - return out; - } - - /** - * Creates a CardList from the given sequence that meets the criteria for - * color(s), type, whether the card is suitable for placement in random - * decks and in AI decks, etc. - * - * @param sequence - * an iterable over Card instances - * - * @return a subset of sequence <= sequence; might be empty, but never null - */ - private CardList filterBadCards(final Iterable sequence) { - - final ArrayList goodLand = new ArrayList(); - - final CardList out = CardFilter.filter(sequence, new CardListFilter() { - @Override - public boolean addCard(final Card c) { - final ArrayList list = CardUtil.getColors(c); - if (list.size() == 2) { - if (!(list.contains(GenerateConstructedDeck.this.color1) && list - .contains(GenerateConstructedDeck.this.color2))) { - return false; - } - } - return ((CardUtil.getColors(c).size() <= 2 // only dual colored - ) - // gold cards - && !c.isLand() // no land - && !c.getSVar("RemRandomDeck").equals("True") && !c.getSVar("RemAIDeck").equals("True")) - // OR very important - || goodLand.contains(c.getName()); - } - }); - - return out; - } // filterBadCards() -} diff --git a/src/main/java/forge/deck/generate/GenerateConstructedMultiColorDeck.java b/src/main/java/forge/deck/generate/GenerateConstructedMultiColorDeck.java deleted file mode 100644 index f2424c3a59b..00000000000 --- a/src/main/java/forge/deck/generate/GenerateConstructedMultiColorDeck.java +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Forge: Play Magic: the Gathering. - * Copyright (C) 2011 Forge Team - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package forge.deck.generate; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import forge.AllZone; -import forge.Card; -import forge.CardFilter; -import forge.CardList; -import forge.CardListFilter; -import forge.CardListUtil; -import forge.CardUtil; -import forge.Constant; -import forge.Singletons; -import forge.properties.ForgePreferences.FPref; - -/** - *

- * GenerateConstructedMultiColorDeck class. - *

- * - * @author Forge - * @version $Id$ - */ -public class GenerateConstructedMultiColorDeck { - private String color1; - private String color2; - private String color3; - private String color4; - private String color5; - - private final Map map = new HashMap(); - private final Map multiMap = new HashMap(); - - /** - *

- * Constructor for GenerateConstructedMultiColorDeck. - *

- */ - public GenerateConstructedMultiColorDeck() { - this.setupBasicLandMap(); - this.setupMultiMap(); - } - - /** - *

- * setupBasicLandMap. - *

- */ - private void setupBasicLandMap() { - this.map.put(Constant.Color.BLACK, "Swamp"); - this.map.put(Constant.Color.BLUE, "Island"); - this.map.put(Constant.Color.GREEN, "Forest"); - this.map.put(Constant.Color.RED, "Mountain"); - this.map.put(Constant.Color.WHITE, "Plains"); - } - - /** - *

- * setupMultiMap. - *

- */ - private void setupMultiMap() { - this.multiMap.put(Constant.Color.BLACK + Constant.Color.BLUE, - new String[] { "Underground Sea", "Watery Grave" }); - this.multiMap.put(Constant.Color.BLACK + Constant.Color.GREEN, new String[] { "Bayou", "Overgrown Tomb" }); - this.multiMap.put(Constant.Color.BLACK + Constant.Color.RED, new String[] { "Badlands", "Blood Crypt" }); - this.multiMap.put(Constant.Color.BLACK + Constant.Color.WHITE, new String[] { "Scrubland", "Godless Shrine" }); - this.multiMap.put(Constant.Color.BLUE + Constant.Color.BLACK, - new String[] { "Underground Sea", "Watery Grave" }); - this.multiMap.put(Constant.Color.BLUE + Constant.Color.GREEN, - new String[] { "Tropical Island", "Breeding Pool" }); - this.multiMap.put(Constant.Color.BLUE + Constant.Color.RED, new String[] { "Volcanic Island", "Steam Vents" }); - this.multiMap.put(Constant.Color.BLUE + Constant.Color.WHITE, new String[] { "Tundra", "Hallowed Fountain" }); - this.multiMap.put(Constant.Color.GREEN + Constant.Color.BLACK, new String[] { "Bayou", "Overgrown Tomb" }); - this.multiMap.put(Constant.Color.GREEN + Constant.Color.BLUE, - new String[] { "Tropical Island", "Breeding Pool" }); - this.multiMap.put(Constant.Color.GREEN + Constant.Color.RED, new String[] { "Taiga", "Stomping Ground" }); - this.multiMap.put(Constant.Color.GREEN + Constant.Color.WHITE, new String[] { "Savannah", "Temple Garden" }); - this.multiMap.put(Constant.Color.RED + Constant.Color.BLACK, new String[] { "Badlands", "Blood Crypt" }); - this.multiMap.put(Constant.Color.RED + Constant.Color.BLUE, new String[] { "Volcanic Island", "Steam Vents" }); - this.multiMap.put(Constant.Color.RED + Constant.Color.GREEN, new String[] { "Taiga", "Stomping Ground" }); - this.multiMap.put(Constant.Color.RED + Constant.Color.WHITE, new String[] { "Plateau", "Sacred Foundry" }); - this.multiMap.put(Constant.Color.WHITE + Constant.Color.BLACK, new String[] { "Scrubland", "Godless Shrine" }); - this.multiMap.put(Constant.Color.WHITE + Constant.Color.BLUE, new String[] { "Tundra", "Hallowed Fountain" }); - this.multiMap.put(Constant.Color.WHITE + Constant.Color.GREEN, new String[] { "Savannah", "Temple Garden" }); - this.multiMap.put(Constant.Color.WHITE + Constant.Color.RED, new String[] { "Plateau", "Sacred Foundry" }); - } - - /** - *

- * generate3ColorDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - public final CardList generate3ColorDeck() { - CardList deck; - - int check; - - do { - deck = this.get3ColorDeck(); - check = deck.getType("Creature").size(); - - } while ((check < 16) || (24 < check)); - - this.addLand(deck, 3); - - if (deck.size() != 60) { - throw new RuntimeException( - "GenerateConstructedDeck() : generateDeck() error, deck size it not 60, deck size is " - + deck.size()); - } - - return deck; - } - - /** - *

- * generate5ColorDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - public final CardList generate5ColorDeck() { - CardList deck; - - deck = this.get5ColorDeck(); - - this.addLand(deck, 5); - - if (deck.size() != 60) { - throw new RuntimeException( - "GenerateConstructedDeck() : generateDeck() error, deck size it not 60, deck size is " - + deck.size()); - } - - return deck; - } - - /** - *

- * addLand. - *

- * - * @param list - * a {@link forge.CardList} object. - * @param colors - * a int. - */ - private void addLand(final CardList list, final int colors) { - if (colors == 3) { - final int numberBasic = 2; - Card land; - for (int i = 0; i < numberBasic; i++) { - - land = AllZone.getCardFactory().getCard(this.map.get(this.color1).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color2).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color3).toString(), - AllZone.getComputerPlayer()); - list.add(land); - } - - final int numberDual = 4; - for (int i = 0; i < numberDual; i++) { - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color2)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color3)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color2 + this.color3)[0], - AllZone.getComputerPlayer()); - list.add(land); - } - for (int i = 0; i < 2; i++) { - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color2)[1], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color3)[1], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color2 + this.color3)[1], - AllZone.getComputerPlayer()); - list.add(land); - } - } else if (colors == 5) { - final int numberBasic = 1; - Card land; - for (int i = 0; i < numberBasic; i++) { - - land = AllZone.getCardFactory().getCard(this.map.get(this.color1).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color2).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color3).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color4).toString(), - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.map.get(this.color5).toString(), - AllZone.getComputerPlayer()); - list.add(land); - } - - final int numberDual = 2; - for (int i = 0; i < numberDual; i++) { - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color2)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color3)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color4)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color1 + this.color5)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color2 + this.color3)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color2 + this.color4)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color2 + this.color5)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color3 + this.color4)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color3 + this.color5)[0], - AllZone.getComputerPlayer()); - list.add(land); - - land = AllZone.getCardFactory().getCard(this.multiMap.get(this.color4 + this.color5)[0], - AllZone.getComputerPlayer()); - list.add(land); - } - - } - } // addLand() - - /** - * Filters out cards by color and their suitability for being placed in a - * randomly created deck. - * - * @param colors - * the number of different colors the deck should have; if this - * is a number other than 3 or 5, we return an empty list. - * - * @return a subset of all cards in the CardFactory database which might be - * empty, but never null - */ - private CardList getCards(final int colors) { - return this.filterBadCards(AllZone.getCardFactory(), colors); - } // getCards() - - /** - *

- * get3ColorDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - private CardList get3ColorDeck() { - final CardList deck = this.get3Colors(this.getCards(3)); - - final CardList out = new CardList(); - deck.shuffle(); - - // trim deck size down to 36 cards, presumes 24 land, for a total of 60 - // cards - for (int i = 0; (i < 36) && (i < deck.size()); i++) { - out.add(deck.get(i)); - } - - return out; - } - - /** - *

- * get5ColorDeck. - *

- * - * @return a {@link forge.CardList} object. - */ - private CardList get5ColorDeck() { - final CardList deck = this.get5Colors(this.getCards(5)); - - final CardList out = new CardList(); - deck.shuffle(); - - // trim deck size down to 36 cards, presumes 24 land, for a total of 60 - // cards - for (int i = 0; (i < 36) && (i < deck.size()); i++) { - out.add(deck.get(i)); - } - - return out; - } - - /** - *

- * get3Colors. - *

- * - * @param in - * a {@link forge.CardList} object. - * @return a {@link forge.CardList} object. - */ - private CardList get3Colors(final CardList in) { - int a; - int b; - int c; - - a = CardUtil.getRandomIndex(Constant.Color.ONLY_COLORS); - do { - b = CardUtil.getRandomIndex(Constant.Color.ONLY_COLORS); - c = CardUtil.getRandomIndex(Constant.Color.ONLY_COLORS); - } while ((a == b) || (a == c) || (b == c)); // do not want to get the - // same - // color thrice - - this.color1 = Constant.Color.ONLY_COLORS[a]; - this.color2 = Constant.Color.ONLY_COLORS[b]; - this.color3 = Constant.Color.ONLY_COLORS[c]; - - CardList out = new CardList(); - out.addAll(CardListUtil.getColor(in, this.color1)); - out.addAll(CardListUtil.getColor(in, this.color2)); - out.addAll(CardListUtil.getColor(in, this.color3)); - out.shuffle(); - - final CardList artifact = in.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - // is this really a colorless artifact and not something - // wierd like Sarcomite Myr which is a colored artifact - return c.isArtifact() && CardUtil.getColors(c).contains(Constant.Color.COLORLESS) - && !Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS); - } - }); - out.addAll(artifact); - - out = out.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - if (c.isCreature() && (c.getNetAttack() <= 1) - && Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_NOSMALL)) { - return false; - } - - return true; - } - }); - - out = this.filterBadCards(out, 3); - return out; - } - - /** - *

- * get5Colors. - *

- * - * @param in - * a {@link forge.CardList} object. - * @return a {@link forge.CardList} object. - */ - private CardList get5Colors(final CardList in) { - - this.color1 = Constant.Color.BLACK; - this.color2 = Constant.Color.BLUE; - this.color3 = Constant.Color.GREEN; - this.color4 = Constant.Color.RED; - this.color5 = Constant.Color.WHITE; - - CardList out = new CardList(); - /* - * out.addAll(CardListUtil.getColor(in, color1)); - * out.addAll(CardListUtil.getColor(in, color2)); - * out.addAll(CardListUtil.getColor(in, color3)); - * out.addAll(CardListUtil.getColor(in, color4)); - * out.addAll(CardListUtil.getColor(in, color5)); - */ - out.addAll(CardListUtil.getGoldCards(in)); - out.shuffle(); - - final CardList artifact = in.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - // is this really a colorless artifact and not something - // wierd like Sarcomite Myr which is a colored artifact - return c.isArtifact() && CardUtil.getColors(c).contains(Constant.Color.COLORLESS) - && !Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS); - } - }); - out.addAll(artifact); - - out = out.filter(new CardListFilter() { - @Override - public boolean addCard(final Card c) { - if (c.isCreature() && (c.getNetAttack() <= 1) - && Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_NOSMALL)) { - return false; - } - - return true; - } - }); - - out = this.filterBadCards(out, 3); - return out; - } - - /** - * Filters out cards by color and their suitability for being placed in a - * randomly created deck. - * - * @param sequence - * an Iterable of Card instances - * - * @param colors - * the number of different colors the deck should have; if this - * is a number other than 3 or 5, we return an empty list. - * - * @return a subset of sequence <= sequence which might be empty, but never - * null - */ - private CardList filterBadCards(final Iterable sequence, final int colors) { - final ArrayList goodLand = new ArrayList(); - // goodLand.add("Faerie Conclave"); - // goodLand.add("Forbidding Watchtower"); - // goodLand.add("Treetop Village"); - - CardList out = new CardList(); - if (colors == 3) { - - out = CardFilter.filter(sequence, new CardListFilter() { - @Override - public boolean addCard(final Card c) { - final ArrayList list = CardUtil.getColors(c); - - if (list.size() == 3) { - if (!list.contains(GenerateConstructedMultiColorDeck.this.color1) - || !list.contains(GenerateConstructedMultiColorDeck.this.color2) - || !list.contains(GenerateConstructedMultiColorDeck.this.color3)) { - return false; - } - } else if (list.size() == 2) { - if (!(list.contains(GenerateConstructedMultiColorDeck.this.color1) && list - .contains(GenerateConstructedMultiColorDeck.this.color2)) - && !(list.contains(GenerateConstructedMultiColorDeck.this.color1) && list - .contains(GenerateConstructedMultiColorDeck.this.color3)) - && !(list.contains(GenerateConstructedMultiColorDeck.this.color2) && list - .contains(GenerateConstructedMultiColorDeck.this.color3))) { - return false; - } - } - - return ((CardUtil.getColors(c).size() <= 3) && !c.isLand() && // no - // land - !c.getSVar("RemRandomDeck").equals("True") && !c.getSVar("RemAIDeck").equals("True")) - || goodLand.contains(c.getName()); // OR very - // important - } - }); - } else if (colors == 5) { - out = CardFilter.filter(sequence, new CardListFilter() { - @Override - public boolean addCard(final Card c) { - return ((CardUtil.getColors(c).size() >= 2) && // only get - // multicolored - // cards - !c.isLand() && // no land - !c.getSVar("RemRandomDeck").equals("True") && !c.getSVar("RemAIDeck").equals("True")) - || goodLand.contains(c.getName()); // OR very - // important - } - }); - - } - - return out; - } // filterBadCards() -} diff --git a/src/main/java/forge/gui/deckeditor/MenuCommon.java b/src/main/java/forge/gui/deckeditor/MenuCommon.java index 3017ef1caed..4561b6093bc 100644 --- a/src/main/java/forge/gui/deckeditor/MenuCommon.java +++ b/src/main/java/forge/gui/deckeditor/MenuCommon.java @@ -28,8 +28,9 @@ import javax.swing.SwingUtilities; import forge.CardList; import forge.Command; +import forge.PlayerType; import forge.deck.Deck; -import forge.deck.generate.GenerateConstructedDeck; +import forge.deck.generate.Generate2ColorDeck; import forge.deck.io.DeckSerializer; import forge.error.ErrorViewer; @@ -95,11 +96,11 @@ public final class MenuCommon extends MenuBase { } Deck genConstructed = new Deck(); - genConstructed.getMain().add((new GenerateConstructedDeck()).generateDeck()); + genConstructed.getMain().add((new Generate2ColorDeck("AI", "AI")).get2ColorDeck(60, PlayerType.HUMAN)); getController().setModel(genConstructed); } - private final File getImportFilename() { + private File getImportFilename() { final JFileChooser chooser = new JFileChooser(MenuCommon.previousDirectory); chooser.addChoosableFileFilter(DeckSerializer.DCK_FILTER); @@ -113,7 +114,7 @@ public final class MenuCommon extends MenuBase { return null; } // openFileDialog() - private final void importDeck() { + private void importDeck() { final File file = this.getImportFilename(); if (file == null) { } else if (file.getName().endsWith(".dck")) { diff --git a/src/test/java/forge/deck/generate/GenerateConstructedDeckTest.java b/src/test/java/forge/deck/generate/GenerateConstructedDeckTest.java deleted file mode 100644 index a1139ba8232..00000000000 --- a/src/test/java/forge/deck/generate/GenerateConstructedDeckTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package forge.deck.generate; - -import org.testng.annotations.Test; - -import forge.CardList; - -/** - * Created by IntelliJ IDEA. User: dhudson - */ -@Test(groups = { "UnitTest" }, timeOut = 1000) -public class GenerateConstructedDeckTest { - - /** - * Generate constructed deck test1. - */ - @Test(enabled = false, timeOut = 1000) - public void generateConstructedDeckTest1() { - final GenerateConstructedDeck g = new GenerateConstructedDeck(); - - for (int i = 0; i < 50; i++) { - final CardList c = g.generateDeck(); - System.out.println(c.getType("Creature").size() + " - " + c.size()); - } - System.exit(1); - - } // main -} diff --git a/src/test/java/forge/deck/generate/GenerateConstructedMultiColorDeckTest.java b/src/test/java/forge/deck/generate/GenerateConstructedMultiColorDeckTest.java deleted file mode 100644 index b2ae8fd6a3f..00000000000 --- a/src/test/java/forge/deck/generate/GenerateConstructedMultiColorDeckTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package forge.deck.generate; - -import org.testng.annotations.Test; - -import forge.CardList; - -/** - * Created by IntelliJ IDEA. User: dhudson - */ -@Test(groups = { "UnitTest" }, timeOut = 1000, enabled = false) -public class GenerateConstructedMultiColorDeckTest { - - /** - * Generate constructed multi color deck test1. - */ - @Test(enabled = false, timeOut = 1000) - public void generateConstructedMultiColorDeckTest1() { - final GenerateConstructedMultiColorDeck g = new GenerateConstructedMultiColorDeck(); - - for (int i = 0; i < 10; i++) { - System.out.println("***GENERATING DECK***"); - final CardList c = g.generate3ColorDeck(); - System.out.println(c.getType("Creature").size() + " - " + c.size()); - for (int j = 0; j < c.size(); j++) { - System.out.println(c.get(j).getName()); - } - System.out.println("***DECK GENERATED***"); - - } - System.exit(1); - } // main -}