From ff657f1412fb700dc422266e995d79d4aaf835c1 Mon Sep 17 00:00:00 2001 From: Paco Ito Date: Sun, 27 Feb 2022 19:19:32 +0000 Subject: [PATCH] Add card column: FORMAT --- .../java/forge/itemmanager/ColumnDef.java | 48 +++++++++++++++++++ .../java/forge/itemmanager/SColumnUtil.java | 2 + .../forge/itemmanager/SItemManagerUtil.java | 2 +- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java index 2202037f15a..41a5287fa78 100644 --- a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java +++ b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java @@ -18,6 +18,7 @@ package forge.itemmanager; import com.google.common.base.Function; +import com.google.common.collect.Iterables; import forge.card.*; import forge.card.mana.ManaCost; import forge.deck.DeckProxy; @@ -37,7 +38,9 @@ import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.HashSet; import java.util.Map.Entry; +import java.util.Set; public enum ColumnDef { /** @@ -255,6 +258,47 @@ public enum ColumnDef { : (ai.getRemRandomDecks() ? "?" : ""); } }), + /** + * The card format column. + */ + FORMAT("lblFormat", "ttFormats", 60, false, SortState.DESC, + new Function, Comparable>() { + @Override + public Comparable apply(final Entry from) { + PaperCard card = toPaperCard(from.getKey()); + if (card == null) { + return -1; + } + Iterable formats = FModel.getFormats().getAllFormatsOfCard(card); + int acc = 0; + for (GameFormat gf : formats) { + if (!gf.getFormatType().equals(GameFormat.FormatType.SANCTIONED)) { + continue; + } + int ix = gf.getIndex(); + if (ix < 30 && ix > 0) + acc |= 0x40000000 >> (ix - 1); + } + return acc; + } + }, + new Function, Object>() { + @Override + public Object apply(final Entry from) { + PaperCard card = toPaperCard(from.getKey()); + if (card == null) { + return -1; + } + Iterable formats = FModel.getFormats().getAllFormatsOfCard(card); + Set sanctioned = new HashSet<>(); + for (GameFormat gf : formats) { + if (gf.getFormatType().equals(GameFormat.FormatType.SANCTIONED)) { + sanctioned.add(gf); + } + } + return StringUtils.join(Iterables.transform(sanctioned, GameFormat.FN_GET_NAME), ", "); + } + }), /** * The Draft ranking column. */ @@ -550,6 +594,10 @@ public enum ColumnDef { return i instanceof IPaperCard ? ((IPaperCard) i) : null; } + private static PaperCard toPaperCard(final InventoryItem i) { + return i instanceof PaperCard ? ((PaperCard) i) : null; + } + private static ManaCost toManaCost(final InventoryItem i) { return i instanceof IPaperCard ? ((IPaperCard) i).getRules().getManaCost() : ManaCost.NO_COST; } diff --git a/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java b/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java index 65f0aa74706..df138db05b5 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java @@ -84,12 +84,14 @@ public final class SColumnUtil { colDefs.add(ColumnDef.CMC); colDefs.add(ColumnDef.RARITY); colDefs.add(ColumnDef.SET); + colDefs.add(ColumnDef.FORMAT); colDefs.add(ColumnDef.AI); colDefs.add(ColumnDef.RANKING); colDefs.add(ColumnDef.COLLECTOR_ORDER); Map columns = getColumns(colDefs); columns.get(ColumnDef.AI).setVisible(false); + columns.get(ColumnDef.FORMAT).setVisible(false); columns.get(ColumnDef.RANKING).setVisible(false); return columns; } diff --git a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java index c96bd15c471..96a15a9210d 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java @@ -169,7 +169,7 @@ public final class SItemManagerUtil { private static final GroupDef[] DECK_GROUPBY_OPTIONS = {GroupDef.COLOR, GroupDef.COLOR_IDENTITY, GroupDef.SET}; private static final ColumnDef[] CARD_PILEBY_OPTIONS = {ColumnDef.CMC, ColumnDef.COLOR, ColumnDef.NAME, ColumnDef.COST, ColumnDef.TYPE, ColumnDef.RARITY, - ColumnDef.SET, ColumnDef.COLLECTOR_ORDER}; + ColumnDef.SET, ColumnDef.COLLECTOR_ORDER, ColumnDef.FORMAT}; private static final ColumnDef[] DECK_PILEBY_OPTIONS = {ColumnDef.DECK_COLOR, ColumnDef.DECK_FOLDER, ColumnDef.NAME, ColumnDef.DECK_FORMAT, ColumnDef.DECK_EDITION, ColumnDef.DECK_AI};