- Integrating foil card filter by Seravy.

This commit is contained in:
Agetian
2017-06-29 13:14:23 +00:00
parent 83a3bcb9ef
commit c297cd599c
5 changed files with 89 additions and 2 deletions

1
.gitattributes vendored
View File

@@ -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

View File

@@ -157,6 +157,15 @@ public class CardManager extends ItemManager<PaperCard> {
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")

View File

@@ -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<PaperCard> {
public CardFoilFilter(ItemManager<? super PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public ItemFilter<PaperCard> 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<PaperCard> buildPredicate() {
return SFilterUtil.buildFoilFilter(buttonMap);
}
}

View File

@@ -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<PaperCard> buildFoilFilter(Map<SItemManagerUtil.StatTypes, ? extends IButton> buttonMap) {
// final Map<StatTypes, ? extends IButton> 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<PaperCard>() {
@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<PaperCard> buildColorFilter(Map<SItemManagerUtil.StatTypes, ? extends IButton> buttonMap) {
byte colors0 = 0;

View File

@@ -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<CardRules> predicate;