use static to change color of permanent instead of turnColor

master
melvin 2012-06-10 22:55:28 +08:00
parent 84ee759321
commit 391e60ff0a
3 changed files with 12 additions and 40 deletions

View File

@ -7,7 +7,7 @@ import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.MagicSource;
import magic.model.action.MagicPlayAbilityAction;
import magic.model.action.MagicSetTurnColorAction;
import magic.model.action.MagicAddStaticAction;
import magic.model.choice.MagicColorChoice;
import magic.model.condition.MagicCondition;
import magic.model.event.MagicActivationHints;
@ -16,6 +16,8 @@ import magic.model.event.MagicPayManaCostEvent;
import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicPlayAbilityEvent;
import magic.model.event.MagicTiming;
import magic.model.mstatic.MagicStatic;
import magic.model.mstatic.MagicLayer;
public class Spiritmonger {
public static final MagicPermanentActivation A = new MagicPermanentActivation(
@ -48,7 +50,15 @@ public class Spiritmonger {
final Object[] data,
final Object[] choiceResults) {
final MagicPermanent permanent=(MagicPermanent)data[0];
game.doAction(new MagicSetTurnColorAction(permanent,(MagicColor)choiceResults[0]));
game.doAction(new MagicAddStaticAction(permanent,
new MagicStatic(MagicLayer.SwitchPT,MagicStatic.UntilEOT) {
@Override
public int getColorFlags(
final MagicPermanent permanent,
final int flags) {
return ((MagicColor)choiceResults[0]).getMask();
}
}));
game.doAction(new MagicPlayAbilityAction(permanent));
}
};

View File

@ -10,7 +10,6 @@ public class MagicCleanupCreatureAction extends MagicAction {
private long oldTurnAbilityFlags;
private int oldTurnPower;
private int oldTurnToughness;
private int oldTurnColorFlags;
private int oldAbilityPlayedThisTurn;
private int oldDamage;
private int oldPreventDamage;
@ -22,15 +21,12 @@ public class MagicCleanupCreatureAction extends MagicAction {
@Override
public void doAction(final MagicGame game) {
oldTurnAbilityFlags=permanent.getTurnAbilityFlags();
permanent.setTurnAbilityFlags(0);
oldTurnPower=permanent.getTurnPower();
permanent.setTurnPower(0);
oldTurnToughness=permanent.getTurnToughness();
permanent.setTurnToughness(0);
oldTurnColorFlags=permanent.getTurnColorFlags();
permanent.setTurnColorFlags(MagicPermanent.NO_COLOR_FLAGS);
oldAbilityPlayedThisTurn=permanent.getAbilityPlayedThisTurn();
permanent.setAbilityPlayedThisTurn(0);
oldDamage=permanent.getDamage();
@ -43,11 +39,9 @@ public class MagicCleanupCreatureAction extends MagicAction {
@Override
public void undoAction(final MagicGame game) {
permanent.setTurnAbilityFlags(oldTurnAbilityFlags);
permanent.setTurnPower(oldTurnPower);
permanent.setTurnToughness(oldTurnToughness);
permanent.setTurnColorFlags(oldTurnColorFlags);
permanent.setAbilityPlayedThisTurn(oldAbilityPlayedThisTurn);
permanent.setDamage(oldDamage);
permanent.setPreventDamage(oldPreventDamage);

View File

@ -1,32 +0,0 @@
package magic.model.action;
import magic.model.MagicColor;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
public class MagicSetTurnColorAction extends MagicAction {
private final MagicPermanent permanent;
private final MagicColor color;
private int oldColorFlags;
public MagicSetTurnColorAction(final MagicPermanent permanent,final MagicColor color) {
this.permanent=permanent;
this.color=color;
}
@Override
public void doAction(final MagicGame game) {
oldColorFlags=permanent.getTurnColorFlags();
permanent.setTurnColorFlags(color.getMask());
game.setStateCheckRequired();
}
@Override
public void undoAction(final MagicGame game) {
permanent.setTurnColorFlags(oldColorFlags);
}
}