* restores token images

Card: dropped imageName field (which was commonly mixed up with imageFileName)
Starting cards for quest and challenges no longer use functions (CardToken helps a lot)
Quest challenges code: Token parsing remake (to produce CardRules instance and wrap it into CardToken)
some utility functions were moved closer to usage points
This commit is contained in:
Maxmtg
2013-02-22 22:50:40 +00:00
parent d2361e87b8
commit c49bf52b8f
15 changed files with 120 additions and 189 deletions

View File

@@ -3524,32 +3524,6 @@ public class Card extends GameEntity implements Comparable<Card> {
return this.sickness && this.isCreature() && !this.hasKeyword("Haste"); return this.sickness && this.isCreature() && !this.hasKeyword("Haste");
} }
/**
* <p>
* Setter for the field <code>imageName</code>.
* </p>
*
* @param s
* a {@link java.lang.String} object.
*/
public final void setImageName(final String s) {
this.getCharacteristics().setImageName(s);
}
/**
* <p>
* Getter for the field <code>imageName</code>.
* </p>
*
* @return a {@link java.lang.String} object.
*/
public final String getImageName() {
if (!this.getCharacteristics().getImageName().equals("")) {
return this.getCharacteristics().getImageName();
}
return this.getName();
}
/** /**
* <p> * <p>
* Getter for the field <code>owner</code>. * Getter for the field <code>owner</code>.

View File

@@ -477,7 +477,7 @@ public final class CardUtil {
ret.setName(""); ret.setName("");
ret.setType(types); ret.setType(types);
ret.setImageName(NewConstants.MORPH_IMAGE_FILE_NAME); ret.setImageFilename(NewConstants.MORPH_IMAGE_FILE_NAME);
return ret; return ret;
} }

View File

@@ -144,7 +144,7 @@ public class ImageCache {
private static String getKey(final Card card) { private static String getKey(final Card card) {
if ((card.isToken() && !card.isCopiedToken()) || card.isFaceDown()) { if ((card.isToken() && !card.isCopiedToken()) || card.isFaceDown()) {
return ImageCache.TOKEN + GuiDisplayUtil.cleanString(card.getImageName()); return ImageCache.TOKEN + GuiDisplayUtil.cleanString(card.getImageFilename());
} }
return card.getImageFilename(); // key; return card.getImageFilename(); // key;

View File

@@ -51,7 +51,6 @@ public class CardCharacteristics {
private ArrayList<StaticAbility> staticAbilities = new ArrayList<StaticAbility>(); private ArrayList<StaticAbility> staticAbilities = new ArrayList<StaticAbility>();
private ArrayList<String> staticAbilityStrings = new ArrayList<String>(); private ArrayList<String> staticAbilityStrings = new ArrayList<String>();
private String imageFilename = ""; private String imageFilename = "";
private String imageName = "";
private Map<String, String> sVars = new TreeMap<String, String>(); private Map<String, String> sVars = new TreeMap<String, String>();
/** /**
@@ -308,25 +307,6 @@ public class CardCharacteristics {
this.staticAbilityStrings = staticAbilityStrings0; this.staticAbilityStrings = staticAbilityStrings0;
} }
/**
* Gets the image name.
*
* @return the imageName
*/
public String getImageName() {
return this.imageName;
}
/**
* Sets the image name.
*
* @param imageName0
* the imageName to set
*/
public void setImageName(final String imageName0) {
this.imageName = imageName0;
}
/** /**
* @return the replacementEffects * @return the replacementEffects
*/ */
@@ -426,8 +406,6 @@ public class CardCharacteristics {
this.staticAbilityStrings = new ArrayList<String>(source.getStaticAbilityStrings()); this.staticAbilityStrings = new ArrayList<String>(source.getStaticAbilityStrings());
// String imageFilename = copy reference // String imageFilename = copy reference
this.imageFilename = source.getImageFilename(); this.imageFilename = source.getImageFilename();
// String imageName = "";
this.imageName = source.getImageName();
// Map<String, String> sVars // Map<String, String> sVars
this.sVars = new TreeMap<String, String>(source.getSVars()); this.sVars = new TreeMap<String, String>(source.getSVars());
this.replacementEffects = new ArrayList<ReplacementEffect>(); this.replacementEffects = new ArrayList<ReplacementEffect>();

View File

@@ -328,7 +328,7 @@ public class AbilityUtils {
} }
if (calcX[0].startsWith("Count")) { if (calcX[0].startsWith("Count")) {
return CardFactoryUtil.xCount(card, calcX[1], ability) * multiplier; return AbilityUtils.xCount(card, calcX[1], ability) * multiplier;
} else if (calcX[0].startsWith("Number")) { } else if (calcX[0].startsWith("Number")) {
return CardFactoryUtil.xCount(card, svarval) * multiplier; return CardFactoryUtil.xCount(card, svarval) * multiplier;
} else if (calcX[0].startsWith("SVar")) { } else if (calcX[0].startsWith("SVar")) {
@@ -1196,4 +1196,38 @@ public class AbilityUtils {
resolveSubAbilities(sa, usedStack, game); resolveSubAbilities(sa, usedStack, game);
} }
/**
* <p>
* Parse non-mana X variables.
* </p>
*
* @param c
* a {@link forge.Card} object.
* @param s
* a {@link java.lang.String} object.
* @param sa
* a {@link forge.SpellAbility} object.
* @return a int.
*/
public static int xCount(final Card c, final String s, final SpellAbility sa) {
final String[] l = s.split("/");
final String[] m = CardFactoryUtil.parseMath(l);
final String[] sq;
sq = l[0].split("\\.");
if (sa != null) {
// Count$Kicked.<numHB>.<numNotHB>
if (sq[0].startsWith("Kicked")) {
if (sa.isKicked()) {
return CardFactoryUtil.doXMath(Integer.parseInt(sq[1]), m, c); // Kicked
} else {
return CardFactoryUtil.doXMath(Integer.parseInt(sq[2]), m, c); // not Kicked
}
}
}
return CardFactoryUtil.xCount(c, s);
}
} }

