renamed MagicDeckCardDefinition. added in a condensed deck class.

master
wait321 2011-10-07 20:29:56 -07:00
parent 568bbb78e8
commit b9fafa9cd0
5 changed files with 225 additions and 182 deletions

View File

@ -0,0 +1,137 @@
package magic.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
// basically a wrapper for MagicCardDefinition that adds number of copies of card
public class MagicCondensedCardDefinition {
private int copies;
private MagicCardDefinition card;
public MagicCondensedCardDefinition(MagicCardDefinition card) {
this.card = card;
copies = 1;
}
public MagicCardDefinition getCard() {
return card;
}
public void incrementNumCopies() {
copies++;
}
public void decrementNumCopies() {
if (copies > 0) {
copies--;
}
}
public void setNumCopies(int i) {
copies = i;
}
public int getNumCopies() {
return copies;
}
public static final Comparator<MagicCondensedCardDefinition> NUM_COPIES_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return cardDefinition1.getNumCopies() - cardDefinition2.getNumCopies();
}
};
public static final Comparator<MagicCondensedCardDefinition> NUM_COPIES_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCondensedCardDefinition.NUM_COPIES_COMPARATOR_DESC.compare(cardDefinition2, cardDefinition1);
}
};
public static final Comparator<MagicCondensedCardDefinition> NAME_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.NAME_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> NAME_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.NAME_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> CONVERTED_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.CONVERTED_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> CONVERTED_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.CONVERTED_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> TYPE_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.TYPE_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> TYPE_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.TYPE_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> RARITY_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.RARITY_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> RARITY_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.RARITY_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> POWER_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> POWER_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> TOUGHNESS_COMPARATOR_DESC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.TOUGHNESS_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicCondensedCardDefinition> TOUGHNESS_COMPARATOR_ASC=new Comparator<MagicCondensedCardDefinition>() {
@Override
public int compare(final MagicCondensedCardDefinition cardDefinition1,final MagicCondensedCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
}

View File

@ -0,0 +1,71 @@
package magic.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MagicCondensedDeck extends ArrayList<MagicCondensedCardDefinition> {
private static final long serialVersionUID = 143L;
private String name = "Unsaved Deck";
public MagicCondensedDeck() {}
public MagicCondensedDeck(final MagicCondensedDeck deck) {
super(deck);
name = deck.getName();
}
public MagicCondensedDeck(final MagicDeck list) {
this((List<MagicCardDefinition>) list);
name = list.getName();
}
public MagicCondensedDeck(final List<MagicCardDefinition> list) {
super();
Collections.sort(list, MagicCardDefinition.NAME_COMPARATOR_DESC);
MagicCondensedCardDefinition lastDeckCard = null;
for(int i = 0; i < list.size(); i++) {
// increment copies count if more than one of the same card
if(lastDeckCard != null && MagicCardDefinition.NAME_COMPARATOR_DESC.compare(lastDeckCard.getCard(), list.get(i)) == 0) {
lastDeckCard.incrementNumCopies();
} else {
lastDeckCard = new MagicCondensedCardDefinition(list.get(i));
add(lastDeckCard);
}
}
}
public void setContent(final MagicCondensedDeck deck) {
clear();
addAll(deck);
name = deck.getName();
}
public void setName(final String name) {
this.name = name;
}
public String getName() {
return name;
}
public MagicDeck toMagicDeck() {
MagicDeck deck = new MagicDeck();
for(int i = 0; i < size(); i++) {
MagicCondensedCardDefinition card = get(i);
for(int j = 0; j < card.getNumCopies(); j++) {
deck.add(card.getCard());
}
}
return deck;
}
}

View File

@ -1,163 +0,0 @@
package magic.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
// basically a wrapper for MagicCardDefinition that adds number of copies of card
public class MagicDeckCardDefinition {
private int copies;
private MagicCardDefinition card;
public MagicDeckCardDefinition(MagicCardDefinition card) {
this.card = card;
copies = 1;
}
public MagicCardDefinition getCard() {
return card;
}
public void incrementNumCopies() {
copies++;
}
public void decrementNumCopies() {
if (copies > 0) {
copies--;
}
}
public void setNumCopies(int i) {
copies = i;
}
public int getNumCopies() {
return copies;
}
public static List<MagicDeckCardDefinition> simpleCopyCardList(List<MagicCardDefinition> list) {
ArrayList<MagicDeckCardDefinition> newList = new ArrayList<MagicDeckCardDefinition>();
for(int i = 0; i < list.size(); i++) {
newList.add(new MagicDeckCardDefinition(list.get(i)));
}
return newList;
}
public static List<MagicDeckCardDefinition> condenseCopyCardList(List<MagicCardDefinition> list) {
Collections.sort(list, MagicCardDefinition.NAME_COMPARATOR_DESC);
ArrayList<MagicDeckCardDefinition> newList = new ArrayList<MagicDeckCardDefinition>();
MagicDeckCardDefinition lastDeckCard = null;
for(int i = 0; i < list.size(); i++) {
// increment copies count if more than one of the same card
if(lastDeckCard != null && MagicCardDefinition.NAME_COMPARATOR_DESC.compare(lastDeckCard.getCard(), list.get(i)) == 0) {
lastDeckCard.incrementNumCopies();
} else {
lastDeckCard = new MagicDeckCardDefinition(list.get(i));
newList.add(lastDeckCard);
}
}
return newList;
}
public static final Comparator<MagicDeckCardDefinition> NUM_COPIES_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return cardDefinition1.getNumCopies() - cardDefinition2.getNumCopies();
}
};
public static final Comparator<MagicDeckCardDefinition> NUM_COPIES_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicDeckCardDefinition.NUM_COPIES_COMPARATOR_DESC.compare(cardDefinition2, cardDefinition1);
}
};
public static final Comparator<MagicDeckCardDefinition> NAME_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.NAME_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> NAME_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.NAME_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> CONVERTED_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.CONVERTED_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> CONVERTED_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.CONVERTED_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> TYPE_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.TYPE_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> TYPE_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.TYPE_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> RARITY_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.RARITY_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> RARITY_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.RARITY_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> POWER_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> POWER_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> TOUGHNESS_COMPARATOR_DESC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.TOUGHNESS_COMPARATOR_DESC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
public static final Comparator<MagicDeckCardDefinition> TOUGHNESS_COMPARATOR_ASC=new Comparator<MagicDeckCardDefinition>() {
@Override
public int compare(final MagicDeckCardDefinition cardDefinition1,final MagicDeckCardDefinition cardDefinition2) {
return MagicCardDefinition.POWER_COMPARATOR_ASC.compare(cardDefinition1.getCard(), cardDefinition2.getCard());
}
};
}

