mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
DeckManagers use DeckProxies
This commit is contained in:
@@ -31,7 +31,6 @@ import java.util.TreeSet;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.base.Predicate;
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
@@ -307,29 +306,4 @@ public class Deck extends DeckBase implements Iterable<Entry<DeckSection, CardPo
|
|||||||
}
|
}
|
||||||
return ColorSet.fromMask(colorProfile);
|
return ColorSet.fromMask(colorProfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
//create predicate that applys a card predicate to all cards in deck
|
|
||||||
public static final Predicate<Deck> createPredicate(final Predicate<PaperCard> cardPredicate) {
|
|
||||||
return new Predicate<Deck>() {
|
|
||||||
@Override
|
|
||||||
public boolean apply(Deck input) {
|
|
||||||
for (Entry<DeckSection, CardPool> deckEntry : input) {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,17 +13,15 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckBase;
|
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.game.player.RegisteredPlayer;
|
import forge.game.player.RegisteredPlayer;
|
||||||
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.FLabel;
|
import forge.gui.toolbox.FLabel;
|
||||||
import forge.gui.toolbox.itemmanager.DeckManager;
|
import forge.gui.toolbox.itemmanager.DeckManager;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManagerContainer;
|
import forge.gui.toolbox.itemmanager.ItemManagerContainer;
|
||||||
import forge.item.PreconDeck;
|
|
||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.quest.QuestController;
|
|
||||||
import forge.quest.QuestEvent;
|
import forge.quest.QuestEvent;
|
||||||
import forge.quest.QuestEventChallenge;
|
import forge.quest.QuestEventChallenge;
|
||||||
import forge.quest.QuestUtil;
|
import forge.quest.QuestUtil;
|
||||||
@@ -79,7 +77,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
private void updateCustom() {
|
private void updateCustom() {
|
||||||
lstDecks.setAllowMultipleSelections(false);
|
lstDecks.setAllowMultipleSelections(false);
|
||||||
|
|
||||||
lstDecks.setPool(Singletons.getModel().getDecks().getConstructed());
|
lstDecks.setPool(DeckProxy.getAllConstructedDecks());
|
||||||
lstDecks.update();
|
lstDecks.update();
|
||||||
|
|
||||||
btnRandom.setText("Random Deck");
|
btnRandom.setText("Random Deck");
|
||||||
@@ -93,43 +91,36 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
lstDecks.setSelectedIndex(0);
|
lstDecks.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Deck that generates its card pool via some algorithm
|
private class ColorDeckGenerator extends DeckProxy implements Comparable<ColorDeckGenerator> {
|
||||||
private abstract class DeckGenerator extends Deck {
|
private String name;
|
||||||
public DeckGenerator(final String name0) {
|
|
||||||
super(name0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected DeckBase newInstance(final String name0) {
|
|
||||||
final DeckGenerator deckGen = this;
|
|
||||||
return new DeckGenerator(name0) {
|
|
||||||
@Override
|
|
||||||
public Deck generateDeck() {
|
|
||||||
return deckGen.generateDeck();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract Deck generateDeck();
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ColorDeckGenerator extends DeckGenerator {
|
|
||||||
private int index;
|
private int index;
|
||||||
|
|
||||||
public ColorDeckGenerator(String name0, int index0) {
|
public ColorDeckGenerator(String name0, int index0) {
|
||||||
super(name0);
|
super(null, null, null);
|
||||||
|
name = name0;
|
||||||
this.index = index0;
|
this.index = index0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(final DeckBase d) {
|
public String getName() {
|
||||||
return d instanceof ColorDeckGenerator ? Integer.compare(this.index, ((ColorDeckGenerator)d).index) : super.compareTo(d);
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(final ColorDeckGenerator d) {
|
||||||
|
return d instanceof ColorDeckGenerator ? Integer.compare(this.index, ((ColorDeckGenerator)d).index) : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Deck generateDeck() {
|
public Deck getDeck() {
|
||||||
List<String> selection = new ArrayList<String>();
|
List<String> selection = new ArrayList<String>();
|
||||||
for (Deck deck : lstDecks.getSelectedItems()) {
|
for (DeckProxy deck : lstDecks.getSelectedItems()) {
|
||||||
selection.add(deck.getName());
|
selection.add(deck.getName());
|
||||||
}
|
}
|
||||||
if (DeckgenUtil.colorCheck(selection)) {
|
if (DeckgenUtil.colorCheck(selection)) {
|
||||||
@@ -144,7 +135,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
|
|
||||||
String[] colors = new String[] { "Random 1", "Random 2", "Random 3",
|
String[] colors = new String[] { "Random 1", "Random 2", "Random 3",
|
||||||
"White", "Blue", "Black", "Red", "Green" };
|
"White", "Blue", "Black", "Red", "Green" };
|
||||||
ArrayList<Deck> decks = new ArrayList<Deck>();
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
for (int i = 0; i < colors.length; i++) {
|
for (int i = 0; i < colors.length; i++) {
|
||||||
decks.add(new ColorDeckGenerator(colors[i], i));
|
decks.add(new ColorDeckGenerator(colors[i], i));
|
||||||
}
|
}
|
||||||
@@ -164,26 +155,10 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
lstDecks.setSelectedIndices(new Integer[]{0, 1});
|
lstDecks.setSelectedIndices(new Integer[]{0, 1});
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ThemeDeckGenerator extends DeckGenerator {
|
|
||||||
public ThemeDeckGenerator(String name0) {
|
|
||||||
super(name0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Deck generateDeck() {
|
|
||||||
return DeckgenUtil.buildThemeDeck(this.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateThemes() {
|
private void updateThemes() {
|
||||||
lstDecks.setAllowMultipleSelections(false);
|
lstDecks.setAllowMultipleSelections(false);
|
||||||
|
|
||||||
ArrayList<Deck> decks = new ArrayList<Deck>();
|
lstDecks.setPool(DeckProxy.getAllThemeDecks());
|
||||||
for (final String s : GenerateThemeDeck.getThemeNames()) {
|
|
||||||
decks.add(new ThemeDeckGenerator(s));
|
|
||||||
}
|
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
|
||||||
lstDecks.update(true);
|
lstDecks.update(true);
|
||||||
|
|
||||||
btnRandom.setText("Random Deck");
|
btnRandom.setText("Random Deck");
|
||||||
@@ -200,12 +175,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
private void updatePrecons() {
|
private void updatePrecons() {
|
||||||
lstDecks.setAllowMultipleSelections(false);
|
lstDecks.setAllowMultipleSelections(false);
|
||||||
|
|
||||||
ArrayList<Deck> decks = new ArrayList<Deck>();
|
lstDecks.setPool(DeckProxy.getAllPreconstructedDecks());
|
||||||
for (final PreconDeck preconDeck : QuestController.getPrecons()) {
|
|
||||||
decks.add(preconDeck.getDeck());
|
|
||||||
}
|
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
|
||||||
lstDecks.update(false, true);
|
lstDecks.update(false, true);
|
||||||
|
|
||||||
btnRandom.setText("Random Deck");
|
btnRandom.setText("Random Deck");
|
||||||
@@ -222,16 +192,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
private void updateQuestEvents() {
|
private void updateQuestEvents() {
|
||||||
lstDecks.setAllowMultipleSelections(false);
|
lstDecks.setAllowMultipleSelections(false);
|
||||||
|
|
||||||
ArrayList<Deck> decks = new ArrayList<Deck>();
|
lstDecks.setPool(DeckProxy.getAllQuestEventAndChallenges());
|
||||||
QuestController quest = Singletons.getModel().getQuest();
|
|
||||||
for (QuestEvent e : quest.getDuelsManager().getAllDuels()) {
|
|
||||||
decks.add(e.getEventDeck());
|
|
||||||
}
|
|
||||||
for (QuestEvent e : quest.getChallenges()) {
|
|
||||||
decks.add(e.getEventDeck());
|
|
||||||
}
|
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
|
||||||
lstDecks.update(false, true);
|
lstDecks.update(false, true);
|
||||||
|
|
||||||
btnRandom.setText("Random Deck");
|
btnRandom.setText("Random Deck");
|
||||||
@@ -246,11 +207,8 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Deck getDeck() {
|
public Deck getDeck() {
|
||||||
Deck deck = lstDecks.getSelectedItem();
|
DeckProxy proxy = lstDecks.getSelectedItem();
|
||||||
if (deck instanceof DeckGenerator) {
|
return proxy.getDeck();
|
||||||
return ((DeckGenerator)deck).generateDeck();
|
|
||||||
}
|
|
||||||
return deck;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Generates deck from current list selection(s). */
|
/** Generates deck from current list selection(s). */
|
||||||
@@ -348,31 +306,33 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
|
|
||||||
private String getState() {
|
private String getState() {
|
||||||
String deckType = decksComboBox.getDeckType().name();
|
String deckType = decksComboBox.getDeckType().name();
|
||||||
String state = deckType;
|
StringBuilder state = new StringBuilder(deckType);
|
||||||
state += ";";
|
state.append(";");
|
||||||
Iterable<Deck> selectedDecks = lstDecks.getSelectedItems();
|
joinSelectedDecks(state, SELECTED_DECK_DELIMITER);
|
||||||
|
return state.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void joinSelectedDecks(StringBuilder state, String delimiter) {
|
||||||
|
Iterable<DeckProxy> selectedDecks = lstDecks.getSelectedItems();
|
||||||
|
boolean isFirst = true;
|
||||||
if (selectedDecks != null) {
|
if (selectedDecks != null) {
|
||||||
for (Deck deck : selectedDecks) {
|
for (DeckProxy deck : selectedDecks) {
|
||||||
state += deck + SELECTED_DECK_DELIMITER;
|
if(isFirst)
|
||||||
|
isFirst = false;
|
||||||
|
else
|
||||||
|
state.append(delimiter);
|
||||||
|
state.append(deck.getName());
|
||||||
}
|
}
|
||||||
state = state.substring(0, state.length() - SELECTED_DECK_DELIMITER.length());
|
|
||||||
}
|
}
|
||||||
return state;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns a clean name from the state that can be used for labels. */
|
/** Returns a clean name from the state that can be used for labels. */
|
||||||
public final String getStateForLabel() {
|
public final String getStateForLabel() {
|
||||||
String deckType = decksComboBox.getDeckType().toString();
|
String deckType = decksComboBox.getDeckType().toString();
|
||||||
String state = deckType;
|
StringBuilder state = new StringBuilder(deckType);
|
||||||
state += ": ";
|
state.append(": ");
|
||||||
Iterable<Deck> selectedDecks = lstDecks.getSelectedItems();
|
joinSelectedDecks(state, ", ");
|
||||||
if (selectedDecks != null) {
|
return state.toString();
|
||||||
for (Deck deck : selectedDecks) {
|
|
||||||
state += deck + ", ";
|
|
||||||
}
|
|
||||||
state = state.substring(0, state.length() - 2);
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restoreSavedState() {
|
private void restoreSavedState() {
|
||||||
|
|||||||
@@ -1,12 +1,28 @@
|
|||||||
package forge.gui.deckeditor;
|
package forge.gui.deckeditor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.card.ColorSet;
|
import forge.card.ColorSet;
|
||||||
|
import forge.deck.CardPool;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckGroup;
|
||||||
import forge.deck.DeckSection;
|
import forge.deck.DeckSection;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
|
import forge.gui.deckchooser.DeckgenUtil;
|
||||||
|
import forge.gui.deckchooser.GenerateThemeDeck;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
|
import forge.item.PaperCard;
|
||||||
|
import forge.item.PreconDeck;
|
||||||
|
import forge.quest.QuestController;
|
||||||
|
import forge.quest.QuestEvent;
|
||||||
import forge.util.storage.IStorage;
|
import forge.util.storage.IStorage;
|
||||||
|
|
||||||
public class DeckProxy implements InventoryItem {
|
public class DeckProxy implements InventoryItem {
|
||||||
@@ -34,6 +50,10 @@ public class DeckProxy implements InventoryItem {
|
|||||||
return "Deck";
|
return "Deck";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Deck getDeck() {
|
||||||
|
return deck;
|
||||||
|
}
|
||||||
|
|
||||||
public void invalidateCache() {
|
public void invalidateCache() {
|
||||||
color = null;
|
color = null;
|
||||||
formats = null;
|
formats = null;
|
||||||
@@ -76,6 +96,114 @@ public class DeckProxy implements InventoryItem {
|
|||||||
|
|
||||||
public void deleteFromStorage() {
|
public void deleteFromStorage() {
|
||||||
// if storage is not readonly, delete the deck from there.
|
// if storage is not readonly, delete the deck from there.
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: The methods below should not take the decks collections from singletons, instead they are supposed to use data passed in parameters
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllConstructedDecks() {
|
||||||
|
// This is a temporary solution that does not iterate over subfolders. - will improve
|
||||||
|
|
||||||
|
return Iterables.transform(Singletons.getModel().getDecks().getConstructed(), new Function<Deck, DeckProxy>(){
|
||||||
|
public DeckProxy apply(Deck deck) { return new DeckProxy(deck, GameType.Constructed, Singletons.getModel().getDecks().getConstructed());
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//create predicate that applys a card predicate to all cards in deck
|
||||||
|
public static final Predicate<DeckProxy> createPredicate(final Predicate<PaperCard> cardPredicate) {
|
||||||
|
return new Predicate<DeckProxy>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(DeckProxy input) {
|
||||||
|
for (Entry<DeckSection, CardPool> deckEntry : input.getDeck()) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class ThemeDeckGenerator extends DeckProxy {
|
||||||
|
private final String name;
|
||||||
|
public ThemeDeckGenerator(String name0) {
|
||||||
|
super(null, null, null);
|
||||||
|
name = name0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Deck getDeck() {
|
||||||
|
return DeckgenUtil.buildThemeDeck(this.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() { return name; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllThemeDecks() {
|
||||||
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
|
for (final String s : GenerateThemeDeck.getThemeNames()) {
|
||||||
|
decks.add(new ThemeDeckGenerator(s));
|
||||||
|
}
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllPreconstructedDecks() {
|
||||||
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
|
for (final PreconDeck preconDeck : QuestController.getPrecons()) {
|
||||||
|
decks.add(new DeckProxy(preconDeck.getDeck(), null, null));
|
||||||
|
}
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllQuestEventAndChallenges() {
|
||||||
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
|
QuestController quest = Singletons.getModel().getQuest();
|
||||||
|
for (QuestEvent e : quest.getDuelsManager().getAllDuels()) {
|
||||||
|
decks.add(new DeckProxy(e.getEventDeck(), null, null));
|
||||||
|
}
|
||||||
|
for (QuestEvent e : quest.getChallenges()) {
|
||||||
|
decks.add(new DeckProxy(e.getEventDeck(), null, null));
|
||||||
|
}
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllSealedDecks(IStorage<DeckGroup> sealed) {
|
||||||
|
final List<DeckProxy> humanDecks = new ArrayList<DeckProxy>();
|
||||||
|
|
||||||
|
// Since AI decks are tied directly to the human choice,
|
||||||
|
// they're just mapped in a parallel map and grabbed when the game starts.
|
||||||
|
for (final DeckGroup d : sealed) {
|
||||||
|
humanDecks.add(new DeckProxy(d.getHumanDeck(), GameType.Sealed, null));
|
||||||
|
}
|
||||||
|
return humanDecks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getAllQuestDecks(IStorage<Deck> storage) {
|
||||||
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
|
if( storage != null )
|
||||||
|
for (final Deck preconDeck : storage) {
|
||||||
|
decks.add(new DeckProxy(preconDeck, GameType.Quest, storage));
|
||||||
|
}
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Iterable<DeckProxy> getDraftDecks(IStorage<DeckGroup> draft) {
|
||||||
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
|
for (DeckGroup d : draft) {
|
||||||
|
decks.add(new DeckProxy(d.getHumanDeck(), GameType.Draft, null));
|
||||||
|
}
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package forge.gui.deckeditor.controllers;
|
package forge.gui.deckeditor.controllers;
|
||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.deckeditor.views.VAllDecks;
|
import forge.gui.deckeditor.views.VAllDecks;
|
||||||
import forge.gui.framework.ICDoc;
|
import forge.gui.framework.ICDoc;
|
||||||
|
|
||||||
@@ -30,8 +30,7 @@ public enum CAllDecks implements ICDoc {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
VAllDecks.SINGLETON_INSTANCE.getLstDecks().setPool(
|
VAllDecks.SINGLETON_INSTANCE.getLstDecks().setPool(DeckProxy.getAllConstructedDecks());
|
||||||
Singletons.getModel().getDecks().getConstructed());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package forge.gui.home.quest;
|
package forge.gui.home.quest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
@@ -8,6 +8,7 @@ import forge.Command;
|
|||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.gui.deckeditor.CDeckEditorUI;
|
import forge.gui.deckeditor.CDeckEditorUI;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.deckeditor.controllers.CEditorQuest;
|
import forge.gui.deckeditor.controllers.CEditorQuest;
|
||||||
import forge.gui.framework.EDocID;
|
import forge.gui.framework.EDocID;
|
||||||
import forge.gui.framework.FScreen;
|
import forge.gui.framework.FScreen;
|
||||||
@@ -31,7 +32,7 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
|||||||
private final Command cmdDeckSelect = new Command() {
|
private final Command cmdDeckSelect = new Command() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
currentDeck = VSubmenuQuestDecks.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
currentDeck = VSubmenuQuestDecks.SINGLETON_INSTANCE.getLstDecks().getSelectedItem().getDeck();
|
||||||
Singletons.getModel().getQuestPreferences().setPref(QPref.CURRENT_DECK, currentDeck.toString());
|
Singletons.getModel().getQuestPreferences().setPref(QPref.CURRENT_DECK, currentDeck.toString());
|
||||||
Singletons.getModel().getQuestPreferences().save();
|
Singletons.getModel().getQuestPreferences().save();
|
||||||
}
|
}
|
||||||
@@ -66,7 +67,7 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
|||||||
final QuestController qData = Singletons.getModel().getQuest();
|
final QuestController qData = Singletons.getModel().getQuest();
|
||||||
boolean hasQuest = qData.getAssets() != null;
|
boolean hasQuest = qData.getAssets() != null;
|
||||||
// Retrieve and set all decks
|
// Retrieve and set all decks
|
||||||
view.getLstDecks().setPool(hasQuest ? qData.getMyDecks() : new ArrayList<Deck>());
|
view.getLstDecks().setPool(DeckProxy.getAllQuestDecks(hasQuest ? qData.getMyDecks() : null));
|
||||||
view.getLstDecks().update();
|
view.getLstDecks().update();
|
||||||
|
|
||||||
// Look through list for preferred deck from prefs
|
// Look through list for preferred deck from prefs
|
||||||
@@ -75,13 +76,11 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
|||||||
if (hasQuest) {
|
if (hasQuest) {
|
||||||
final String cd = Singletons.getModel().getQuestPreferences().getPref(QPref.CURRENT_DECK);
|
final String cd = Singletons.getModel().getQuestPreferences().getPref(QPref.CURRENT_DECK);
|
||||||
|
|
||||||
for (Deck d : qData.getMyDecks()) {
|
for (Entry<DeckProxy, Integer> d : view.getLstDecks().getPool() )
|
||||||
if (d.getName() != null && d.getName().equals(cd)) {
|
if( d.getKey().getName().equals(cd) ) {
|
||||||
currentDeck = d;
|
view.getLstDecks().setSelectedItem(d.getKey());
|
||||||
view.getLstDecks().setSelectedItem(d);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not found? Set first one. Still not found? OK, throw to setCurrentDeckStatus().
|
// Not found? Set first one. Still not found? OK, throw to setCurrentDeckStatus().
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import forge.game.player.RegisteredPlayer;
|
|||||||
import forge.gui.GuiChoose;
|
import forge.gui.GuiChoose;
|
||||||
import forge.gui.SOverlayUtils;
|
import forge.gui.SOverlayUtils;
|
||||||
import forge.gui.deckeditor.CDeckEditorUI;
|
import forge.gui.deckeditor.CDeckEditorUI;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.deckeditor.controllers.CEditorDraftingProcess;
|
import forge.gui.deckeditor.controllers.CEditorDraftingProcess;
|
||||||
import forge.gui.framework.FScreen;
|
import forge.gui.framework.FScreen;
|
||||||
import forge.gui.framework.ICDoc;
|
import forge.gui.framework.ICDoc;
|
||||||
@@ -74,18 +75,13 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
List<Deck> human = new ArrayList<Deck>();
|
final VSubmenuDraft view = VSubmenuDraft.SINGLETON_INSTANCE;
|
||||||
for (DeckGroup d : Singletons.getModel().getDecks().getDraft()) {
|
|
||||||
human.add(d.getHumanDeck());
|
|
||||||
}
|
|
||||||
|
|
||||||
final VSubmenuDraft view = VSubmenuDraft.SINGLETON_INSTANCE;
|
|
||||||
final JButton btnStart = view.getBtnStart();
|
final JButton btnStart = view.getBtnStart();
|
||||||
|
|
||||||
view.getLstDecks().setPool(human);
|
view.getLstDecks().setPool(DeckProxy.getDraftDecks(Singletons.getModel().getDecks().getDraft()));
|
||||||
view.getLstDecks().update();
|
view.getLstDecks().update();
|
||||||
|
|
||||||
if (human.size() > 1) {
|
if (!view.getLstDecks().getPool().isEmpty()) {
|
||||||
btnStart.setEnabled(true);
|
btnStart.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +98,7 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
|
|
||||||
private void startGame(final GameType gameType) {
|
private void startGame(final GameType gameType) {
|
||||||
final boolean gauntlet = !VSubmenuDraft.SINGLETON_INSTANCE.isSingleSelected();
|
final boolean gauntlet = !VSubmenuDraft.SINGLETON_INSTANCE.isSingleSelected();
|
||||||
final Deck humanDeck = VSubmenuDraft.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
final DeckProxy humanDeck = VSubmenuDraft.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
||||||
final int aiIndex = (int) Math.floor(Math.random() * 7);
|
final int aiIndex = (int) Math.floor(Math.random() * 7);
|
||||||
|
|
||||||
if (humanDeck == null) {
|
if (humanDeck == null) {
|
||||||
@@ -111,7 +107,7 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
||||||
String errorMessage = gameType.getDecksFormat().getDeckConformanceProblem(humanDeck);
|
String errorMessage = gameType.getDecksFormat().getDeckConformanceProblem(humanDeck.getDeck());
|
||||||
if (null != errorMessage) {
|
if (null != errorMessage) {
|
||||||
FOptionPane.showErrorDialog("Your deck " + errorMessage + " Please edit or choose a different deck.", "Invalid Deck");
|
FOptionPane.showErrorDialog("Your deck " + errorMessage + " Please edit or choose a different deck.", "Invalid Deck");
|
||||||
return;
|
return;
|
||||||
@@ -122,7 +118,7 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
|
|
||||||
if (gauntlet) {
|
if (gauntlet) {
|
||||||
int rounds = Singletons.getModel().getDecks().getDraft().get(humanDeck.getName()).getAiDecks().size();
|
int rounds = Singletons.getModel().getDecks().getDraft().get(humanDeck.getName()).getAiDecks().size();
|
||||||
Singletons.getModel().getGauntletMini().launch(rounds, humanDeck, gameType);
|
Singletons.getModel().getGauntletMini().launch(rounds, humanDeck.getDeck(), gameType);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +138,7 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
|
|
||||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||||
Lobby lobby = FServer.instance.getLobby();
|
Lobby lobby = FServer.instance.getLobby();
|
||||||
starter.add(new RegisteredPlayer(humanDeck).setPlayer(lobby.getGuiPlayer()));
|
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(lobby.getGuiPlayer()));
|
||||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(lobby.getAiPlayer()));
|
starter.add(new RegisteredPlayer(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||||
|
|
||||||
Singletons.getControl().startMatch(GameType.Draft, starter);
|
Singletons.getControl().startMatch(GameType.Draft, starter);
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import forge.deck.DeckSection;
|
|||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.GuiChoose;
|
import forge.gui.GuiChoose;
|
||||||
import forge.gui.deckeditor.CDeckEditorUI;
|
import forge.gui.deckeditor.CDeckEditorUI;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.deckeditor.controllers.ACEditorBase;
|
import forge.gui.deckeditor.controllers.ACEditorBase;
|
||||||
import forge.gui.deckeditor.controllers.CEditorLimited;
|
import forge.gui.deckeditor.controllers.CEditorLimited;
|
||||||
import forge.gui.framework.FScreen;
|
import forge.gui.framework.FScreen;
|
||||||
@@ -105,7 +106,7 @@ public enum CSubmenuSealed implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final VSubmenuSealed view = VSubmenuSealed.SINGLETON_INSTANCE;
|
final VSubmenuSealed view = VSubmenuSealed.SINGLETON_INSTANCE;
|
||||||
view.getLstDecks().setPool(humanDecks);
|
view.getLstDecks().setPool(DeckProxy.getAllSealedDecks(Singletons.getModel().getDecks().getSealed()));
|
||||||
view.getLstDecks().update();
|
view.getLstDecks().update();
|
||||||
|
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
@@ -121,7 +122,7 @@ public enum CSubmenuSealed implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startGame(final GameType gameType) {
|
private void startGame(final GameType gameType) {
|
||||||
final Deck human = VSubmenuSealed.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
final DeckProxy human = VSubmenuSealed.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
||||||
|
|
||||||
if (human == null) {
|
if (human == null) {
|
||||||
FOptionPane.showErrorDialog("Please build and/or select a deck for yourself.", "No Deck");
|
FOptionPane.showErrorDialog("Please build and/or select a deck for yourself.", "No Deck");
|
||||||
@@ -129,7 +130,7 @@ public enum CSubmenuSealed implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) {
|
||||||
String errorMessage = gameType.getDecksFormat().getDeckConformanceProblem(human);
|
String errorMessage = gameType.getDecksFormat().getDeckConformanceProblem(human.getDeck());
|
||||||
if (null != errorMessage) {
|
if (null != errorMessage) {
|
||||||
FOptionPane.showErrorDialog("Your deck " + errorMessage + " Please edit or choose a different deck.", "Invalid Deck");
|
FOptionPane.showErrorDialog("Your deck " + errorMessage + " Please edit or choose a different deck.", "Invalid Deck");
|
||||||
return;
|
return;
|
||||||
@@ -137,7 +138,7 @@ public enum CSubmenuSealed implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int matches = Singletons.getModel().getDecks().getSealed().get(human.getName()).getAiDecks().size();
|
int matches = Singletons.getModel().getDecks().getSealed().get(human.getName()).getAiDecks().size();
|
||||||
Singletons.getModel().getGauntletMini().launch(matches, human, gameType);
|
Singletons.getModel().getGauntletMini().launch(matches, human.getDeck(), gameType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
||||||
import forge.gui.deckchooser.FDeckChooser;
|
import forge.gui.deckchooser.FDeckChooser;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
import forge.gui.framework.DragTab;
|
import forge.gui.framework.DragTab;
|
||||||
import forge.gui.framework.EDocID;
|
import forge.gui.framework.EDocID;
|
||||||
@@ -428,7 +428,7 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
|||||||
mainDeckPanel.add(mainChooser, "grow, push, wrap");
|
mainDeckPanel.add(mainChooser, "grow, push, wrap");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onDeckClicked(int iPlayer, DeckType type, Iterable<Deck> selectedDecks) {
|
protected void onDeckClicked(int iPlayer, DeckType type, Iterable<DeckProxy> selectedDecks) {
|
||||||
String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks);
|
String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks);
|
||||||
deckSelectorBtns.get(iPlayer).setText(text);
|
deckSelectorBtns.get(iPlayer).setText(text);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ import javax.swing.event.ListSelectionListener;
|
|||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.deck.DeckBase;
|
import forge.deck.DeckBase;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.gui.deckeditor.CDeckEditorUI;
|
import forge.gui.deckeditor.CDeckEditorUI;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.deckeditor.SEditorIO;
|
import forge.gui.deckeditor.SEditorIO;
|
||||||
import forge.gui.deckeditor.controllers.ACEditorBase;
|
import forge.gui.deckeditor.controllers.ACEditorBase;
|
||||||
import forge.gui.deckeditor.controllers.CEditorLimited;
|
import forge.gui.deckeditor.controllers.CEditorLimited;
|
||||||
@@ -47,7 +47,7 @@ import forge.quest.QuestWorld;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public final class DeckManager extends ItemManager<Deck> {
|
public final class DeckManager extends ItemManager<DeckProxy> {
|
||||||
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE);
|
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE);
|
||||||
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE_OVER);
|
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE_OVER);
|
||||||
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkin.InterfaceIcons.ICO_EDIT);
|
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkin.InterfaceIcons.ICO_EDIT);
|
||||||
@@ -71,7 +71,7 @@ public final class DeckManager extends ItemManager<Deck> {
|
|||||||
* @param gt
|
* @param gt
|
||||||
*/
|
*/
|
||||||
public DeckManager(final GameType gt) {
|
public DeckManager(final GameType gt) {
|
||||||
super(Deck.class, true);
|
super(DeckProxy.class, true);
|
||||||
this.gametype = gt;
|
this.gametype = gt;
|
||||||
|
|
||||||
columns.get(ColumnDef.DECK_ACTIONS).setCellRenderer(new DeckActionsRenderer());
|
columns.get(ColumnDef.DECK_ACTIONS).setCellRenderer(new DeckActionsRenderer());
|
||||||
@@ -149,7 +149,7 @@ public final class DeckManager extends ItemManager<Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ItemFilter<Deck> createSearchFilter() {
|
protected ItemFilter<DeckProxy> createSearchFilter() {
|
||||||
return new DeckSearchFilter(this);
|
return new DeckSearchFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ public final class DeckManager extends ItemManager<Deck> {
|
|||||||
}, getFilter(DeckColorFilter.class) == null);
|
}, getFilter(DeckColorFilter.class) == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends DeckBase> void editDeck(final Deck deck) {
|
private <T extends DeckBase> void editDeck(final DeckProxy deck) {
|
||||||
if (deck == null || this.preventEdit) { return; }
|
if (deck == null || this.preventEdit) { return; }
|
||||||
|
|
||||||
ACEditorBase<? extends InventoryItem, ? extends DeckBase> editorCtrl = null;
|
ACEditorBase<? extends InventoryItem, ? extends DeckBase> editorCtrl = null;
|
||||||
@@ -252,7 +252,7 @@ public final class DeckManager extends ItemManager<Deck> {
|
|||||||
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(deck.getName());
|
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(deck.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean deleteDeck(Deck deck) {
|
public boolean deleteDeck(DeckProxy deck) {
|
||||||
if (deck == null || this.preventEdit) { return false; }
|
if (deck == null || this.preventEdit) { return false; }
|
||||||
|
|
||||||
if (!FOptionPane.showConfirmDialog(
|
if (!FOptionPane.showConfirmDialog(
|
||||||
@@ -316,7 +316,7 @@ public final class DeckManager extends ItemManager<Deck> {
|
|||||||
int x = e.getX() - cellBounds.x;
|
int x = e.getX() - cellBounds.x;
|
||||||
|
|
||||||
if (e.getID() == MouseEvent.MOUSE_PRESSED && e.getButton() == 1) {
|
if (e.getID() == MouseEvent.MOUSE_PRESSED && e.getButton() == 1) {
|
||||||
Deck deck = (Deck) value;
|
DeckProxy deck = (DeckProxy) value;
|
||||||
|
|
||||||
if (x >= 0 && x < imgSize) { //delete button
|
if (x >= 0 && x < imgSize) { //delete button
|
||||||
if (DeckManager.this.deleteDeck(deck)) {
|
if (DeckManager.this.deleteDeck(deck)) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import javax.swing.JPanel;
|
|||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import forge.card.MagicColor;
|
import forge.card.MagicColor;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
|
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
|
||||||
import forge.util.BinaryUtil;
|
import forge.util.BinaryUtil;
|
||||||
@@ -14,13 +15,13 @@ import forge.util.ItemPool;
|
|||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DeckColorFilter extends StatTypeFilter<Deck> {
|
public class DeckColorFilter extends StatTypeFilter<DeckProxy> {
|
||||||
public DeckColorFilter(ItemManager<? super Deck> itemManager0) {
|
public DeckColorFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<Deck> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
return new DeckColorFilter(itemManager);
|
return new DeckColorFilter(itemManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,10 +37,10 @@ public class DeckColorFilter extends StatTypeFilter<Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<Deck> buildPredicate() {
|
protected final Predicate<DeckProxy> buildPredicate() {
|
||||||
return new Predicate<Deck>() {
|
return new Predicate<DeckProxy>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Deck input) {
|
public boolean apply(DeckProxy input) {
|
||||||
byte colorProfile = input.getColor().getColor();
|
byte colorProfile = input.getColor().getColor();
|
||||||
if (colorProfile == 0) {
|
if (colorProfile == 0) {
|
||||||
return buttonMap.get(StatTypes.DECK_COLORLESS).getSelected();
|
return buttonMap.get(StatTypes.DECK_COLORLESS).getSelected();
|
||||||
@@ -121,7 +122,7 @@ public class DeckColorFilter extends StatTypeFilter<Deck> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterFiltersApplied() {
|
public void afterFiltersApplied() {
|
||||||
final ItemPool<? super Deck> items = itemManager.getFilteredItems();
|
final ItemPool<? super DeckProxy> items = itemManager.getFilteredItems();
|
||||||
|
|
||||||
buttonMap.get(StatTypes.DECK_WHITE).setText(String.valueOf(items.countAll(IS_WHITE, Deck.class)));
|
buttonMap.get(StatTypes.DECK_WHITE).setText(String.valueOf(items.countAll(IS_WHITE, Deck.class)));
|
||||||
buttonMap.get(StatTypes.DECK_BLUE).setText(String.valueOf(items.countAll(IS_BLUE, Deck.class)));
|
buttonMap.get(StatTypes.DECK_BLUE).setText(String.valueOf(items.countAll(IS_BLUE, Deck.class)));
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package forge.gui.toolbox.itemmanager.filters;
|
|||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
import forge.gui.toolbox.itemmanager.SFilterUtil;
|
||||||
|
|
||||||
@@ -11,23 +11,23 @@ import forge.gui.toolbox.itemmanager.SFilterUtil;
|
|||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DeckFormatFilter extends FormatFilter<Deck> {
|
public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
||||||
public DeckFormatFilter(ItemManager<? super Deck> itemManager0) {
|
public DeckFormatFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
public DeckFormatFilter(ItemManager<? super Deck> itemManager0, GameFormat format0) {
|
public DeckFormatFilter(ItemManager<? super DeckProxy> itemManager0, GameFormat format0) {
|
||||||
super(itemManager0, format0);
|
super(itemManager0, format0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<Deck> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
DeckFormatFilter copy = new DeckFormatFilter(itemManager);
|
DeckFormatFilter copy = new DeckFormatFilter(itemManager);
|
||||||
copy.formats.addAll(this.formats);
|
copy.formats.addAll(this.formats);
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<Deck> buildPredicate() {
|
protected final Predicate<DeckProxy> buildPredicate() {
|
||||||
return Deck.createPredicate(SFilterUtil.buildFormatFilter(this.formats, this.allowReprints));
|
return DeckProxy.createPredicate(SFilterUtil.buildFormatFilter(this.formats, this.allowReprints));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
import forge.quest.QuestWorld;
|
import forge.quest.QuestWorld;
|
||||||
|
|
||||||
@@ -16,17 +16,17 @@ import forge.quest.QuestWorld;
|
|||||||
public class DeckQuestWorldFilter extends DeckFormatFilter {
|
public class DeckQuestWorldFilter extends DeckFormatFilter {
|
||||||
private final Set<QuestWorld> questWorlds = new HashSet<QuestWorld>();
|
private final Set<QuestWorld> questWorlds = new HashSet<QuestWorld>();
|
||||||
|
|
||||||
public DeckQuestWorldFilter(ItemManager<? super Deck> itemManager0) {
|
public DeckQuestWorldFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
public DeckQuestWorldFilter(ItemManager<? super Deck> itemManager0, QuestWorld questWorld0) {
|
public DeckQuestWorldFilter(ItemManager<? super DeckProxy> itemManager0, QuestWorld questWorld0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
this.questWorlds.add(questWorld0);
|
this.questWorlds.add(questWorld0);
|
||||||
this.formats.add(getQuestWorldFormat(questWorld0));
|
this.formats.add(getQuestWorldFormat(questWorld0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<Deck> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
DeckQuestWorldFilter copy = new DeckQuestWorldFilter(itemManager);
|
DeckQuestWorldFilter copy = new DeckQuestWorldFilter(itemManager);
|
||||||
copy.questWorlds.addAll(this.questWorlds);
|
copy.questWorlds.addAll(this.questWorlds);
|
||||||
for (QuestWorld w : this.questWorlds) {
|
for (QuestWorld w : this.questWorlds) {
|
||||||
@@ -41,7 +41,7 @@ public class DeckQuestWorldFilter extends DeckFormatFilter {
|
|||||||
super.reset();
|
super.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canAddQuestWorld(QuestWorld questWorld, ItemFilter<Deck> existingFilter) {
|
public static boolean canAddQuestWorld(QuestWorld questWorld, ItemFilter<DeckProxy> existingFilter) {
|
||||||
if (questWorld.getFormat() == null && Singletons.getModel().getQuest().getMainFormat() == null) {
|
if (questWorld.getFormat() == null && Singletons.getModel().getQuest().getMainFormat() == null) {
|
||||||
return false; //must have format
|
return false; //must have format
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
package forge.gui.toolbox.itemmanager.filters;
|
package forge.gui.toolbox.itemmanager.filters;
|
||||||
|
|
||||||
import forge.deck.Deck;
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DeckSearchFilter extends TextSearchFilter<Deck> {
|
public class DeckSearchFilter extends TextSearchFilter<DeckProxy> {
|
||||||
public DeckSearchFilter(ItemManager<? super Deck> itemManager0) {
|
public DeckSearchFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<Deck> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
DeckSearchFilter copy = new DeckSearchFilter(itemManager);
|
DeckSearchFilter copy = new DeckSearchFilter(itemManager);
|
||||||
copy.getWidget(); //initialize widget
|
copy.getWidget(); //initialize widget
|
||||||
copy.txtSearch.setText(this.txtSearch.getText());
|
copy.txtSearch.setText(this.txtSearch.getText());
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import java.util.Collection;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.home.quest.DialogChooseSets;
|
import forge.gui.home.quest.DialogChooseSets;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ import forge.gui.toolbox.itemmanager.ItemManager;
|
|||||||
public class DeckSetFilter extends DeckFormatFilter {
|
public class DeckSetFilter extends DeckFormatFilter {
|
||||||
private final Set<String> sets = new HashSet<String>();
|
private final Set<String> sets = new HashSet<String>();
|
||||||
|
|
||||||
public DeckSetFilter(ItemManager<? super Deck> itemManager0, Collection<String> sets0, boolean allowReprints0) {
|
public DeckSetFilter(ItemManager<? super DeckProxy> itemManager0, Collection<String> sets0, boolean allowReprints0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
this.sets.addAll(sets0);
|
this.sets.addAll(sets0);
|
||||||
this.formats.add(new GameFormat(null, this.sets, null));
|
this.formats.add(new GameFormat(null, this.sets, null));
|
||||||
@@ -24,7 +24,7 @@ public class DeckSetFilter extends DeckFormatFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<Deck> createCopy() {
|
public ItemFilter<DeckProxy> createCopy() {
|
||||||
return new DeckSetFilter(itemManager, this.sets, this.allowReprints);
|
return new DeckSetFilter(itemManager, this.sets, this.allowReprints);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
|
|
||||||
import forge.deck.Deck;
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.gui.toolbox.FLabel;
|
import forge.gui.toolbox.FLabel;
|
||||||
import forge.gui.toolbox.itemmanager.ItemManager;
|
import forge.gui.toolbox.itemmanager.ItemManager;
|
||||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
||||||
@@ -12,8 +12,8 @@ import forge.item.InventoryItem;
|
|||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.util.ItemPool;
|
import forge.util.ItemPool;
|
||||||
|
|
||||||
public abstract class DeckStatTypeFilter extends StatTypeFilter<Deck> {
|
public abstract class DeckStatTypeFilter extends StatTypeFilter<DeckProxy> {
|
||||||
public DeckStatTypeFilter(ItemManager<? super Deck> itemManager0) {
|
public DeckStatTypeFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,11 +24,11 @@ public abstract class DeckStatTypeFilter extends StatTypeFilter<Deck> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterFiltersApplied() {
|
public void afterFiltersApplied() {
|
||||||
final ItemPool<? super Deck> items = itemManager.getFilteredItems();
|
final ItemPool<? super DeckProxy> items = itemManager.getFilteredItems();
|
||||||
|
|
||||||
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> btn : buttonMap.entrySet()) {
|
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> btn : buttonMap.entrySet()) {
|
||||||
if (btn.getKey().predicate != null) {
|
if (btn.getKey().predicate != null) {
|
||||||
int count = items.countAll(Deck.createPredicate(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES)), Deck.class);
|
int count = items.countAll(DeckProxy.createPredicate(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES)), DeckProxy.class);
|
||||||
btn.getValue().setText(String.valueOf(count));
|
btn.getValue().setText(String.valueOf(count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import forge.deck.Deck;
|
|||||||
import forge.deck.DeckSection;
|
import forge.deck.DeckSection;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.gui.CardPreferences;
|
import forge.gui.CardPreferences;
|
||||||
|
import forge.gui.deckeditor.DeckProxy;
|
||||||
import forge.item.IPaperCard;
|
import forge.item.IPaperCard;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.InventoryItemFromSet;
|
import forge.item.InventoryItemFromSet;
|
||||||
@@ -546,7 +547,7 @@ public class ItemColumn extends TableColumn {
|
|||||||
return i instanceof Deck ? ((Deck) i) : null;
|
return i instanceof Deck ? ((Deck) i) : null;
|
||||||
}
|
}
|
||||||
private static ColorSet toDeckColor(final InventoryItem i) {
|
private static ColorSet toDeckColor(final InventoryItem i) {
|
||||||
return i instanceof Deck ? ((Deck) i).getColor() : null;
|
return i instanceof DeckProxy ? ((DeckProxy) i).getColor() : null;
|
||||||
}
|
}
|
||||||
private static int toDeckCount(final InventoryItem i, DeckSection section) {
|
private static int toDeckCount(final InventoryItem i, DeckSection section) {
|
||||||
Deck deck = toDeck(i);
|
Deck deck = toDeck(i);
|
||||||
|
|||||||
Reference in New Issue
Block a user