Support generating proper Tiny Leaders decks

This commit is contained in:
drdev
2015-02-15 15:33:18 +00:00
parent e51a64242e
commit caf5817d0b
14 changed files with 127 additions and 55 deletions

View File

@@ -47,8 +47,8 @@ public class DeckGeneratorTheme extends DeckGeneratorBase {
* Constructor for ThemeDeckGenerator.
* </p>
*/
public DeckGeneratorTheme(IDeckGenPool pool) {
super(pool);
public DeckGeneratorTheme(IDeckGenPool pool0) {
super(pool0, DeckFormat.Constructed);
this.maxDuplicates = 4;
}

View File

@@ -52,16 +52,16 @@ public class DeckgenUtil {
DeckGeneratorBase gen = null;
CardDb cardDb = FModel.getMagicDb().getCommonCards();
if (selection.size() == 1) {
gen = new DeckGeneratorMonoColor(cardDb, selection.get(0));
gen = new DeckGeneratorMonoColor(cardDb, DeckFormat.Constructed, selection.get(0));
}
else if (selection.size() == 2) {
gen = new DeckGenerator2Color(cardDb, selection.get(0), selection.get(1));
gen = new DeckGenerator2Color(cardDb, DeckFormat.Constructed, selection.get(0), selection.get(1));
}
else if (selection.size() == 3) {
gen = new DeckGenerator3Color(cardDb, selection.get(0), selection.get(1), selection.get(2));
gen = new DeckGenerator3Color(cardDb, DeckFormat.Constructed, selection.get(0), selection.get(1), selection.get(2));
}
else {
gen = new DeckGenerator5Color(cardDb);
gen = new DeckGenerator5Color(cardDb, DeckFormat.Constructed);
deckName = "5 colors";
}
gen.setSingleton(FModel.getPreferences().getPrefBoolean(FPref.DECKGEN_SINGLETONS));
@@ -278,16 +278,23 @@ public class DeckgenUtil {
/** Generate a 2-color Commander deck. */
public static Deck generateCommanderDeck(boolean forAi, GameType gameType) {
final Deck deck;
IDeckGenPool cardDb = gameType.getDeckFormat().getCardPool();
IDeckGenPool cardDb = FModel.getMagicDb().getCommonCards();
PaperCard commander;
ColorSet colorID;
// Get random multicolor Legendary creature
final DeckFormat format = gameType.getDeckFormat();
Predicate<CardRules> canPlay = forAi ? DeckGeneratorBase.AI_CAN_PLAY : DeckGeneratorBase.HUMAN_CAN_PLAY;
Iterable<PaperCard> legends = cardDb.getAllCards(Predicates.compose(Predicates.and
(CardRulesPredicates.Presets.IS_CREATURE, CardRulesPredicates.Presets.IS_LEGENDARY), PaperCard.FN_GET_RULES));
legends = Iterables.filter(legends, Predicates.compose(Predicates.and
(CardRulesPredicates.Presets.IS_MULTICOLOR, canPlay), PaperCard.FN_GET_RULES));
@SuppressWarnings("unchecked")
Iterable<PaperCard> legends = cardDb.getAllCards(Predicates.compose(Predicates.and(
new Predicate<CardRules>() {
@Override
public boolean apply(CardRules rules) {
return format.isLegalCommander(rules);
}
},
CardRulesPredicates.Presets.IS_MULTICOLOR,
canPlay), PaperCard.FN_GET_RULES));
do {
commander = Aggregates.random(legends);
@@ -302,7 +309,7 @@ public class DeckgenUtil {
if (colorID.hasGreen()) { comColors.add("Green"); }
DeckGeneratorBase gen = null;
gen = new DeckGenerator2Color(cardDb, comColors.get(0), comColors.get(1));
gen = new DeckGenerator2Color(cardDb, format, comColors.get(0), comColors.get(1));
gen.setSingleton(true);
gen.setUseArtifacts(!FModel.getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS));
CardPool cards = gen == null ? null : gen.getDeck(gameType.getDeckFormat().getMainRange().getMaximum(), forAi);

View File

@@ -10,6 +10,7 @@ import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostShard;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckFormat;
import forge.deck.DeckSection;
import forge.deck.generation.DeckGeneratorBase;
import forge.item.IPaperCard;
@@ -54,7 +55,7 @@ public class LimitedDeckBuilder extends DeckGeneratorBase{
* Chosen colors.
*/
public LimitedDeckBuilder(List<PaperCard> dList, DeckColors pClrs) {
super(FModel.getMagicDb().getCommonCards());
super(FModel.getMagicDb().getCommonCards(), DeckFormat.Limited);
this.availableList = dList;
this.deckColors = pClrs;
this.colors = pClrs.getChosenColors();

View File

@@ -9,6 +9,7 @@ import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckFormat;
import forge.deck.DeckSection;
import forge.deck.generation.DeckGenerator2Color;
import forge.deck.generation.DeckGenerator3Color;
@@ -39,19 +40,19 @@ public class ConquestUtil {
DeckGeneratorBase gen;
switch (colors.size()) {
case 0:
gen = new DeckGeneratorMonoColor(pool, "");
gen = new DeckGeneratorMonoColor(pool, DeckFormat.PlanarConquest, "");
break;
case 1:
gen = new DeckGeneratorMonoColor(pool, colors.get(0));
gen = new DeckGeneratorMonoColor(pool, DeckFormat.PlanarConquest, colors.get(0));
break;
case 2:
gen = new DeckGenerator2Color(pool, colors.get(0), colors.get(1));
gen = new DeckGenerator2Color(pool, DeckFormat.PlanarConquest, colors.get(0), colors.get(1));
break;
case 3:
gen = new DeckGenerator3Color(pool, colors.get(0), colors.get(1), colors.get(2));
gen = new DeckGenerator3Color(pool, DeckFormat.PlanarConquest, colors.get(0), colors.get(1), colors.get(2));
break;
case 5:
gen = new DeckGenerator5Color(pool);
gen = new DeckGenerator5Color(pool, DeckFormat.PlanarConquest);
break;
default:
return null; //shouldn't happen