diff --git a/forge-gui/src/main/java/forge/deck/DeckProxy.java b/forge-gui/src/main/java/forge/deck/DeckProxy.java index 2fe611297e2..12c5e6cd7ea 100644 --- a/forge-gui/src/main/java/forge/deck/DeckProxy.java +++ b/forge-gui/src/main/java/forge/deck/DeckProxy.java @@ -42,6 +42,7 @@ public class DeckProxy implements InventoryItem { // cached values protected ColorSet color; protected ColorSet colorIdentity; + protected Boolean ai; protected Set formats; protected Set exhaustiveFormats; private Integer mainSize = null; @@ -140,6 +141,7 @@ public class DeckProxy implements InventoryItem { edition = null; mainSize = null; sbSize = null; + ai = null; } public ColorSet getColor() { @@ -211,6 +213,35 @@ public class DeckProxy implements InventoryItem { return colorIdentity; } + public boolean getAI() { + if (ai == null) { + boolean hasAi = true; + for (final Entry deckEntry : getDeck()) { + switch (deckEntry.getKey()) { + case Main: + case Commander: + for (final Entry poolEntry : deckEntry.getValue()) { + CardAiHints ai = poolEntry.getKey().getRules().getAiHints(); + if (ai.getRemAIDecks()) { + hasAi = false; + break; + } + } + break; + case Sideboard: // Let's pretend the sideboard doesn't matter + default: + break; //ignore other sections + } + if (hasAi == false) { + break; + } + } + ai = hasAi; + } + return ai; + } + + public CardRarity getHighestRarity() { if (highestRarity == null) { highestRarity = CardRarity.Common; diff --git a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java index 37ec55f0dfc..5d337c6c2fa 100644 --- a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java +++ b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java @@ -249,7 +249,7 @@ public enum ColumnDef { IPaperCard cp = (IPaperCard) i; CardAiHints ai = cp.getRules().getAiHints(); - return ai.getRemAIDecks() ? (ai.getRemRandomDecks() ? "AI ?" : "AI") + return ai.getRemAIDecks() ? (ai.getRemRandomDecks() ? "X?" : "X") : (ai.getRemRandomDecks() ? "?" : ""); } }), @@ -459,6 +459,19 @@ public enum ColumnDef { return null; } }), + DECK_AI("lblAI", "lblAIStatus", 38, true, SortState.DESC, + new Function, Comparable>() { + @Override + public Comparable apply(final Entry from) { + return toDeck(from.getKey()).getAI() ? Integer.valueOf(1) : Integer.valueOf(-1); + } + }, + new Function, Object>() { + @Override + public Object apply(final Entry from) { + return toDeck(from.getKey()).getAI()? "" : "X"; + } + }), /** * The main library size column. */ diff --git a/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java b/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java index b3c73ac443a..65f0aa74706 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java @@ -220,6 +220,7 @@ public final class SColumnUtil { colDefs.add(ColumnDef.DECK_EDITION); colDefs.add(ColumnDef.DECK_MAIN); colDefs.add(ColumnDef.DECK_SIDE); + colDefs.add(ColumnDef.DECK_AI); Map columns = getColumns(colDefs); columns.get(ColumnDef.DECK_FAVORITE).setSortPriority(1); diff --git a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java index 112a1279ea9..c96bd15c471 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java @@ -172,7 +172,7 @@ public final class SItemManagerUtil { ColumnDef.SET, ColumnDef.COLLECTOR_ORDER}; private static final ColumnDef[] DECK_PILEBY_OPTIONS = {ColumnDef.DECK_COLOR, ColumnDef.DECK_FOLDER, ColumnDef.NAME, ColumnDef.DECK_FORMAT, - ColumnDef.DECK_EDITION}; + ColumnDef.DECK_EDITION, ColumnDef.DECK_AI}; public static void populateImageViewOptions(final IItemManager itemManager, final IComboBox cbGroupByOptions, final IComboBox cbPileByOptions) { final boolean isDeckManager = itemManager.getGenericType().equals(DeckProxy.class);