View File

@@ -499,8 +499,8 @@ public class AttachAi extends SpellAbilityAi {
continue; continue;
} }
if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) { if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) {
totToughness += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddToughness")); totToughness += AttachAi.parseSVar(attachSource, stabMap.get("AddToughness"));
totPower += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddPower")); totPower += AttachAi.parseSVar(attachSource, stabMap.get("AddPower"));
String kws = stabMap.get("AddKeyword"); String kws = stabMap.get("AddKeyword");
if (kws != null) { if (kws != null) {
@@ -611,6 +611,30 @@ public class AttachAi extends SpellAbilityAi {
return true; return true;
} }
/**
* parseSVar TODO - flesh out javadoc for this method.
*
* @param hostCard
* the Card with the SVar on it
* @param amount
* a String
* @return the calculated number
*/
public static int parseSVar(final Card hostCard, final String amount) {
int num = 0;
if (amount == null) {
return num;
}
try {
num = Integer.valueOf(amount);
} catch (final NumberFormatException e) {
num = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(amount).split("\\$")[1]);
}
return num;
}
/** /**
* Attach preference. * Attach preference.
* *
@@ -720,8 +744,8 @@ public class AttachAi extends SpellAbilityAi {
continue; continue;
} }
if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) { if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) {
totToughness += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddToughness")); totToughness += AttachAi.parseSVar(attachSource, stabMap.get("AddToughness"));
totPower += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddPower")); totPower += AttachAi.parseSVar(attachSource, stabMap.get("AddPower"));
grantingAbilities |= stabMap.containsKey("AddAbility"); grantingAbilities |= stabMap.containsKey("AddAbility");

View File

@@ -93,7 +93,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
copy = CardFactoryUtil.copyStats(c); copy = CardFactoryUtil.copyStats(c);
copy.setName(c.getName()); copy.setName(c.getName());
copy.setImageName(c.getImageName()); copy.setImageFilename(c.getImageFilename());
copy.setOwner(controller); copy.setOwner(controller);
copy.addController(controller); copy.addController(controller);

View File

@@ -104,13 +104,10 @@ public class EffectEffect extends SpellAbilityEffect {
// nuked // nuked
eff.addController(controller); eff.addController(controller);
eff.setOwner(controller); eff.setOwner(controller);
eff.setImageName(hostCard.getImageName()); eff.setImageFilename(hostCard.getImageFilename());
eff.setColor(hostCard.getColor()); eff.setColor(hostCard.getColor());
eff.setImmutable(true); eff.setImmutable(true);
eff.setEffectSource(hostCard); eff.setEffectSource(hostCard);
if (sa.hasParam("Image")) {
eff.setImageName(sa.getParam("Image"));
}
// Effects should be Orange or something probably // Effects should be Orange or something probably

View File

@@ -234,11 +234,16 @@ public class CardFactory {
public final Card getCard(final IPaperCard cp, final Player owner) { public final Card getCard(final IPaperCard cp, final Player owner) {
//System.out.println(cardName); //System.out.println(cardName);
Card c = this.getCard2(cp.getRules(), owner); CardRules cardRules = cp.getRules();
final Card c = readCard(cardRules);
c.setRules(cardRules);
c.setOwner(owner);
buildAbilities(c);
c.setCurSetCode(cp.getEdition()); c.setCurSetCode(cp.getEdition());
c.setRandomPicture(cp.getArtIndex() + 1); c.setRandomPicture(cp.getArtIndex() + 1);
String originalPicture = cp.getImageFilename(); String originalPicture = cp.getImageFilename();
//System.out.println(c.getName() + " -> " + originalPicture);
c.setImageFilename(originalPicture); c.setImageFilename(originalPicture);
c.setToken(cp.isToken()); c.setToken(cp.isToken());
@@ -263,14 +268,6 @@ public class CardFactory {
} }
protected Card getCard2(final CardRules cardRules, final Player owner) {
final Card card = readCard(cardRules);
card.setRules(cardRules);
card.setOwner(owner);
buildAbilities(card);
return card;
}
private static void buildAbilities(final Card card) { private static void buildAbilities(final Card card) {
final String cardName = card.getName(); final String cardName = card.getName();
@@ -319,7 +316,7 @@ public class CardFactory {
public static Card readCard(final CardRules rules) { private static Card readCard(final CardRules rules) {
final Card card = new Card(); final Card card = new Card();

View File

@@ -1947,64 +1947,6 @@ public class CardFactoryUtil {
return CardFactoryUtil.doXMath(n, m, source); return CardFactoryUtil.doXMath(n, m, source);
} }
/**
* parseSVar TODO - flesh out javadoc for this method.
*
* @param hostCard
* the Card with the SVar on it
* @param amount
* a String
* @return the calculated number
*/
public static int parseSVar(final Card hostCard, final String amount) {
int num = 0;
if (amount == null) {
return num;
}
try {
num = Integer.valueOf(amount);
} catch (final NumberFormatException e) {
num = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(amount).split("\\$")[1]);
}
return num;
}
/**
* <p>
* Parse non-mana X variables.
* </p>
*
* @param c
* a {@link forge.Card} object.
* @param s
* a {@link java.lang.String} object.
* @param sa
* a {@link forge.SpellAbility} object.
* @return a int.
*/
public static int xCount(final Card c, final String s, final SpellAbility sa) {
final String[] l = s.split("/");
final String[] m = CardFactoryUtil.parseMath(l);
final String[] sq;
sq = l[0].split("\\.");
if (sa != null) {
// Count$Kicked.<numHB>.<numNotHB>
if (sq[0].startsWith("Kicked")) {
if (sa.isKicked()) {
return CardFactoryUtil.doXMath(Integer.parseInt(sq[1]), m, c); // Kicked
} else {
return CardFactoryUtil.doXMath(Integer.parseInt(sq[2]), m, c); // not Kicked
}
}
}
return xCount(c, s);
}
/** /**
* <p> * <p>
* Parse non-mana X variables. * Parse non-mana X variables.
@@ -3295,7 +3237,7 @@ public class CardFactoryUtil {
final List<Card> list = new ArrayList<Card>(); final List<Card> list = new ArrayList<Card>();
final Card c = new Card(); final Card c = new Card();
c.setName(name); c.setName(name);
c.setImageName(imageName); c.setImageFilename(imageName);
// TODO - most tokens mana cost is 0, this needs to be fixed // TODO - most tokens mana cost is 0, this needs to be fixed
// c.setManaCost(manaCost); // c.setManaCost(manaCost);
@@ -3356,7 +3298,7 @@ public class CardFactoryUtil {
final List<String> kal = thisToken.getIntrinsicKeyword(); final List<String> kal = thisToken.getIntrinsicKeyword();
final String[] tokenKeywords = new String[kal.size()]; final String[] tokenKeywords = new String[kal.size()];
kal.toArray(tokenKeywords); kal.toArray(tokenKeywords);
final List<Card> tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageName(), final List<Card> tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageFilename(),
thisToken.getController(), thisToken.getManaCost().toString(), tokenTypes, thisToken.getBaseAttack(), thisToken.getController(), thisToken.getManaCost().toString(), tokenTypes, thisToken.getBaseAttack(),
thisToken.getBaseDefense(), tokenKeywords); thisToken.getBaseDefense(), tokenKeywords);
@@ -3607,7 +3549,6 @@ public class CardFactoryUtil {
to.setSVars(from.getSVars()); to.setSVars(from.getSVars());
to.setIntrinsicAbilities(from.getIntrinsicAbilities()); to.setIntrinsicAbilities(from.getIntrinsicAbilities());
to.setImageName(from.getImageName());
to.setImageFilename(from.getImageFilename()); to.setImageFilename(from.getImageFilename());
to.setTriggers(from.getTriggers()); to.setTriggers(from.getTriggers());
to.setReplacementEffects(from.getReplacementEffects()); to.setReplacementEffects(from.getReplacementEffects());
@@ -4222,7 +4163,6 @@ public class CardFactoryUtil {
// play it gets nuked // play it gets nuked
eff.addController(card.getController()); eff.addController(card.getController());
eff.setOwner(card.getController()); eff.setOwner(card.getController());
eff.setImageName(card.getImageName());
eff.setColor(card.getColor()); eff.setColor(card.getColor());
eff.setImmutable(true); eff.setImmutable(true);
eff.setEffectSource(card); eff.setEffectSource(card);

View File

@@ -221,10 +221,12 @@ public class GameNew {
return myRemovedAnteCards; return myRemovedAnteCards;
} }
private static void putCardsOnBattlefield(Player player, Iterable<Card> cards) { private static void putCardsOnBattlefield(Player player, Iterable<? extends IPaperCard> cards) {
PlayerZone bf = player.getZone(ZoneType.Battlefield); PlayerZone bf = player.getZone(ZoneType.Battlefield);
if (cards != null) { if (cards != null) {
for (final Card c : cards) { for (final IPaperCard cp : cards) {
Card c = cp.toForgeCard(player);
c.setOwner(player);
c.addController(player); c.addController(player);
bf.add(c, false); bf.add(c, false);
c.setSickness(true); c.setSickness(true);

View File

@@ -3,12 +3,10 @@ package forge.game;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import com.google.common.base.Function;
import forge.Card;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.player.Player; import forge.game.player.Player;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.item.IPaperCard;
public class PlayerStartConditions { public class PlayerStartConditions {
@@ -18,9 +16,9 @@ public class PlayerStartConditions {
private static final Iterable<CardPrinted> EmptyList = Collections.unmodifiableList(new ArrayList<CardPrinted>()); private static final Iterable<CardPrinted> EmptyList = Collections.unmodifiableList(new ArrayList<CardPrinted>());
private int startingLife = 20; private int startingLife = 20;
private int startingHand = 7; private int startingHand = 7;
private Function<Player, Iterable<Card>> cardsOnBattlefield = null; private Iterable<IPaperCard> cardsOnBattlefield = null;
private Iterable<CardPrinted> cardsInCommand = null; private Iterable<? extends IPaperCard> cardsInCommand = null;
private Iterable<CardPrinted> schemes = null; private Iterable<? extends IPaperCard> schemes = null;
private Iterable<CardPrinted> planes = null; private Iterable<CardPrinted> planes = null;
public PlayerStartConditions(Deck deck0) { public PlayerStartConditions(Deck deck0) {
@@ -44,15 +42,15 @@ public class PlayerStartConditions {
public final int getStartingLife() { public final int getStartingLife() {
return startingLife; return startingLife;
} }
public final Iterable<Card> getCardsOnBattlefield(Player p) { public final Iterable<? extends IPaperCard> getCardsOnBattlefield(Player p) {
return cardsOnBattlefield == null ? null : cardsOnBattlefield.apply(p); return cardsOnBattlefield == null ? EmptyList : cardsOnBattlefield;
} }
public final void setStartingLife(int startingLife) { public final void setStartingLife(int startingLife) {
this.startingLife = startingLife; this.startingLife = startingLife;
} }
public final void setCardsOnBattlefield(Function<Player, Iterable<Card>> cardsOnTable) { public final void setCardsOnBattlefield(Iterable<IPaperCard> cardsOnTable) {
this.cardsOnBattlefield = cardsOnTable; this.cardsOnBattlefield = cardsOnTable;
} }
@@ -73,28 +71,28 @@ public class PlayerStartConditions {
/** /**
* @return the cardsInCommand * @return the cardsInCommand
*/ */
public Iterable<CardPrinted> getCardsInCommand(Player p) { public Iterable<? extends IPaperCard> getCardsInCommand(Player p) {
return cardsInCommand == null ? EmptyList : cardsInCommand; return cardsInCommand == null ? EmptyList : cardsInCommand;
} }
/** /**
* @param function the cardsInCommand to set * @param function the cardsInCommand to set
*/ */
public void setCardsInCommand(Iterable<CardPrinted> function) { public void setCardsInCommand(Iterable<? extends IPaperCard> function) {
this.cardsInCommand = function; this.cardsInCommand = function;
} }
/** /**
* @return the schemes * @return the schemes
*/ */
public Iterable<CardPrinted> getSchemes(Player p) { public Iterable<? extends IPaperCard> getSchemes(Player p) {
return schemes == null ? EmptyList : schemes; return schemes == null ? EmptyList : schemes;
} }
/** /**
* @param schemes0 the schemes to set * @param schemes0 the schemes to set
*/ */
public void setSchemes(Iterable<CardPrinted> s) { public void setSchemes(Iterable<? extends IPaperCard> s) {
this.schemes = s; this.schemes = s;
} }

