mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Create DeckManager
This commit is contained in:
9
.gitattributes
vendored
9
.gitattributes
vendored
@@ -68,6 +68,7 @@ forge-core/src/main/java/forge/deck/io/OldDeckFileFormatException.java -text
|
||||
forge-core/src/main/java/forge/deck/io/package-info.java -text
|
||||
forge-core/src/main/java/forge/deck/package-info.java -text
|
||||
forge-core/src/main/java/forge/item/BoosterPack.java -text
|
||||
forge-core/src/main/java/forge/item/DeckBox.java -text
|
||||
forge-core/src/main/java/forge/item/FatPack.java -text
|
||||
forge-core/src/main/java/forge/item/IPaperCard.java -text
|
||||
forge-core/src/main/java/forge/item/InventoryItem.java -text
|
||||
@@ -15473,6 +15474,7 @@ forge-gui/src/main/java/forge/gui/toolbox/imaging/FImagePanel.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/imaging/FImageUtil.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/imaging/ImageUtil.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerContainer.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java -text
|
||||
@@ -15490,6 +15492,13 @@ forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.j
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java -text
|
||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java -text
|
||||
|
||||
@@ -105,7 +105,7 @@ public final class CardDb implements ICardDatabase {
|
||||
}
|
||||
|
||||
private void addCard(PaperCard paperCard) {
|
||||
allCardsByName.put(paperCard.name, paperCard);
|
||||
allCardsByName.put(paperCard.getName(), paperCard);
|
||||
}
|
||||
|
||||
private void reIndex() {
|
||||
|
||||
@@ -134,5 +134,4 @@ public class DeckGroup extends DeckBase {
|
||||
return arg1.getName();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
73
forge-core/src/main/java/forge/item/DeckBox.java
Normal file
73
forge-core/src/main/java/forge/item/DeckBox.java
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Forge: Play Magic: the Gathering.
|
||||
* Copyright (C) 2011 Nate
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package forge.item;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
|
||||
/**
|
||||
* A deck box containing a deck
|
||||
*
|
||||
*/
|
||||
public class DeckBox implements InventoryItem {
|
||||
private final Deck deck;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return this.deck.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemType() {
|
||||
return "Deck";
|
||||
}
|
||||
|
||||
public DeckBox(final Deck deck0) {
|
||||
this.deck = deck0;
|
||||
}
|
||||
|
||||
//create predicate that applys a card predicate to all cards in deck
|
||||
public static final Predicate<DeckBox> createPredicate(final Predicate<PaperCard> cardPredicate) {
|
||||
return new Predicate<DeckBox>() {
|
||||
@Override
|
||||
public boolean apply(DeckBox input) {
|
||||
for (Entry<DeckSection, CardPool> deckEntry : input.deck) {
|
||||
switch (deckEntry.getKey()) {
|
||||
case Main:
|
||||
case Sideboard:
|
||||
case Commander:
|
||||
for (Entry<PaperCard, Integer> poolEntry : deckEntry.getValue()) {
|
||||
if (!cardPredicate.apply(poolEntry.getKey())) {
|
||||
return false; //all cards in deck must pass card predicate to pass deck predicate
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break; //ignore other sections
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -35,10 +35,10 @@ public final class PaperCard implements Comparable<IPaperCard>, InventoryItemFro
|
||||
private final transient CardRules rules;
|
||||
|
||||
// These fields are kinda PK for PrintedCard
|
||||
public final String name;
|
||||
public final String edition;
|
||||
public final int artIndex;
|
||||
public final boolean foil;
|
||||
private final String name;
|
||||
private final String edition;
|
||||
private final int artIndex;
|
||||
private final boolean foil;
|
||||
|
||||
// Calculated fields are below:
|
||||
private final transient CardRarity rarity; // rarity is given in ctor when set is assigned
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package forge.gui.toolbox.itemmanager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JMenu;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.GuiUtils;
|
||||
import forge.gui.home.quest.DialogChooseSets;
|
||||
import forge.gui.toolbox.itemmanager.filters.DeckColorFilter;
|
||||
import forge.gui.toolbox.itemmanager.filters.DeckFormatFilter;
|
||||
import forge.gui.toolbox.itemmanager.filters.DeckQuestWorldFilter;
|
||||
import forge.gui.toolbox.itemmanager.filters.DeckSearchFilter;
|
||||
import forge.gui.toolbox.itemmanager.filters.DeckSetFilter;
|
||||
import forge.gui.toolbox.itemmanager.filters.ItemFilter;
|
||||
import forge.item.DeckBox;
|
||||
import forge.quest.QuestWorld;
|
||||
|
||||
/**
|
||||
* ItemManager for cards
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public final class DeckManager extends ItemManager<DeckBox> {
|
||||
public DeckManager(boolean wantUnique0) {
|
||||
super(DeckBox.class, wantUnique0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addDefaultFilters() {
|
||||
addDefaultFilters(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemFilter<DeckBox> createSearchFilter() {
|
||||
return createSearchFilter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildAddFilterMenu(JMenu menu) {
|
||||
buildAddFilterMenu(menu, this);
|
||||
}
|
||||
|
||||
/* Static overrides shared with SpellShopManager*/
|
||||
|
||||
public static void addDefaultFilters(final ItemManager<? super DeckBox> itemManager) {
|
||||
itemManager.addFilter(new DeckColorFilter(itemManager));
|
||||
}
|
||||
|
||||
public static ItemFilter<DeckBox> createSearchFilter(final ItemManager<? super DeckBox> itemManager) {
|
||||
return new DeckSearchFilter(itemManager);
|
||||
}
|
||||
|
||||
public static void buildAddFilterMenu(JMenu menu, final ItemManager<? super DeckBox> itemManager) {
|
||||
GuiUtils.addSeparator(menu); //separate from current search item
|
||||
|
||||
JMenu fmt = GuiUtils.createMenu("Format");
|
||||
for (final GameFormat f : Singletons.getModel().getFormats()) {
|
||||
GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new DeckFormatFilter(itemManager, f));
|
||||
}
|
||||
}, DeckFormatFilter.canAddFormat(f, itemManager.getFilter(DeckFormatFilter.class)));
|
||||
}
|
||||
menu.add(fmt);
|
||||
|
||||
GuiUtils.addMenuItem(menu, "Sets...", null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckSetFilter existingFilter = itemManager.getFilter(DeckSetFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit();
|
||||
}
|
||||
else {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<String> sets = dialog.getSelectedSets();
|
||||
if (!sets.isEmpty()) {
|
||||
itemManager.addFilter(new DeckSetFilter(itemManager, sets, dialog.getWantReprints()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
JMenu world = GuiUtils.createMenu("Quest world");
|
||||
for (final QuestWorld w : Singletons.getModel().getWorlds()) {
|
||||
GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new DeckQuestWorldFilter(itemManager, w));
|
||||
}
|
||||
}, DeckQuestWorldFilter.canAddQuestWorld(w, itemManager.getFilter(DeckQuestWorldFilter.class)));
|
||||
}
|
||||
menu.add(world);
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, "Colors", null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new DeckColorFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(DeckColorFilter.class) == null);
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,19 @@ package forge.gui.toolbox.itemmanager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.card.CardRules;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.CardRulesPredicates.Presets;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.PredicateString.StringOp;
|
||||
@@ -70,6 +78,74 @@ public class SFilterUtil {
|
||||
}
|
||||
};
|
||||
|
||||
public static Predicate<PaperCard> buildColorFilter(Map<SItemManagerUtil.StatTypes, FLabel> buttonMap) {
|
||||
byte colors = 0;
|
||||
|
||||
if (buttonMap.get(StatTypes.WHITE).getSelected()) {
|
||||
colors |= MagicColor.WHITE;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.BLUE).getSelected()) {
|
||||
colors |= MagicColor.BLUE;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.BLACK).getSelected()) {
|
||||
colors |= MagicColor.BLACK;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.RED).getSelected()) {
|
||||
colors |= MagicColor.RED;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.GREEN).getSelected()) {
|
||||
colors |= MagicColor.GREEN;
|
||||
}
|
||||
|
||||
boolean wantColorless = buttonMap.get(StatTypes.COLORLESS).getSelected();
|
||||
boolean wantMulticolor = buttonMap.get(StatTypes.MULTICOLOR).getSelected();
|
||||
|
||||
Predicate<CardRules> preFinal = null;
|
||||
if (wantMulticolor) {
|
||||
if (colors == 0) { //handle showing all multi-color cards if all 5 colors are filtered
|
||||
preFinal = Presets.IS_MULTICOLOR;
|
||||
if (wantColorless) {
|
||||
preFinal = Predicates.or(preFinal, Presets.IS_COLORLESS);
|
||||
}
|
||||
}
|
||||
else if (colors != MagicColor.ALL_COLORS) {
|
||||
preFinal = CardRulesPredicates.canCastWithAvailable(colors);
|
||||
}
|
||||
}
|
||||
else {
|
||||
preFinal = Predicates.not(Presets.IS_MULTICOLOR);
|
||||
if (colors != MagicColor.ALL_COLORS) {
|
||||
preFinal = Predicates.and(CardRulesPredicates.canCastWithAvailable(colors), preFinal);
|
||||
}
|
||||
}
|
||||
if (!wantColorless) {
|
||||
if (colors != 0 && colors != MagicColor.ALL_COLORS) {
|
||||
//if colorless filtered out ensure phyrexian cards don't appear
|
||||
//unless at least one of their colors is selected
|
||||
preFinal = Predicates.and(preFinal, CardRulesPredicates.isColor(colors));
|
||||
}
|
||||
preFinal = SFilterUtil.optimizedAnd(preFinal, Predicates.not(Presets.IS_COLORLESS));
|
||||
}
|
||||
|
||||
if (preFinal == null) {
|
||||
return new Predicate<PaperCard>() { //use custom return true delegate to validate the item is a card
|
||||
@Override
|
||||
public boolean apply(PaperCard card) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
return Predicates.compose(preFinal, PaperCard.FN_GET_RULES);
|
||||
}
|
||||
|
||||
public static Predicate<PaperCard> buildFormatFilter(Set<GameFormat> formats, boolean allowReprints) {
|
||||
List<Predicate<PaperCard>> predicates = new ArrayList<Predicate<PaperCard>>();
|
||||
for (GameFormat f : formats) {
|
||||
predicates.add(allowReprints ? f.getFilterRules() : f.getFilterPrinted());
|
||||
}
|
||||
return Predicates.or(predicates);
|
||||
}
|
||||
|
||||
public static <T> Predicate<T> optimizedAnd(Predicate<T> p1, Predicate<T> p2) {
|
||||
return p1 == null ? p2 : (p2 == null ? p1 : Predicates.and(p1, p2));
|
||||
}
|
||||
|
||||
@@ -3,12 +3,6 @@ package forge.gui.toolbox.itemmanager.filters;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.card.CardRules;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.CardRulesPredicates.Presets;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
||||
import forge.gui.toolbox.itemmanager.SpellShopManager;
|
||||
@@ -34,73 +28,11 @@ public class CardColorFilter extends StatTypeFilter<PaperCard> {
|
||||
if (itemManager instanceof SpellShopManager) {
|
||||
addToggleButton(widget, StatTypes.PACK_OR_DECK);
|
||||
}
|
||||
addToggleButton(widget, StatTypes.WHITE);
|
||||
addToggleButton(widget, StatTypes.BLUE);
|
||||
addToggleButton(widget, StatTypes.BLACK);
|
||||
addToggleButton(widget, StatTypes.RED);
|
||||
addToggleButton(widget, StatTypes.GREEN);
|
||||
addToggleButton(widget, StatTypes.COLORLESS);
|
||||
addToggleButton(widget, StatTypes.MULTICOLOR);
|
||||
addColorButtons(widget);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Predicate<PaperCard> buildPredicate() {
|
||||
byte colors = 0;
|
||||
|
||||
if (buttonMap.get(StatTypes.WHITE).getSelected()) {
|
||||
colors |= MagicColor.WHITE;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.BLUE).getSelected()) {
|
||||
colors |= MagicColor.BLUE;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.BLACK).getSelected()) {
|
||||
colors |= MagicColor.BLACK;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.RED).getSelected()) {
|
||||
colors |= MagicColor.RED;
|
||||
}
|
||||
if (buttonMap.get(StatTypes.GREEN).getSelected()) {
|
||||
colors |= MagicColor.GREEN;
|
||||
}
|
||||
|
||||
boolean wantColorless = buttonMap.get(StatTypes.COLORLESS).getSelected();
|
||||
boolean wantMulticolor = buttonMap.get(StatTypes.MULTICOLOR).getSelected();
|
||||
|
||||
Predicate<CardRules> preFinal = null;
|
||||
if (wantMulticolor) {
|
||||
if (colors == 0) { //handle showing all multi-color cards if all 5 colors are filtered
|
||||
preFinal = Presets.IS_MULTICOLOR;
|
||||
if (wantColorless) {
|
||||
preFinal = Predicates.or(preFinal, Presets.IS_COLORLESS);
|
||||
}
|
||||
}
|
||||
else if (colors != MagicColor.ALL_COLORS) {
|
||||
preFinal = CardRulesPredicates.canCastWithAvailable(colors);
|
||||
}
|
||||
}
|
||||
else {
|
||||
preFinal = Predicates.not(Presets.IS_MULTICOLOR);
|
||||
if (colors != MagicColor.ALL_COLORS) {
|
||||
preFinal = Predicates.and(CardRulesPredicates.canCastWithAvailable(colors), preFinal);
|
||||
}
|
||||
}
|
||||
if (!wantColorless) {
|
||||
if (colors != 0 && colors != MagicColor.ALL_COLORS) {
|
||||
//if colorless filtered out ensure phyrexian cards don't appear
|
||||
//unless at least one of their colors is selected
|
||||
preFinal = Predicates.and(preFinal, CardRulesPredicates.isColor(colors));
|
||||
}
|
||||
preFinal = SFilterUtil.optimizedAnd(preFinal, Predicates.not(Presets.IS_COLORLESS));
|
||||
}
|
||||
|
||||
if (preFinal == null) {
|
||||
return new Predicate<PaperCard>() { //use custom return true delegate to validate the item is a card
|
||||
@Override
|
||||
public boolean apply(PaperCard card) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
return Predicates.compose(preFinal, PaperCard.FN_GET_RULES);
|
||||
return SFilterUtil.buildColorFilter(buttonMap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,110 +1,21 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.card.CardEdition;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class CardFormatFilter extends ListLabelFilter<PaperCard> {
|
||||
protected boolean allowReprints = true;
|
||||
protected final Set<GameFormat> formats = new HashSet<GameFormat>();
|
||||
|
||||
public class CardFormatFilter extends FormatFilter<PaperCard> {
|
||||
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0, GameFormat format0) {
|
||||
super(itemManager0);
|
||||
this.formats.add(format0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTooltip() {
|
||||
Set<String> sets = new HashSet<String>();
|
||||
Set<String> bannedCards = new HashSet<String>();
|
||||
|
||||
for (GameFormat format : this.formats) {
|
||||
List<String> formatSets = format.getAllowedSetCodes();
|
||||
if (formatSets != null) {
|
||||
sets.addAll(formatSets);
|
||||
}
|
||||
List<String> formatBannedCards = format.getBannedCardNames();
|
||||
if (formatBannedCards != null) {
|
||||
bannedCards.addAll(formatBannedCards);
|
||||
}
|
||||
}
|
||||
|
||||
//use HTML tooltips so we can insert line breaks
|
||||
int lastLen = 0;
|
||||
int lineLen = 0;
|
||||
StringBuilder tooltip = new StringBuilder("<html>Sets:");
|
||||
if (sets.isEmpty()) {
|
||||
tooltip.append(" All");
|
||||
}
|
||||
else {
|
||||
CardEdition.Collection editions = Singletons.getMagicDb().getEditions();
|
||||
|
||||
for (String code : sets) {
|
||||
// don't let a single line get too long
|
||||
if (50 < lineLen) {
|
||||
tooltip.append("<br>");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
}
|
||||
|
||||
CardEdition edition = editions.get(code);
|
||||
tooltip.append(" ").append(edition.getName()).append(" (").append(code).append("),");
|
||||
lineLen = tooltip.length() - lastLen;
|
||||
}
|
||||
|
||||
// chop off last comma
|
||||
tooltip.delete(tooltip.length() - 1, tooltip.length());
|
||||
|
||||
if (this.allowReprints) {
|
||||
tooltip.append("<br><br>Allowing identical cards from other sets");
|
||||
}
|
||||
}
|
||||
|
||||
if (!bannedCards.isEmpty()) {
|
||||
tooltip.append("<br><br>Banned:");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
|
||||
for (String cardName : bannedCards) {
|
||||
// don't let a single line get too long
|
||||
if (50 < lineLen) {
|
||||
tooltip.append("<br>");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
}
|
||||
|
||||
tooltip.append(" ").append(cardName).append(";");
|
||||
lineLen = tooltip.length() - lastLen;
|
||||
}
|
||||
|
||||
// chop off last semicolon
|
||||
tooltip.delete(tooltip.length() - 1, tooltip.length());
|
||||
}
|
||||
tooltip.append("</html>");
|
||||
return tooltip.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
this.formats.clear();
|
||||
this.updateLabel();
|
||||
super(itemManager0, format0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,49 +25,8 @@ public class CardFormatFilter extends ListLabelFilter<PaperCard> {
|
||||
return copy;
|
||||
}
|
||||
|
||||
public static boolean canAddFormat(GameFormat format, ItemFilter<PaperCard> existingFilter) {
|
||||
return existingFilter == null || !((CardFormatFilter)existingFilter).formats.contains(format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given filter with this filter if possible
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
CardFormatFilter cardFormatFilter = (CardFormatFilter)filter;
|
||||
this.formats.addAll(cardFormatFilter.formats);
|
||||
this.allowReprints = cardFormatFilter.allowReprints;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
return "Format";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getCount() {
|
||||
return this.formats.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<String> getList() {
|
||||
Set<String> strings = new HashSet<String>();
|
||||
for (GameFormat f : this.formats) {
|
||||
strings.add(f.getName());
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Predicate<PaperCard> buildPredicate() {
|
||||
List<Predicate<PaperCard>> predicates = new ArrayList<Predicate<PaperCard>>();
|
||||
for (GameFormat f : this.formats) {
|
||||
predicates.add(allowReprints ? f.getFilterRules() : f.getFilterPrinted());
|
||||
}
|
||||
return Predicates.or(predicates);
|
||||
return SFilterUtil.buildFormatFilter(this.formats, this.allowReprints);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,8 +54,7 @@ public class CardQuestWorldFilter extends CardFormatFilter {
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
CardQuestWorldFilter cardQuestWorldFilter = (CardQuestWorldFilter)filter;
|
||||
this.questWorlds.addAll(cardQuestWorldFilter.questWorlds);
|
||||
for (QuestWorld w : cardQuestWorldFilter.questWorlds) {
|
||||
|
||||
@@ -50,17 +50,6 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
|
||||
this.btnText.setSelected(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given filter with this filter if possible
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void buildWidget(JPanel widget) {
|
||||
super.buildWidget(widget);
|
||||
|
||||
@@ -40,8 +40,7 @@ public class CardSetFilter extends CardFormatFilter {
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
CardSetFilter cardSetFilter = (CardSetFilter)filter;
|
||||
this.sets.addAll(cardSetFilter.sets);
|
||||
this.allowReprints = cardSetFilter.allowReprints;
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
||||
import forge.item.DeckBox;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.ItemPoolView;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class DeckColorFilter extends StatTypeFilter<DeckBox> {
|
||||
public DeckColorFilter(ItemManager<? super DeckBox> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<DeckBox> createCopy() {
|
||||
return new DeckColorFilter(itemManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildWidget(JPanel widget) {
|
||||
addColorButtons(widget);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Predicate<DeckBox> buildPredicate() {
|
||||
return DeckBox.createPredicate(SFilterUtil.buildColorFilter(buttonMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterFiltersApplied() {
|
||||
final ItemPoolView<? super DeckBox> items = itemManager.getFilteredItems();
|
||||
|
||||
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> btn : buttonMap.entrySet()) {
|
||||
if (btn.getKey().predicate != null) {
|
||||
int count = items.countAll(DeckBox.createPredicate(Predicates.compose(btn.getKey().predicate,
|
||||
PaperCard.FN_GET_RULES)), DeckBox.class);
|
||||
btn.getValue().setText(String.valueOf(count));
|
||||
}
|
||||
}
|
||||
getWidget().revalidate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
||||
import forge.item.DeckBox;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class DeckFormatFilter extends FormatFilter<DeckBox> {
|
||||
public DeckFormatFilter(ItemManager<? super DeckBox> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
public DeckFormatFilter(ItemManager<? super DeckBox> itemManager0, GameFormat format0) {
|
||||
super(itemManager0, format0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<DeckBox> createCopy() {
|
||||
DeckFormatFilter copy = new DeckFormatFilter(itemManager);
|
||||
copy.formats.addAll(this.formats);
|
||||
return copy;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Predicate<DeckBox> buildPredicate() {
|
||||
return DeckBox.createPredicate(SFilterUtil.buildFormatFilter(this.formats, this.allowReprints));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.item.DeckBox;
|
||||
import forge.quest.QuestWorld;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class DeckQuestWorldFilter extends DeckFormatFilter {
|
||||
private final Set<QuestWorld> questWorlds = new HashSet<QuestWorld>();
|
||||
|
||||
public DeckQuestWorldFilter(ItemManager<? super DeckBox> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
public DeckQuestWorldFilter(ItemManager<? super DeckBox> itemManager0, QuestWorld questWorld0) {
|
||||
super(itemManager0);
|
||||
this.questWorlds.add(questWorld0);
|
||||
this.formats.add(getQuestWorldFormat(questWorld0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<DeckBox> createCopy() {
|
||||
DeckQuestWorldFilter copy = new DeckQuestWorldFilter(itemManager);
|
||||
copy.questWorlds.addAll(this.questWorlds);
|
||||
for (QuestWorld w : this.questWorlds) {
|
||||
copy.formats.add(getQuestWorldFormat(w));
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
this.questWorlds.clear();
|
||||
super.reset();
|
||||
}
|
||||
|
||||
public static boolean canAddQuestWorld(QuestWorld questWorld, ItemFilter<DeckBox> existingFilter) {
|
||||
if (questWorld.getFormat() == null && Singletons.getModel().getQuest().getMainFormat() == null) {
|
||||
return false; //must have format
|
||||
}
|
||||
return existingFilter == null || !((DeckQuestWorldFilter)existingFilter).questWorlds.contains(questWorld);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given filter with this filter if possible
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
DeckQuestWorldFilter cardQuestWorldFilter = (DeckQuestWorldFilter)filter;
|
||||
this.questWorlds.addAll(cardQuestWorldFilter.questWorlds);
|
||||
for (QuestWorld w : cardQuestWorldFilter.questWorlds) {
|
||||
this.formats.add(getQuestWorldFormat(w));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
return "Quest World";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getCount() {
|
||||
return this.questWorlds.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<String> getList() {
|
||||
Set<String> strings = new HashSet<String>();
|
||||
for (QuestWorld w : this.questWorlds) {
|
||||
strings.add(w.getName());
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
|
||||
private GameFormat getQuestWorldFormat(QuestWorld w) {
|
||||
GameFormat format = w.getFormat();
|
||||
if (format == null) {
|
||||
//assumes that no world other than the main world will have a null format
|
||||
format = Singletons.getModel().getQuest().getMainFormat();
|
||||
}
|
||||
return format;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.item.DeckBox;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class DeckSearchFilter extends TextSearchFilter<DeckBox> {
|
||||
public DeckSearchFilter(ItemManager<? super DeckBox> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<DeckBox> createCopy() {
|
||||
DeckSearchFilter copy = new DeckSearchFilter(itemManager);
|
||||
copy.getWidget(); //initialize widget
|
||||
copy.txtSearch.setText(this.txtSearch.getText());
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.home.quest.DialogChooseSets;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.item.DeckBox;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class DeckSetFilter extends DeckFormatFilter {
|
||||
private final Set<String> sets = new HashSet<String>();
|
||||
|
||||
public DeckSetFilter(ItemManager<? super DeckBox> itemManager0, Collection<String> sets0, boolean allowReprints0) {
|
||||
super(itemManager0);
|
||||
this.sets.addAll(sets0);
|
||||
this.formats.add(new GameFormat(null, this.sets, null));
|
||||
this.allowReprints = allowReprints0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<DeckBox> createCopy() {
|
||||
return new DeckSetFilter(itemManager, this.sets, this.allowReprints);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
this.sets.clear();
|
||||
super.reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given filter with this filter if possible
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
DeckSetFilter cardSetFilter = (DeckSetFilter)filter;
|
||||
this.sets.addAll(cardSetFilter.sets);
|
||||
this.allowReprints = cardSetFilter.allowReprints;
|
||||
this.formats.clear();
|
||||
this.formats.add(new GameFormat(null, this.sets, null));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void edit() {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(this.sets, null, true);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sets.clear();
|
||||
sets.addAll(dialog.getSelectedSets());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
formats.clear();
|
||||
formats.add(new GameFormat(null, sets, null));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
return "Set";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getCount() {
|
||||
return this.sets.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<String> getList() {
|
||||
return this.sets;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
||||
import forge.item.DeckBox;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.ItemPoolView;
|
||||
|
||||
public abstract class DeckStatTypeFilter extends StatTypeFilter<DeckBox> {
|
||||
public DeckStatTypeFilter(ItemManager<? super DeckBox> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterFiltersApplied() {
|
||||
final ItemPoolView<? super DeckBox> items = itemManager.getFilteredItems();
|
||||
|
||||
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> btn : buttonMap.entrySet()) {
|
||||
if (btn.getKey().predicate != null) {
|
||||
int count = items.countAll(DeckBox.createPredicate(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES)), DeckBox.class);
|
||||
btn.getValue().setText(String.valueOf(count));
|
||||
}
|
||||
}
|
||||
getWidget().revalidate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
package forge.gui.toolbox.itemmanager.filters;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.card.CardEdition;
|
||||
import forge.game.GameFormat;
|
||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||
import forge.item.InventoryItem;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public abstract class FormatFilter<T extends InventoryItem> extends ListLabelFilter<T> {
|
||||
protected boolean allowReprints = true;
|
||||
protected final Set<GameFormat> formats = new HashSet<GameFormat>();
|
||||
|
||||
public FormatFilter(ItemManager<? super T> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
public FormatFilter(ItemManager<? super T> itemManager0, GameFormat format0) {
|
||||
super(itemManager0);
|
||||
this.formats.add(format0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTooltip() {
|
||||
Set<String> sets = new HashSet<String>();
|
||||
Set<String> bannedCards = new HashSet<String>();
|
||||
|
||||
for (GameFormat format : this.formats) {
|
||||
List<String> formatSets = format.getAllowedSetCodes();
|
||||
if (formatSets != null) {
|
||||
sets.addAll(formatSets);
|
||||
}
|
||||
List<String> formatBannedCards = format.getBannedCardNames();
|
||||
if (formatBannedCards != null) {
|
||||
bannedCards.addAll(formatBannedCards);
|
||||
}
|
||||
}
|
||||
|
||||
//use HTML tooltips so we can insert line breaks
|
||||
int lastLen = 0;
|
||||
int lineLen = 0;
|
||||
StringBuilder tooltip = new StringBuilder("<html>Sets:");
|
||||
if (sets.isEmpty()) {
|
||||
tooltip.append(" All");
|
||||
}
|
||||
else {
|
||||
CardEdition.Collection editions = Singletons.getMagicDb().getEditions();
|
||||
|
||||
for (String code : sets) {
|
||||
// don't let a single line get too long
|
||||
if (50 < lineLen) {
|
||||
tooltip.append("<br>");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
}
|
||||
|
||||
CardEdition edition = editions.get(code);
|
||||
tooltip.append(" ").append(edition.getName()).append(" (").append(code).append("),");
|
||||
lineLen = tooltip.length() - lastLen;
|
||||
}
|
||||
|
||||
// chop off last comma
|
||||
tooltip.delete(tooltip.length() - 1, tooltip.length());
|
||||
|
||||
if (this.allowReprints) {
|
||||
tooltip.append("<br><br>Allowing identical cards from other sets");
|
||||
}
|
||||
}
|
||||
|
||||
if (!bannedCards.isEmpty()) {
|
||||
tooltip.append("<br><br>Banned:");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
|
||||
for (String cardName : bannedCards) {
|
||||
// don't let a single line get too long
|
||||
if (50 < lineLen) {
|
||||
tooltip.append("<br>");
|
||||
lastLen += lineLen;
|
||||
lineLen = 0;
|
||||
}
|
||||
|
||||
tooltip.append(" ").append(cardName).append(";");
|
||||
lineLen = tooltip.length() - lastLen;
|
||||
}
|
||||
|
||||
// chop off last semicolon
|
||||
tooltip.delete(tooltip.length() - 1, tooltip.length());
|
||||
}
|
||||
tooltip.append("</html>");
|
||||
return tooltip.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
this.formats.clear();
|
||||
this.updateLabel();
|
||||
}
|
||||
|
||||
public static <T extends InventoryItem> boolean canAddFormat(GameFormat format, FormatFilter<T> existingFilter) {
|
||||
return existingFilter == null || !existingFilter.formats.contains(format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given filter with this filter if possible
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
FormatFilter<T> formatFilter = (FormatFilter<T>)filter;
|
||||
this.formats.addAll(formatFilter.formats);
|
||||
this.allowReprints = formatFilter.allowReprints;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
return "Format";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getCount() {
|
||||
return this.formats.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<String> getList() {
|
||||
Set<String> strings = new HashSet<String>();
|
||||
for (GameFormat f : this.formats) {
|
||||
strings.add(f.getName());
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
}
|
||||
@@ -153,8 +153,7 @@ public abstract class ItemFilter<T extends InventoryItem> {
|
||||
* @param filter
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract boolean merge(ItemFilter filter);
|
||||
public abstract boolean merge(ItemFilter<?> filter);
|
||||
|
||||
protected abstract void buildWidget(JPanel widget);
|
||||
protected abstract void doWidgetLayout(LayoutHelper helper);
|
||||
|
||||
@@ -25,6 +25,16 @@ public abstract class StatTypeFilter<T extends InventoryItem> extends ToggleButt
|
||||
buttonMap = new HashMap<SItemManagerUtil.StatTypes, FLabel>();
|
||||
}
|
||||
|
||||
protected void addColorButtons(JPanel widget) {
|
||||
addToggleButton(widget, StatTypes.WHITE);
|
||||
addToggleButton(widget, StatTypes.BLUE);
|
||||
addToggleButton(widget, StatTypes.BLACK);
|
||||
addToggleButton(widget, StatTypes.RED);
|
||||
addToggleButton(widget, StatTypes.GREEN);
|
||||
addToggleButton(widget, StatTypes.COLORLESS);
|
||||
addToggleButton(widget, StatTypes.MULTICOLOR);
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
protected void addToggleButton(JPanel widget, final StatTypes st) {
|
||||
StringBuilder tooltip = new StringBuilder();
|
||||
|
||||
@@ -57,8 +57,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,8 +103,7 @@ public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemF
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,8 +128,7 @@ public abstract class ValueRangeFilter<T extends InventoryItem> extends ItemFilt
|
||||
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean merge(ItemFilter filter) {
|
||||
public boolean merge(ItemFilter<?> filter) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,7 +276,7 @@ public class LimitedDeckBuilder extends DeckGeneratorBase{
|
||||
private void findBasicLandSets() {
|
||||
Set<String> sets = new HashSet<String>();
|
||||
for (PaperCard cp : aiPlayables) {
|
||||
CardEdition ee = Singletons.getMagicDb().getEditions().get(cp.edition);
|
||||
CardEdition ee = Singletons.getMagicDb().getEditions().get(cp.getEdition());
|
||||
if( !sets.contains(cp.getEdition()) && CardEdition.Predicates.hasBasicLands.apply(ee))
|
||||
sets.add(cp.getEdition());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user