forked from External/mage
Redesigned handling of various art for cards.
This commit is contained in:
parent
96738632d1
commit
4b2e6a8bc0
15 changed files with 82 additions and 49 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public class SimpleCardsView extends LinkedHashMap<UUID, SimpleCardView> {
|
|||
|
||||
public SimpleCardsView(Collection<Card> 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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<T extends CardImpl<T>> extends MageObjectImpl<T> implements Card {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
@ -65,6 +65,7 @@ public abstract class CardImpl<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
protected boolean flipCard;
|
||||
protected int zoneChangeCounter = 1;
|
||||
protected Map<String, String> 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<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
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<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
info = new HashMap<String, String>();
|
||||
info.putAll(card.info);
|
||||
}
|
||||
usesVariousArt = card.usesVariousArt;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -196,8 +201,9 @@ public abstract class CardImpl<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
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<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
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<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
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<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
|
||||
@Override
|
||||
public void build() {}
|
||||
|
||||
@Override
|
||||
public void setUsesVariousArt(boolean usesVariousArt) {
|
||||
this.usesVariousArt = usesVariousArt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getUsesVariousArt() {
|
||||
return usesVariousArt;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ public class PermanentCard extends PermanentImpl<PermanentCard> {
|
|||
this.expansionSetCode = card.getExpansionSetCode();
|
||||
this.rarity = card.getRarity();
|
||||
this.cardNumber = card.getCardNumber();
|
||||
this.usesVariousArt = card.getUsesVariousArt();
|
||||
|
||||
canTransform = card.canTransform();
|
||||
if (canTransform) {
|
||||
|
|
|
|||
|
|
@ -426,6 +426,16 @@ public class Spell<T extends Spell<T>> 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<Mana> getMana() {
|
||||
return card.getMana();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue