From fc6237cd2953416f982eba6ce28be75c006ea34a Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 29 Mar 2021 21:26:14 +0800 Subject: [PATCH] update advance filter support alternate parts limited to card names, keywords, rules text, types and subtypes --- .../forge/itemmanager/AdvancedSearch.java | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java index 442971bcdf5..805970bca18 100644 --- a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java +++ b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java @@ -81,6 +81,13 @@ public class AdvancedSearch { Set names = new HashSet<>(); names.add(input.getRules().getOracleText()); names.add(CardTranslation.getTranslatedOracle(input.getName())); + CardSplitType cardSplitType = input.getRules().getSplitType(); + if (cardSplitType != CardSplitType.None && cardSplitType != CardSplitType.Split) { + if (input.getRules().getOtherPart() != null) { + names.add(input.getRules().getOtherPart().getOracleText()); + names.add(CardTranslation.getTranslatedOracle(input.getRules().getOtherPart().getName())); + } + } return names; } }), @@ -91,6 +98,18 @@ public class AdvancedSearch { } @Override protected Set getItemValues(PaperCard input) { + CardSplitType cardSplitType = input.getRules().getSplitType(); + if (cardSplitType != CardSplitType.None && cardSplitType != CardSplitType.Split) { + Set keywords = new HashSet<>(); + if (input.getRules().getOtherPart() != null) { + PaperCard otherPart = FModel.getMagicDb().getCommonCards().getCard(input.getRules().getOtherPart().getName()); + if (otherPart != null) { + keywords.addAll(Keyword.getKeywordSet(otherPart)); + keywords.addAll(Keyword.getKeywordSet(input)); + } + } + return keywords; + } return Keyword.getKeywordSet(input); } }), @@ -175,6 +194,24 @@ public class AdvancedSearch { protected Set getItemValues(PaperCard input) { final CardType type = input.getRules().getType(); final Set types = new HashSet<>(); + CardSplitType cardSplitType = input.getRules().getSplitType(); + if (cardSplitType != CardSplitType.None && cardSplitType != CardSplitType.Split) { + if (input.getRules().getOtherPart() != null) { + for (Supertype supertype : input.getRules().getOtherPart().getType().getSupertypes()) { + types.add(supertype.name()); + } + for (CoreType coreType : input.getRules().getOtherPart().getType().getCoreTypes()) { + types.add(coreType.name()); + } + for (Supertype supertype : input.getRules().getMainPart().getType().getSupertypes()) { + types.add(supertype.name()); + } + for (CoreType coreType : input.getRules().getMainPart().getType().getCoreTypes()) { + types.add(coreType.name()); + } + return types; + } + } for (Supertype t : type.getSupertypes()) { types.add(t.name()); } @@ -196,11 +233,10 @@ public class AdvancedSearch { if (input.getRules().getOtherPart() != null) { Set subtypes = new HashSet<>(); for (String subs : input.getRules().getOtherPart().getType().getSubtypes()) { - if (!subtypes.contains(subs)) - subtypes.add(subs); - }for (String subs : input.getRules().getMainPart().getType().getSubtypes()) { - if (!subtypes.contains(subs)) - subtypes.add(subs); + subtypes.add(subs); + } + for (String subs : input.getRules().getMainPart().getType().getSubtypes()) { + subtypes.add(subs); } return subtypes; }