Extract TokenInfo from CardFactory

This commit is contained in:
Sol
2017-10-10 00:52:32 +00:00
parent e586debb58
commit 9f4184974e
7 changed files with 194 additions and 168 deletions

View File

@@ -29,6 +29,7 @@ import forge.game.card.CardCollection;
import forge.game.card.CardCollectionView;
import forge.game.card.CardFactory;
import forge.game.card.CounterType;
import forge.game.card.token.TokenInfo;
import forge.game.combat.Combat;
import forge.game.combat.CombatUtil;
import forge.game.event.GameEventAttackersDeclared;
@@ -217,7 +218,7 @@ public abstract class GameState {
newText.append(";");
}
if (c.isToken()) {
newText.append("t:" + new CardFactory.TokenInfo(c).toString());
newText.append("t:" + new TokenInfo(c).toString());
} else {
if (c.getPaperCard() == null) {
return;
@@ -944,8 +945,9 @@ public abstract class GameState {
Card c;
boolean hasSetCurSet = false;
if (cardinfo[0].startsWith("t:")) {
// TODO Make sure Game State conversion works with new tokens
String tokenStr = cardinfo[0].substring(2);
c = CardFactory.makeOneToken(CardFactory.TokenInfo.fromString(tokenStr), player);
c = new TokenInfo(tokenStr).makeOneToken(player);
} else {
PaperCard pc = StaticData.instance().getCommonCards().getCard(cardinfo[0], setCode);
if (pc == null) {

View File

@@ -9,6 +9,7 @@ import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType;
import forge.game.card.*;
import forge.game.card.token.TokenInfo;
import forge.game.combat.Combat;
import forge.game.cost.CostPart;
import forge.game.cost.CostPutCounter;
@@ -450,9 +451,9 @@ public class TokenAi extends SpellAbilityAi {
}
final String substitutedName = tokenName.equals("ChosenType") ? host.getChosenType() : tokenName;
final String imageName = imageNames.get(MyRandom.getRandom().nextInt(imageNames.size()));
final CardFactory.TokenInfo tokenInfo = new CardFactory.TokenInfo(substitutedName, imageName,
final TokenInfo tokenInfo = new TokenInfo(substitutedName, imageName,
cost, substitutedTypes, tokenKeywords, finalPower, finalToughness);
Card token = CardFactory.makeOneToken(tokenInfo, ai);
Card token = tokenInfo.makeOneToken(ai);
if (token == null) {
return null;

View File

@@ -22,6 +22,7 @@ import forge.game.card.Card;
import forge.game.card.CardFactory;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CounterType;
import forge.game.card.token.TokenInfo;
import forge.game.combat.Combat;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
@@ -236,8 +237,7 @@ public class GameCopier {
private static final boolean USE_FROM_PAPER_CARD = true;
private Card createCardCopy(Game newGame, Player newOwner, Card c) {
if (c.isToken() && !c.isEmblem()) {
String tokenStr = new CardFactory.TokenInfo(c).toString();
Card result = CardFactory.makeOneToken(CardFactory.TokenInfo.fromString(tokenStr), newOwner);
Card result = new TokenInfo(c).makeOneToken(newOwner);
CardFactory.copyCopiableCharacteristics(c, result);
CardFactory.copyCopiableAbilities(c, result);
return result;