From c297cd599c0fded861071b2215f56ee4a2cbc9fd Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 29 Jun 2017 13:14:23 +0000 Subject: [PATCH] - Integrating foil card filter by Seravy. --- .gitattributes | 1 + .../java/forge/itemmanager/CardManager.java | 9 +++++ .../itemmanager/filters/CardFoilFilter.java | 38 +++++++++++++++++++ .../java/forge/itemmanager/SFilterUtil.java | 36 +++++++++++++++++- .../forge/itemmanager/SItemManagerUtil.java | 7 +++- 5 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFoilFilter.java diff --git a/.gitattributes b/.gitattributes index 01f566bca4f..c1be48ed562 100644 --- a/.gitattributes +++ b/.gitattributes @@ -900,6 +900,7 @@ forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.j forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardCMCFilter.java -text forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardCMCRangeFilter.java -text forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardColorFilter.java -text +forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFoilFilter.java -text forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java -text forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardPowerFilter.java -text forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardQuestWorldFilter.java -text diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java index af4cee1a4df..569d85f97b9 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java @@ -157,6 +157,15 @@ public class CardManager extends ItemManager { GuiUtils.addSeparator(menu); + GuiUtils.addMenuItem(menu, "Foil", null, new Runnable() { + @Override + public void run() { + itemManager.addFilter(new CardFoilFilter(itemManager)); + } + }, itemManager.getFilter(CardFoilFilter.class) == null); + + GuiUtils.addSeparator(menu); + GuiUtils.addMenuItem(menu, "Advanced...", null, new Runnable() { @Override @SuppressWarnings("unchecked") diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFoilFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFoilFilter.java new file mode 100644 index 00000000000..2b38a7f41c7 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFoilFilter.java @@ -0,0 +1,38 @@ +package forge.itemmanager.filters; + +import com.google.common.base.Predicate; + +import forge.item.PaperCard; +import forge.itemmanager.ItemManager; +import forge.itemmanager.SFilterUtil; +import forge.itemmanager.SpellShopManager; +import forge.itemmanager.SItemManagerUtil.StatTypes; + +import javax.swing.*; + + +public class CardFoilFilter extends StatTypeFilter { + public CardFoilFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public ItemFilter createCopy() { + return new CardFoilFilter(itemManager); + } + + @Override + protected void buildWidget(JPanel widget) { +/* if (itemManager instanceof SpellShopManager) { + addToggleButton(widget, StatTypes.PACK_OR_DECK); + }*/ + addToggleButton(widget, StatTypes.FOIL_OLD); + addToggleButton(widget, StatTypes.FOIL_NEW); + addToggleButton(widget, StatTypes.FOIL_NONE); + } + + @Override + protected final Predicate buildPredicate() { + return SFilterUtil.buildFoilFilter(buttonMap); + } +} diff --git a/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java b/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java index d476799c9eb..73faef1b668 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java @@ -3,6 +3,8 @@ package forge.itemmanager; import com.google.common.base.Predicate; import com.google.common.base.Predicates; +import forge.StaticData; +import forge.card.CardEdition; import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.card.ColorSet; @@ -95,7 +97,7 @@ public class SFilterUtil { case '\\': if (i < text.length() - 1 && text.charAt(i + 1) == '"') { ch = '"'; //allow appending escaped quotation character - i++; //prevent chaging inQuotes for that character + i++; //prevent changing inQuotes for that character } break; case ',': @@ -138,6 +140,38 @@ public class SFilterUtil { return false; } } + + public static Predicate buildFoilFilter(Map buttonMap) { + + // final Map buttonMap2 =buttonMap; + final int Foil = (((buttonMap.get(StatTypes.FOIL_OLD).isSelected()) ? 1 : 0) + + ((buttonMap.get(StatTypes.FOIL_NEW).isSelected()) ? 2 : 0) + + ((buttonMap.get(StatTypes.FOIL_NONE).isSelected()) ? 4 : 0)); + + return new Predicate() { + @Override + public boolean apply(PaperCard card) { + + + boolean result=false; + + CardEdition edition = StaticData.instance().getEditions().get(card.getEdition()); + if ((Foil & 1)==1) { + // Old Style Foil + if (edition.getFoilType()==CardEdition.FoilType.OLD_STYLE) {result=result || card.isFoil();} + } + if ((Foil & 2)==2) { + // New Style Foil + if (edition.getFoilType()==CardEdition.FoilType.MODERN) {result=result || card.isFoil();} + } + if ((Foil & 4)==4) + { result=result || !card.isFoil(); } + return result; + } + + }; + + } public static Predicate buildColorFilter(Map buttonMap) { byte colors0 = 0; diff --git a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java index 1c111c9859f..17d753b7b4a 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java @@ -60,7 +60,12 @@ public final class SItemManagerUtil { DECK_RED (FSkinProp.IMG_MANA_R, null, "Red decks"), DECK_GREEN (FSkinProp.IMG_MANA_G, null, "Green decks"), DECK_COLORLESS (FSkinProp.IMG_MANA_COLORLESS, null, "Colorless decks"), - DECK_MULTICOLOR (FSkinProp.IMG_MULTI, null, "Multicolor decks"); + DECK_MULTICOLOR (FSkinProp.IMG_MULTI, null, "Multicolor decks"), + + FOIL_OLD (FSkinProp.FOIL_11, null, "Old style Foil cards"), + FOIL_NEW (FSkinProp.FOIL_01, null, "New style Foil cards"), + FOIL_NONE (FSkinProp.ICO_CLOSE, null, "non-Foil cards"); + public final FSkinProp skinProp; public final Predicate predicate;