View File

@@ -11,8 +11,6 @@ import javax.swing.SwingWorker;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import com.google.common.base.Function;
import forge.Card;
import forge.Singletons; import forge.Singletons;
import forge.card.CardEdition; import forge.card.CardEdition;
import forge.control.FControl; import forge.control.FControl;
@@ -21,7 +19,6 @@ import forge.game.GameType;
import forge.game.MatchStartHelper; import forge.game.MatchStartHelper;
import forge.game.PlayerStartConditions; import forge.game.PlayerStartConditions;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.game.player.Player;
import forge.game.player.PlayerType; import forge.game.player.PlayerType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -413,10 +410,8 @@ public class SSubmenuQuestUtil {
humanStart.setStartingLife(qData.getAssets().getLife(qData.getMode()) + extraLifeHuman); humanStart.setStartingLife(qData.getAssets().getLife(qData.getMode()) + extraLifeHuman);
aiStart.setStartingLife(lifeAI); aiStart.setStartingLife(lifeAI);
humanStart.setCardsOnBattlefield(new Function<Player, Iterable<Card>>() { humanStart.setCardsOnBattlefield(QuestUtil.getHumanStartingCards(qData, event));
@Override public Iterable<Card> apply(Player p) { return QuestUtil.getHumanStartingCards(qData, event, p); } }); aiStart.setCardsOnBattlefield(QuestUtil.getComputerStartingCards(event));
aiStart.setCardsOnBattlefield(new Function<Player, Iterable<Card>>() {
@Override public Iterable<Card> apply(Player p) { return QuestUtil.getComputerStartingCards(event, p); } });
} // End isFantasy } // End isFantasy
MatchStartHelper msh = new MatchStartHelper(); MatchStartHelper msh = new MatchStartHelper();

