mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
- add bulk addition and removal routines to editor model
- add button to sell excess duplicates of all cards in spell shop - ensure table selection is restored properly after adding a card
This commit is contained in:
@@ -20,6 +20,7 @@ package forge.gui.deckeditor.controllers;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
@@ -27,6 +28,8 @@ import java.util.Map.Entry;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
||||
import forge.Command;
|
||||
@@ -103,6 +106,9 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
private String CCAddLabel = new String();
|
||||
private String CDTabLabel = new String();
|
||||
private String CDRemLabel = new String();
|
||||
private String prevRem4Label = null;
|
||||
private String prevRem4Tooltip = null;
|
||||
private Command prevRem4Cmd = null;
|
||||
|
||||
/**
|
||||
* Child controller for quest card shop UI.
|
||||
@@ -133,11 +139,13 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
this.getTableCatalog().setDeck(fullCatalogCards);
|
||||
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setEnabled(false);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setEnabled(false);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setEnabled(false);
|
||||
fullCatalogToggle.setText("Return to spell shop");
|
||||
} else {
|
||||
this.getTableCatalog().setDeck(cardsForSale);
|
||||
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setEnabled(true);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setEnabled(true);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setEnabled(true);
|
||||
fullCatalogToggle.setText("See full catalog");
|
||||
}
|
||||
}
|
||||
@@ -189,6 +197,10 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
CDRemLabel = VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().getText();
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setText("Sell Card");
|
||||
|
||||
prevRem4Label = VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().getText();
|
||||
prevRem4Tooltip = VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().getToolTipText();
|
||||
prevRem4Cmd = VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().getCommand();
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlHeader().setVisible(false);
|
||||
}
|
||||
|
||||
@@ -288,11 +300,6 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
*/
|
||||
@Override
|
||||
public void addCard(InventoryItem item) {
|
||||
if (showingFullCatalog) {
|
||||
// no "buying" from the full catalog
|
||||
return;
|
||||
}
|
||||
|
||||
if (item == null) {
|
||||
return;
|
||||
}
|
||||
@@ -324,9 +331,8 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
}
|
||||
this.questData.getCards().buyPack(booster, value);
|
||||
final List<CardPrinted> newCards = booster.getCards();
|
||||
for (final CardPrinted card : newCards) {
|
||||
this.getTableDeck().addCard(card);
|
||||
}
|
||||
final List<InventoryItem> newInventory = new LinkedList<InventoryItem>(newCards);
|
||||
getTableDeck().addCards(newInventory);
|
||||
final CardListViewer c = new CardListViewer(booster.getName(),
|
||||
"You have found the following cards inside:", newCards);
|
||||
c.show();
|
||||
@@ -334,11 +340,8 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
this.getTableCatalog().removeCard(item);
|
||||
final PreconDeck deck = (PreconDeck) item;
|
||||
this.questData.getCards().buyPreconDeck(deck, value);
|
||||
|
||||
for (final CardPrinted card : deck.getDeck().getMain().toFlatList()) {
|
||||
this.getTableDeck().addCard(card);
|
||||
}
|
||||
|
||||
final ItemPool<InventoryItem> newInventory = ItemPool.createFrom(deck.getDeck().getMain(), InventoryItem.class, false);
|
||||
getTableDeck().addCards(newInventory);
|
||||
JOptionPane.showMessageDialog(null, String.format(
|
||||
"Deck '%s' was added to your decklist.%n%nCards from it were also added to your pool.",
|
||||
deck.getName()), "Thanks for purchasing!", JOptionPane.INFORMATION_MESSAGE);
|
||||
@@ -352,11 +355,6 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
*/
|
||||
@Override
|
||||
public void removeCard(InventoryItem item) {
|
||||
if (showingFullCatalog) {
|
||||
// no "selling" to the full catalog
|
||||
return;
|
||||
}
|
||||
|
||||
if ((item == null) || !(item instanceof CardPrinted)) {
|
||||
return;
|
||||
}
|
||||
@@ -367,11 +365,27 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
|
||||
final int price = Math.min((int) (this.multiplier * this.getCardValue(card)), this.questData.getCards()
|
||||
.getSellPriceLimit());
|
||||
this.questData.getCards().sellCard(card, price);
|
||||
this.questData.getCards().sellCard(card, 1, price);
|
||||
|
||||
this.creditsLabel.setText("Credits: " + this.questData.getAssets().getCredits());
|
||||
}
|
||||
|
||||
public void removeCards(List<Map.Entry<InventoryItem, Integer>> cardsToRemove) {
|
||||
this.getTableDeck().removeCards(cardsToRemove);
|
||||
this.getTableCatalog().addCards(cardsToRemove);
|
||||
|
||||
for (Map.Entry<InventoryItem, Integer> item : cardsToRemove) {
|
||||
if (!(item.getKey() instanceof CardPrinted)) {
|
||||
continue;
|
||||
}
|
||||
CardPrinted card = (CardPrinted)item.getKey();
|
||||
final int price = Math.min((int) (this.multiplier * this.getCardValue(card)),
|
||||
this.questData.getCards().getSellPriceLimit());
|
||||
this.questData.getCards().sellCard(card, item.getValue(), price);
|
||||
}
|
||||
|
||||
this.creditsLabel.setText("Credits: " + this.questData.getAssets().getCredits());
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
@@ -395,6 +409,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.deckeditor.ACEditorBase#show(forge.Command)
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public void init() {
|
||||
setup();
|
||||
@@ -409,7 +424,21 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
this.getTableCatalog().setDeck(cardsForSale);
|
||||
this.getTableDeck().setDeck(ownedItems);
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlRemButtons().remove(VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4());
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setText("Sell excess cards");
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setToolTipText("Sell extra non-basic land cards of which you have more than four copies");
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
List<Map.Entry<InventoryItem, Integer>> cardsToRemove = new LinkedList<Map.Entry<InventoryItem,Integer>>();
|
||||
for (Map.Entry<InventoryItem, Integer> item : getTableDeck().getCards()) {
|
||||
if (4 < item.getValue() && !"Basic Land - ".startsWith(item.getKey().getItemType())) {
|
||||
cardsToRemove.add(Pair.of(item.getKey(), item.getValue() - 4));
|
||||
}
|
||||
}
|
||||
removeCards(cardsToRemove);
|
||||
}
|
||||
});
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlRemButtons().add(creditsLabel);
|
||||
this.creditsLabel.setText("Credits: " + this.questData.getAssets().getCredits());
|
||||
|
||||
@@ -446,14 +475,16 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
VCardCatalog.SINGLETON_INSTANCE.getPnlAddButtons().add(VCardCatalog.SINGLETON_INSTANCE.getBtnAdd4());
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlRemButtons().remove(creditsLabel);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlRemButtons().add(VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4());
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setText(prevRem4Label);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setToolTipText(prevRem4Tooltip);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove4().setCommand(prevRem4Cmd);
|
||||
|
||||
VCardCatalog.SINGLETON_INSTANCE.getTabLabel().setText(CCTabLabel);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getTabLabel().setText(CDTabLabel);
|
||||
|
||||
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText(CCAddLabel);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setText(CDRemLabel);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,10 +139,10 @@ public final class EditorTableModel<T extends InventoryItem> extends AbstractTab
|
||||
*
|
||||
* @param card0   {@link forge.Card} object
|
||||
*/
|
||||
public void removeCard(final T card0) {
|
||||
public void removeCard(final T card0, int qty) {
|
||||
final boolean wasThere = this.data.count(card0) > 0;
|
||||
if (wasThere) {
|
||||
this.data.remove(card0);
|
||||
this.data.remove(card0, qty);
|
||||
this.fireTableDataChanged();
|
||||
}
|
||||
}
|
||||
@@ -152,8 +152,8 @@ public final class EditorTableModel<T extends InventoryItem> extends AbstractTab
|
||||
*
|
||||
* @param card0   {@link forge.Card} object.
|
||||
*/
|
||||
public void addCard(final T card0) {
|
||||
this.data.add(card0);
|
||||
public void addCard(final T card0, int qty) {
|
||||
this.data.add(card0, qty);
|
||||
this.fireTableDataChanged();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,11 +22,14 @@ import java.awt.Component;
|
||||
import java.awt.Point;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.DefaultTableColumnModel;
|
||||
@@ -243,13 +246,21 @@ public final class EditorTableView<T extends InventoryItem> {
|
||||
*/
|
||||
public void fixSelection(final int rowLastSelected) {
|
||||
// 3 cases: 0 cards left, select the same row, select prev row
|
||||
int newRow = rowLastSelected;
|
||||
final int cntRowsAbove = this.model.getRowCount();
|
||||
if (cntRowsAbove != 0) {
|
||||
if (0 <= rowLastSelected && cntRowsAbove != 0) {
|
||||
int newRow = rowLastSelected;
|
||||
if (cntRowsAbove == newRow) {
|
||||
// move selection away from the last, already missing, option
|
||||
newRow--;
|
||||
} // move selection away from the last, already missing, option
|
||||
this.table.setRowSelectionInterval(newRow, newRow);
|
||||
}
|
||||
final int selectRow = newRow;
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
table.setRowSelectionInterval(selectRow, selectRow);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,12 +357,37 @@ public final class EditorTableView<T extends InventoryItem> {
|
||||
* an InventoryItem
|
||||
*/
|
||||
public void addCard(final T card) {
|
||||
// int n = table.getSelectedRow();
|
||||
final int n = this.table.getSelectedRow();
|
||||
this.pool.add(card);
|
||||
if (this.isUnfiltered()) {
|
||||
this.model.addCard(card);
|
||||
this.model.addCard(card, 1);
|
||||
}
|
||||
this.updateView(false);
|
||||
this.fixSelection(n);
|
||||
}
|
||||
|
||||
public void addCards(Iterable<Map.Entry<T, Integer>> cardsToAdd) {
|
||||
final int n = this.table.getSelectedRow();
|
||||
for (Map.Entry<T, Integer> item : cardsToAdd) {
|
||||
this.pool.add(item.getKey(), item.getValue());
|
||||
if (this.isUnfiltered()) {
|
||||
this.model.addCard(item.getKey(), item.getValue());
|
||||
}
|
||||
}
|
||||
this.updateView(false);
|
||||
this.fixSelection(n);
|
||||
}
|
||||
|
||||
public void addCards(Collection<T> cardsToAdd) {
|
||||
final int n = this.table.getSelectedRow();
|
||||
for (T item : cardsToAdd) {
|
||||
this.pool.add(item, 1);
|
||||
if (this.isUnfiltered()) {
|
||||
this.model.addCard(item, 1);
|
||||
}
|
||||
}
|
||||
this.updateView(false);
|
||||
this.fixSelection(n);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -365,7 +401,19 @@ public final class EditorTableView<T extends InventoryItem> {
|
||||
final int n = this.table.getSelectedRow();
|
||||
this.pool.remove(card);
|
||||
if (this.isUnfiltered()) {
|
||||
this.model.removeCard(card);
|
||||
this.model.removeCard(card, 1);
|
||||
}
|
||||
this.updateView(false);
|
||||
this.fixSelection(n);
|
||||
}
|
||||
|
||||
public void removeCards(List<Map.Entry<T, Integer>> cardsToRemove) {
|
||||
final int n = this.table.getSelectedRow();
|
||||
for (Map.Entry<T, Integer> item : cardsToRemove) {
|
||||
this.pool.remove(item.getKey(), item.getValue());
|
||||
if (this.isUnfiltered()) {
|
||||
this.model.removeCard(item.getKey(), item.getValue());
|
||||
}
|
||||
}
|
||||
this.updateView(false);
|
||||
this.fixSelection(n);
|
||||
|
||||
@@ -80,14 +80,14 @@ public enum VCurrentDeck implements IVDoc<CCurrentDeck>, ITableContainer {
|
||||
private final JPanel pnlRemoveButtons =
|
||||
new JPanel(new MigLayout("insets 0, gap 0, ax center, hidemode 3"));
|
||||
|
||||
private final JLabel btnRemove = new FLabel.Builder()
|
||||
private final FLabel btnRemove = new FLabel.Builder()
|
||||
.fontSize(14)
|
||||
.text("Remove card")
|
||||
.tooltip("Remove selected card to current deck (or double click the row)")
|
||||
.icon(FSkin.getIcon(FSkin.InterfaceIcons.ICO_MINUS))
|
||||
.iconScaleAuto(false).hoverable(true).build();
|
||||
|
||||
private final JLabel btnRemove4 = new FLabel.Builder()
|
||||
private final FLabel btnRemove4 = new FLabel.Builder()
|
||||
.fontSize(14)
|
||||
.text("Remove 4 of card")
|
||||
.tooltip("Remove up to 4 of selected card to current deck")
|
||||
@@ -236,12 +236,12 @@ public enum VCurrentDeck implements IVDoc<CCurrentDeck>, ITableContainer {
|
||||
//========== Retrieval
|
||||
|
||||
/** @return {@link javax.swing.JLabel} */
|
||||
public JLabel getBtnRemove() {
|
||||
public FLabel getBtnRemove() {
|
||||
return btnRemove;
|
||||
}
|
||||
|
||||
/** @return {@link javax.swing.JLabel} */
|
||||
public JLabel getBtnRemove4() {
|
||||
public FLabel getBtnRemove4() {
|
||||
return btnRemove4;
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public class QuestWinLose extends ControlWinLose {
|
||||
this.anteWon(anteCards);
|
||||
} else {
|
||||
for (CardPrinted c : anteCards) {
|
||||
qc.getCards().loseCard(c);
|
||||
qc.getCards().loseCard(c, 1);
|
||||
}
|
||||
this.anteLost(anteCards);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.google.common.collect.Iterables;
|
||||
import forge.card.BoosterData;
|
||||
import forge.card.BoosterGenerator;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.deck.Deck;
|
||||
import forge.util.Aggregates;
|
||||
|
||||
/**
|
||||
@@ -80,7 +81,7 @@ public abstract class OpenablePack implements InventoryItemFromSet {
|
||||
}
|
||||
return this.cards;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the total cards.
|
||||
*
|
||||
|
||||
@@ -17,19 +17,6 @@
|
||||
*/
|
||||
package forge.quest;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.card.BoosterGenerator;
|
||||
import forge.card.CardEdition;
|
||||
import forge.card.FormatCollection;
|
||||
import forge.deck.Deck;
|
||||
import forge.quest.data.GameFormatQuest;
|
||||
import forge.item.*;
|
||||
import forge.quest.bazaar.QuestItemType;
|
||||
import forge.quest.data.QuestAssets;
|
||||
import forge.quest.data.QuestPreferences;
|
||||
import forge.quest.data.QuestPreferences.QPref;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.MyRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -39,6 +26,29 @@ import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.card.BoosterGenerator;
|
||||
import forge.card.CardEdition;
|
||||
import forge.card.FormatCollection;
|
||||
import forge.deck.Deck;
|
||||
import forge.item.BoosterPack;
|
||||
import forge.item.CardDb;
|
||||
import forge.item.CardPrinted;
|
||||
import forge.item.FatPack;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.ItemPool;
|
||||
import forge.item.ItemPoolView;
|
||||
import forge.item.OpenablePack;
|
||||
import forge.item.PreconDeck;
|
||||
import forge.item.TournamentPack;
|
||||
import forge.quest.bazaar.QuestItemType;
|
||||
import forge.quest.data.GameFormatQuest;
|
||||
import forge.quest.data.QuestAssets;
|
||||
import forge.quest.data.QuestPreferences;
|
||||
import forge.quest.data.QuestPreferences.QPref;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.MyRandom;
|
||||
|
||||
/**
|
||||
* This is a helper class to execute operations on QuestData. It has been
|
||||
* created to decrease complexity of questData class
|
||||
@@ -305,12 +315,12 @@ public final class QuestUtilCards {
|
||||
* @param price
|
||||
* the price
|
||||
*/
|
||||
public void sellCard(final CardPrinted card, final int price) {
|
||||
this.sellCard(card, price, true);
|
||||
public void sellCard(final CardPrinted card, int qty, final int pricePerCard) {
|
||||
this.sellCard(card, qty, pricePerCard, true);
|
||||
}
|
||||
|
||||
public void loseCard(final CardPrinted card) {
|
||||
this.sellCard(card, 0, false);
|
||||
public void loseCard(final CardPrinted card, int qty) {
|
||||
this.sellCard(card, qty, 0, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -323,13 +333,13 @@ public final class QuestUtilCards {
|
||||
* @param addToShop
|
||||
* true if this card should be added to the shop, false otherwise
|
||||
*/
|
||||
private void sellCard(final CardPrinted card, final int price, final boolean addToShop) {
|
||||
if (price > 0) {
|
||||
this.qa.setCredits(this.qa.getCredits() + price);
|
||||
private void sellCard(final CardPrinted card, int qty, final int pricePerCard, final boolean addToShop) {
|
||||
if (pricePerCard > 0) {
|
||||
this.qa.setCredits(this.qa.getCredits() + (qty * pricePerCard));
|
||||
}
|
||||
this.qa.getCardPool().remove(card);
|
||||
this.qa.getCardPool().remove(card, qty);
|
||||
if (addToShop) {
|
||||
this.qa.getShopList().add(card);
|
||||
this.qa.getShopList().add(card, qty);
|
||||
}
|
||||
|
||||
// remove card being sold from all decks
|
||||
@@ -623,7 +633,13 @@ public final class QuestUtilCards {
|
||||
@Override
|
||||
public Comparable<?> apply(final Entry<InventoryItem, Integer> from) {
|
||||
InventoryItem i = from.getKey();
|
||||
return i instanceof CardPrinted ? QuestUtilCards.this.qa.getCardPool().count((CardPrinted)i) : null;
|
||||
if (i instanceof CardPrinted) {
|
||||
return QuestUtilCards.this.qa.getCardPool().count((CardPrinted)i);
|
||||
} else if (i instanceof PreconDeck) {
|
||||
PreconDeck pDeck = (PreconDeck)i;
|
||||
return Singletons.getModel().getQuest().getMyDecks().contains(pDeck.getName()) ? 1 : 0;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -632,7 +648,13 @@ public final class QuestUtilCards {
|
||||
@Override
|
||||
public Object apply(final Entry<InventoryItem, Integer> from) {
|
||||
InventoryItem i = from.getKey();
|
||||
return i instanceof CardPrinted ? QuestUtilCards.this.qa.getCardPool().count((CardPrinted)i) : null;
|
||||
if (i instanceof CardPrinted) {
|
||||
return QuestUtilCards.this.qa.getCardPool().count((CardPrinted)i);
|
||||
} else if (i instanceof PreconDeck) {
|
||||
PreconDeck pDeck = (PreconDeck)i;
|
||||
return Singletons.getModel().getQuest().getMyDecks().contains(pDeck.getName()) ? "YES" : "NO";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user