diff --git a/Mage.Client/src/main/java/mage/client/cards/Card.java b/Mage.Client/src/main/java/mage/client/cards/Card.java index e4d436ca905..18693345577 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -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()); diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsList.java b/Mage.Client/src/main/java/mage/client/cards/CardsList.java index fafdece0c1d..637271efa53 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsList.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsList.java @@ -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++; } } diff --git a/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java b/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java index f7e7689f6ed..f1c4c49961a 100644 --- a/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java +++ b/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java @@ -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> 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<>()); diff --git a/Mage.Client/src/main/java/mage/client/cards/Permanent.java b/Mage.Client/src/main/java/mage/client/cards/Permanent.java index b057f80af03..6d60ad1af25 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Permanent.java +++ b/Mage.Client/src/main/java/mage/client/cards/Permanent.java @@ -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()) { diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java index 09b2a3c2e3e..e7d73e423b1 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java @@ -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++; } } diff --git a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java index 1b7167bf287..a179843a3f8 100644 --- a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java @@ -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; } } diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java index 3ad60fb08d2..4bfa5b1f7dc 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java @@ -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) { diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java b/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java index 55ac6c502a8..61b68ab40ca 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ModernCardRenderer.java @@ -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; } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java index 7753654af9e..ba7356c0733 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -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. * diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index b7f1936c275..56ff4a213eb 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -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 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); + } }