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.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;
}

View File

@@ -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<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" },
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[] { "" });
}
};

View File

@@ -2442,29 +2442,6 @@ public class CardFactoryUtil {
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,
final String manaCost, final String[] types, final int baseAttack, final int baseDefense,
final String[] intrinsicKeywords) {

View File

@@ -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;
/**
* <p>
* TriggerHandler class.
* </p>
*
* @author Forge
* @version $Id$
*/
public class TriggerHandler {
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 List<TriggerWaiting> waitingTriggers = new ArrayList<TriggerWaiting>();
/**
* Clean up temporary triggers.
*/
public final void cleanUpTemporaryTriggers() {
final List<Card> absolutelyAllCards = Singletons.getModel().getGame().getCardsInGame();
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) {
this.delayedTriggers.add(trig);
}
/**
* <p>
* clearDelayedTrigger.
* </p>
*/
public final void clearDelayedTrigger() {
this.delayedTriggers.clear();
}
/**
* <p>
* clearDelayedTrigger.
* </p>
* @param card
* a card object.
*/
public final void clearDelayedTrigger(Card card) {
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) {
this.suppressedModes.add(mode);
}
/**
* <p>
* clearSuppression.
* </p>
*
* @param mode
* a {@link java.lang.String} object.
*/
public final void clearSuppression(final TriggerType 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,
final boolean intrinsic) {
final Trigger ret = TriggerHandler.parseTrigger(trigParse, host, intrinsic);
@@ -164,37 +100,11 @@ public class TriggerHandler {
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) {
final HashMap<String, String> mapParams = TriggerHandler.parseParams(trigParse);
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) {
Trigger ret = null;
@@ -214,15 +124,6 @@ public class TriggerHandler {
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) {
final HashMap<String, String> mapParams = new HashMap<String, String>();
@@ -255,17 +156,6 @@ public class TriggerHandler {
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) {
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.
/**
* <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) {
final Map<String, String> triggerParams = regtrig.getMapParams();
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> triggersAlwaysDecline = new ArrayList<Integer>();
/**
* 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();

View File

@@ -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
/**
* <p>
* Input_PayManaCost class.
* </p>
*
* @author Forge
* @version $Id$
*/
public class InputPayManaSimple extends InputPayManaBase {
// anything that uses this should be converted to Ability_Cost
/** 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.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

View File

@@ -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();

View File

@@ -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);
}
/**
* <p>
* 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;
}

View File

@@ -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());