View File

@ -28,8 +28,8 @@ public enum MagicDeckConstructionRule {
brokenRules.add(MinDeckSize); brokenRules.add(MinDeckSize);
} }
List<MagicDeckCardDefinition> countedDeck = MagicDeckCardDefinition.condenseCopyCardList(deck); MagicCondensedDeck countedDeck = new MagicCondensedDeck(deck);
for(MagicDeckCardDefinition countedCard : countedDeck) { for(MagicCondensedCardDefinition countedCard : countedDeck) {
if(countedCard.getNumCopies() > 4 && !countedCard.getCard().isBasic() && !countedCard.getCard().getName().equals("Relentless Rats")) { if(countedCard.getNumCopies() > 4 && !countedCard.getCard().isBasic() && !countedCard.getCard().getName().equals("Relentless Rats")) {
brokenRules.add(FourCopyLimit); brokenRules.add(FourCopyLimit);
break; break;

View File

@ -1,7 +1,9 @@
package magic.ui; package magic.ui;
import magic.model.MagicCardDefinition; import magic.model.MagicCardDefinition;
import magic.model.MagicDeckCardDefinition; import magic.model.MagicCondensedCardDefinition;
import magic.model.MagicCondensedDeck;
import magic.model.MagicDeck;
import magic.model.MagicManaCost; import magic.model.MagicManaCost;
import java.lang.Integer; import java.lang.Integer;
@ -71,11 +73,11 @@ public class CardTableModel implements TableModel {
private final boolean isDeck; private final boolean isDeck;
private boolean[] isDesc = new boolean[] {false, false, false, false, false, false, false, false, false, false, false, false, false}; private boolean[] isDesc = new boolean[] {false, false, false, false, false, false, false, false, false, false, false, false, false};
private List<MagicDeckCardDefinition> cardDefinitions; private MagicCondensedDeck cardDefinitions;
private Comparator<MagicDeckCardDefinition> comp; private Comparator<MagicCondensedCardDefinition> comp;
public CardTableModel(final List<MagicCardDefinition> cardDefs, final boolean isDeck) { public CardTableModel(final List<MagicCardDefinition> cardDefs, final boolean isDeck) {
this.comp = MagicDeckCardDefinition.NAME_COMPARATOR_DESC; this.comp = MagicCondensedCardDefinition.NAME_COMPARATOR_DESC;
this.isDeck = isDeck; this.isDeck = isDeck;
setCards(cardDefs); setCards(cardDefs);
@ -99,11 +101,7 @@ public class CardTableModel implements TableModel {
} }
public void setCards(List<MagicCardDefinition> defs) { public void setCards(List<MagicCardDefinition> defs) {
if (isDeck) { this.cardDefinitions = new MagicCondensedDeck(defs);
this.cardDefinitions = MagicDeckCardDefinition.condenseCopyCardList(defs);
} else {
this.cardDefinitions = MagicDeckCardDefinition.simpleCopyCardList(defs);
}
// re-sort if necessary // re-sort if necessary
if(comp != null) { if(comp != null) {
@ -112,23 +110,23 @@ public class CardTableModel implements TableModel {
} }
public void sort(int column) { public void sort(int column) {
Comparator<MagicDeckCardDefinition> oldComp = comp; Comparator<MagicCondensedCardDefinition> oldComp = comp;
comp = null; comp = null;
switch(column) { switch(column) {
case 0: comp = (isDesc[column]) ? MagicDeckCardDefinition.NUM_COPIES_COMPARATOR_ASC : MagicDeckCardDefinition.NUM_COPIES_COMPARATOR_DESC; case 0: comp = (isDesc[column]) ? MagicCondensedCardDefinition.NUM_COPIES_COMPARATOR_ASC : MagicCondensedCardDefinition.NUM_COPIES_COMPARATOR_DESC;
break; break;
case 1: comp = (isDesc[column]) ? MagicDeckCardDefinition.NAME_COMPARATOR_ASC : MagicDeckCardDefinition.NAME_COMPARATOR_DESC; case 1: comp = (isDesc[column]) ? MagicCondensedCardDefinition.NAME_COMPARATOR_ASC : MagicCondensedCardDefinition.NAME_COMPARATOR_DESC;
break; break;
case 2: comp = (isDesc[column]) ? MagicDeckCardDefinition.CONVERTED_COMPARATOR_ASC : MagicDeckCardDefinition.CONVERTED_COMPARATOR_DESC; case 2: comp = (isDesc[column]) ? MagicCondensedCardDefinition.CONVERTED_COMPARATOR_ASC : MagicCondensedCardDefinition.CONVERTED_COMPARATOR_DESC;
break; break;
case 3: comp = (isDesc[column]) ? MagicDeckCardDefinition.POWER_COMPARATOR_ASC : MagicDeckCardDefinition.POWER_COMPARATOR_DESC; case 3: comp = (isDesc[column]) ? MagicCondensedCardDefinition.POWER_COMPARATOR_ASC : MagicCondensedCardDefinition.POWER_COMPARATOR_DESC;
break; break;
case 4: comp = (isDesc[column]) ? MagicDeckCardDefinition.TOUGHNESS_COMPARATOR_ASC : MagicDeckCardDefinition.TOUGHNESS_COMPARATOR_DESC; case 4: comp = (isDesc[column]) ? MagicCondensedCardDefinition.TOUGHNESS_COMPARATOR_ASC : MagicCondensedCardDefinition.TOUGHNESS_COMPARATOR_DESC;
break; break;
case 5: comp = (isDesc[column]) ? MagicDeckCardDefinition.TYPE_COMPARATOR_ASC : MagicDeckCardDefinition.TYPE_COMPARATOR_DESC; case 5: comp = (isDesc[column]) ? MagicCondensedCardDefinition.TYPE_COMPARATOR_ASC : MagicCondensedCardDefinition.TYPE_COMPARATOR_DESC;
break; break;
case 7: comp = (isDesc[column]) ? MagicDeckCardDefinition.RARITY_COMPARATOR_ASC : MagicDeckCardDefinition.RARITY_COMPARATOR_DESC; case 7: comp = (isDesc[column]) ? MagicCondensedCardDefinition.RARITY_COMPARATOR_ASC : MagicCondensedCardDefinition.RARITY_COMPARATOR_DESC;
break; break;
} }