package magic.model;
import java.util.ArrayList;
import java.util.List;
public enum MagicDeckConstructionRule {
MinDeckSize("Decks must have a least 40 cards."),
FourCopyLimit("With the exception of basic lands, a deck must have no more than 4 copies of a card.")
;
public static final int MIN_DECK_SIZE = 40;
public static final int MAX_COPIES = 4;
private final String text;
private MagicDeckConstructionRule(final String text) {
this.text = text;
}
private String getRuleText() {
return text;
}
public static List<MagicDeckConstructionRule> checkDeck(final MagicDeck deck) {
final ArrayList<MagicDeckConstructionRule> brokenRules = new ArrayList<MagicDeckConstructionRule>();
if (deck.size() < MIN_DECK_SIZE) {
brokenRules.add(MinDeckSize);
}
final MagicCondensedDeck countedDeck = new MagicCondensedDeck(deck);
for (final MagicCondensedCardDefinition countedCard : countedDeck) {
if (countedCard.getNumCopies() > 4 && !countedCard.getCard().isBasic() && !"Shadowborn Apostle".equals(countedCard.getCard().getName()) && !"Relentless Rats".equals(countedCard.getCard().getName())) {
brokenRules.add(FourCopyLimit);
break;
}
}
return brokenRules;
}
public static String getRulesText(final List<MagicDeckConstructionRule> rules) {
final StringBuilder sb = new StringBuilder();
for (final MagicDeckConstructionRule rule : rules) {
sb.append(rule.getRuleText());
sb.append("\n");
}
return sb.toString();
}
}