diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java index c04704715d2..4a99c0fd7f3 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java @@ -15,21 +15,21 @@ public class CardInfo { private boolean twoFacedCard; private boolean secondSide; private boolean flipCard; - private boolean useCollectorId; // for building the image name (different images for the same card) + private boolean usesVariousArt; - public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type) { - this(name, set, collectorId, useCollectorId, type, false); + public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type) { + this(name, set, collectorId, usesVariousArt, type, false); } - public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type, boolean token) { - this(name, set, collectorId, useCollectorId, type, token, false, false); + public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token) { + this(name, set, collectorId, usesVariousArt, type, token, false, false); } - public CardInfo(String name, String set, Integer collectorId, boolean useCollectorId, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { + public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { this.name = name; this.set = set; this.collectorId = collectorId; - this.useCollectorId = useCollectorId; + this.usesVariousArt = usesVariousArt; this.type = type; this.token = token; this.twoFacedCard = twoFacedCard; @@ -44,6 +44,7 @@ public class CardInfo { this.twoFacedCard = card.twoFacedCard; this.secondSide = card.secondSide; this.type = card.type; + this.usesVariousArt = card.usesVariousArt; } @Override @@ -153,8 +154,8 @@ public class CardInfo { this.type = type; } - public boolean useCollectorId() { - return useCollectorId; + public boolean getUsesVariousArt() { + return usesVariousArt; } } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 6ea06605abe..68076b7f845 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -210,7 +210,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab TFile file; for (Card card : allCards) { if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { - CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(),Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)),0 , false, card.canTransform(), card.isNightCard()); + CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(),card.getUsesVariousArt(),0 , false, card.canTransform(), card.isNightCard()); file = new TFile(CardImageUtils.getImagePath(url, imagesPath)); if (!file.exists()) { return true; @@ -235,8 +235,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab for (Card card : allCards) { if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { String cardName = card.getName(); - CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), 0, false, card.canTransform(), card.isNightCard()); - if (url.useCollectorId()) { + CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(),card.getCardNumber(), card.getUsesVariousArt(), 0, false, card.canTransform(), card.isNightCard()); + if (url.getUsesVariousArt()) { url.setDownloadName(card.getClass().getName().replace(card.getClass().getPackage().getName() + ".", "")); } if (card.isFlipCard()) { @@ -248,7 +248,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab // it has the same expansion set code and card number as original one // second side = true; Card secondSide = card.getSecondCardFace(); - url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(secondSide.getClass().getName().charAt(secondSide.getClass().getName().length()-1)), 0, false, card.canTransform(), true); + url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), 0, false, card.canTransform(), true); allCardsUrls.add(url); } } else { diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java index 3ac93c098f8..e59c2deac5e 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -54,10 +54,10 @@ public class ImageCache { public BufferedImage apply(String key) { try { boolean thumbnail = false; - boolean useCollectorId = false; - if (key.endsWith("#useCardNumber")) { - useCollectorId = true; - key = key.replace("#useCardNumber", ""); + boolean usesVariousArt = false; + if (key.endsWith("#usesVariousArt")) { + usesVariousArt = true; + key = key.replace("#usesVariousArt", ""); } if (key.endsWith("#thumb")) { thumbnail = true; @@ -71,7 +71,7 @@ public class ImageCache { Integer type = Integer.parseInt(m.group(3)); Integer collectorId = Integer.parseInt(m.group(4)); - CardInfo info = new CardInfo(name, set, collectorId, useCollectorId, type); + CardInfo info = new CardInfo(name, set, collectorId, usesVariousArt, type); if (collectorId == 0) { info.setToken(true); @@ -139,8 +139,8 @@ public class ImageCache { public static BufferedImage getThumbnail(CardView card) { String key = getKey(card) + "#thumb"; - if (card.useCardNumber()) { - key += "#useCardNumber"; + if (card.getUsesVariousArt()) { + key += "#usesVariousArt"; } //log.debug("#key: " + key); return getImage(key); @@ -148,8 +148,8 @@ public class ImageCache { public static BufferedImage getImageOriginal(CardView card) { String key = getKey(card); - if (card.useCardNumber()) { - key += "#useCardNumber"; + if (card.getUsesVariousArt()) { + key += "#usesVariousArt"; } //log.debug("#key: " + key); return getImage(key); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java index 80c66284b5b..566030a5479 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java @@ -136,7 +136,7 @@ public class CardImageUtils { String type = card.getType() != 0 ? " " + Integer.toString(card.getType()) : ""; String name = card.getName().replace(":", ""); - if (card.useCollectorId()) { + if (card.getUsesVariousArt()) { imageName = name + "." + card.getCollectorId() + ".full.jpg"; } else { imageName = name + type + ".full.jpg"; diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index 7d7d7d658d1..1f568c0fbc1 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -47,7 +47,6 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; import mage.abilities.Mode; -import mage.game.permanent.PermanentCard; /** * @author BetaSteward_at_googlemail.com @@ -87,10 +86,7 @@ public class CardView extends SimpleCardView { } public CardView(Card card) { - super(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), - (card instanceof PermanentCard ? - Character.isDigit(((PermanentCard) card).getCard().getClass().getName().charAt(((PermanentCard) card).getCard().getClass().getName().length()-1)) - :Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)))); + super(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), card.getUsesVariousArt()); // no information available for face down cards if (this.faceDown) { diff --git a/Mage.Common/src/mage/view/ExileView.java b/Mage.Common/src/mage/view/ExileView.java index 144413f3f51..6bb67b06f91 100644 --- a/Mage.Common/src/mage/view/ExileView.java +++ b/Mage.Common/src/mage/view/ExileView.java @@ -47,7 +47,7 @@ public class ExileView extends SimpleCardsView { this.name = exileZone.getName(); this.id = exileZone.getId(); for (Card card: exileZone.getCards(game)) { - this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)))); + this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), card.getUsesVariousArt())); } } diff --git a/Mage.Common/src/mage/view/LookedAtView.java b/Mage.Common/src/mage/view/LookedAtView.java index d0402665fbd..48c66d92092 100644 --- a/Mage.Common/src/mage/view/LookedAtView.java +++ b/Mage.Common/src/mage/view/LookedAtView.java @@ -46,7 +46,7 @@ public class LookedAtView implements Serializable { public LookedAtView(String name, Cards cards, Game game) { this.name = name; for (Card card: cards.getCards(game)) { - this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); + this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), card.isFaceDown())); } } diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index 14960972447..6735cb1909e 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -72,7 +72,7 @@ public class PlayerView implements Serializable { this.isActive = (player.getId().equals(state.getActivePlayerId())); this.hasLeft = player.hasLeft(); for (Card card: player.getGraveyard().getCards(game)) { - graveyard.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); + graveyard.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), card.isFaceDown())); } for (Permanent permanent: state.getBattlefield().getAllPermanents()) { if (showInBattlefield(permanent, state)) { diff --git a/Mage.Common/src/mage/view/RevealedView.java b/Mage.Common/src/mage/view/RevealedView.java index b6609e621de..b08aa2bce48 100644 --- a/Mage.Common/src/mage/view/RevealedView.java +++ b/Mage.Common/src/mage/view/RevealedView.java @@ -45,7 +45,7 @@ public class RevealedView implements Serializable { public RevealedView(String name, Cards cards, Game game) { this.name = name; for (Card card: cards.getCards(game)) { - this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)), card.isFaceDown())); + this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), card.isFaceDown())); } } diff --git a/Mage.Common/src/mage/view/SimpleCardView.java b/Mage.Common/src/mage/view/SimpleCardView.java index 586575bdded..861f9b9f588 100644 --- a/Mage.Common/src/mage/view/SimpleCardView.java +++ b/Mage.Common/src/mage/view/SimpleCardView.java @@ -40,14 +40,14 @@ public class SimpleCardView implements Serializable { protected String expansionSetCode; protected int cardNumber; protected boolean faceDown; - protected boolean useCardNumber; // for building the image name (different images for the same card) + protected boolean usesVariousArt; - public SimpleCardView(UUID id, String expansionSetCode, int cardNumber, boolean faceDown, boolean useCardNumber) { + public SimpleCardView(UUID id, String expansionSetCode, int cardNumber, boolean faceDown, boolean usesVariousArt) { this.id = id; this.expansionSetCode = expansionSetCode; this.cardNumber = cardNumber; this.faceDown = faceDown; - this.useCardNumber = useCardNumber; + this.usesVariousArt = usesVariousArt; } public UUID getId() { @@ -66,7 +66,7 @@ public class SimpleCardView implements Serializable { return faceDown; } - public boolean useCardNumber() { - return useCardNumber; + public boolean getUsesVariousArt() { + return usesVariousArt; } } diff --git a/Mage.Common/src/mage/view/SimpleCardsView.java b/Mage.Common/src/mage/view/SimpleCardsView.java index 7d04351798d..4c846692c74 100644 --- a/Mage.Common/src/mage/view/SimpleCardsView.java +++ b/Mage.Common/src/mage/view/SimpleCardsView.java @@ -44,7 +44,7 @@ public class SimpleCardsView extends LinkedHashMap { public SimpleCardsView(Collection cards) { for (Card card: cards) { - this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), Character.isDigit(card.getClass().getName().charAt(card.getClass().getName().length()-1)))); + this.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.isFaceDown(), card.getUsesVariousArt())); } } diff --git a/Mage/src/mage/cards/Card.java b/Mage/src/mage/cards/Card.java index a12418a0940..cc661c49f14 100644 --- a/Mage/src/mage/cards/Card.java +++ b/Mage/src/mage/cards/Card.java @@ -28,6 +28,8 @@ package mage.cards; +import java.util.List; +import java.util.UUID; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageObject; @@ -37,9 +39,6 @@ import mage.abilities.SpellAbility; import mage.game.Game; import mage.watchers.Watcher; -import java.util.List; -import java.util.UUID; - public interface Card extends MageObject { public UUID getOwnerId(); @@ -101,6 +100,13 @@ public interface Card extends MageObject { public void build(); + public void setUsesVariousArt(boolean usesVariousArt); + /** + * + * @return true if there exists various art images for this card + */ + public boolean getUsesVariousArt(); + @Override public Card copy(); } diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java index 569f1da5f91..e92e892b763 100644 --- a/Mage/src/mage/cards/CardImpl.java +++ b/Mage/src/mage/cards/CardImpl.java @@ -28,6 +28,8 @@ package mage.cards; +import java.lang.reflect.Constructor; +import java.util.*; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; @@ -44,8 +46,6 @@ import mage.game.stack.Spell; import mage.watchers.Watcher; import org.apache.log4j.Logger; -import java.lang.reflect.Constructor; -import java.util.*; public abstract class CardImpl> extends MageObjectImpl implements Card { private static final long serialVersionUID = 1L; @@ -65,6 +65,7 @@ public abstract class CardImpl> extends MageObjectImpl protected boolean flipCard; protected int zoneChangeCounter = 1; protected Map info; + protected boolean usesVariousArt = false; public CardImpl(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs) { this(ownerId, name); @@ -72,10 +73,13 @@ public abstract class CardImpl> extends MageObjectImpl this.cardNumber = cardNumber; this.cardType.addAll(Arrays.asList(cardTypes)); this.manaCost.load(costs); - if (cardType.contains(CardType.LAND)) + if (cardType.contains(CardType.LAND)) { addAbility(new PlayLandAbility(name)); - else + } + else { addAbility(new SpellAbility(manaCost, name)); + } + this.usesVariousArt = Character.isDigit(this.getClass().getName().charAt(this.getClass().getName().length()-1)); } protected CardImpl(UUID ownerId, String name) { @@ -110,6 +114,7 @@ public abstract class CardImpl> extends MageObjectImpl info = new HashMap(); info.putAll(card.info); } + usesVariousArt = card.usesVariousArt; } @Override @@ -196,8 +201,9 @@ public abstract class CardImpl> extends MageObjectImpl public SpellAbility getSpellAbility() { if (spellAbility == null) { for (Ability ability : abilities.getActivatedAbilities(Zone.HAND)) { - if (ability instanceof SpellAbility) + if (ability instanceof SpellAbility) { spellAbility = (SpellAbility) ability; + } } } return spellAbility; @@ -284,10 +290,12 @@ public abstract class CardImpl> extends MageObjectImpl game.getExile().getPermanentExile().add(this); break; case LIBRARY: - if (flag) + if (flag) { game.getPlayer(ownerId).getLibrary().putOnTop(this, game); - else + } + else { game.getPlayer(ownerId).getLibrary().putOnBottom(this, game); + } break; case BATTLEFIELD: PermanentCard permanent = new PermanentCard(this, ownerId); @@ -297,8 +305,9 @@ public abstract class CardImpl> extends MageObjectImpl game.applyEffects(); permanent.entersBattlefield(sourceId, game); game.applyEffects(); - if (flag) + if (flag) { permanent.setTapped(true); + } event.setTarget(permanent); break; default: @@ -483,4 +492,14 @@ public abstract class CardImpl> extends MageObjectImpl @Override public void build() {} + + @Override + public void setUsesVariousArt(boolean usesVariousArt) { + this.usesVariousArt = usesVariousArt; + } + + @Override + public boolean getUsesVariousArt() { + return usesVariousArt; + } } diff --git a/Mage/src/mage/game/permanent/PermanentCard.java b/Mage/src/mage/game/permanent/PermanentCard.java index 3b6eb84d93c..0fb63b87838 100644 --- a/Mage/src/mage/game/permanent/PermanentCard.java +++ b/Mage/src/mage/game/permanent/PermanentCard.java @@ -114,6 +114,7 @@ public class PermanentCard extends PermanentImpl { this.expansionSetCode = card.getExpansionSetCode(); this.rarity = card.getRarity(); this.cardNumber = card.getCardNumber(); + this.usesVariousArt = card.getUsesVariousArt(); canTransform = card.canTransform(); if (canTransform) { diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index 7d2b44ac758..916bcba7c4f 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -426,6 +426,16 @@ public class Spell> implements StackObject, Card { card.setCardNumber(cid); } + @Override + public boolean getUsesVariousArt() { + return card.getUsesVariousArt(); + } + + @Override + public void setUsesVariousArt(boolean usesVariousArt) { + card.setUsesVariousArt(usesVariousArt); + } + @Override public List getMana() { return card.getMana();