[deck.generator] Added Set.findCard(name, random). Now decks contain random basic lands (against previous M11 only).

This commit is contained in:
magenoxx 2010-12-26 22:38:22 +03:00
parent 3123207b0d
commit 7bc6a97a44
3 changed files with 40 additions and 10 deletions

View file

@ -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;

View file

@ -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<String, ExpansionSet> {
private static final Sets fINSTANCE = new Sets();
private static Set<String> names;
protected static Random rnd = new Random();
public static Sets getInstance() {
return fINSTANCE;
@ -93,6 +90,24 @@ public class Sets extends HashMap<String, ExpansionSet> {
}
return null;
}
public static String findCard(String name, boolean random) {
if (!random) {
return findCard(name);
} else {
List<String> cards = new ArrayList<String>();
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()) {

View file

@ -143,6 +143,19 @@ public abstract class ExpansionSet implements Serializable {
return null;
}
public String findCard(String name, boolean random) {
List<String> cards = new ArrayList<String>();
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)