ensure generated tokens get added with the correct prefix

This commit is contained in:
myk
2013-03-09 21:41:22 +00:00
parent e30ce5b723
commit 6014731517
9 changed files with 43 additions and 216 deletions

View File

@@ -30,6 +30,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.game.player.Player; import forge.game.player.Player;
import forge.item.CardToken;
public class TokenEffect extends SpellAbilityEffect { public class TokenEffect extends SpellAbilityEffect {
@@ -144,7 +145,6 @@ public class TokenEffect extends SpellAbilityEffect {
final Card host = sa.getSourceCard(); final Card host = sa.getSourceCard();
readParameters(sa); readParameters(sa);
String imageName = "";
String cost = ""; String cost = "";
// Construct colors // Construct colors
final String[] substitutedColors = Arrays.copyOf(this.tokenColors, this.tokenColors.length); final String[] substitutedColors = Arrays.copyOf(this.tokenColors, this.tokenColors.length);
@@ -170,8 +170,10 @@ public class TokenEffect extends SpellAbilityEffect {
colorDesc = "C"; colorDesc = "C";
} }
} }
final String imageName;
if (this.tokenImage.equals("")) { if (this.tokenImage.equals("")) {
imageName += colorDesc.replace(" ", "") + " " + this.tokenPower + " " + this.tokenToughness + " " + this.tokenName; imageName = CardToken.makeTokenFileName(colorDesc.replace(" ", ""), tokenPower, tokenToughness, tokenName);
} else { } else {
imageName = this.tokenImage; imageName = this.tokenImage;
} }

View File

