Fix so commanders unlocked when you unlock their card

This commit is contained in:
drdev
2016-02-08 01:55:22 +00:00
parent 04655e9d2d
commit e47c376676
4 changed files with 32 additions and 12 deletions

View File

@@ -1,7 +1,6 @@
package forge.planarconquest;
import forge.deck.Deck;
import forge.deck.generation.DeckGenPool;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.model.FModel;
@@ -17,11 +16,8 @@ public class ConquestCommander implements InventoryItem, IXmlWritable {
private Deck deck;
public ConquestCommander(PaperCard card0) {
this(card0, new Deck(card0.getName()), null);
}
public ConquestCommander(PaperCard card0, DeckGenPool cardPool0, boolean forAi) {
this(card0, ConquestUtil.generateDeck(card0, cardPool0, forAi), null);
public ConquestCommander(PaperCard card0, Deck deck0) {
this(card0, deck0, null);
}
private ConquestCommander(PaperCard card0, Deck deck0, ConquestRecord record0) {
card = card0;

View File

@@ -20,6 +20,9 @@ package forge.planarconquest;
import forge.achievement.PlaneswalkerAchievements;
import forge.assets.ISkinImage;
import forge.card.CardDb;
import forge.card.CardRules;
import forge.deck.Deck;
import forge.deck.generation.DeckGenPool;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.itemmanager.ColumnDef;
@@ -42,6 +45,7 @@ import java.util.Map;
import java.util.Map.Entry;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
public final class ConquestData {
private static final String XML_FILE = "data.xml";
@@ -68,12 +72,11 @@ public final class ConquestData {
aetherShards = FModel.getConquestPreferences().getPrefInt(CQPref.AETHER_START_SHARDS);
currentLocation = new ConquestLocation(startingPlane0, 0, 0, 0);
setPlaneswalker(startingPlaneswalker0);
unlockCard(startingPlaneswalker0);
//generate deck for starting commander and add all cards to collection
ConquestCommander commander = new ConquestCommander(startingCommander0, startingPlane0.getCardPool(), false);
commanders.add(commander);
//unlock starting commander, starting planeswalker, and all cards in generated deck
unlockCard(startingCommander0);
unlockCard(startingPlaneswalker0);
ConquestCommander commander = getSelectedCommander();
for (Entry<PaperCard, Integer> entry : commander.getDeck().getMain()) {
PaperCard card = entry.getKey();
if (!card.getRules().getType().isBasicLand()) { //ignore basic lands
@@ -174,6 +177,29 @@ public final class ConquestData {
public void unlockCard(PaperCard card) {
if (unlockedCards.add(card)) {
newCards.add(card);
//add card to available commanders if eligible
if (card.getRules().canBeCommander()) {
Deck deck;
if (commanders.isEmpty()) { //generate deck for starting commander
DeckGenPool pool = new DeckGenPool(getCurrentPlane().getCardPool().getAllCards(new Predicate<PaperCard>() {
@Override
public boolean apply(PaperCard pc) {
CardRules rules = pc.getRules();
if (rules.canBeCommander() || rules.getType().isPlaneswalker()) {
return false; //prevent including additional commanders or planeswalkers in starting deck
}
return true;
}
}));
deck = ConquestUtil.generateDeck(card, pool, false);
selectedCommanderIndex = 0;
}
else { //create blank deck for subsequent commanders
deck = new Deck(card.getName());
}
commanders.add(new ConquestCommander(card, deck));
}
}
}
public void unlockCards(Iterable<PaperCard> cards) {

View File

@@ -17,7 +17,6 @@
*/
package forge.properties;
import forge.ai.AiProfileUtil;
import forge.game.GameLogEntryType;
public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {

View File

@@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableMap;
import forge.FThreads;
import forge.GuiBase;
import forge.LobbyPlayer;
import forge.ai.LobbyPlayerAi;
import forge.assets.FSkinProp;
import forge.card.CardDb.SetPreference;
import forge.card.CardEdition;