From 95a12028e6d7fba87df0aaab188b9d6fc6727bb6 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 17 Jun 2013 17:00:17 +0200 Subject: [PATCH] Added small icon for tokens on token permanents. Token copied from permanents (Giant Adephage) show now the image of the permanent. --- .../java/org/mage/card/arcane/CardPanel.java | 22 ++++++++++++++++++ .../mage/plugins/card/utils/ImageManager.java | 2 ++ .../card/utils/impl/ImageManagerImpl.java | 11 +++++++++ Mage.Client/src/main/resources/card/token.png | Bin 0 -> 753 bytes Mage.Common/src/mage/view/CardView.java | 13 +++++++++-- .../sets/dragonsmaze/AdventOfTheWurm.java | 2 ++ Mage/src/mage/game/permanent/token/Token.java | 19 +++++++++++++++ .../util/functions/CopyTokenFunction.java | 3 ++- 8 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 Mage.Client/src/main/resources/card/token.png 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 8067b9d56e4..cc9ce07983e 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 @@ -65,6 +65,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti public final ScaledImagePanel imagePanel; public ImagePanel overlayPanel; public JPanel buttonPanel; + public JPanel iconPanel; private GlowText titleText; private GlowText ptText; @@ -94,6 +95,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti private boolean transformed; private boolean animationInProgress = false; private JButton dayNightButton; + private JButton tokenButton; private boolean displayTitleAnyway; @@ -142,6 +144,23 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } }); + // token icon + iconPanel = new JPanel(); + iconPanel.setLayout(null); + iconPanel.setOpaque(false); + add(iconPanel); + + tokenButton = new JButton(""); + tokenButton.setLocation(2, 2); + tokenButton.setSize(25, 25); + + iconPanel.setVisible(this.gameCard.isToken()); + + BufferedImage tokenIconImage = ImageManagerImpl.getInstance().getTokenIconImage(); + tokenButton.setIcon(new ImageIcon(tokenIconImage)); + + iconPanel.add(tokenButton); + setBackground(Color.black); setOpaque(false); @@ -411,6 +430,9 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti buttonPanel.setLocation(cardXOffset + borderSize, cardYOffset + borderSize); buttonPanel.setSize(cardWidth - borderSize * 2, cardHeight - borderSize * 2); + iconPanel.setLocation(cardXOffset + borderSize, cardYOffset + borderSize); + iconPanel.setSize(cardWidth - borderSize * 2, cardHeight - borderSize * 2); + int fontHeight = Math.round(cardHeight * (27f / 680)); boolean showText = (!isAnimationPanel && fontHeight < 12); titleText.setVisible(showText); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java index 390e2dd121a..fd8a65891ee 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java @@ -11,6 +11,8 @@ public interface ImageManager { Image getSicknessImage(); Image getDayImage(); Image getNightImage(); + + Image getTokenIconImage(); Image getDlgAcceptButtonImage(); Image getDlgActiveAcceptButtonImage(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java index c99196e2ac3..a161c643c4d 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java @@ -97,6 +97,15 @@ public class ImageManagerImpl implements ImageManager { return imageNight; } + @Override + public BufferedImage getTokenIconImage() { + if (imageTokenIcon == null) { + Image image = getImageFromResourceTransparent("/card/token.png", Color.WHITE, new Rectangle(20, 20)); + imageTokenIcon = BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB); + } + return imageTokenIcon; + } + @Override public Image getDlgCancelButtonImage() { if (imageDlgCancelButton == null) { @@ -216,6 +225,8 @@ public class ImageManagerImpl implements ImageManager { private static BufferedImage imageDay; private static BufferedImage imageNight; + private static BufferedImage imageTokenIcon; + private static BufferedImage imageDlgAcceptButton; private static BufferedImage imageDlgActiveAcceptButton; private static BufferedImage imageDlgCancelButton; diff --git a/Mage.Client/src/main/resources/card/token.png b/Mage.Client/src/main/resources/card/token.png new file mode 100644 index 0000000000000000000000000000000000000000..e63f67cb0918b653bb8a129170a70ae3e2a3de2e GIT binary patch literal 753 zcmVPELMDI6FIw($Z4sbUGpR`F!~J_`ufImJrciQc{A|)z!Q#H3jihg@pwi9UZ}JHj9nHJRT2TUS6~bL!l5_TU$|GT@8oBf$QsQA!%r6KwDcI zVzC&Wo}SRr(SeGJ3N$x2!-LZ4_VyOr z+uLGiRlMcl;bGL()nQ^{Le5EsE|*IY5~HJ|Ld59oyXWU;JU%`Om~=ermzO2`_V#u~Mj!U7Dw!WV#4Og=*Ci|J<8(T6q##Jl zbF6~BT2@vDuh)y4o16STBr(Bv>~_2J$g;3nt=QSw!Q|wmy!WfCD|K;sjZNLAr>Ao? z)x!ArxJuyLm%`0pFen3|5E)TfS&8%W^TNY{w>L5}@*^2R?WkozLcWlurluT6qtPf6 z#%8n0ch=5-&dP#>ESb-+zrSCac5G}6OG`^QK0e0f 0) { + // a token copied from permanent + this.expansionSetCode = ((PermanentToken) card).getToken().getOriginalExpansionSetCode(); + this.cardNumber = ((PermanentToken) card).getToken().getOriginalCardNumber(); + } else { + // a created token + this.expansionSetCode = ((PermanentToken) card).getExpansionSetCode(); + } + // + // set code und card number for token copies to get the image this.rules = ((PermanentToken) card).getRules(); this.type = ((PermanentToken)card).getToken().getTokenType(); - this.isToken = true; } else { this.rarity = card.getRarity(); this.isToken = false; diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/AdventOfTheWurm.java b/Mage.Sets/src/mage/sets/dragonsmaze/AdventOfTheWurm.java index 670e174ecfd..ea962b98eff 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/AdventOfTheWurm.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/AdventOfTheWurm.java @@ -75,6 +75,8 @@ public class AdventOfTheWurm extends CardImpl { subtype.add("Wurm"); power = new MageInt(5); toughness = new MageInt(5); + expansionSetCode = "RTR"; + addAbility(TrampleAbility.getInstance()); } diff --git a/Mage/src/mage/game/permanent/token/Token.java b/Mage/src/mage/game/permanent/token/Token.java index 75355cecb6f..743e1459f6c 100644 --- a/Mage/src/mage/game/permanent/token/Token.java +++ b/Mage/src/mage/game/permanent/token/Token.java @@ -49,6 +49,8 @@ public class Token extends MageObjectImpl { protected String description; private UUID lastAddedTokenId; private int tokenType; + private int originalCardNumber; + private String originalExpansionSetCode; public enum Type { FIRST(1), @@ -146,4 +148,21 @@ public class Token extends MageObjectImpl { public void setTokenType(int tokenType) { this.tokenType = tokenType; } + + public int getOriginalCardNumber() { + return originalCardNumber; + } + + public void setOriginalCardNumber(int originalCardNumber) { + this.originalCardNumber = originalCardNumber; + } + + public String getOriginalExpansionSetCode() { + return originalExpansionSetCode; + } + + public void setOriginalExpansionSetCode(String originalExpansionSetCode) { + this.originalExpansionSetCode = originalExpansionSetCode; + } + } diff --git a/Mage/src/mage/util/functions/CopyTokenFunction.java b/Mage/src/mage/util/functions/CopyTokenFunction.java index 4943f498e56..b83582c791e 100644 --- a/Mage/src/mage/util/functions/CopyTokenFunction.java +++ b/Mage/src/mage/util/functions/CopyTokenFunction.java @@ -79,7 +79,8 @@ public class CopyTokenFunction implements Function { for (String type : sourceObj.getSupertype()) { target.getSupertype().add(type); } - //target.setExpansionSetCode(source.getExpansionSetCode()); + target.setOriginalExpansionSetCode(source.getExpansionSetCode()); + target.setOriginalCardNumber(source.getCardNumber()); target.getAbilities().clear(); for (Ability ability0 : sourceObj.getAbilities()) {