@@ -57,6 +57,7 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.item.CardToken;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**
@@ -73,7 +74,8 @@ public class CardFactoryCreatures {
final Ability ability = new Ability(card, ManaCost.ZERO) { final Ability ability = new Ability(card, ManaCost.ZERO) {
@Override @Override
public void resolve() { public void resolve() {
final List<Card> cl = CardFactoryUtil.makeToken("Stangg Twin", "RG 3 4 Stangg Twin", final List<Card> cl = CardFactoryUtil.makeToken("Stangg Twin",
CardToken.makeTokenFileName("RG", 3, 4, "Stangg Twin"),
card.getController(), "R G", new String[] { "Legendary", "Creature", "Human", "Warrior" }, card.getController(), "R G", new String[] { "Legendary", "Creature", "Human", "Warrior" },
3, 4, new String[] { "" }); 3, 4, new String[] { "" });
@@ -373,8 +375,8 @@ public class CardFactoryCreatures {
} // resolve() } // resolve()
public void makeToken() { public void makeToken() {
CardFactoryUtil.makeToken("Kithkin Soldier", "W 1 1 Kithkin Soldier", card.getController(), "W", CardFactoryUtil.makeToken("Kithkin Soldier", CardToken.makeTokenFileName("W", 1, 1, "Kithkin Soldier"),
new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" }); card.getController(), "W", new String[] { "Creature", "Kithkin", "Soldier" }, 1, 1, new String[] { "" });
} }
}; };

View File

@@ -2442,29 +2442,6 @@ public class CardFactoryUtil {
return true; return true;
} }
/**
* <p>
* makeToken.
* </p>
*
* @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<Card> makeToken(final String name, final String imageName, final Player controller, public static List<Card> makeToken(final String name, final String imageName, final Player controller,
final String manaCost, final String[] types, final int baseAttack, final int baseDefense, final String manaCost, final String[] types, final int baseAttack, final int baseDefense,
final String[] intrinsicKeywords) { final String[] intrinsicKeywords) {

View File

@@ -41,16 +41,6 @@ import forge.game.phase.PhaseType;
import forge.game.player.AIPlayer; import forge.game.player.AIPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
//import forge.util.TextUtil;
/**
* <p>
* TriggerHandler class.
* </p>
*
* @author Forge
* @version $Id$
*/
public class TriggerHandler { public class TriggerHandler {
private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>(); private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>();
@@ -58,9 +48,6 @@ public class TriggerHandler {
private final ArrayList<Trigger> delayedTriggers = new ArrayList<Trigger>(); private final ArrayList<Trigger> delayedTriggers = new ArrayList<Trigger>();
private final List<TriggerWaiting> waitingTriggers = new ArrayList<TriggerWaiting>(); private final List<TriggerWaiting> waitingTriggers = new ArrayList<TriggerWaiting>();
/**
* Clean up temporary triggers.
*/
public final void cleanUpTemporaryTriggers() { public final void cleanUpTemporaryTriggers() {
final List<Card> absolutelyAllCards = Singletons.getModel().getGame().getCardsInGame(); final List<Card> absolutelyAllCards = Singletons.getModel().getGame().getCardsInGame();
for (final Card c : absolutelyAllCards) { for (final Card c : absolutelyAllCards) {
@@ -79,34 +66,14 @@ public class TriggerHandler {
} }
/**
* <p>
* registerDelayedTrigger.
* </p>
*
* @param trig
* a {@link forge.card.trigger.Trigger} object.
*/
public final void registerDelayedTrigger(final Trigger trig) { public final void registerDelayedTrigger(final Trigger trig) {
this.delayedTriggers.add(trig); this.delayedTriggers.add(trig);
} }
/**
* <p>
* clearDelayedTrigger.
* </p>
*/
public final void clearDelayedTrigger() { public final void clearDelayedTrigger() {
this.delayedTriggers.clear(); this.delayedTriggers.clear();
} }
/**
* <p>
* clearDelayedTrigger.
* </p>
* @param card
* a card object.
*/
public final void clearDelayedTrigger(Card card) { public final void clearDelayedTrigger(Card card) {
ArrayList<Trigger> deltrigs = new ArrayList<Trigger>(this.delayedTriggers); ArrayList<Trigger> deltrigs = new ArrayList<Trigger>(this.delayedTriggers);
@@ -118,45 +85,14 @@ public class TriggerHandler {
} }
/**
* <p>
* suppressMode.
* </p>
*
* @param mode
* a {@link java.lang.String} object.
*/
public final void suppressMode(final TriggerType mode) { public final void suppressMode(final TriggerType mode) {
this.suppressedModes.add(mode); this.suppressedModes.add(mode);
} }
/**
* <p>
* clearSuppression.
* </p>
*
* @param mode
* a {@link java.lang.String} object.
*/
public final void clearSuppression(final TriggerType mode) { public final void clearSuppression(final TriggerType mode) {
this.suppressedModes.remove(mode); this.suppressedModes.remove(mode);
} }
/**
* <p>
* parseTrigger.
* </p>
*
* @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, public static Trigger parseTrigger(final String name, final String trigParse, final Card host,
final boolean intrinsic) { final boolean intrinsic) {
final Trigger ret = TriggerHandler.parseTrigger(trigParse, host, intrinsic); final Trigger ret = TriggerHandler.parseTrigger(trigParse, host, intrinsic);
@@ -164,37 +100,11 @@ public class TriggerHandler {
return ret; return ret;
} }
/**
* <p>
* parseTrigger.
* </p>
*
* @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) { public static Trigger parseTrigger(final String trigParse, final Card host, final boolean intrinsic) {
final HashMap<String, String> mapParams = TriggerHandler.parseParams(trigParse); final HashMap<String, String> mapParams = TriggerHandler.parseParams(trigParse);
return TriggerHandler.parseTrigger(mapParams, host, intrinsic); return TriggerHandler.parseTrigger(mapParams, host, intrinsic);
} }
/**
* <p>
* parseTrigger.
* </p>
*
* @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<String, String> mapParams, final Card host, final boolean intrinsic) { public static Trigger parseTrigger(final Map<String, String> mapParams, final Card host, final boolean intrinsic) {
Trigger ret = null; Trigger ret = null;
@@ -214,15 +124,6 @@ public class TriggerHandler {
return ret; return ret;
} }
/**
* <p>
* parseParams.
* </p>
*
* @param trigParse
* a {@link java.lang.String} object.
* @return a {@link java.util.HashMap} object.
*/
private static HashMap<String, String> parseParams(final String trigParse) { private static HashMap<String, String> parseParams(final String trigParse) {
final HashMap<String, String> mapParams = new HashMap<String, String>(); final HashMap<String, String> mapParams = new HashMap<String, String>();
@@ -255,17 +156,6 @@ public class TriggerHandler {
return mapParams; return mapParams;
} }
/**
* <p>
* runTrigger.
* </p>
*
* @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<String, Object> runParams, boolean holdTrigger) { public final void runTrigger(final TriggerType mode, final Map<String, Object> runParams, boolean holdTrigger) {
if (this.suppressedModes.contains(mode)) { if (this.suppressedModes.contains(mode)) {
return; return;
@@ -400,19 +290,6 @@ public class TriggerHandler {
// Checks if the conditions are right for a single trigger to go off, and // Checks if the conditions are right for a single trigger to go off, and
// runs it if so. // runs it if so.
// Return true if the trigger went off, false otherwise. // Return true if the trigger went off, false otherwise.
/**
* <p>
* runSingleTrigger.
* </p>
*
* @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<String, Object> runParams) { private boolean runSingleTrigger(final Trigger regtrig, final TriggerType mode, final Map<String, Object> runParams) {
final Map<String, String> triggerParams = regtrig.getMapParams(); final Map<String, String> triggerParams = regtrig.getMapParams();
final GameState game = Singletons.getModel().getGame(); final GameState game = Singletons.getModel().getGame();
@@ -557,12 +434,6 @@ public class TriggerHandler {
private final ArrayList<Integer> triggersAlwaysAccept = new ArrayList<Integer>(); private final ArrayList<Integer> triggersAlwaysAccept = new ArrayList<Integer>();
private final ArrayList<Integer> triggersAlwaysDecline = new ArrayList<Integer>(); private final ArrayList<Integer> triggersAlwaysDecline = new ArrayList<Integer>();
/**
* Sets the always accept trigger.
*
* @param trigID
* the new always accept trigger
*/
public final void setAlwaysAcceptTrigger(final int trigID) { public final void setAlwaysAcceptTrigger(final int trigID) {
if (this.triggersAlwaysDecline.contains(trigID)) { if (this.triggersAlwaysDecline.contains(trigID)) {
this.triggersAlwaysDecline.remove((Object) 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) { public final void setAlwaysDeclineTrigger(final int trigID) {
if (this.triggersAlwaysAccept.contains(trigID)) { if (this.triggersAlwaysAccept.contains(trigID)) {
this.triggersAlwaysAccept.remove((Object) 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) { public final void setAlwaysAskTrigger(final int trigID) {
this.triggersAlwaysAccept.remove((Object) trigID); this.triggersAlwaysAccept.remove((Object) trigID);
this.triggersAlwaysDecline.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) { public final boolean isAlwaysAccepted(final int trigID) {
return this.triggersAlwaysAccept.contains(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) { public final boolean isAlwaysDeclined(final int trigID) {
return this.triggersAlwaysDecline.contains(trigID); return this.triggersAlwaysDecline.contains(trigID);
} }
/**
* Clear trigger settings.
*/
public final void clearTriggerSettings() { public final void clearTriggerSettings() {
this.triggersAlwaysAccept.clear(); this.triggersAlwaysAccept.clear();
this.triggersAlwaysDecline.clear(); this.triggersAlwaysDecline.clear();

View File

@@ -26,19 +26,10 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil; import forge.view.ButtonUtil;
//import forge.Singletons;
//pays the cost of a card played from the player's hand //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 //the card is removed from the players hand if the cost is paid
//CANNOT be used for ABILITIES //CANNOT be used for ABILITIES
/**
* <p>
* Input_PayManaCost class.
* </p>
*
* @author Forge
* @version $Id$
*/
public class InputPayManaSimple extends InputPayManaBase { public class InputPayManaSimple extends InputPayManaBase {
// anything that uses this should be converted to Ability_Cost // anything that uses this should be converted to Ability_Cost
/** Constant <code>serialVersionUID=3467312982164195091L</code>. */ /** Constant <code>serialVersionUID=3467312982164195091L</code>. */

View File

@@ -20,6 +20,7 @@ import forge.gui.deckeditor.tables.DeckController;
import forge.gui.deckeditor.views.VCurrentDeck; import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.properties.NewConstants;
/** /**
* Controls the "current deck" panel in the deck editor UI. * 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 static File previousDirectory = null;
private JFileChooser fileChooser = new JFileChooser(); private JFileChooser fileChooser = new JFileChooser(NewConstants.DECK_BASE_DIR);
//========== Overridden methods //========== Overridden methods

View File

@@ -1,5 +1,7 @@
package forge.item; package forge.item;
import java.util.Locale;
import forge.Card; import forge.Card;
import forge.ImageCache; import forge.ImageCache;
import forge.card.CardEdition; import forge.card.CardEdition;
@@ -14,7 +16,33 @@ public class CardToken implements InventoryItemFromSet, IPaperCard {
private String imageFileName; private String imageFileName;
private CardRules card; 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) { public CardToken(final CardRules c, CardEdition edition0, final String imageFileName) {
this.card = c; this.card = c;
this.name = c.getName(); this.name = c.getName();

View File

@@ -19,7 +19,6 @@ package forge.quest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import forge.Card; import forge.Card;
import forge.card.CardEdition; import forge.card.CardEdition;
@@ -123,20 +122,6 @@ public class QuestUtil {
return list; 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);
}
/** /**
* <p> * <p>
* createToken. * createToken.
@@ -157,8 +142,7 @@ public class QuestUtil {
script.add("PT:"+ properties[2] + "/" + properties[3]); script.add("PT:"+ properties[2] + "/" + properties[3]);
script.add("Types:" + properties[5].replace(';', ' ')); script.add("Types:" + properties[5].replace(';', ' '));
script.add("Oracle:"); // tokens don't have texts yet script.add("Oracle:"); // tokens don't have texts yet
// c.setManaCost(properties[1]); String fileName = CardToken.makeTokenFileName(properties[1], properties[2], properties[3], properties[4]);
String fileName = properties[1] + "_" + properties[2] + "_" + properties[3] + "_" + toTokenFilename(properties[4]);
final CardToken c = new CardToken(CardRulesReader.parseSingleCard(script), CardEdition.UNKNOWN, fileName); final CardToken c = new CardToken(CardRulesReader.parseSingleCard(script), CardEdition.UNKNOWN, fileName);
return c; return c;
} }

View File

@@ -643,12 +643,12 @@ public class CardPanel extends JPanel implements CardContainer {
&& this.imagePanel.hasImage()) { && this.imagePanel.hasImage()) {
return; return;
} }
this.setGameCard(card); this.setGameCard(card);
if (!this.isShowing()) { if (!this.isShowing()) {
return; 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()); 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)) { if ((this.getGameCard() != null) && Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CARD_OVERLAY)) {
this.setText(this.getGameCard()); this.setText(this.getGameCard());