Added Eternal format (Legacy without reserve list cards). Fixed Issues 1133 and 1521 (Pauper Deck legality check).

This commit is contained in:
benjamin 2016-02-24 21:33:10 -05:00
parent 22c95f24a3
commit d2fec6c61d
4 changed files with 703 additions and 26 deletions

View file

@ -108,14 +108,16 @@ public class Constructed extends DeckValidator {
if (!rarities.isEmpty()) {
for (Card card : deck.getCards()) {
if (!rarities.contains(card.getRarity())) {
invalid.put(card.getName(), "Invalid rarity: " + card.getRarity());
valid = false;
if( !legalRarity(card) ){
valid = false;
}
}
}
for (Card card : deck.getSideboard()) {
if (!rarities.contains(card.getRarity())) {
invalid.put(card.getName(), "Invalid rarity: " + card.getRarity());
valid = false;
if( !legalRarity(card) ){
valid = false;
}
}
}
}
@ -123,34 +125,14 @@ public class Constructed extends DeckValidator {
if (!setCodes.isEmpty()) {
for (Card card : deck.getCards()) {
if (!setCodes.contains(card.getExpansionSetCode())) {
// check if card is legal if taken from other set
boolean legal = false;
List<CardInfo> cardInfos = CardRepository.instance.findCards(card.getName());
for (CardInfo cardInfo : cardInfos) {
if (setCodes.contains(cardInfo.getSetCode())) {
legal = true;
break;
}
}
if (!legal && !invalid.containsKey(card.getName())) {
invalid.put(card.getName(), "Invalid set: " + card.getExpansionSetCode());
if( !legalSets(card) ){
valid = false;
}
}
}
for (Card card : deck.getSideboard()) {
if (!setCodes.contains(card.getExpansionSetCode())) {
// check if card is legal if taken from other set
boolean legal = false;
List<CardInfo> cardInfos = CardRepository.instance.findCards(card.getName());
for (CardInfo cardInfo : cardInfos) {
if (setCodes.contains(cardInfo.getSetCode())) {
legal = true;
break;
}
}
if (!legal && !invalid.containsKey(card.getName())) {
invalid.put(card.getName(), "Invalid set: " + card.getExpansionSetCode());
if( !legalSets(card) ){
valid = false;
}
}
@ -159,5 +141,36 @@ public class Constructed extends DeckValidator {
logger.debug("DECK validate end: " + name + " deckname: " + deck.getName() + " invalids:" + invalid.size());
return valid;
}
protected boolean legalRarity(Card card){
// check if card is legal if taken from other set
boolean legal = false;
List<CardInfo> cardInfos = CardRepository.instance.findCards(card.getName());
for (CardInfo cardInfo : cardInfos) {
if (rarities.contains(cardInfo.getRarity())) {
legal = true;
break;
}
}
if (!legal && !invalid.containsKey(card.getName())) {
invalid.put(card.getName(), "Invalid rarity: " + card.getRarity());
}
return legal;
}
protected boolean legalSets(Card card) {
// check if card is legal if taken from other set
boolean legal = false;
List<CardInfo> cardInfos = CardRepository.instance.findCards(card.getName());
for (CardInfo cardInfo : cardInfos) {
if (setCodes.contains(cardInfo.getSetCode())) {
legal = true;
break;
}
}
if (!legal && !invalid.containsKey(card.getName())) {
invalid.put(card.getName(), "Invalid set: " + card.getExpansionSetCode());
}
return legal;
}
}