mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Improve how available pool is determined for Conquest deck editor
This commit is contained in:
@@ -38,6 +38,7 @@ import forge.menu.FDropDownMenu;
|
|||||||
import forge.menu.FMenuItem;
|
import forge.menu.FMenuItem;
|
||||||
import forge.menu.FPopupMenu;
|
import forge.menu.FPopupMenu;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
|
import forge.planarconquest.ConquestUtil;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.quest.data.QuestPreferences.QPref;
|
import forge.quest.data.QuestPreferences.QPref;
|
||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
@@ -781,11 +782,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
|||||||
cardManager.setPool(cardpool);
|
cardManager.setPool(cardpool);
|
||||||
break;
|
break;
|
||||||
case PlanarConquest:
|
case PlanarConquest:
|
||||||
final ItemPool<PaperCard> pool = new ItemPool<PaperCard>(PaperCard.class);
|
cardManager.setPool(ConquestUtil.getAvailablePool(parentScreen.getDeck()));
|
||||||
pool.addAllFlat(FModel.getConquest().getModel().getCollection());
|
|
||||||
pool.removeAll(parentScreen.getDeck().getMain());
|
|
||||||
pool.removeAll(parentScreen.getDeck().get(DeckSection.Commander));
|
|
||||||
cardManager.setPool(pool);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (cardManager.getWantUnique()) {
|
if (cardManager.getWantUnique()) {
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package forge.planarconquest;
|
package forge.planarconquest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import forge.card.ColorSet;
|
import forge.card.ColorSet;
|
||||||
|
import forge.card.MagicColor;
|
||||||
import forge.deck.CardPool;
|
import forge.deck.CardPool;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckSection;
|
import forge.deck.DeckSection;
|
||||||
@@ -14,6 +17,7 @@ import forge.deck.generation.DeckGeneratorBase;
|
|||||||
import forge.deck.generation.DeckGeneratorMonoColor;
|
import forge.deck.generation.DeckGeneratorMonoColor;
|
||||||
import forge.deck.generation.IDeckGenPool;
|
import forge.deck.generation.IDeckGenPool;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
import forge.quest.QuestUtil;
|
import forge.quest.QuestUtil;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
@@ -83,4 +87,41 @@ public class ConquestUtil {
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static CardPool getAvailablePool(Deck deck) {
|
||||||
|
HashSet<PaperCard> availableCards = new HashSet<PaperCard>(FModel.getConquest().getModel().getCollection());
|
||||||
|
|
||||||
|
//remove all cards in main deck
|
||||||
|
for (Entry<PaperCard, Integer> e : deck.getMain()) {
|
||||||
|
availableCards.remove(e.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
//remove commander
|
||||||
|
PaperCard commander = deck.get(DeckSection.Commander).get(0);
|
||||||
|
availableCards.remove(commander);
|
||||||
|
|
||||||
|
//remove any cards that aren't allowed in deck due to color identity
|
||||||
|
byte colorIdentity = commander.getRules().getColorIdentity().getColor();
|
||||||
|
if (colorIdentity != MagicColor.ALL_COLORS) {
|
||||||
|
List<PaperCard> invalidCards = new ArrayList<PaperCard>();
|
||||||
|
for (PaperCard pc : availableCards) {
|
||||||
|
if (!pc.getRules().getColorIdentity().hasNoColorsExcept(colorIdentity)) {
|
||||||
|
invalidCards.add(pc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
availableCards.removeAll(invalidCards);
|
||||||
|
}
|
||||||
|
|
||||||
|
//create pool from available cards and allowed basic lands
|
||||||
|
CardPool pool = new CardPool();
|
||||||
|
pool.addAllFlat(availableCards);
|
||||||
|
|
||||||
|
String setCode = FModel.getConquest().getModel().getCurrentPlane().getEditions().get(0).getCode();
|
||||||
|
for (int i = 0; i < MagicColor.WUBRG.length; i++) {
|
||||||
|
if ((colorIdentity & MagicColor.WUBRG[i]) != 0) {
|
||||||
|
pool.add(MagicColor.Constant.BASIC_LANDS.get(i), setCode, 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pool;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user