From 30b341f7d9416488c5f43eb4d7145a2ba7cd06d5 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Tue, 30 Nov 2010 18:14:15 +0000 Subject: [PATCH] Mana symbols in ColorsChooser for deck generator. --- Mage.Client/plugins/mage-card-plugin.jar | Bin 295646 -> 295911 bytes .../java/mage/client/plugins/MagePlugins.java | 2 + .../mage/client/plugins/impl/Plugins.java | 9 +++++ .../mage/client/util/gui/ColorsChooser.java | 36 ++++++++++++++++-- .../mage/client/game/StartMultiGamesTest.java | 5 +-- .../mage/interfaces/plugin/CardPlugin.java | 2 + .../org/mage/card/arcane/ManaSymbols.java | 12 +++++- .../org/mage/plugins/card/CardPluginImpl.java | 6 +++ .../plugins/card/constants/Constants.java | 3 +- 9 files changed, 66 insertions(+), 9 deletions(-) diff --git a/Mage.Client/plugins/mage-card-plugin.jar b/Mage.Client/plugins/mage-card-plugin.jar index 13828414739328ce39f51dfa22fe3778ca51ddf0..3a72b6fc28e251087620dc60f7c08a84ac6b9422 100644 GIT binary patch delta 15369 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�hmNJv>xs=QX&3V_5b4gMsbP}2;>3afQria7wJz255`|=Oi!?S zCG(H(Z5AX7NW&A{n;6-D6FkrlPjEwfxqp{O0+Ho{W5n|UW7v{E*uV=Q38h{3ml00} zfCt5tg6H|ht38ey#v9y0N{#;m_@D=GaIk63|A4h7a8TAh z;EM2n{6l+vz_QuSzW@l`7a#*g)%TA#!WSR}MLqaGfCsww1%D64cK!$8Kr(({#l_)2 zpwJIIEA+1a0-!Qw@Q}jzgJU&#_(LXMAPGTU{@_8zef}3&dnMz)|3%&h0Nz0rK!7?w z0!Wj7Lt=v(1HetM0saCYGyoJfh!_a|FnZ{JNE8|rCWz1|M*W*~rs+y(s5{J#YMdd2_SK!-RLHI)Hze0sfu2Lg~^i?+TNP5BElfnYv?Bi{JS X(1S{ndsVW5+QD*I9eMDsQHcKoq~mjd delta 15143 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 Lk}UX^1@Zp?{wwIr diff --git a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java index ff274153e4e..bd9b765eb63 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java @@ -1,5 +1,6 @@ package mage.client.plugins; +import java.awt.Image; import java.util.Collection; import java.util.Map; import java.util.Set; @@ -30,4 +31,5 @@ public interface MagePlugins { void downloadSymbols(); int getGamesPlayed(); void addGamesPlayed(); + Image getManaSymbolImage(String symbol); } diff --git a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java index ed50f5ab8ad..2f6f0db61dc 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java @@ -1,5 +1,6 @@ package mage.client.plugins.impl; +import java.awt.Image; import java.io.File; import java.util.Collection; import java.util.Map; @@ -158,4 +159,12 @@ public class Plugins implements MagePlugins { public boolean isThemePluginLoaded() { return this.themePlugin != null; } + + @Override + public Image getManaSymbolImage(String symbol) { + if (this.cardPlugin != null) { + return this.cardPlugin.getManaSymbolImage(symbol); + } + return null; + } } diff --git a/Mage.Client/src/main/java/mage/client/util/gui/ColorsChooser.java b/Mage.Client/src/main/java/mage/client/util/gui/ColorsChooser.java index 4c97b5688ea..ed91d65eebd 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/ColorsChooser.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/ColorsChooser.java @@ -1,16 +1,23 @@ package mage.client.util.gui; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; +import java.awt.FlowLayout; import java.awt.GridLayout; +import java.awt.Image; +import java.util.ArrayList; +import java.util.List; import javax.swing.DefaultComboBoxModel; +import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; +import mage.client.plugins.impl.Plugins; import mage.client.util.Constants; public class ColorsChooser extends JComboBox implements ListCellRenderer { @@ -41,7 +48,7 @@ public class ColorsChooser extends JComboBox implements ListCellRenderer { public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { - final JPanel panel = new JPanel(new GridLayout(1, 3)); + final JPanel panel = new JPanel(new FlowLayout()); drawOn(panel, (String) value); panel.setBorder(Constants.EMPTY_BORDER); if (isSelected) { @@ -51,7 +58,30 @@ public class ColorsChooser extends JComboBox implements ListCellRenderer { } private void drawOn(JPanel panel, String value) { - String s = value.replace("b", "{B}").replace("r", "{R}").replace("g", "{G}").replace("w", "{W}").replace("u", "{U}"); - panel.add(new JLabel(s)); + List images = new ArrayList(); + value = value.toUpperCase(); + for (int i = 0; i < value.length(); i++) { + char symbol = value.charAt(i); + Image image = Plugins.getInstance().getManaSymbolImage(String.valueOf(symbol)); + if (image != null) { + images.add(image); + } + } + + if (images.size() == value.length()) { + int dx = 0; + for (Image image : images) { + ImageIcon icon = new ImageIcon(image); + JLabel imageLabel = new JLabel(); + imageLabel.setSize(11, 11); + imageLabel.setLocation(dx, 0); + imageLabel.setIcon(icon); + panel.add(imageLabel); + dx += 13; + } + } else { + String s = value.replace("B", "{B}").replace("R", "{R}").replace("G", "{G}").replace("W", "{W}").replace("U", "{U}"); + panel.add(new JLabel(s)); + } } } diff --git a/Mage.Client/src/test/java/mage/client/game/StartMultiGamesTest.java b/Mage.Client/src/test/java/mage/client/game/StartMultiGamesTest.java index 11584d331bf..0391cf257f0 100644 --- a/Mage.Client/src/test/java/mage/client/game/StartMultiGamesTest.java +++ b/Mage.Client/src/test/java/mage/client/game/StartMultiGamesTest.java @@ -10,9 +10,6 @@ import mage.client.components.MageComponents; import mage.client.components.MageUI; import mage.util.Logging; -import org.junit.Ignore; -import org.junit.Test; - public class StartMultiGamesTest { private final static Logger logger = Logging.getLogger(StartMultiGamesTest.class.getName()); @@ -31,7 +28,7 @@ public class StartMultiGamesTest { } - @Test + //@Test public void testEmpty() { } diff --git a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java index dd1fba9d9b9..8ffd12c04f5 100644 --- a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java +++ b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java @@ -1,5 +1,6 @@ package mage.interfaces.plugin; +import java.awt.Image; import java.util.Collection; import java.util.Map; import java.util.Set; @@ -29,4 +30,5 @@ public interface CardPlugin extends Plugin { void sortPermanents(Map ui, Collection cards); void downloadImages(Set allCards); void downloadSymbols(); + Image getManaSymbolImage(String symbol); } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java index 39e0e27b6bc..6cdc968b436 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -19,13 +19,14 @@ import org.mage.plugins.card.utils.BufferedImageBuilder; public class ManaSymbols { private static final Logger log = Logger.getLogger(ManaSymbols.class); static private final Map manaImages = new HashMap(); + static private final Map manaImagesOriginal = new HashMap(); static private Pattern replaceSymbolsPattern = Pattern.compile("\\{([^}/]*)/?([^}]*)\\}"); static public void loadImages () { String[] symbols = new String[] {"0", "1", "10", "11", "12", "15", "16", "2", "3", "4", "5", "6", "7", "8", "9", "B", "BG", "BR", "G", "GU", "GW", "R", "RG", "RW", "S", "T", "U", "UB", "UR", "W", "WB", "WU", "X", "Y", "Z", "slash"}; for (String symbol : symbols) { - File file = new File(Constants.RESOURCE_PATH_MANA + "/" + symbol + ".jpg"); + File file = new File(Constants.RESOURCE_PATH_MANA_LARGE + "/" + symbol + ".jpg"); BufferedImageBuilder builder = new BufferedImageBuilder(); Rectangle r = new Rectangle(11, 11); try { @@ -33,9 +34,18 @@ public class ManaSymbols { BufferedImage resized = ImageCache.getResizedImage(builder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); manaImages.put(symbol, resized); } catch (Exception e) {} + file = new File(Constants.RESOURCE_PATH_MANA_MEDIUM + "/" + symbol + ".jpg"); + try { + Image image = UI.getImageIcon(file.getAbsolutePath()).getImage(); + manaImagesOriginal.put(symbol, image); + } catch (Exception e) {} } } + static public Image getManaSymbolImage(String symbol) { + return manaImagesOriginal.get(symbol); + } + static public void draw (Graphics g, String manaCost, int x, int y) { if (manaCost.length() == 0) return; manaCost = manaCost.replace("\\", ""); diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java index abff2f7ecfe..4b962d27d0c 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -2,6 +2,7 @@ package org.mage.plugins.card; import java.awt.BorderLayout; import java.awt.Frame; +import java.awt.Image; import java.awt.Rectangle; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; @@ -427,4 +428,9 @@ public class CardPluginImpl implements CardPlugin { d.pack(); d.setVisible(true); } + + @Override + public Image getManaSymbolImage(String symbol) { + return ManaSymbols.getManaSymbolImage(symbol); + } } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/constants/Constants.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/constants/Constants.java index 2fdade1ba80..d39bc8f05f9 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/constants/Constants.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/constants/Constants.java @@ -4,7 +4,8 @@ import java.awt.Rectangle; import java.io.File; public class Constants { - public static final String RESOURCE_PATH_MANA = IO.imageBaseDir + "symbols" + File.separator + "large"; + public static final String RESOURCE_PATH_MANA_LARGE = IO.imageBaseDir + "symbols" + File.separator + "large"; + public static final String RESOURCE_PATH_MANA_MEDIUM = IO.imageBaseDir + "symbols" + File.separator + "medium"; public static final Rectangle CARD_SIZE_FULL = new Rectangle(101, 149);