cardfactory - no longer instanced. some methods moved here from CardFactoryUtil

This commit is contained in:
Maxmtg
2013-03-06 10:42:54 +00:00
parent bc354e9bd3
commit 0836137755
18 changed files with 163 additions and 189 deletions

View File

@@ -7,7 +7,7 @@ import forge.card.ability.effects.ChangeZoneAllEffect;
import forge.card.ability.effects.ChangeZoneEffect; import forge.card.ability.effects.ChangeZoneEffect;
import forge.card.ability.effects.ManaEffect; import forge.card.ability.effects.ManaEffect;
import forge.card.ability.effects.ManaReflectedEffect; import forge.card.ability.effects.ManaReflectedEffect;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactory;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.spellability.AbilityActivated; import forge.card.spellability.AbilityActivated;
import forge.card.spellability.AbilityManaPart; import forge.card.spellability.AbilityManaPart;
@@ -50,7 +50,7 @@ public class AbilityApiBased extends AbilityActivated {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
Target tgt = getTarget() == null ? null : new Target(getTarget()); Target tgt = getTarget() == null ? null : new Target(getTarget());
AbilityActivated res = new AbilityApiBased(api, getSourceCard(), getPayCosts(), tgt, params); AbilityActivated res = new AbilityApiBased(api, getSourceCard(), getPayCosts(), tgt, params);
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
return res; return res;
} }

View File

@@ -12,6 +12,7 @@ import forge.Command;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect; import forge.card.ability.SpellAbilityEffect;
import forge.card.cardfactory.CardFactory;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target; import forge.card.spellability.Target;
@@ -122,7 +123,7 @@ public class CloneEffect extends SpellAbilityEffect {
stateToCopy = cardToCopy.getCurState(); stateToCopy = cardToCopy.getCurState();
} }
CardFactoryUtil.copyState(cardToCopy, stateToCopy, tgtCard); CardFactory.copyState(cardToCopy, stateToCopy, tgtCard);
// must call this before addAbilityFactoryAbilities so cloned added abilities are handled correctly // must call this before addAbilityFactoryAbilities so cloned added abilities are handled correctly
addExtraCharacteristics(tgtCard, sa, origSVars); addExtraCharacteristics(tgtCard, sa, origSVars);
CardFactoryUtil.addAbilityFactoryAbilities(tgtCard); CardFactoryUtil.addAbilityFactoryAbilities(tgtCard);
@@ -140,7 +141,7 @@ public class CloneEffect extends SpellAbilityEffect {
tgtCard.addAlternateState(CardCharacteristicName.Flipped); tgtCard.addAlternateState(CardCharacteristicName.Flipped);
tgtCard.setState(CardCharacteristicName.Flipped); tgtCard.setState(CardCharacteristicName.Flipped);
} }
CardFactoryUtil.copyState(cardToCopy, CardCharacteristicName.Flipped, tgtCard); CardFactory.copyState(cardToCopy, CardCharacteristicName.Flipped, tgtCard);
addExtraCharacteristics(tgtCard, sa, origSVars); addExtraCharacteristics(tgtCard, sa, origSVars);
CardFactoryUtil.addAbilityFactoryAbilities(tgtCard); CardFactoryUtil.addAbilityFactoryAbilities(tgtCard);
for (int i = 0; i < tgtCard.getStaticAbilityStrings().size(); i++) { for (int i = 0; i < tgtCard.getStaticAbilityStrings().size(); i++) {

View File

@@ -12,6 +12,7 @@ import forge.Command;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect; import forge.card.ability.SpellAbilityEffect;
import forge.card.cardfactory.CardFactory;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.card.spellability.Ability; import forge.card.spellability.Ability;
@@ -82,7 +83,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
if (!c.isToken() || c.isCopiedToken()) { if (!c.isToken() || c.isCopiedToken()) {
// copy creature and put it onto the battlefield // copy creature and put it onto the battlefield
copy = Singletons.getModel().getCardFactory().getCard(CardDb.getCard(c), sa.getActivatingPlayer()); copy = CardFactory.getCard(CardDb.getCard(c), sa.getActivatingPlayer());
// when copying something stolen: // when copying something stolen:
copy.addController(controller); copy.addController(controller);
@@ -90,7 +91,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
copy.setToken(true); copy.setToken(true);
copy.setCopiedToken(true); copy.setCopiedToken(true);
} else { // isToken() } else { // isToken()
copy = CardFactoryUtil.copyStats(c); copy = CardFactory.copyStats(c);
copy.setName(c.getName()); copy.setName(c.getName());
copy.setImageFilename(c.getImageFilename()); copy.setImageFilename(c.getImageFilename());

View File

@@ -5,9 +5,9 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import forge.Card; import forge.Card;
import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect; import forge.card.ability.SpellAbilityEffect;
import forge.card.cardfactory.CardFactory;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
@@ -99,7 +99,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
for (final SpellAbility chosenSAcopy : chosenSAs) { for (final SpellAbility chosenSAcopy : chosenSAs) {
chosenSAcopy.setActivatingPlayer(controller); chosenSAcopy.setActivatingPlayer(controller);
for (int i = 0; i < amount; i++) { for (int i = 0; i < amount; i++) {
Singletons.getModel().getCardFactory().copySpellontoStack(card, chosenSAcopy.getSourceCard(), chosenSAcopy, true); CardFactory.copySpellontoStack(card, chosenSAcopy.getSourceCard(), chosenSAcopy, true);
} }
} }
} }
@@ -115,7 +115,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
chosenSA.setActivatingPlayer(controller); chosenSA.setActivatingPlayer(controller);
for (int i = 0; i < amount; i++) { for (int i = 0; i < amount; i++) {
Singletons.getModel().getCardFactory().copySpellontoStack(card, chosenSA.getSourceCard(), chosenSA, true); CardFactory.copySpellontoStack(card, chosenSA.getSourceCard(), chosenSA, true);
} }
} }
} // end resolve } // end resolve

