mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
Used CardRepository in Deck Editor
This commit is contained in:
parent
56a11f4da2
commit
809910e8c7
8 changed files with 160 additions and 74 deletions
|
|
@ -32,9 +32,9 @@ import mage.client.util.Event;
|
|||
import mage.client.util.EventDispatcher;
|
||||
import mage.client.util.EventSource;
|
||||
import mage.client.util.Listener;
|
||||
import mage.view.SimpleCardView;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -49,12 +49,12 @@ public class CardEventSource implements EventSource<Event>, Serializable {
|
|||
dispatcher.addListener(listener);
|
||||
}
|
||||
|
||||
public void doubleClick(UUID cardId, String message) {
|
||||
dispatcher.fireEvent(new Event(cardId, message));
|
||||
public void doubleClick(SimpleCardView card, String message) {
|
||||
dispatcher.fireEvent(new Event(card, message));
|
||||
}
|
||||
|
||||
public void shiftDoubleClick(UUID cardId, String message) {
|
||||
dispatcher.fireEvent(new Event(cardId, message));
|
||||
public void shiftDoubleClick(SimpleCardView card, String message) {
|
||||
dispatcher.fireEvent(new Event(card, message));
|
||||
}
|
||||
|
||||
public void removeFromMainEvent(String message) {
|
||||
|
|
|
|||
|
|
@ -253,9 +253,9 @@ public class CardGrid extends javax.swing.JLayeredPane implements MouseListener,
|
|||
e.consume();
|
||||
Object obj = e.getSource();
|
||||
if (obj instanceof Card) {
|
||||
cardEventSource.doubleClick(((Card)obj).getCardId(), "double-click");
|
||||
cardEventSource.doubleClick(((Card) obj).getOriginal(), "double-click");
|
||||
} else if (obj instanceof MageCard) {
|
||||
cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "double-click");
|
||||
cardEventSource.doubleClick(((MageCard) obj).getOriginal(), "double-click");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -462,14 +462,14 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar
|
|||
Object obj = e.getSource();
|
||||
if (obj instanceof Card) {
|
||||
if (e.isShiftDown())
|
||||
cardEventSource.shiftDoubleClick(((Card)obj).getCardId(), "shift-double-click");
|
||||
cardEventSource.shiftDoubleClick(((Card)obj).getOriginal(), "shift-double-click");
|
||||
else
|
||||
cardEventSource.doubleClick(((Card)obj).getCardId(), "double-click");
|
||||
cardEventSource.doubleClick(((Card)obj).getOriginal(), "double-click");
|
||||
} else if (obj instanceof MageCard) {
|
||||
if (e.isShiftDown())
|
||||
cardEventSource.shiftDoubleClick(((MageCard)obj).getOriginal().getId(), "shift-double-click");
|
||||
cardEventSource.shiftDoubleClick(((MageCard)obj).getOriginal(), "shift-double-click");
|
||||
else
|
||||
cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "double-click");
|
||||
cardEventSource.doubleClick(((MageCard)obj).getOriginal(), "double-click");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ public class DraftGrid extends javax.swing.JPanel implements MouseListener {
|
|||
public void mousePressed(MouseEvent e) {
|
||||
Object obj = e.getSource();
|
||||
if (obj instanceof MageCard) {
|
||||
this.cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "pick-a-card");
|
||||
this.cardEventSource.doubleClick(((MageCard)obj).getOriginal(), "pick-a-card");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,9 +39,11 @@ import mage.MageObject;
|
|||
import mage.ObjectColor;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.cards.repository.CardCriteria;
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.cards.CardGrid;
|
||||
import mage.client.cards.CardsStorage;
|
||||
import mage.client.cards.ICardGrid;
|
||||
import mage.client.constants.Constants.SortBy;
|
||||
import mage.client.deckeditor.table.TableModel;
|
||||
|
|
@ -54,15 +56,14 @@ import mage.filter.predicate.mageobject.ColorPredicate;
|
|||
import mage.filter.predicate.mageobject.ColorlessPredicate;
|
||||
import mage.filter.predicate.other.CardTextPredicate;
|
||||
import mage.filter.predicate.other.ExpansionSetPredicate;
|
||||
import mage.sets.Sets;
|
||||
import mage.view.CardsView;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableCellRenderer;
|
||||
import java.awt.*;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.event.*;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -71,7 +72,6 @@ import java.util.List;
|
|||
public class CardSelector extends javax.swing.JPanel implements ComponentListener {
|
||||
|
||||
private final List<Card> cards = new ArrayList<Card>();
|
||||
private FilterCard filter = new FilterCard();
|
||||
private BigCard bigCard;
|
||||
private boolean limited = false;
|
||||
|
||||
|
|
@ -163,8 +163,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
filterCards();
|
||||
}
|
||||
|
||||
private void buildFilter() {
|
||||
filter = new FilterCard();
|
||||
private FilterCard buildFilter() {
|
||||
FilterCard filter = new FilterCard();
|
||||
ArrayList<Predicate<MageObject>> predicates = new ArrayList<Predicate<MageObject>>();
|
||||
|
||||
if (this.rdoGreen.isSelected()) {
|
||||
|
|
@ -224,10 +224,59 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
filter.add(Predicates.or(expansionPredicates));
|
||||
}
|
||||
}
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
private CardCriteria buildCriteria() {
|
||||
CardCriteria criteria = new CardCriteria();
|
||||
criteria.black(this.rdoBlack.isSelected());
|
||||
criteria.blue(this.rdoBlue.isSelected());
|
||||
criteria.green(this.rdoGreen.isSelected());
|
||||
criteria.red(this.rdoRed.isSelected());
|
||||
criteria.white(this.rdoWhite.isSelected());
|
||||
criteria.colorless(this.rdoColorless.isSelected());
|
||||
|
||||
if (this.rdoLand.isSelected()) {
|
||||
criteria.types(CardType.LAND);
|
||||
}
|
||||
if (this.rdoArtifacts.isSelected()) {
|
||||
criteria.types(CardType.ARTIFACT);
|
||||
}
|
||||
if (this.rdoCreatures.isSelected()) {
|
||||
criteria.types(CardType.CREATURE);
|
||||
}
|
||||
if (this.rdoEnchantments.isSelected()) {
|
||||
criteria.types(CardType.ENCHANTMENT);
|
||||
}
|
||||
if (this.rdoInstants.isSelected()) {
|
||||
criteria.types(CardType.INSTANT);
|
||||
}
|
||||
if (this.rdoSorceries.isSelected()) {
|
||||
criteria.types(CardType.SORCERY);
|
||||
}
|
||||
if (this.rdoPlaneswalkers.isSelected()) {
|
||||
criteria.types(CardType.PLANESWALKER);
|
||||
}
|
||||
|
||||
String text = jTextFieldSearch.getText().trim();
|
||||
if (!text.isEmpty()) {
|
||||
// criteria.rules(text);
|
||||
}
|
||||
|
||||
if (this.cbExpansionSet.isVisible()) {
|
||||
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
||||
if (!expansionSelection.equals("- All Sets")) {
|
||||
List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||
}
|
||||
}
|
||||
|
||||
return criteria;
|
||||
}
|
||||
|
||||
private void filterCards() {
|
||||
buildFilter();
|
||||
FilterCard filter = buildFilter();
|
||||
try {
|
||||
List<Card> filteredCards = new ArrayList<Card>();
|
||||
setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
|
|
@ -239,7 +288,9 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
}
|
||||
else {
|
||||
for (Card card: CardsStorage.getAllCards()) {
|
||||
List<CardInfo> foundCards = CardRepository.instance.findCards(buildCriteria());
|
||||
for (CardInfo cardInfo : foundCards) {
|
||||
Card card = cardInfo.getCard();
|
||||
if (filter.match(card, null)) {
|
||||
filteredCards.add(card);
|
||||
}
|
||||
|
|
@ -275,22 +326,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
}
|
||||
|
||||
public Card getCard(UUID cardId) {
|
||||
if (!cards.isEmpty()) {
|
||||
for (Card card: cards) {
|
||||
if (card.getId().equals(cardId))
|
||||
return card;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (Card card: CardsStorage.getAllCards()) {
|
||||
if (card.getId().equals(cardId))
|
||||
return card;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ import mage.cards.Card;
|
|||
import mage.cards.decks.Deck;
|
||||
import mage.cards.decks.importer.DeckImporter;
|
||||
import mage.cards.decks.importer.DeckImporterUtil;
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.cards.ICardGrid;
|
||||
|
|
@ -44,11 +46,14 @@ import mage.game.GameException;
|
|||
import mage.remote.Session;
|
||||
import mage.sets.Sets;
|
||||
import mage.view.CardView;
|
||||
import mage.view.SimpleCardView;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
import java.awt.*;
|
||||
import java.awt.Component;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
|
|
@ -163,9 +168,11 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
@Override
|
||||
public void event(Event event) {
|
||||
if (event.getEventName().equals("double-click")) {
|
||||
Card card = cardSelector.getCard((UUID) event.getSource());
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
CardInfo cardInfo = CardRepository.instance.getCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
|
||||
Card card = cardInfo != null ? cardInfo.getCard() : null;
|
||||
if (card != null) {
|
||||
deck.getCards().add(Sets.createCard(card.getClass()));
|
||||
deck.getCards().add(card);
|
||||
if (mode == DeckEditorMode.Sideboard || mode == DeckEditorMode.Limited) {
|
||||
deck.getSideboard().remove(card);
|
||||
cardSelector.removeCard(card.getId());
|
||||
|
|
@ -179,8 +186,12 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
}
|
||||
|
||||
} else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) {
|
||||
Card card = cardSelector.getCard((UUID) event.getSource());
|
||||
deck.getSideboard().add(Sets.createCard(card.getClass()));
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
CardInfo cardInfo = CardRepository.instance.getCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
|
||||
Card card = cardInfo != null ? cardInfo.getCard() : null;
|
||||
if (card != null) {
|
||||
deck.getSideboard().add(Sets.createCard(card.getClass()));
|
||||
}
|
||||
if (cardInfoPane instanceof CardInfoPane) {
|
||||
((CardInfoPane)cardInfoPane).setCard(new CardView(card));
|
||||
}
|
||||
|
|
@ -201,8 +212,9 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
@Override
|
||||
public void event(Event event) {
|
||||
if (event.getEventName().equals("double-click")) {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card: deck.getCards()) {
|
||||
if (card.getId().equals(event.getSource())) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
if (mode == DeckEditorMode.Limited || mode == DeckEditorMode.Sideboard) {
|
||||
deck.getSideboard().add(card);
|
||||
|
|
@ -215,8 +227,9 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
refreshDeck();
|
||||
}
|
||||
else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card: deck.getCards()) {
|
||||
if (card.getId().equals(event.getSource())) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
deck.getSideboard().add(card);
|
||||
break;
|
||||
|
|
@ -233,8 +246,9 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
@Override
|
||||
public void event(Event event) {
|
||||
if (event.getEventName().equals("double-click")) {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card: deck.getSideboard()) {
|
||||
if (card.getId().equals(event.getSource())) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
deck.getCards().add(card);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -33,9 +33,11 @@ import mage.MageObject;
|
|||
import mage.ObjectColor;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.cards.repository.CardCriteria;
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.cards.CardEventSource;
|
||||
import mage.client.cards.CardsStorage;
|
||||
import mage.client.cards.ICardGrid;
|
||||
import mage.client.constants.Constants.DeckEditorMode;
|
||||
import mage.client.constants.Constants.SortBy;
|
||||
|
|
@ -53,13 +55,13 @@ import mage.view.CardsView;
|
|||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableCellRenderer;
|
||||
import java.awt.*;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ComponentListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -68,7 +70,6 @@ import java.util.List;
|
|||
public class CardTableSelector extends javax.swing.JPanel implements ComponentListener {
|
||||
|
||||
private final List<Card> cards = new ArrayList<Card>();
|
||||
private FilterCard filter = new FilterCard();
|
||||
private BigCard bigCard;
|
||||
protected CardEventSource cardEventSource = new CardEventSource();
|
||||
private DeckEditorMode mode = DeckEditorMode.Constructed;
|
||||
|
|
@ -95,8 +96,8 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi
|
|||
|
||||
}
|
||||
|
||||
private void buildFilter() {
|
||||
filter = new FilterCard();
|
||||
private FilterCard buildFilter() {
|
||||
FilterCard filter = new FilterCard();
|
||||
ArrayList<Predicate<MageObject>> predicates = new ArrayList<Predicate<MageObject>>();
|
||||
|
||||
if (this.rdoGreen.isSelected()) {
|
||||
|
|
@ -150,11 +151,13 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi
|
|||
filter.add(new ExpansionSetPredicate(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode()));
|
||||
} else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) {
|
||||
ArrayList<Predicate<Card>> expansionPredicates = new ArrayList<Predicate<Card>>();
|
||||
for(String setCode : ConstructedFormats.getSetsByFormat("Standard")) {
|
||||
for (String setCode : ConstructedFormats.getSetsByFormat("Standard")) {
|
||||
expansionPredicates.add(new ExpansionSetPredicate(setCode));
|
||||
}
|
||||
filter.add(Predicates.or(expansionPredicates));
|
||||
}
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
public void loadCards(List<Card> sideboard, BigCard bigCard, boolean construct) {
|
||||
|
|
@ -189,21 +192,71 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi
|
|||
filterCards();
|
||||
}
|
||||
|
||||
private CardCriteria buildCriteria() {
|
||||
CardCriteria criteria = new CardCriteria();
|
||||
criteria.black(this.rdoBlack.isSelected());
|
||||
criteria.blue(this.rdoBlue.isSelected());
|
||||
criteria.green(this.rdoGreen.isSelected());
|
||||
criteria.red(this.rdoRed.isSelected());
|
||||
criteria.white(this.rdoWhite.isSelected());
|
||||
criteria.colorless(this.rdoColorless.isSelected());
|
||||
|
||||
if (this.rdoLand.isSelected()) {
|
||||
criteria.types(CardType.LAND);
|
||||
}
|
||||
if (this.rdoArtifacts.isSelected()) {
|
||||
criteria.types(CardType.ARTIFACT);
|
||||
}
|
||||
if (this.rdoCreatures.isSelected()) {
|
||||
criteria.types(CardType.CREATURE);
|
||||
}
|
||||
if (this.rdoEnchantments.isSelected()) {
|
||||
criteria.types(CardType.ENCHANTMENT);
|
||||
}
|
||||
if (this.rdoInstants.isSelected()) {
|
||||
criteria.types(CardType.INSTANT);
|
||||
}
|
||||
if (this.rdoSorceries.isSelected()) {
|
||||
criteria.types(CardType.SORCERY);
|
||||
}
|
||||
if (this.rdoPlaneswalkers.isSelected()) {
|
||||
criteria.types(CardType.PLANESWALKER);
|
||||
}
|
||||
|
||||
String text = jTextFieldSearch.getText().trim();
|
||||
if (!text.isEmpty()) {
|
||||
// criteria.rules(text);
|
||||
}
|
||||
|
||||
if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) {
|
||||
criteria.setCodes(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode());
|
||||
} else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) {
|
||||
List<String> setCodes = ConstructedFormats.getSetsByFormat("Standard");
|
||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||
}
|
||||
|
||||
return criteria;
|
||||
}
|
||||
|
||||
private void filterCards() {
|
||||
buildFilter();
|
||||
FilterCard filter = buildFilter();
|
||||
try {
|
||||
List<Card> filteredCards = new ArrayList<Card>();
|
||||
setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
if (!cards.isEmpty()) {
|
||||
for (Card card: cards) {
|
||||
if (filter.match(card, null))
|
||||
if (filter.match(card, null)) {
|
||||
filteredCards.add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (Card card: CardsStorage.getAllCards()) {
|
||||
if (filter.match(card, null))
|
||||
List<CardInfo> foundCards = CardRepository.instance.findCards(buildCriteria());
|
||||
for (CardInfo cardInfo : foundCards) {
|
||||
Card card = cardInfo.getCard();
|
||||
if (filter.match(card, null)) {
|
||||
filteredCards.add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.mainModel.loadCards(new CardsView(filteredCards), (SortBy) cbSortBy.getSelectedItem(), chkPiles.isSelected(), bigCard, null);
|
||||
|
|
@ -227,22 +280,6 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi
|
|||
}
|
||||
}
|
||||
|
||||
public Card getCard(UUID cardId) {
|
||||
if (!cards.isEmpty()) {
|
||||
for (Card card: cards) {
|
||||
if (card.getId().equals(cardId))
|
||||
return card;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (Card card: CardsStorage.getAllCards()) {
|
||||
if (card.getId().equals(cardId))
|
||||
return card;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void initComponents() {
|
||||
|
||||
tbColor = new javax.swing.JToolBar();
|
||||
|
|
|
|||
|
|
@ -269,12 +269,12 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
|
||||
public void doubleClick(int index) {
|
||||
CardView card = view.get(index);
|
||||
cardEventSource.doubleClick(card.getId(), "double-click");
|
||||
cardEventSource.doubleClick(card, "double-click");
|
||||
}
|
||||
|
||||
public void shiftDoubleClick(int index) {
|
||||
CardView card = view.get(index);
|
||||
cardEventSource.shiftDoubleClick(card.getId(), "shift-double-click");
|
||||
cardEventSource.shiftDoubleClick(card, "shift-double-click");
|
||||
}
|
||||
|
||||
public void removeFromMainEvent(int index) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue