package magic.model.action; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPermanentState; import magic.model.mstatic.MagicStatic; import magic.model.trigger.MagicTriggerType; import java.util.Collections; import java.util.Collection; public class TurnFaceUpAction extends MagicAction { public final MagicPermanent permanent; private Collection<MagicStatic> oldStatics = Collections.emptyList(); private Collection<MagicStatic> newStatics = Collections.emptyList(); public TurnFaceUpAction(final MagicPermanent aPermanent) { permanent = aPermanent; } @Override public void doAction(final MagicGame game) { if (permanent.isFaceDown() && permanent.getRealCardDefinition().isPermanent()) { oldStatics = permanent.getStatics(); game.doAction(ChangeStateAction.Clear(permanent, MagicPermanentState.FaceDown)); game.doAction(ChangeStateAction.Clear(permanent, MagicPermanentState.Manifest)); newStatics = permanent.getStatics(); game.removeStatics(permanent, oldStatics); game.addStatics(permanent, newStatics); // force an update so that triggers are registered game.update(); game.executeTrigger(MagicTriggerType.WhenTurnedFaceUp, permanent); } } @Override public void undoAction(final MagicGame game) { game.removeStatics(permanent, newStatics); game.addStatics(permanent, oldStatics); } }