From 60147315176cf5e3342006f4575d064affc2b1a0 Mon Sep 17 00:00:00 2001 From: myk Date: Sat, 9 Mar 2013 21:41:22 +0000 Subject: [PATCH] ensure generated tokens get added with the correct prefix --- .../card/ability/effects/TokenEffect.java | 6 +- .../cardfactory/CardFactoryCreatures.java | 8 +- .../card/cardfactory/CardFactoryUtil.java | 23 --- .../forge/card/trigger/TriggerHandler.java | 158 ------------------ .../control/input/InputPayManaSimple.java | 9 - .../deckeditor/controllers/CCurrentDeck.java | 3 +- src/main/java/forge/item/CardToken.java | 30 +++- src/main/java/forge/quest/QuestUtil.java | 18 +- .../java/forge/view/arcane/CardPanel.java | 4 +- 9 files changed, 43 insertions(+), 216 deletions(-) diff --git a/src/main/java/forge/card/ability/effects/TokenEffect.java b/src/main/java/forge/card/ability/effects/TokenEffect.java index 392bd4a3705..20c036b046e 100644 --- a/src/main/java/forge/card/ability/effects/TokenEffect.java +++ b/src/main/java/forge/card/ability/effects/TokenEffect.java @@ -30,6 +30,7 @@ import forge.card.spellability.SpellAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.game.player.Player; +import forge.item.CardToken; public class TokenEffect extends SpellAbilityEffect { @@ -144,7 +145,6 @@ public class TokenEffect extends SpellAbilityEffect { final Card host = sa.getSourceCard(); readParameters(sa); - String imageName = ""; String cost = ""; // Construct colors final String[] substitutedColors = Arrays.copyOf(this.tokenColors, this.tokenColors.length); @@ -170,8 +170,10 @@ public class TokenEffect extends SpellAbilityEffect { colorDesc = "C"; } } + + final String imageName; if (this.tokenImage.equals("")) { - imageName += colorDesc.replace(" ", "") + " " + this.tokenPower + " " + this.tokenToughness + " " + this.tokenName; + imageName = CardToken.makeTokenFileName(colorDesc.replace(" ", ""), tokenPower, tokenToughness, tokenName); } else { imageName = this.tokenImage; } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java index 57d50f3f9be..5a06c5c9c89 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java @@ -57,6 +57,7 @@ import forge.game.zone.PlayerZone; import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; +import forge.item.CardToken; import forge.util.Aggregates; /** @@ -73,7 +74,8 @@ public class CardFactoryCreatures { final Ability ability = new Ability(card, ManaCost.ZERO) { @Override public void resolve() { - final List cl = CardFactoryUtil.makeToken("Stangg Twin", "RG 3 4 Stangg Twin", + final List cl = CardFactoryUtil.makeToken("Stangg Twin", + CardToken.makeTokenFileName("RG", 3, 4, "Stangg Twin"), card.getController(), "R G", new String[] { "Legendary", "Creature", "Human", "Warrior" }, 3, 4, new String[] { "" }); @@ -373,8 +375,8 @@ public class CardFactoryCreatures { } // resolve() public void makeToken() { - CardFactoryUtil.makeToken("Kithkin Soldier", "W 1 1 Kithkin Soldier", card.getController(), "W", - new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" }); + CardFactoryUtil.makeToken("Kithkin Soldier", CardToken.makeTokenFileName("W", 1, 1, "Kithkin Soldier"), + card.getController(), "W", new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" }); } }; diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index d132c9aae94..cd0257c1559 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -2442,29 +2442,6 @@ public class CardFactoryUtil { return true; } - /** - *

- * makeToken. - *

- * - * @param name - * a {@link java.lang.String} object. - * @param imageName - * a {@link java.lang.String} object. - * @param controller - * a {@link forge.game.player.Player} object. - * @param manaCost - * a {@link java.lang.String} object. - * @param types - * an array of {@link java.lang.String} objects. - * @param baseAttack - * a int. - * @param baseDefense - * a int. - * @param intrinsicKeywords - * an array of {@link java.lang.String} objects. - * @return a {@link forge.CardList} object. - */ public static List makeToken(final String name, final String imageName, final Player controller, final String manaCost, final String[] types, final int baseAttack, final int baseDefense, final String[] intrinsicKeywords) { diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index 934b887e8e9..1fc800f7e29 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -41,16 +41,6 @@ import forge.game.phase.PhaseType; import forge.game.player.AIPlayer; import forge.game.player.Player; import forge.game.zone.ZoneType; -//import forge.util.TextUtil; - -/** - *

- * TriggerHandler class. - *

- * - * @author Forge - * @version $Id$ - */ public class TriggerHandler { private final ArrayList suppressedModes = new ArrayList(); @@ -58,9 +48,6 @@ public class TriggerHandler { private final ArrayList delayedTriggers = new ArrayList(); private final List waitingTriggers = new ArrayList(); - /** - * Clean up temporary triggers. - */ public final void cleanUpTemporaryTriggers() { final List absolutelyAllCards = Singletons.getModel().getGame().getCardsInGame(); for (final Card c : absolutelyAllCards) { @@ -79,34 +66,14 @@ public class TriggerHandler { } - /** - *

- * registerDelayedTrigger. - *

- * - * @param trig - * a {@link forge.card.trigger.Trigger} object. - */ public final void registerDelayedTrigger(final Trigger trig) { this.delayedTriggers.add(trig); } - /** - *

- * clearDelayedTrigger. - *

- */ public final void clearDelayedTrigger() { this.delayedTriggers.clear(); } - /** - *

- * clearDelayedTrigger. - *

- * @param card - * a card object. - */ public final void clearDelayedTrigger(Card card) { ArrayList deltrigs = new ArrayList(this.delayedTriggers); @@ -118,45 +85,14 @@ public class TriggerHandler { } - /** - *

- * suppressMode. - *

- * - * @param mode - * a {@link java.lang.String} object. - */ public final void suppressMode(final TriggerType mode) { this.suppressedModes.add(mode); } - /** - *

- * clearSuppression. - *

- * - * @param mode - * a {@link java.lang.String} object. - */ public final void clearSuppression(final TriggerType mode) { this.suppressedModes.remove(mode); } - /** - *

- * parseTrigger. - *

- * - * @param name - * a {@link java.lang.String} object. - * @param trigParse - * a {@link java.lang.String} object. - * @param host - * a {@link forge.Card} object. - * @param intrinsic - * a boolean. - * @return a {@link forge.card.trigger.Trigger} object. - */ public static Trigger parseTrigger(final String name, final String trigParse, final Card host, final boolean intrinsic) { final Trigger ret = TriggerHandler.parseTrigger(trigParse, host, intrinsic); @@ -164,37 +100,11 @@ public class TriggerHandler { return ret; } - /** - *

- * parseTrigger. - *

- * - * @param trigParse - * a {@link java.lang.String} object. - * @param host - * a {@link forge.Card} object. - * @param intrinsic - * a boolean. - * @return a {@link forge.card.trigger.Trigger} object. - */ public static Trigger parseTrigger(final String trigParse, final Card host, final boolean intrinsic) { final HashMap mapParams = TriggerHandler.parseParams(trigParse); return TriggerHandler.parseTrigger(mapParams, host, intrinsic); } - /** - *

- * parseTrigger. - *

- * - * @param mapParams - * a {@link java.util.HashMap} object. - * @param host - * a {@link forge.Card} object. - * @param intrinsic - * a boolean. - * @return a {@link forge.card.trigger.Trigger} object. - */ public static Trigger parseTrigger(final Map mapParams, final Card host, final boolean intrinsic) { Trigger ret = null; @@ -214,15 +124,6 @@ public class TriggerHandler { return ret; } - /** - *

- * parseParams. - *

- * - * @param trigParse - * a {@link java.lang.String} object. - * @return a {@link java.util.HashMap} object. - */ private static HashMap parseParams(final String trigParse) { final HashMap mapParams = new HashMap(); @@ -255,17 +156,6 @@ public class TriggerHandler { return mapParams; } - /** - *

- * runTrigger. - *

- * - * @param mode - * a {@link java.lang.String} object. - * @param runParams - * a {@link java.util.Map} object. - * @param forceHeldTriggers Force certain triggers to be added the waitingTriggers if stack isnt frozen - */ public final void runTrigger(final TriggerType mode, final Map runParams, boolean holdTrigger) { if (this.suppressedModes.contains(mode)) { return; @@ -400,19 +290,6 @@ public class TriggerHandler { // Checks if the conditions are right for a single trigger to go off, and // runs it if so. // Return true if the trigger went off, false otherwise. - /** - *

- * runSingleTrigger. - *

- * - * @param regtrig - * a {@link forge.card.trigger.Trigger} object. - * @param mode - * a {@link java.lang.String} object. - * @param runParams - * a {@link java.util.HashMap} object. - * @return false if trigger is not happening. - */ private boolean runSingleTrigger(final Trigger regtrig, final TriggerType mode, final Map runParams) { final Map triggerParams = regtrig.getMapParams(); final GameState game = Singletons.getModel().getGame(); @@ -557,12 +434,6 @@ public class TriggerHandler { private final ArrayList triggersAlwaysAccept = new ArrayList(); private final ArrayList triggersAlwaysDecline = new ArrayList(); - /** - * Sets the always accept trigger. - * - * @param trigID - * the new always accept trigger - */ public final void setAlwaysAcceptTrigger(final int trigID) { if (this.triggersAlwaysDecline.contains(trigID)) { this.triggersAlwaysDecline.remove((Object) trigID); @@ -573,12 +444,6 @@ public class TriggerHandler { } } - /** - * Sets the always decline trigger. - * - * @param trigID - * the new always decline trigger - */ public final void setAlwaysDeclineTrigger(final int trigID) { if (this.triggersAlwaysAccept.contains(trigID)) { this.triggersAlwaysAccept.remove((Object) trigID); @@ -589,42 +454,19 @@ public class TriggerHandler { } } - /** - * Sets the always ask trigger. - * - * @param trigID - * the new always ask trigger - */ public final void setAlwaysAskTrigger(final int trigID) { this.triggersAlwaysAccept.remove((Object) trigID); this.triggersAlwaysDecline.remove((Object) trigID); } - /** - * Checks if is always accepted. - * - * @param trigID - * the trig id - * @return true, if is always accepted - */ public final boolean isAlwaysAccepted(final int trigID) { return this.triggersAlwaysAccept.contains(trigID); } - /** - * Checks if is always declined. - * - * @param trigID - * the trig id - * @return true, if is always declined - */ public final boolean isAlwaysDeclined(final int trigID) { return this.triggersAlwaysDecline.contains(trigID); } - /** - * Clear trigger settings. - */ public final void clearTriggerSettings() { this.triggersAlwaysAccept.clear(); this.triggersAlwaysDecline.clear(); diff --git a/src/main/java/forge/control/input/InputPayManaSimple.java b/src/main/java/forge/control/input/InputPayManaSimple.java index 0b2bc6f3f7d..c4cdbc52b98 100644 --- a/src/main/java/forge/control/input/InputPayManaSimple.java +++ b/src/main/java/forge/control/input/InputPayManaSimple.java @@ -26,19 +26,10 @@ import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.match.CMatchUI; import forge.view.ButtonUtil; -//import forge.Singletons; //pays the cost of a card played from the player's hand //the card is removed from the players hand if the cost is paid //CANNOT be used for ABILITIES -/** - *

- * Input_PayManaCost class. - *

- * - * @author Forge - * @version $Id$ - */ public class InputPayManaSimple extends InputPayManaBase { // anything that uses this should be converted to Ability_Cost /** Constant serialVersionUID=3467312982164195091L. */ diff --git a/src/main/java/forge/gui/deckeditor/controllers/CCurrentDeck.java b/src/main/java/forge/gui/deckeditor/controllers/CCurrentDeck.java index d1b097fda6a..56da1921d25 100644 --- a/src/main/java/forge/gui/deckeditor/controllers/CCurrentDeck.java +++ b/src/main/java/forge/gui/deckeditor/controllers/CCurrentDeck.java @@ -20,6 +20,7 @@ import forge.gui.deckeditor.tables.DeckController; import forge.gui.deckeditor.views.VCurrentDeck; import forge.gui.framework.ICDoc; import forge.gui.toolbox.FLabel; +import forge.properties.NewConstants; /** * Controls the "current deck" panel in the deck editor UI. @@ -33,7 +34,7 @@ public enum CCurrentDeck implements ICDoc { private static File previousDirectory = null; - private JFileChooser fileChooser = new JFileChooser(); + private JFileChooser fileChooser = new JFileChooser(NewConstants.DECK_BASE_DIR); //========== Overridden methods diff --git a/src/main/java/forge/item/CardToken.java b/src/main/java/forge/item/CardToken.java index 2c7cf519bed..a904480f963 100644 --- a/src/main/java/forge/item/CardToken.java +++ b/src/main/java/forge/item/CardToken.java @@ -1,5 +1,7 @@ package forge.item; +import java.util.Locale; + import forge.Card; import forge.ImageCache; import forge.card.CardEdition; @@ -14,7 +16,33 @@ public class CardToken implements InventoryItemFromSet, IPaperCard { private String imageFileName; private CardRules card; - // Constructor is private. All non-foiled instances are stored in CardDb + private static String toTokenFilename(final String in) { + final StringBuffer out = new StringBuffer(); + + out.append(ImageCache.TOKEN_PREFIX); + + char c; + for (int i = 0; i < in.length(); i++) { + c = in.charAt(i); + if ((c == ' ') || (c == '-') || (c == '_')) { + out.append('_'); + } else if (Character.isLetterOrDigit(c)) { + out.append(c); + } + } + return out.toString().toLowerCase(Locale.ENGLISH); + } + + public static String makeTokenFileName(String colors, int power, int toughness, String name) { + return makeTokenFileName(colors, String.valueOf(power), String.valueOf(toughness), name); + } + + public static String makeTokenFileName(String colors, String power, String toughness, String name) { + StringBuilder fileName = new StringBuilder(); + fileName.append(colors).append('_').append(power).append('_').append(toughness).append('_').append(name); + return toTokenFilename(fileName.toString()); + } + public CardToken(final CardRules c, CardEdition edition0, final String imageFileName) { this.card = c; this.name = c.getName(); diff --git a/src/main/java/forge/quest/QuestUtil.java b/src/main/java/forge/quest/QuestUtil.java index bdae3ae156e..41998c0abab 100644 --- a/src/main/java/forge/quest/QuestUtil.java +++ b/src/main/java/forge/quest/QuestUtil.java @@ -19,7 +19,6 @@ package forge.quest; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import forge.Card; import forge.card.CardEdition; @@ -123,20 +122,6 @@ public class QuestUtil { return list; } - private static String toTokenFilename(final String in) { - final StringBuffer out = new StringBuffer(); - char c; - for (int i = 0; i < in.length(); i++) { - c = in.charAt(i); - if ((c == ' ') || (c == '-') || (c == '_')) { - out.append('_'); - } else if (Character.isLetterOrDigit(c)) { - out.append(c); - } - } - return out.toString().toLowerCase(Locale.ENGLISH); - } - /** *

* createToken. @@ -157,8 +142,7 @@ public class QuestUtil { script.add("PT:"+ properties[2] + "/" + properties[3]); script.add("Types:" + properties[5].replace(';', ' ')); script.add("Oracle:"); // tokens don't have texts yet - // c.setManaCost(properties[1]); - String fileName = properties[1] + "_" + properties[2] + "_" + properties[3] + "_" + toTokenFilename(properties[4]); + String fileName = CardToken.makeTokenFileName(properties[1], properties[2], properties[3], properties[4]); final CardToken c = new CardToken(CardRulesReader.parseSingleCard(script), CardEdition.UNKNOWN, fileName); return c; } diff --git a/src/main/java/forge/view/arcane/CardPanel.java b/src/main/java/forge/view/arcane/CardPanel.java index 06d5d0c23ec..89ba0400590 100644 --- a/src/main/java/forge/view/arcane/CardPanel.java +++ b/src/main/java/forge/view/arcane/CardPanel.java @@ -643,12 +643,12 @@ public class CardPanel extends JPanel implements CardContainer { && this.imagePanel.hasImage()) { return; } + this.setGameCard(card); if (!this.isShowing()) { return; } - //final Insets i = this.getInsets(); - //System.out.println("Setting card: " + this.getWidth() + ", " + getCardWidth() + " (" + imagePanel.getWidth() + ")" ); + final BufferedImage image = card == null ? null : ImageCache.getImage(card, imagePanel.getWidth(), imagePanel.getHeight()); if ((this.getGameCard() != null) && Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CARD_OVERLAY)) { this.setText(this.getGameCard());