mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Fully implement card and deck set/format filter
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1135,14 +1135,12 @@ forge-gui-mobile/src/forge/itemmanager/filters/CardColorFilter.java -text
|
|||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardFormatFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardFormatFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardPowerFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardPowerFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardSetFilter.java -text
|
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardToughnessFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardToughnessFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardTypeFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardTypeFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckFolderFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckFolderFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckFormatFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckFormatFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckSearchFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckSearchFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckSetFilter.java -text
|
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/FormatFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/FormatFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java -text
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package forge.itemmanager.filters;
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
import com.google.common.base.Predicates;
|
||||||
|
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SFilterUtil;
|
|
||||||
|
|
||||||
|
|
||||||
public class CardFormatFilter extends FormatFilter<PaperCard> {
|
public class CardFormatFilter extends FormatFilter<PaperCard> {
|
||||||
@@ -15,12 +15,18 @@ public class CardFormatFilter extends FormatFilter<PaperCard> {
|
|||||||
@Override
|
@Override
|
||||||
public ItemFilter<PaperCard> createCopy() {
|
public ItemFilter<PaperCard> createCopy() {
|
||||||
CardFormatFilter copy = new CardFormatFilter(itemManager);
|
CardFormatFilter copy = new CardFormatFilter(itemManager);
|
||||||
copy.formats.addAll(this.formats);
|
copy.format = this.format;
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<PaperCard> buildPredicate() {
|
protected final Predicate<PaperCard> buildPredicate() {
|
||||||
return SFilterUtil.buildFormatFilter(this.formats, true);
|
if (format == null) {
|
||||||
|
return Predicates.alwaysTrue();
|
||||||
|
}
|
||||||
|
if (format.getName() == null) {
|
||||||
|
return format.getFilterPrinted(); //if format is collection of sets, don't show reprints in other sets
|
||||||
|
}
|
||||||
|
return format.getFilterRules();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package forge.itemmanager.filters;
|
|
||||||
|
|
||||||
import forge.game.GameFormat;
|
|
||||||
import forge.item.PaperCard;
|
|
||||||
import forge.itemmanager.ItemManager;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
|
|
||||||
public class CardSetFilter extends CardFormatFilter {
|
|
||||||
private final Set<String> sets = new HashSet<String>();
|
|
||||||
|
|
||||||
public CardSetFilter(ItemManager<? super PaperCard> itemManager0, Collection<String> sets0) {
|
|
||||||
super(itemManager0);
|
|
||||||
this.sets.addAll(sets0);
|
|
||||||
this.formats.add(new GameFormat(null, this.sets, null));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemFilter<PaperCard> createCopy() {
|
|
||||||
return new CardSetFilter(itemManager, this.sets);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reset() {
|
|
||||||
this.sets.clear();
|
|
||||||
super.reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package forge.itemmanager.filters;
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
import com.google.common.base.Predicates;
|
||||||
|
|
||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SFilterUtil;
|
|
||||||
|
|
||||||
|
|
||||||
public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
||||||
@@ -15,12 +15,20 @@ public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
|||||||
@Override
|
@Override
|
||||||
public ItemFilter<DeckProxy> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
DeckFormatFilter copy = new DeckFormatFilter(itemManager);
|
DeckFormatFilter copy = new DeckFormatFilter(itemManager);
|
||||||
copy.formats.addAll(this.formats);
|
copy.format = format;
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<DeckProxy> buildPredicate() {
|
protected final Predicate<DeckProxy> buildPredicate() {
|
||||||
return DeckProxy.createPredicate(SFilterUtil.buildFormatFilter(this.formats, true));
|
if (format == null) {
|
||||||
|
return Predicates.alwaysTrue();
|
||||||
|
}
|
||||||
|
return new Predicate<DeckProxy>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(DeckProxy input) {
|
||||||
|
return format.isDeckLegal(input.getDeck());
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
package forge.itemmanager.filters;
|
|
||||||
|
|
||||||
import forge.deck.DeckProxy;
|
|
||||||
import forge.game.GameFormat;
|
|
||||||
import forge.itemmanager.ItemManager;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
|
|
||||||
public class DeckSetFilter extends DeckFormatFilter {
|
|
||||||
private final Set<String> sets = new HashSet<String>();
|
|
||||||
|
|
||||||
public DeckSetFilter(ItemManager<? super DeckProxy> itemManager0, Collection<String> sets0) {
|
|
||||||
super(itemManager0);
|
|
||||||
this.sets.addAll(sets0);
|
|
||||||
this.formats.add(new GameFormat(null, this.sets, null));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemFilter<DeckProxy> createCopy() {
|
|
||||||
return new DeckSetFilter(itemManager, this.sets);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reset() {
|
|
||||||
this.sets.clear();
|
|
||||||
super.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +1,38 @@
|
|||||||
package forge.itemmanager.filters;
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
|
import forge.Forge;
|
||||||
|
import forge.Graphics;
|
||||||
|
import forge.assets.FSkinColor;
|
||||||
import forge.assets.FSkinFont;
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.card.CardEdition;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
|
import forge.screens.FScreen;
|
||||||
|
import forge.screens.settings.SettingsScreen;
|
||||||
|
import forge.toolbox.FCheckBox;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FGroupList;
|
||||||
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.util.Callback;
|
||||||
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Utils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||||
|
|
||||||
|
|
||||||
public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T> {
|
public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||||
protected final Set<GameFormat> formats = new HashSet<GameFormat>();
|
protected GameFormat format;
|
||||||
private FComboBox<Object> cbxFormats = new FComboBox<Object>();
|
private FComboBox<Object> cbxFormats = new FComboBox<Object>();
|
||||||
|
|
||||||
public FormatFilter(ItemManager<? super T> itemManager0) {
|
public FormatFilter(ItemManager<? super T> itemManager0) {
|
||||||
@@ -31,17 +49,21 @@ public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T
|
|||||||
cbxFormats.setChangedHandler(new FEventHandler() {
|
cbxFormats.setChangedHandler(new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
if (cbxFormats.getSelectedIndex() == 0) {
|
int index = cbxFormats.getSelectedIndex();
|
||||||
formats.clear();
|
if (index == -1) {
|
||||||
|
//Do nothing when index set to -1
|
||||||
|
}
|
||||||
|
else if (index == 0) {
|
||||||
|
format = null;
|
||||||
applyChange();
|
applyChange();
|
||||||
}
|
}
|
||||||
else if (cbxFormats.getSelectedIndex() < cbxFormats.getItemCount() - 1) {
|
else if (index == cbxFormats.getItemCount() - 1) {
|
||||||
formats.clear();
|
cbxFormats.setSelectedIndex(-1);
|
||||||
formats.add((GameFormat)cbxFormats.getSelectedItem());
|
Forge.openScreen(new MultiSetSelect());
|
||||||
applyChange();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//TODO: Open screen to select one or more sets and/or formats
|
format = (GameFormat)cbxFormats.getSelectedItem();
|
||||||
|
applyChange();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -49,16 +71,17 @@ public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset() {
|
public void reset() {
|
||||||
this.formats.clear();
|
format = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T extends InventoryItem> boolean canAddFormat(GameFormat format, FormatFilter<T> existingFilter) {
|
@Override
|
||||||
return existingFilter == null || !existingFilter.formats.contains(format);
|
public FDisplayObject getMainComponent() {
|
||||||
|
return cbxFormats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return formats.isEmpty();
|
return format == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,4 +93,125 @@ public abstract class FormatFilter<T extends InventoryItem> extends ItemFilter<T
|
|||||||
protected void doWidgetLayout(float width, float height) {
|
protected void doWidgetLayout(float width, float height) {
|
||||||
cbxFormats.setSize(width, height);
|
cbxFormats.setSize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class MultiSetSelect extends FScreen {
|
||||||
|
private final Set<CardEdition> selectedSets = new HashSet<CardEdition>();
|
||||||
|
private final FGroupList<CardEdition> lstSets = add(new FGroupList<CardEdition>());
|
||||||
|
|
||||||
|
private MultiSetSelect() {
|
||||||
|
super("Choose Sets");
|
||||||
|
|
||||||
|
lstSets.addGroup("Core Sets");
|
||||||
|
lstSets.addGroup("Expansions");
|
||||||
|
lstSets.addGroup("Duel Decks");
|
||||||
|
lstSets.addGroup("From the Vault");
|
||||||
|
lstSets.addGroup("Premium Deck Series");
|
||||||
|
lstSets.addGroup("Reprint Sets");
|
||||||
|
lstSets.addGroup("Starter Sets");
|
||||||
|
lstSets.addGroup("Custom Sets");
|
||||||
|
lstSets.addGroup("Other Sets");
|
||||||
|
|
||||||
|
List<CardEdition> sets = new ArrayList<CardEdition>();
|
||||||
|
for (CardEdition set : FModel.getMagicDb().getEditions()) {
|
||||||
|
sets.add(set);
|
||||||
|
}
|
||||||
|
Collections.sort(sets);
|
||||||
|
Collections.reverse(sets);
|
||||||
|
|
||||||
|
for (CardEdition set : sets) {
|
||||||
|
switch (set.getType()) {
|
||||||
|
case CORE:
|
||||||
|
lstSets.addItem(set, 0);
|
||||||
|
break;
|
||||||
|
case EXPANSION:
|
||||||
|
lstSets.addItem(set, 1);
|
||||||
|
break;
|
||||||
|
case DUEL_DECKS:
|
||||||
|
lstSets.addItem(set, 2);
|
||||||
|
break;
|
||||||
|
case FROM_THE_VAULT:
|
||||||
|
lstSets.addItem(set, 3);
|
||||||
|
break;
|
||||||
|
case PREMIUM_DECK_SERIES:
|
||||||
|
lstSets.addItem(set, 4);
|
||||||
|
break;
|
||||||
|
case REPRINT:
|
||||||
|
lstSets.addItem(set, 5);
|
||||||
|
break;
|
||||||
|
case STARTER:
|
||||||
|
lstSets.addItem(set, 6);
|
||||||
|
break;
|
||||||
|
case THIRDPARTY:
|
||||||
|
lstSets.addItem(set, 7);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lstSets.addItem(set, 8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lstSets.setListItemRenderer(new SetRenderer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClose(Callback<Boolean> canCloseCallback) {
|
||||||
|
if (selectedSets.size() > 0) {
|
||||||
|
List<String> setCodes = new ArrayList<String>();
|
||||||
|
List<CardEdition> sortedSets = new ArrayList<CardEdition>(selectedSets);
|
||||||
|
Collections.sort(sortedSets);
|
||||||
|
Collections.reverse(sortedSets);
|
||||||
|
for (CardEdition set : sortedSets) {
|
||||||
|
setCodes.add(set.getCode());
|
||||||
|
}
|
||||||
|
format = new GameFormat(null, setCodes, null);
|
||||||
|
cbxFormats.setText(TextUtil.join(setCodes, ", "));
|
||||||
|
applyChange();
|
||||||
|
}
|
||||||
|
else { //if nothing selected, switch to All Sets item
|
||||||
|
cbxFormats.setSelectedIndex(0);
|
||||||
|
}
|
||||||
|
super.onClose(canCloseCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float startY, float width, float height) {
|
||||||
|
lstSets.setBounds(0, startY, width, height - startY);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SetRenderer extends FList.ListItemRenderer<CardEdition> {
|
||||||
|
@Override
|
||||||
|
public float getItemHeight() {
|
||||||
|
return Utils.AVG_FINGER_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean tap(Integer index, CardEdition value, float x, float y, int count) {
|
||||||
|
if (selectedSets.contains(value)) {
|
||||||
|
selectedSets.remove(value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
selectedSets.add(value);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawValue(Graphics g, Integer index, CardEdition value, FSkinFont font, FSkinColor foreColor, FSkinColor backColor, boolean pressed, float x, float y, float w, float h) {
|
||||||
|
float offset = w * SettingsScreen.INSETS_FACTOR - FList.PADDING; //increase padding for settings items
|
||||||
|
x += offset;
|
||||||
|
y += offset;
|
||||||
|
w -= 2 * offset;
|
||||||
|
h -= 2 * offset;
|
||||||
|
|
||||||
|
float textHeight = h;
|
||||||
|
h *= 0.66f;
|
||||||
|
|
||||||
|
g.drawText(value.toString(), font, foreColor, x, y, w - h - FList.PADDING, textHeight, false, HAlignment.LEFT, true);
|
||||||
|
|
||||||
|
x += w - h;
|
||||||
|
y += (textHeight - h) / 2;
|
||||||
|
FCheckBox.drawCheckBox(g, SettingsScreen.DESC_COLOR, foreColor, selectedSets.contains(value), x, y, h, h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -943,96 +943,6 @@ public class ConstructedScreen extends LaunchScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** This listener unlocks the relevant buttons for players
|
|
||||||
* and enables/disables archenemy combobox as appropriate. */
|
|
||||||
/*private ItemListener iListenerVariants = new ItemListener() {
|
|
||||||
@Override
|
|
||||||
public void itemStateChanged(ItemEvent arg0) {
|
|
||||||
FCheckBox cb = (FCheckBox) arg0.getSource();
|
|
||||||
GameType variantType = null;
|
|
||||||
|
|
||||||
if (cb == vntVanguard) {
|
|
||||||
variantType = GameType.Vanguard;
|
|
||||||
}
|
|
||||||
else if (cb == vntCommander) {
|
|
||||||
variantType = GameType.Commander;
|
|
||||||
}
|
|
||||||
else if (cb == vntPlanechase) {
|
|
||||||
variantType = GameType.Planechase;
|
|
||||||
}
|
|
||||||
else if (cb == vntArchenemy) {
|
|
||||||
variantType = archenemyType.contains("Classic") ? GameType.Archenemy : GameType.ArchenemyRumble;
|
|
||||||
comboArchenemy.setEnabled(vntArchenemy.isSelected());
|
|
||||||
if (arg0.getStateChange() != ItemEvent.SELECTED) {
|
|
||||||
appliedVariants.remove(GameType.Archenemy);
|
|
||||||
appliedVariants.remove(GameType.ArchenemyRumble);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null != variantType) {
|
|
||||||
if (arg0.getStateChange() == ItemEvent.SELECTED) {
|
|
||||||
appliedVariants.add(variantType);
|
|
||||||
currentGameMode = variantType;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
appliedVariants.remove(variantType);
|
|
||||||
if (currentGameMode == variantType) {
|
|
||||||
currentGameMode = GameType.Constructed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (PlayerPanel pp : playerPanels) {
|
|
||||||
pp.toggleIsPlayerArchenemy();
|
|
||||||
pp.updateVariantControlsVisibility();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Listens to the archenemy combo box
|
|
||||||
private ActionListener aeComboListener = new ActionListener() {
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
FComboBox<String> cb = (FComboBox<String>)e.getSource();
|
|
||||||
archenemyType = (String)cb.getSelectedItem();
|
|
||||||
GameType mode = archenemyType.contains("Classic") ? GameType.Archenemy : GameType.ArchenemyRumble;
|
|
||||||
appliedVariants.remove(GameType.Archenemy);
|
|
||||||
appliedVariants.remove(GameType.ArchenemyRumble);
|
|
||||||
appliedVariants.add(mode);
|
|
||||||
|
|
||||||
currentGameMode = mode;
|
|
||||||
for (PlayerPanel pp : playerPanels) {
|
|
||||||
pp.toggleIsPlayerArchenemy();
|
|
||||||
pp.updateVariantControlsVisibility();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//This listener will look for a vanguard avatar being selected in the lists
|
|
||||||
//and update the corresponding detail panel.
|
|
||||||
private ListSelectionListener vgdLSListener = new ListSelectionListener() {
|
|
||||||
@Override
|
|
||||||
public void valueChanged(ListSelectionEvent e) {
|
|
||||||
int index = vgdAvatarLists.indexOf(e.getSource());
|
|
||||||
Object obj = vgdAvatarLists.get(index).getSelectedValue();
|
|
||||||
PlayerPanel pp = playerPanels.get(index);
|
|
||||||
CardDetailPanel cdp = vgdAvatarDetails.get(index);
|
|
||||||
|
|
||||||
if (obj instanceof PaperCard) {
|
|
||||||
pp.setVanguardButtonText(((PaperCard) obj).getName());
|
|
||||||
cdp.setCard(Card.getCardForUi((PaperCard) obj));
|
|
||||||
cdp.setVisible(true);
|
|
||||||
refreshPanels(false, true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pp.setVanguardButtonText((String) obj);
|
|
||||||
cdp.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};*/
|
|
||||||
|
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
//========== METHODS FOR VARIANTS
|
//========== METHODS FOR VARIANTS
|
||||||
|
|||||||
@@ -154,9 +154,11 @@ public class FGroupList<E> extends FScrollPane {
|
|||||||
float groupHeight;
|
float groupHeight;
|
||||||
|
|
||||||
for (ListGroup group : groups) {
|
for (ListGroup group : groups) {
|
||||||
groupHeight = group.getPreferredHeight();
|
if (group.isVisible()) {
|
||||||
group.setBounds(0, y, visibleWidth, groupHeight);
|
groupHeight = group.getPreferredHeight();
|
||||||
y += groupHeight;
|
group.setBounds(0, y, visibleWidth, groupHeight);
|
||||||
|
y += groupHeight;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ScrollBounds(visibleWidth, y);
|
return new ScrollBounds(visibleWidth, y);
|
||||||
@@ -181,16 +183,19 @@ public class FGroupList<E> extends FScrollPane {
|
|||||||
}
|
}
|
||||||
}).build());
|
}).build());
|
||||||
}
|
}
|
||||||
|
setVisible(false); //hide by default unless it has items
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addItem(ListItem item) {
|
public void addItem(ListItem item) {
|
||||||
items.add(item);
|
items.add(item);
|
||||||
add(item);
|
add(item);
|
||||||
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeItem(ListItem item) {
|
public boolean removeItem(ListItem item) {
|
||||||
if (items.remove(item)) {
|
if (items.remove(item)) {
|
||||||
remove(item);
|
remove(item);
|
||||||
|
setVisible(items.size() > 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user