diff --git a/Mage.Client/src/main/java/mage/client/deck/generator/DeckGenerator.java b/Mage.Client/src/main/java/mage/client/deck/generator/DeckGenerator.java index 4aaddd57fa6..fc01ce9129a 100644 --- a/Mage.Client/src/main/java/mage/client/deck/generator/DeckGenerator.java +++ b/Mage.Client/src/main/java/mage/client/deck/generator/DeckGenerator.java @@ -46,6 +46,8 @@ public class DeckGenerator { private static final int MIN_SOURCE = 16; private static final int MAX_NON_BASIC_SOURCE = DECK_LANDS / 2; + private static final boolean GENERATE_RANDOM_BASIC_LAND = true; + private static Deck deck = new Deck(); private static String manaSource; @@ -283,19 +285,19 @@ public class DeckGenerator { private static Card getBestBasicLand(ColoredManaSymbol color) { manaSource = color.toString(); if (color.equals(ColoredManaSymbol.G)) { - return CardImpl.createCard(Sets.findCard("Forest")); + return CardImpl.createCard(Sets.findCard("Forest", GENERATE_RANDOM_BASIC_LAND)); } if (color.equals(ColoredManaSymbol.R)) { - return CardImpl.createCard(Sets.findCard("Mountain")); + return CardImpl.createCard(Sets.findCard("Mountain", GENERATE_RANDOM_BASIC_LAND)); } if (color.equals(ColoredManaSymbol.B)) { - return CardImpl.createCard(Sets.findCard("Swamp")); + return CardImpl.createCard(Sets.findCard("Swamp", GENERATE_RANDOM_BASIC_LAND)); } if (color.equals(ColoredManaSymbol.U)) { - return CardImpl.createCard(Sets.findCard("Island")); + return CardImpl.createCard(Sets.findCard("Island", GENERATE_RANDOM_BASIC_LAND)); } if (color.equals(ColoredManaSymbol.W)) { - return CardImpl.createCard(Sets.findCard("Plains")); + return CardImpl.createCard(Sets.findCard("Plains", GENERATE_RANDOM_BASIC_LAND)); } return null; diff --git a/Mage.Sets/src/mage/sets/Sets.java b/Mage.Sets/src/mage/sets/Sets.java index fd2bb98f0fc..f40e8fdb060 100644 --- a/Mage.Sets/src/mage/sets/Sets.java +++ b/Mage.Sets/src/mage/sets/Sets.java @@ -31,11 +31,7 @@ package mage.sets; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; -import java.util.Set; -import java.util.TreeSet; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import mage.cards.Card; @@ -51,6 +47,7 @@ public class Sets extends HashMap { private static final Sets fINSTANCE = new Sets(); private static Set names; + protected static Random rnd = new Random(); public static Sets getInstance() { return fINSTANCE; @@ -93,6 +90,24 @@ public class Sets extends HashMap { } return null; } + + public static String findCard(String name, boolean random) { + if (!random) { + return findCard(name); + } else { + List cards = new ArrayList(); + for (ExpansionSet set: fINSTANCE.values()) { + String cardName = set.findCard(name, true); + if (cardName != null) { + cards.add(cardName); + } + } + if (cards.size() > 0) { + return cards.get(rnd.nextInt(cards.size())); + } + } + return null; + } public static ExpansionSet findSet(String code) { for (ExpansionSet set: fINSTANCE.values()) { diff --git a/Mage/src/mage/cards/ExpansionSet.java b/Mage/src/mage/cards/ExpansionSet.java index e4870d6bd1e..6ef19623954 100644 --- a/Mage/src/mage/cards/ExpansionSet.java +++ b/Mage/src/mage/cards/ExpansionSet.java @@ -143,6 +143,19 @@ public abstract class ExpansionSet implements Serializable { return null; } + public String findCard(String name, boolean random) { + List cards = new ArrayList(); + for (Card card: createCards()) { + if (name.equals(card.getName())) { + cards.add(card.getClass().getCanonicalName()); + } + } + if (cards.size() > 0) { + return cards.get(rnd.nextInt(cards.size())); + } + return null; + } + public String findCard(int cardNum) { for (Card card: createCards()) { if (card.getCardNumber() == cardNum)