View File

@@ -150,7 +150,7 @@ public class PlayEffect extends SpellAbilityEffect {
source.clearRemembered(); source.clearRemembered();
} }
if (sa.hasParam("CopyCard")) { if (sa.hasParam("CopyCard")) {
tgtCard = Singletons.getModel().getCardFactory().getCard(CardDb.getCard(tgtCard), sa.getActivatingPlayer()); tgtCard = CardDb.getCard(tgtCard).toForgeCard(sa.getActivatingPlayer());
// when copying something stolen: // when copying something stolen:
tgtCard.addController(sa.getActivatingPlayer()); tgtCard.addController(sa.getActivatingPlayer());

View File

@@ -17,7 +17,6 @@
*/ */
package forge.card.cardfactory; package forge.card.cardfactory;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -28,10 +27,10 @@ import forge.CardCharacteristicName;
import forge.CardColor; import forge.CardColor;
import forge.CardUtil; import forge.CardUtil;
import forge.Color; import forge.Color;
import forge.card.CardCharacteristics;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.CardSplitType; import forge.card.CardSplitType;
import forge.card.ICardFace; import forge.card.ICardFace;
import forge.card.ability.AbilityFactory;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.card.replacement.ReplacementHandler; import forge.card.replacement.ReplacementHandler;
@@ -41,13 +40,9 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent; import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.error.BugReporter;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiUtils;
import forge.item.CardDb; import forge.item.CardDb;
import forge.item.IPaperCard; import forge.item.IPaperCard;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
/** /**
* <p> * <p>
@@ -68,33 +63,6 @@ import forge.properties.NewConstants;
* @version $Id$ * @version $Id$
*/ */
public class CardFactory { public class CardFactory {
/**
* <p>
* Constructor for CardFactory.
* </p>
*
* @param file
* a {@link java.io.File} object.
*/
private final CardStorageReader reader;
public CardFactory(final File file) {
GuiUtils.checkEDT("CardFactory$constructor", false);
reader = new CardStorageReader(ForgeProps.getFile(NewConstants.CARDSFOLDER), true);
try {
// this fills in our map of card names to Card instances.
final List<CardRules> listCardRules = reader.loadCards();
CardDb.setup(listCardRules.iterator());
} catch (final Exception ex) {
BugReporter.reportException(ex);
}
} // constructor
/** /**
* <p> * <p>
* copyCard. * copyCard.
@@ -104,15 +72,15 @@ public class CardFactory {
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @return a {@link forge.Card} object. * @return a {@link forge.Card} object.
*/ */
public final Card copyCard(final Card in) { public final static Card copyCard(final Card in) {
final CardCharacteristicName curState = in.getCurState(); final CardCharacteristicName curState = in.getCurState();
if (in.isInAlternateState()) { if (in.isInAlternateState()) {
in.setState(CardCharacteristicName.Original); in.setState(CardCharacteristicName.Original);
} }
final Card out = this.getCard(CardDb.getCard(in), in.getOwner()); final Card out = getCard(CardDb.getCard(in), in.getOwner());
out.setUniqueNumber(in.getUniqueNumber()); out.setUniqueNumber(in.getUniqueNumber());
CardFactoryUtil.copyCharacteristics(in, out); CardFactory.copyCharacteristics(in, out);
if (in.hasAlternateState()) { if (in.hasAlternateState()) {
for (final CardCharacteristicName state : in.getStates()) { for (final CardCharacteristicName state : in.getStates()) {
in.setState(state); in.setState(state);
@@ -120,7 +88,7 @@ public class CardFactory {
out.addAlternateState(state); out.addAlternateState(state);
} }
out.setState(state); out.setState(state);
CardFactoryUtil.copyCharacteristics(in, out); CardFactory.copyCharacteristics(in, out);
} }
in.setState(curState); in.setState(curState);
out.setState(curState); out.setState(curState);
@@ -157,7 +125,7 @@ public class CardFactory {
* @param bCopyDetails * @param bCopyDetails
* a boolean. * a boolean.
*/ */
public final void copySpellontoStack(final Card source, final Card original, final SpellAbility sa, public final static void copySpellontoStack(final Card source, final Card original, final SpellAbility sa,
final boolean bCopyDetails) { final boolean bCopyDetails) {
//Player originalController = original.getController(); //Player originalController = original.getController();
Player controller = sa.getActivatingPlayer(); Player controller = sa.getActivatingPlayer();
@@ -243,7 +211,7 @@ public class CardFactory {
* @return a {@link forge.Card} instance, owned by owner; or the special * @return a {@link forge.Card} instance, owned by owner; or the special
* blankCard * blankCard
*/ */
public final Card getCard(final IPaperCard cp, final Player owner) { public final static Card getCard(final IPaperCard cp, final Player owner) {
//System.out.println(cardName); //System.out.println(cardName);
CardRules cardRules = cp.getRules(); CardRules cardRules = cp.getRules();
@@ -438,4 +406,110 @@ public class CardFactory {
} }
} }
/**
* <p>
* Copies stats like power, toughness, etc.
* </p>
*
* @param sim
* a {@link java.lang.Object} object.
* @return a {@link forge.Card} object.
*/
public static Card copyStats(final Card sim) {
final Card c = new Card();
c.setFlipCard(sim.isFlipCard());
c.setDoubleFaced(sim.isDoubleFaced());
c.setCurSetCode(sim.getCurSetCode());
final CardCharacteristicName origState = sim.getCurState();
for (final CardCharacteristicName state : sim.getStates()) {
c.addAlternateState(state);
c.setState(state);
sim.setState(state);
CardFactory.copyCharacteristics(sim, c);
}
sim.setState(origState);
c.setState(origState);
c.setRules(sim.getRules());
return c;
} // copyStats()
/**
* Copy characteristics.
*
* @param from
* the from
* @param to
* the to
*/
private static void copyCharacteristics(final Card from, final Card to) {
to.setBaseAttack(from.getBaseAttack());
to.setBaseDefense(from.getBaseDefense());
to.setBaseLoyalty(from.getBaseLoyalty());
to.setBaseAttackString(from.getBaseAttackString());
to.setBaseDefenseString(from.getBaseDefenseString());
to.setIntrinsicKeyword(from.getIntrinsicKeyword());
to.setName(from.getName());
to.setType(from.getCharacteristics().getType());
to.setText(from.getSpellText());
to.setManaCost(from.getManaCost());
to.setColor(from.getColor());
to.setSVars(from.getSVars());
to.setIntrinsicAbilities(from.getIntrinsicAbilities());
to.setImageFilename(from.getImageFilename());
to.setTriggers(from.getTriggers());
to.setReplacementEffects(from.getReplacementEffects());
to.setStaticAbilityStrings(from.getStaticAbilityStrings());
}
/**
* Copy characteristics.
*
* @param from
* the from
* @param stateToCopy
* the state to copy
* @param to
* the to
*/
public static void copyState(final Card from, final CardCharacteristicName stateToCopy, final Card to) {
// copy characteristics not associated with a state
to.setBaseLoyalty(from.getBaseLoyalty());
to.setBaseAttackString(from.getBaseAttackString());
to.setBaseDefenseString(from.getBaseDefenseString());
to.setText(from.getSpellText());
// get CardCharacteristics for desired state
CardCharacteristics characteristics = from.getState(stateToCopy);
to.getCharacteristics().copy(characteristics);
// handle triggers and replacement effect through Card class interface
to.setTriggers(characteristics.getTriggers());
to.setReplacementEffects(characteristics.getReplacementEffects());
}
public static void copySpellAbility(SpellAbility from, SpellAbility to) {
to.setDescription(from.getDescription());
to.setStackDescription(from.getDescription());
if (from.getSubAbility() != null) {
to.setSubAbility(from.getSubAbility().getCopy());
}
if (from.getRestrictions() != null) {
to.setRestrictions(from.getRestrictions());
}
if (from.getConditions() != null) {
to.setConditions(from.getConditions());
}
for (String sVar : from.getSVars()) {
to.setSVar(sVar, from.getSVar(sVar));
}
}
} // end class AbstractCardFactory } // end class AbstractCardFactory

View File

@@ -49,7 +49,7 @@ class CardFactoryArtifacts {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
AbilityActivated res = new AbilityGrindstone(getSourceCard(), AbilityActivated res = new AbilityGrindstone(getSourceCard(),
getPayCosts(), getTarget() == null ? null : new Target(getTarget())); getPayCosts(), getTarget() == null ? null : new Target(getTarget()));
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
return res; return res;
} }
@@ -119,7 +119,7 @@ class CardFactoryArtifacts {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
AbilityActivated res = new AbilityScrollRack(getSourceCard(), AbilityActivated res = new AbilityScrollRack(getSourceCard(),
getPayCosts(), getTarget() == null ? null : new Target(getTarget())); getPayCosts(), getTarget() == null ? null : new Target(getTarget()));
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
return res; return res;
} }
@@ -262,7 +262,7 @@ class CardFactoryArtifacts {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
AbilityActivated res = new AbilityTemporalAperture(getSourceCard(), AbilityActivated res = new AbilityTemporalAperture(getSourceCard(),
getPayCosts(), getTarget() == null ? null : new Target(getTarget())); getPayCosts(), getTarget() == null ? null : new Target(getTarget()));
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
return res; return res;
} }

View File

@@ -41,7 +41,6 @@ import forge.Constant;
import forge.CounterType; import forge.CounterType;
import forge.GameEntity; import forge.GameEntity;
import forge.Singletons; import forge.Singletons;
import forge.card.CardCharacteristics;
import forge.card.ability.AbilityFactory; import forge.card.ability.AbilityFactory;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType; import forge.card.ability.ApiType;
@@ -148,7 +147,7 @@ public class CardFactoryUtil {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
AbilityActivated res = new AbilityUnearth(getSourceCard(), AbilityActivated res = new AbilityUnearth(getSourceCard(),
getPayCosts(), getTarget() == null ? null : new Target(getTarget())); getPayCosts(), getTarget() == null ? null : new Target(getTarget()));
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
final SpellAbilityRestriction restrict = new SpellAbilityRestriction(); final SpellAbilityRestriction restrict = new SpellAbilityRestriction();
restrict.setZone(ZoneType.Graveyard); restrict.setZone(ZoneType.Graveyard);
restrict.setSorcerySpeed(true); restrict.setSorcerySpeed(true);
@@ -361,7 +360,7 @@ public class CardFactoryUtil {
public AbilityActivated getCopy() { public AbilityActivated getCopy() {
AbilityActivated res = new AbilityTransmute(getSourceCard(), AbilityActivated res = new AbilityTransmute(getSourceCard(),
getPayCosts(), getTarget() == null ? null : new Target(getTarget())); getPayCosts(), getTarget() == null ? null : new Target(getTarget()));
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
res.getRestrictions().setZone(ZoneType.Hand); res.getRestrictions().setZone(ZoneType.Hand);
return res; return res;
} }
@@ -2490,7 +2489,7 @@ public class CardFactoryUtil {
final int multiplier = controller.getTokenDoublersMagnitude(); final int multiplier = controller.getTokenDoublersMagnitude();
for (int i = 0; i < multiplier; i++) { for (int i = 0; i < multiplier; i++) {
Card temp = CardFactoryUtil.copyStats(c); Card temp = CardFactory.copyStats(c);
for (final String kw : intrinsicKeywords) { for (final String kw : intrinsicKeywords) {
temp.addIntrinsicKeyword(kw); temp.addIntrinsicKeyword(kw);
@@ -2671,112 +2670,6 @@ public class CardFactoryUtil {
|| (c == CounterType.TIME); || (c == CounterType.TIME);
} }
/**
* <p>
* Copies stats like power, toughness, etc.
* </p>
*
* @param sim
* a {@link java.lang.Object} object.
* @return a {@link forge.Card} object.
*/
public static Card copyStats(final Card sim) {
final Card c = new Card();
c.setFlipCard(sim.isFlipCard());
c.setDoubleFaced(sim.isDoubleFaced());
c.setCurSetCode(sim.getCurSetCode());
final CardCharacteristicName origState = sim.getCurState();
for (final CardCharacteristicName state : sim.getStates()) {
c.addAlternateState(state);
c.setState(state);
sim.setState(state);
CardFactoryUtil.copyCharacteristics(sim, c);
}
sim.setState(origState);
c.setState(origState);
c.setRules(sim.getRules());
return c;
} // copyStats()
/**
* Copy characteristics.
*
* @param from
* the from
* @param to
* the to
*/
public static void copyCharacteristics(final Card from, final Card to) {
to.setBaseAttack(from.getBaseAttack());
to.setBaseDefense(from.getBaseDefense());
to.setBaseLoyalty(from.getBaseLoyalty());
to.setBaseAttackString(from.getBaseAttackString());
to.setBaseDefenseString(from.getBaseDefenseString());
to.setIntrinsicKeyword(from.getIntrinsicKeyword());
to.setName(from.getName());
to.setType(from.getCharacteristics().getType());
to.setText(from.getSpellText());
to.setManaCost(from.getManaCost());
to.setColor(from.getColor());
to.setSVars(from.getSVars());
to.setIntrinsicAbilities(from.getIntrinsicAbilities());
to.setImageFilename(from.getImageFilename());
to.setTriggers(from.getTriggers());
to.setReplacementEffects(from.getReplacementEffects());
to.setStaticAbilityStrings(from.getStaticAbilityStrings());
}
/**
* Copy characteristics.
*
* @param from
* the from
* @param stateToCopy
* the state to copy
* @param to
* the to
*/
public static void copyState(final Card from, final CardCharacteristicName stateToCopy, final Card to) {
// copy characteristics not associated with a state
to.setBaseLoyalty(from.getBaseLoyalty());
to.setBaseAttackString(from.getBaseAttackString());
to.setBaseDefenseString(from.getBaseDefenseString());
to.setText(from.getSpellText());
// get CardCharacteristics for desired state
CardCharacteristics characteristics = from.getState(stateToCopy);
to.getCharacteristics().copy(characteristics);
// handle triggers and replacement effect through Card class interface
to.setTriggers(characteristics.getTriggers());
to.setReplacementEffects(characteristics.getReplacementEffects());
}
public static void copySpellAbility(SpellAbility from, SpellAbility to) {
to.setDescription(from.getDescription());
to.setStackDescription(from.getDescription());
if (from.getSubAbility() != null) {
to.setSubAbility(from.getSubAbility().getCopy());
}
if (from.getRestrictions() != null) {
to.setRestrictions(from.getRestrictions());
}
if (from.getConditions() != null) {
to.setConditions(from.getConditions());
}
for (String sVar : from.getSVars()) {
to.setSVar(sVar, from.getSVar(sVar));
}
}
public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) { public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) {
sa.setSourceCard(card); sa.setSourceCard(card);

View File

@@ -28,7 +28,7 @@ import forge.card.ability.effects.ChangeZoneAllEffect;
import forge.card.ability.effects.ChangeZoneEffect; import forge.card.ability.effects.ChangeZoneEffect;
import forge.card.ability.effects.ManaEffect; import forge.card.ability.effects.ManaEffect;
import forge.card.ability.effects.ManaReflectedEffect; import forge.card.ability.effects.ManaReflectedEffect;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactory;
import forge.game.player.AIPlayer; import forge.game.player.AIPlayer;
/** /**
@@ -109,7 +109,7 @@ public final class AbilitySub extends SpellAbility implements java.io.Serializab
public AbilitySub getCopy() { public AbilitySub getCopy() {
Target t = getTarget() == null ? null : new Target(getTarget()); Target t = getTarget() == null ? null : new Target(getTarget());
AbilitySub res = new AbilitySub(api, getSourceCard(), t, params); AbilitySub res = new AbilitySub(api, getSourceCard(), t, params);
CardFactoryUtil.copySpellAbility(this, res); CardFactory.copySpellAbility(this, res);
return res; return res;
} }

View File

@@ -36,6 +36,7 @@ import forge.GameEntity;
import forge.card.CardSplitType; import forge.card.CardSplitType;
import forge.card.CardType; import forge.card.CardType;
import forge.card.ability.effects.AttachEffect; import forge.card.ability.effects.AttachEffect;
import forge.card.cardfactory.CardFactory;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.card.replacement.ReplacementEffect; import forge.card.replacement.ReplacementEffect;
@@ -157,7 +158,7 @@ public class GameAction {
if (zoneFrom.is(ZoneType.Battlefield)) { if (zoneFrom.is(ZoneType.Battlefield)) {
c.setFlipStaus(false); c.setFlipStaus(false);
} }
copied = forge.Singletons.getModel().getCardFactory().copyCard(c); copied = CardFactory.copyCard(c);
copied.setUnearthed(c.isUnearthed()); copied.setUnearthed(c.isUnearthed());
copied.setTapped(false); copied.setTapped(false);
for (final Trigger trigger : copied.getTriggers()) { for (final Trigger trigger : copied.getTriggers()) {
@@ -669,7 +670,7 @@ public class GameAction {
if (p != null && p.is(ZoneType.Battlefield)) { if (p != null && p.is(ZoneType.Battlefield)) {
lastKnownInfo = CardUtil.getLKICopy(c); lastKnownInfo = CardUtil.getLKICopy(c);
c.clearCounters(); // remove all counters c.clearCounters(); // remove all counters
library.add(forge.Singletons.getModel().getCardFactory().copyCard(c), libPosition); library.add(CardFactory.copyCard(c), libPosition);
} else { } else {
c.clearCounters(); // remove all counters c.clearCounters(); // remove all counters
library.add(c, libPosition); library.add(c, libPosition);

View File

@@ -33,6 +33,7 @@ import forge.CardPredicates.Presets;
import forge.Command; import forge.Command;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.cardfactory.CardFactory;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.mana.ManaCostBeingPaid; import forge.card.mana.ManaCostBeingPaid;
import forge.card.mana.ManaCostParser; import forge.card.mana.ManaCostParser;
@@ -609,7 +610,7 @@ public class MagicStack extends MyObservable {
@Override @Override
public void execute() { public void execute() {
for (int i = 0; i < sp.getSourceCard().getReplicateMagnitude(); i++) { for (int i = 0; i < sp.getSourceCard().getReplicateMagnitude(); i++) {
Singletons.getModel().getCardFactory().copySpellontoStack(sp.getSourceCard(), sp.getSourceCard(), sp, false); CardFactory.copySpellontoStack(sp.getSourceCard(), sp.getSourceCard(), sp, false);
} }
} }
}; };

View File

@@ -507,7 +507,7 @@ public final class GuiDisplayUtil {
for (final String element : data) { for (final String element : data) {
final String[] cardinfo = element.trim().split("\\|"); final String[] cardinfo = element.trim().split("\\|");
final Card c = Singletons.getModel().getCardFactory().getCard(CardDb.instance().getCard(cardinfo[0]), player); final Card c = CardDb.instance().getCard(cardinfo[0]).toForgeCard(player);
boolean hasSetCurSet = false; boolean hasSetCurSet = false;
for (final String info : cardinfo) { for (final String info : cardinfo) {

View File

@@ -34,6 +34,7 @@ import forge.Command;
import forge.Constant; import forge.Constant;
import forge.Constant.Preferences; import forge.Constant.Preferences;
import forge.Singletons; import forge.Singletons;
import forge.card.cardfactory.CardFactory;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.Input; import forge.control.input.Input;
@@ -301,7 +302,7 @@ public class CField implements ICDoc {
faceDown.setName("Face Down"); faceDown.setName("Face Down");
choices2.add(faceDown); choices2.add(faceDown);
} else { } else {
final Card faceDown = Singletons.getModel().getCardFactory().copyCard(crd); final Card faceDown = CardFactory.copyCard(crd);
faceDown.setState(CardCharacteristicName.Original); faceDown.setState(CardCharacteristicName.Original);
choices2.add(faceDown); choices2.add(faceDown);
} }

View File

@@ -20,7 +20,6 @@ package forge.item;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
@@ -81,7 +80,7 @@ public final class CardDb {
* @param list * @param list
* the new up * the new up
*/ */
public static void setup(final Iterator<CardRules> list) { public static void setup(final Iterable<CardRules> list) {
if (CardDb.commonCards != null) { if (CardDb.commonCards != null) {
throw new RuntimeException("CardDb has already been initialized, don't do it twice please"); throw new RuntimeException("CardDb has already been initialized, don't do it twice please");
} }
@@ -426,9 +425,9 @@ public final class CardDb {
uniqueSpecialCards.put(cardName, lastAdded); uniqueSpecialCards.put(cardName, lastAdded);
} }
CardSorter(final Iterator<CardRules> parser) { CardSorter(final Iterable<CardRules> parser) {
while (parser.hasNext()) { for (CardRules cr : parser) {
this.addNewCard(parser.next()); this.addNewCard(cr);
} }
} }
} }

View File

@@ -27,6 +27,7 @@ import forge.CardUtil;
import forge.Singletons; import forge.Singletons;
import forge.card.CardRarity; import forge.card.CardRarity;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.cardfactory.CardFactory;
import forge.game.player.Player; import forge.game.player.Player;
@@ -295,7 +296,7 @@ public final class CardPrinted implements Comparable<IPaperCard>, InventoryItemF
*/ */
@Override @Override
public Card toForgeCard(Player owner) { public Card toForgeCard(Player owner) {
final Card c = Singletons.getModel().getCardFactory().getCard(this, owner); final Card c = CardFactory.getCard(this, owner);
return c; return c;
} }

View File

@@ -1,9 +1,9 @@
package forge.item; package forge.item;
import forge.Card; import forge.Card;
import forge.Singletons;
import forge.card.CardRarity; import forge.card.CardRarity;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.cardfactory.CardFactory;
import forge.game.player.Player; import forge.game.player.Player;
public class CardToken implements InventoryItemFromSet, IPaperCard { public class CardToken implements InventoryItemFromSet, IPaperCard {
@@ -40,7 +40,7 @@ public class CardToken implements InventoryItemFromSet, IPaperCard {
@Override @Override
public Card toForgeCard(Player owner) { public Card toForgeCard(Player owner) {
final Card c = Singletons.getModel().getCardFactory().getCard(this, owner); final Card c = CardFactory.getCard(this, owner);
return c; return c;
} }

View File

@@ -32,8 +32,9 @@ import forge.card.CardBlock;
import forge.card.EditionCollection; import forge.card.EditionCollection;
import forge.card.FatPackData; import forge.card.FatPackData;
import forge.card.FormatCollection; import forge.card.FormatCollection;
import forge.card.cardfactory.CardFactory; import forge.card.cardfactory.CardStorageReader;
import forge.deck.CardCollections; import forge.deck.CardCollections;
import forge.error.BugReporter;
import forge.error.ExceptionHandler; import forge.error.ExceptionHandler;
import forge.game.GameState; import forge.game.GameState;
import forge.game.GameType; import forge.game.GameType;
@@ -41,6 +42,8 @@ import forge.game.MatchController;
import forge.game.limited.GauntletMini; import forge.game.limited.GauntletMini;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.gauntlet.GauntletData; import forge.gauntlet.GauntletData;
import forge.gui.GuiUtils;
import forge.item.CardDb;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.properties.ForgeProps; import forge.properties.ForgeProps;
@@ -81,7 +84,6 @@ public enum FModel {
private GauntletData gauntletData; private GauntletData gauntletData;
private GauntletMini gauntlet; private GauntletMini gauntlet;
private final CardFactory cardFactory;
private final QuestController quest; private final QuestController quest;
private final CardCollections decks; private final CardCollections decks;
@@ -154,7 +156,16 @@ public enum FModel {
this.loadDynamicGamedata(); this.loadDynamicGamedata();
// Loads all cards (using progress bar). // Loads all cards (using progress bar).
this.cardFactory = new CardFactory(ForgeProps.getFile(NewConstants.CARDSFOLDER)); GuiUtils.checkEDT("CardFactory$constructor", false);
final CardStorageReader reader = new CardStorageReader(ForgeProps.getFile(NewConstants.CARDSFOLDER), true);
try {
// this fills in our map of card names to Card instances.
CardDb.setup(reader.loadCards());
} catch (final Exception ex) {
BugReporter.reportException(ex);
}
this.decks = new CardCollections(ForgeProps.getFile(NewConstants.NEW_DECKS)); this.decks = new CardCollections(ForgeProps.getFile(NewConstants.NEW_DECKS));
this.quest = new QuestController(); this.quest = new QuestController();
} }
@@ -412,14 +423,6 @@ public enum FModel {
return gameState; return gameState;
} }
/**
* TODO: Write javadoc for this method.
* @return
*/
public CardFactory getCardFactory() {
return cardFactory;
}
public GauntletMini getGauntletMini() { public GauntletMini getGauntletMini() {
if (gauntlet == null) { if (gauntlet == null) {

View File

@@ -24,7 +24,6 @@ import java.util.List;
import com.google.common.base.Function; import com.google.common.base.Function;
import forge.quest.data.GameFormatQuest; import forge.quest.data.GameFormatQuest;
import forge.util.FileSection;
import forge.util.storage.StorageReaderFile; import forge.util.storage.StorageReaderFile;
/** /**