introduced isCreature/isLand/isArtifact/... etc for CardView

This commit is contained in:
ingmargoudt 2017-04-07 15:08:28 +02:00
parent 08197f192c
commit f519b12d0e
10 changed files with 110 additions and 143 deletions

View file

@ -159,9 +159,9 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
gImage.setFont(new Font("Arial", Font.PLAIN, NAME_FONT_MAX_SIZE));
gImage.drawString(card.getName()+"TEST", CONTENT_MAX_XOFFSET, NAME_MAX_YOFFSET);
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
gImage.drawString(card.getPower() + '/' + card.getToughness(), POWBOX_TEXT_MAX_LEFT, POWBOX_TEXT_MAX_TOP);
} else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
} else if (card.isPlanesWalker()) {
gImage.drawString(card.getLoyalty(), POWBOX_TEXT_MAX_LEFT, POWBOX_TEXT_MAX_TOP);
}
@ -173,9 +173,9 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
gSmall.setFont(new Font("Arial", Font.PLAIN, Config.dimensions.nameFontSize));
gSmall.drawString(card.getName()+"TEST2", Config.dimensions.contentXOffset, Config.dimensions.nameYOffset);
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
gSmall.drawString(card.getPower() + "/-/" + card.getToughness(), Config.dimensions.powBoxTextLeft, Config.dimensions.powBoxTextTop);
} else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
} else if (card.isPlanesWalker()) {
gSmall.drawString(card.getLoyalty(), Config.dimensions.powBoxTextLeft, Config.dimensions.powBoxTextTop);
}
@ -207,9 +207,9 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
if (card.getColor().hasColor()) {
sb.append('\n').append(card.getColor().toString());
}
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
sb.append('\n').append(card.getPower()).append('/').append(card.getToughness());
} else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
} else if (card.isPlanesWalker()) {
sb.append('\n').append(card.getLoyalty());
}
for (String rule : getRules()) {
@ -230,9 +230,9 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
return "effect";
}
StringBuilder sb = new StringBuilder();
if (card.getCardTypes().contains(CardType.LAND)) {
if (card.isLand()) {
sb.append("land").append(card.getSuperTypes()).append(card.getSubTypes());
} else if (card.getCardTypes() != null && (card.getCardTypes().contains(CardType.CREATURE) || card.getCardTypes().contains(CardType.PLANESWALKER))) {
} else if (card.getCardTypes() != null && (card.isCreature() || card.isPlanesWalker())) {
sb.append("creature");
}
sb.append(card.getColor()).append(card.getRarity()).append(card.getExpansionSetCode());

View file

@ -44,7 +44,6 @@ import mage.client.plugins.impl.Plugins;
import mage.client.util.*;
import mage.client.util.Event;
import mage.client.util.gui.TableSpinnerEditor;
import mage.constants.CardType;
import mage.view.CardView;
import mage.view.CardsView;
import mage.view.SimpleCardView;
@ -383,22 +382,22 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar
int artifactCount = 0;
for (CardView card : cards.values()) {
if (card.getCardTypes().contains(CardType.LAND)) {
if (card.isLand()) {
landCount++;
}
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
creatureCount++;
}
if (card.getCardTypes().contains(CardType.SORCERY)) {
if (card.isSorcery()) {
sorceryCount++;
}
if (card.getCardTypes().contains(CardType.INSTANT)) {
if (card.isInstant()) {
instantCount++;
}
if (card.getCardTypes().contains(CardType.ENCHANTMENT)) {
if (card.isEnchantment()) {
enchantmentCount++;
}
if (card.getCardTypes().contains(CardType.ARTIFACT)) {
if (card.isArtifact()) {
artifactCount++;
}
}

View file

@ -1,53 +1,6 @@
package mage.client.cards;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import mage.cards.Card;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import mage.cards.MageCard;
import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLayout;
@ -58,15 +11,8 @@ import mage.client.MageFrame;
import mage.client.constants.Constants;
import mage.client.dialog.PreferencesDialog;
import mage.client.plugins.impl.Plugins;
import mage.client.util.CardViewCardTypeComparator;
import mage.client.util.CardViewColorComparator;
import mage.client.util.CardViewColorIdentityComparator;
import mage.client.util.CardViewCostComparator;
import mage.client.util.CardViewNameComparator;
import mage.client.util.CardViewRarityComparator;
import mage.client.util.*;
import mage.client.util.Event;
import mage.client.util.GUISizeHelper;
import mage.client.util.Listener;
import mage.constants.CardType;
import mage.constants.SuperType;
import mage.util.RandomUtil;
@ -75,6 +21,18 @@ import mage.view.CardsView;
import org.apache.log4j.Logger;
import org.mage.card.arcane.CardRenderer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* Created by StravantUser on 2016-09-20.
*/
@ -512,50 +470,50 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
private final CardTypeCounter creatureCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.CREATURE);
return card.isCreature();
}
};
private final CardTypeCounter landCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.LAND);
return card.isLand();
}
};
private final CardTypeCounter artifactCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.ARTIFACT);
return card.isArtifact();
}
};
private final CardTypeCounter enchantmentCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.ENCHANTMENT);
return card.isEnchantment();
}
};
private final CardTypeCounter instantCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.INSTANT);
return card.isInstant();
}
};
private final CardTypeCounter sorceryCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.SORCERY);
return card.isSorcery();
}
};
private final CardTypeCounter planeswalkerCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.PLANESWALKER);
return card.isPlanesWalker();
}
};
private final CardTypeCounter tribalCounter = new CardTypeCounter() {
@Override
protected boolean is(CardView card) {
return card.getCardTypes().contains(CardType.TRIBAL);
return card.isTribal();
}
};
@ -1897,7 +1855,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
}
// What row to add it to?
ArrayList<ArrayList<CardView>> targetRow;
if (separateCreatures && !newCard.getCardTypes().contains(CardType.CREATURE)) {
if (separateCreatures && !newCard.isCreature()) {
// Ensure row 2 exists
if (cardGrid.size() < 2) {
cardGrid.add(1, new ArrayList<>());

View file

@ -39,7 +39,6 @@ import mage.cards.MagePermanent;
import mage.cards.Sets;
import mage.client.util.Config;
import mage.client.util.TransformedImageCache;
import mage.constants.CardType;
import mage.view.CounterView;
import mage.view.PermanentView;
@ -110,10 +109,10 @@ public class Permanent extends Card {
if (permanent.getOriginal().getColor().hasColor()) {
sb.append('\n').append(permanent.getOriginal().getColor().toString());
}
if (permanent.getOriginal().getCardTypes().contains(CardType.CREATURE)) {
if (permanent.getOriginal().isCreature()) {
sb.append('\n').append(permanent.getOriginal().getPower()).append('/').append(permanent.getOriginal().getToughness());
}
else if (permanent.getOriginal().getCardTypes().contains(CardType.PLANESWALKER)) {
else if (permanent.getOriginal().isPlanesWalker()) {
sb.append('\n').append(permanent.getOriginal().getLoyalty());
}
for (String rule: getRules()) {

View file

@ -37,7 +37,6 @@ import mage.client.util.Config;
import mage.client.util.Event;
import mage.client.util.Listener;
import mage.client.util.gui.GuiDisplayUtil;
import mage.constants.CardType;
import mage.constants.EnlargeMode;
import mage.view.CardView;
import mage.view.CardsView;
@ -125,22 +124,22 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
addCard(card, bigCard, gameId);
}
if (updateCountsCallback != null) {
if (card.getCardTypes().contains(CardType.LAND)) {
if (card.isLand()) {
landCount++;
}
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
creatureCount++;
}
if (card.getCardTypes().contains(CardType.INSTANT)) {
if (card.isInstant()) {
instantCount++;
}
if (card.getCardTypes().contains(CardType.SORCERY)) {
if (card.isSorcery()) {
sorceryCount++;
}
if (card.getCardTypes().contains(CardType.ENCHANTMENT)) {
if (card.isEnchantment()) {
enchantmentCount++;
}
if (card.getCardTypes().contains(CardType.ARTIFACT)) {
if (card.isArtifact()) {
artifactCount++;
}
}

View file

@ -33,15 +33,6 @@
*/
package mage.client.game;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.*;
import java.util.List;
import java.util.Map.Entry;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import mage.cards.MagePermanent;
import mage.client.cards.BigCard;
import mage.client.cards.Permanent;
@ -51,11 +42,20 @@ import mage.client.util.GUISizeHelper;
import mage.client.util.audio.AudioManager;
import mage.client.util.layout.CardLayoutStrategy;
import mage.client.util.layout.impl.OldCardLayoutStrategy;
import mage.constants.CardType;
import mage.utils.CardUtil;
import mage.view.CounterView;
import mage.view.PermanentView;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.*;
import java.util.List;
import java.util.Map.Entry;
/**
*
* @author BetaSteward_at_googlemail.com
@ -279,9 +279,9 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
}*/
}
if (permanent.getCardTypes().contains(CardType.ARTIFACT)) {
if (permanent.isArtifact()) {
addedArtifact = true;
} else if (permanent.getCardTypes().contains(CardType.CREATURE)) {
} else if (permanent.isCreature()) {
addedCreature = true;
} else {
addedPermanent = true;
@ -305,7 +305,7 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
});
t.start();
}
if (((MagePermanent) comp).getOriginal().getCardTypes().contains(CardType.CREATURE)) {
if (((MagePermanent) comp).getOriginal().isCreature()) {
removedCreature = true;
}
}

View file

@ -700,9 +700,9 @@ public abstract class CardPanel extends MagePermanent implements MouseListener,
if (card.getColor().hasColor()) {
sb.append('\n').append(card.getColor().toString());
}
if (card.getCardTypes().contains(CardType.CREATURE)) {
if (card.isCreature()) {
sb.append('\n').append(card.getPower()).append('/').append(card.getToughness());
} else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
} else if (card.isPlanesWalker()) {
sb.append('\n').append(card.getLoyalty());
}
if (card.getRules() == null) {

View file

@ -11,7 +11,6 @@ import mage.cards.FrameStyle;
import mage.client.dialog.PreferencesDialog;
import mage.constants.CardType;
import mage.constants.MageObjectType;
import mage.constants.SpellAbilityType;
import mage.view.CardView;
import mage.view.PermanentView;
import org.apache.log4j.Logger;
@ -21,7 +20,6 @@ import java.awt.*;
import java.awt.font.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.RasterFormatException;
import java.io.IOException;
import java.net.URL;
import java.text.AttributedCharacterIterator;
@ -427,7 +425,7 @@ public class ModernCardRenderer extends CardRenderer {
contentWidth - 2, cardHeight - borderWidth * 3 - typeLineY - 1);
// If it's a planeswalker, extend the textbox left border by some
if (cardView.getCardTypes().contains(CardType.PLANESWALKER)) {
if (cardView.isPlanesWalker()) {
g.setPaint(borderPaint);
g.fillRect(
totalContentInset, typeLineY + boxHeight,
@ -603,7 +601,7 @@ public class ModernCardRenderer extends CardRenderer {
// Is it a creature?
boolean isVehicle = cardView.getSubTypes().contains("Vehicle");
if (cardView.getCardTypes().contains(CardType.CREATURE) || isVehicle) {
if (cardView.isCreature() || isVehicle) {
int x = cardWidth - borderWidth - partWidth;
// Draw PT box
@ -623,7 +621,7 @@ public class ModernCardRenderer extends CardRenderer {
// Draw text
Color textColor;
if (isVehicle) {
boolean isAnimated = !(cardView instanceof PermanentView) || cardView.getCardTypes().contains(CardType.CREATURE);
boolean isAnimated = !(cardView instanceof PermanentView) || cardView.isCreature();
if (isAnimated) {
textColor = Color.white;
} else {
@ -646,7 +644,7 @@ public class ModernCardRenderer extends CardRenderer {
// Is it a walker? (But don't draw the box if it's a non-permanent view
// of a walker without a starting loyalty (EG: Arlin Kord's flipped side).
if (cardView.getCardTypes().contains(CardType.PLANESWALKER)
if (cardView.isPlanesWalker()
&& (cardView instanceof PermanentView || !cardView.getStartingLoyalty().equals("0"))) {
// Draw the PW loyalty box
int w = partWidth;
@ -772,7 +770,7 @@ public class ModernCardRenderer extends CardRenderer {
}
// Basic mana draw mana symbol in textbox (for basic lands)
if (allRules.size() == 1 && (allRules.get(0) instanceof TextboxBasicManaRule) && cardView.getCardTypes().contains(CardType.LAND)) {
if (allRules.size() == 1 && (allRules.get(0) instanceof TextboxBasicManaRule) && cardView.isLand()) {
drawBasicManaTextbox(g, x, y, w, h, ((TextboxBasicManaRule) allRules.get(0)).getBasicManaSymbol());
return;
}

View file

@ -1,21 +1,5 @@
package org.mage.plugins.card;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLayeredPane;
import mage.cards.MagePermanent;
import mage.cards.action.ActionCallback;
import mage.client.dialog.PreferencesDialog;
@ -31,11 +15,7 @@ import net.xeoh.plugins.base.annotations.events.Init;
import net.xeoh.plugins.base.annotations.events.PluginLoaded;
import net.xeoh.plugins.base.annotations.meta.Author;
import org.apache.log4j.Logger;
import org.mage.card.arcane.Animation;
import org.mage.card.arcane.CardPanel;
import org.mage.card.arcane.CardPanelComponentImpl;
import org.mage.card.arcane.CardPanelRenderImpl;
import org.mage.card.arcane.ManaSymbols;
import org.mage.card.arcane.*;
import org.mage.plugins.card.dl.DownloadGui;
import org.mage.plugins.card.dl.DownloadJob;
import org.mage.plugins.card.dl.Downloader;
@ -46,6 +26,15 @@ import org.mage.plugins.card.dl.sources.GathererSymbols;
import org.mage.plugins.card.images.ImageCache;
import org.mage.plugins.card.info.CardInfoPaneImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.util.*;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* {@link CardPlugin} implementation.
*

View file

@ -216,12 +216,11 @@ public class CardView extends SimpleCardView {
}
/**
*
* @param card
* @param game
* @param controlled is the card view created for the card controller - used
* for morph / face down cards to know which player may see information for
* the card
* for morph / face down cards to know which player may see information for
* the card
*/
public CardView(Card card, Game game, boolean controlled) {
this(card, game, controlled, false, false);
@ -245,15 +244,14 @@ public class CardView extends SimpleCardView {
}
/**
*
* @param card
* @param game
* @param controlled is the card view created for the card controller - used
* for morph / face down cards to know which player may see information for
* the card
* @param controlled is the card view created for the card controller - used
* for morph / face down cards to know which player may see information for
* the card
* @param showFaceDownCard if true and the card is not on the battlefield,
* also a face down card is shown in the view, face down cards will be shown
* @param storeZone if true the card zone will be set in the zone attribute.
* also a face down card is shown in the view, face down cards will be shown
* @param storeZone if true the card zone will be set in the zone attribute.
*/
public CardView(Card card, Game game, boolean controlled, boolean showFaceDownCard, boolean storeZone) {
super(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), card.getTokenSetCode(), game != null, card.getTokenDescriptor());
@ -434,7 +432,7 @@ public class CardView extends SimpleCardView {
artRect = ArtRect.SPLIT_FUSED;
} else {
if (spell.getCard() != null) {
SplitCard wholeCard = ((SplitCardHalf)spell.getCard()).getParentCard();
SplitCard wholeCard = ((SplitCardHalf) spell.getCard()).getParentCard();
Abilities<Ability> aftermathHalfAbilities = wholeCard.getRightHalfCard().getAbilities();
if (aftermathHalfAbilities.stream().anyMatch(ability -> ability instanceof AftermathAbility)) {
if (ty == SpellAbilityType.SPLIT_RIGHT) {
@ -957,10 +955,14 @@ public class CardView extends SimpleCardView {
this.canAttack = canAttack;
}
public boolean isCreature(){
public boolean isCreature() {
return cardTypes.contains(CardType.CREATURE);
}
public boolean isPlanesWalker() {
return cardTypes.contains(CardType.PLANESWALKER);
}
public String getColorText() {
if (getColor().getColorCount() == 0) return "Colorless";
else if (getColor().getColorCount() > 1) return "Gold";
@ -996,4 +998,27 @@ public class CardView extends SimpleCardView {
return type.toString();
}
public boolean isLand() {
return cardTypes.contains(CardType.LAND);
}
public boolean isInstant() {
return cardTypes.contains(CardType.INSTANT);
}
public boolean isSorcery() {
return cardTypes.contains(CardType.SORCERY);
}
public boolean isEnchantment() {
return cardTypes.contains(CardType.ENCHANTMENT);
}
public boolean isArtifact() {
return cardTypes.contains(CardType.ARTIFACT);
}
public boolean isTribal() {
return cardTypes.contains(CardType.TRIBAL);
}
}