View File

@@ -1,7 +1,6 @@
package forge.item; package forge.item;
import forge.Card; import forge.Card;
import forge.ImageCache;
import forge.Singletons; import forge.Singletons;
import forge.card.CardRarity; import forge.card.CardRarity;
import forge.card.CardRules; import forge.card.CardRules;
@@ -20,6 +19,7 @@ public class CardToken implements InventoryItemFromSet, IPaperCard {
this.card = c; this.card = c;
this.name = c.getName(); this.name = c.getName();
this.edition = edition0; this.edition = edition0;
this.imageFileName = imageFileName;
} }
@Override public String getName() { return name; } @Override public String getName() { return name; }
@@ -31,7 +31,7 @@ public class CardToken implements InventoryItemFromSet, IPaperCard {
@Override public CardRarity getRarity() { return CardRarity.Common; } // They don't have rarity though! @Override public CardRarity getRarity() { return CardRarity.Common; } // They don't have rarity though!
@Override public String getImageFilename() { return ImageCache.TOKEN + imageFileName; } @Override public String getImageFilename() { return imageFileName; }
@Override public String getItemType() { return "Token"; } @Override public String getItemType() { return "Token"; }
@Override public Card getMatchingForgeCard() { return toForgeCard(null); } // hope this won't be queried too frequently, so no cache @Override public Card getMatchingForgeCard() { return toForgeCard(null); } // hope this won't be queried too frequently, so no cache

View File

@@ -19,9 +19,11 @@ package forge.quest;
import forge.Card; import forge.Card;
import forge.game.player.Player; import forge.card.CardEdition;
import forge.card.CardRulesReader;
import forge.item.CardDb; import forge.item.CardDb;
import forge.item.CardToken; import forge.item.CardToken;
import forge.item.IPaperCard;
import forge.quest.bazaar.QuestPetController; import forge.quest.bazaar.QuestPetController;
import java.util.ArrayList; import java.util.ArrayList;
@@ -62,11 +64,11 @@ public class QuestUtil {
* a {@link forge.quest.QuestEvent} object. * a {@link forge.quest.QuestEvent} object.
* @return a {@link forge.CardList} object. * @return a {@link forge.CardList} object.
*/ */
public static List<Card> getComputerStartingCards(final QuestEvent qe, Player ai) { public static List<IPaperCard> getComputerStartingCards(final QuestEvent qe) {
final List<Card> list = new ArrayList<Card>(); final List<IPaperCard> list = new ArrayList<IPaperCard>();
for (final String s : qe.getAiExtraCards()) { for (final String s : qe.getAiExtraCards()) {
list.add(QuestUtil.readExtraCard(s, ai)); list.add(QuestUtil.readExtraCard(s));
} }
return list; return list;
@@ -83,18 +85,16 @@ public class QuestUtil {
* a {@link forge.quest.data.QuestData} object. * a {@link forge.quest.data.QuestData} object.
* @return a {@link forge.CardList} object. * @return a {@link forge.CardList} object.
*/ */
public static List<Card> getHumanStartingCards(final QuestController qc, Player human) { public static List<IPaperCard> getHumanStartingCards(final QuestController qc) {
final List<Card> list = new ArrayList<Card>(); final List<IPaperCard> list = new ArrayList<IPaperCard>();
for (int iSlot = 0; iSlot < QuestController.MAX_PET_SLOTS; iSlot++) { for (int iSlot = 0; iSlot < QuestController.MAX_PET_SLOTS; iSlot++) {
String petName = qc.getSelectedPet(iSlot); String petName = qc.getSelectedPet(iSlot);
QuestPetController pet = qc.getPetsStorage().getPet(petName); QuestPetController pet = qc.getPetsStorage().getPet(petName);
if (pet != null) { if (pet != null) {
CardToken c = pet.getPetCard(qc.getAssets()); IPaperCard c = pet.getPetCard(qc.getAssets());
if (c != null) { if (c != null) {
Card copy = c.toForgeCard(human); list.add(c);
copy.setSickness(true);
list.add(copy);
} }
} }
} }
@@ -115,10 +115,10 @@ public class QuestUtil {
* a {@link forge.quest.QuestEvent} object. * a {@link forge.quest.QuestEvent} object.
* @return a {@link forge.CardList} object. * @return a {@link forge.CardList} object.
*/ */
public static List<Card> getHumanStartingCards(final QuestController qc, final QuestEvent qe, final Player human) { public static List<IPaperCard> getHumanStartingCards(final QuestController qc, final QuestEvent qe) {
final List<Card> list = QuestUtil.getHumanStartingCards(qc, human); final List<IPaperCard> list = QuestUtil.getHumanStartingCards(qc);
for (final String s : qe.getHumanExtraCards()) { for (final String s : qe.getHumanExtraCards()) {
list.add(QuestUtil.readExtraCard(s, human)); list.add(QuestUtil.readExtraCard(s));
} }
return list; return list;
} }
@@ -134,24 +134,17 @@ public class QuestUtil {
* (TOKEN;W;1;1;sheep;type;type;type...) * (TOKEN;W;1;1;sheep;type;type;type...)
* @return token Card * @return token Card
*/ */
public static Card createToken(final String s) { public static CardToken createToken(final String s) {
final String[] properties = s.split(";"); final String[] properties = s.split(";", 5);
final Card c = new Card();
c.setToken(true);
List<String> script = new ArrayList<String>();
script.add("Name:" + properties[4]);
script.add("Colors:" + properties[1]);
script.add("PT:"+ properties[2] + "/" + properties[3]);
script.add("Types:" + properties[5].replace(';', ' '));
// c.setManaCost(properties[1]); // c.setManaCost(properties[1]);
c.addColor(properties[1]); String fileName = properties[1] + " " + properties[2] + " " + properties[3] + " " + properties[4];
c.setBaseAttack(Integer.parseInt(properties[2])); final CardToken c = new CardToken(CardRulesReader.parseSingleCard(script), CardEdition.UNKNOWN.getCode(), fileName);
c.setBaseDefense(Integer.parseInt(properties[3]));
c.setName(properties[4]);
c.setImageName(properties[1] + " " + properties[2] + " " + properties[3] + " " + properties[4]);
int x = 5;
while (x != properties.length) {
c.addType(properties[x++]);
}
return c; return c;
} }
@@ -167,16 +160,15 @@ public class QuestUtil {
* the owner * the owner
* @return the card * @return the card
*/ */
public static Card readExtraCard(final String name, Player owner) { public static IPaperCard readExtraCard(final String name) {
// Token card creation // Token card creation
Card tempcard; IPaperCard tempcard;
if (name.startsWith("TOKEN")) { if (name.startsWith("TOKEN")) {
tempcard = QuestUtil.createToken(name); tempcard = QuestUtil.createToken(name);
tempcard.setOwner(owner);
return tempcard; return tempcard;
} }
// Standard card creation // Standard card creation
return CardDb.instance().getCard(name, true).toForgeCard(owner); return CardDb.instance().getCard(name, true);
} }
} // QuestUtil } // QuestUtil