From bf0b957948fd1cbfc16702153a94080bf2eb8604 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Fri, 7 Feb 2025 00:45:06 +0400 Subject: [PATCH] [DFT] added image support for designations, added Speed image (visible on triggered abilities) --- Mage.Common/src/main/java/mage/view/CardView.java | 7 +++---- .../mage/cards/repository/TokenRepository.java | 4 ++++ Mage/src/main/java/mage/designations/Speed.java | 14 ++++++++++++++ Mage/src/main/java/mage/game/GameImpl.java | 2 ++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Mage.Common/src/main/java/mage/view/CardView.java b/Mage.Common/src/main/java/mage/view/CardView.java index bc03a3d3633..c13f283c768 100644 --- a/Mage.Common/src/main/java/mage/view/CardView.java +++ b/Mage.Common/src/main/java/mage/view/CardView.java @@ -944,7 +944,7 @@ public class CardView extends SimpleCardView { this(true); this.gameObject = true; this.id = designation.getId(); - this.mageObjectType = MageObjectType.NULL; + this.mageObjectType = MageObjectType.DESIGNATION; this.name = designation.getName(); this.displayName = name; this.displayFullName = name; @@ -955,9 +955,8 @@ public class CardView extends SimpleCardView { this.frameStyle = FrameStyle.M15_NORMAL; this.cardNumber = designation.getCardNumber(); this.expansionSetCode = designation.getExpansionSetCode(); - this.cardNumber = ""; - this.imageFileName = ""; - this.imageNumber = 0; + this.imageFileName = designation.getImageFileName(); + this.imageNumber = designation.getImageNumber(); this.rarity = Rarity.SPECIAL; // no playable/chooseable marks for designations diff --git a/Mage/src/main/java/mage/cards/repository/TokenRepository.java b/Mage/src/main/java/mage/cards/repository/TokenRepository.java index ed25e535d39..a3a86c78c9e 100644 --- a/Mage/src/main/java/mage/cards/repository/TokenRepository.java +++ b/Mage/src/main/java/mage/cards/repository/TokenRepository.java @@ -35,6 +35,7 @@ public enum TokenRepository { public static final String XMAGE_IMAGE_NAME_RADIATION = "Radiation"; public static final String XMAGE_IMAGE_NAME_THE_RING = "The Ring"; public static final String XMAGE_IMAGE_NAME_HELPER_EMBLEM = "Helper Emblem"; + public static final String XMAGE_IMAGE_NAME_SPEED = "Speed"; private static final Logger logger = Logger.getLogger(TokenRepository.class); @@ -310,6 +311,9 @@ public enum TokenRepository { // The Ring res.add(createXmageToken(XMAGE_IMAGE_NAME_THE_RING, 1, "https://api.scryfall.com/cards/tltr/H13/en?format=image")); + // Speed + res.add(createXmageToken(XMAGE_IMAGE_NAME_SPEED, 1, "https://api.scryfall.com/cards/tdft/14/en?format=image&&face=back")); + // Helper emblem (for global card hints) // use backface for it res.add(createXmageToken(XMAGE_IMAGE_NAME_HELPER_EMBLEM, 1, "https://upload.wikimedia.org/wikipedia/en/a/aa/Magic_the_gathering-card_back.jpg")); diff --git a/Mage/src/main/java/mage/designations/Speed.java b/Mage/src/main/java/mage/designations/Speed.java index b3529f50fb2..8781ffe847e 100644 --- a/Mage/src/main/java/mage/designations/Speed.java +++ b/Mage/src/main/java/mage/designations/Speed.java @@ -4,6 +4,8 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.OneShotEffect; +import mage.cards.repository.TokenInfo; +import mage.cards.repository.TokenRepository; import mage.constants.Outcome; import mage.constants.Zone; import mage.game.Game; @@ -20,6 +22,18 @@ public class Speed extends Designation { public Speed() { super(DesignationType.SPEED); addAbility(new SpeedTriggeredAbility()); + + TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForXmage(TokenRepository.XMAGE_IMAGE_NAME_SPEED, null); + if (foundInfo != null) { + this.setExpansionSetCode(foundInfo.getSetCode()); + this.setUsesVariousArt(true); + this.setCardNumber(""); + this.setImageFileName(""); // use default + this.setImageNumber(foundInfo.getImageNumber()); + } else { + // how-to fix: add image to the tokens-database TokenRepository->loadXmageTokens + throw new IllegalArgumentException("Wrong code usage: can't find xmage token info for: " + TokenRepository.XMAGE_IMAGE_NAME_SPEED); + } } private Speed(final Speed card) { diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 2fcce83997d..c60f6499165 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -2862,6 +2862,8 @@ public abstract class GameImpl implements Game { } } } + + // Start Your Engines // Max Speed if (perm.getAbilities(this).containsClass(StartYourEnginesAbility.class)) { Optional.ofNullable(perm.getControllerId()) .map(this::getPlayer)