package magic.model.action; import magic.model.MagicGame; import magic.model.MagicPlayer; import magic.model.event.MagicStackChangeTargetsEvent; import magic.model.stack.MagicCardOnStack; public class CopyCardOnStackAction extends MagicAction { private final MagicPlayer player; private final MagicCardOnStack cardOnStack; public CopyCardOnStackAction(final MagicPlayer player,final MagicCardOnStack cardOnStack) { this.player=player; this.cardOnStack=cardOnStack; } @Override public void doAction(final MagicGame game) { final MagicCardOnStack copyCardOnStack=cardOnStack.copyCardOnStack(player); game.getStack().addToTop(copyCardOnStack); if (copyCardOnStack.getEvent().getTargetChoice().isValid()) { copyCardOnStack.getEvent().clearTargetChoice(copyCardOnStack.getChoiceResults()); game.addEvent(new MagicStackChangeTargetsEvent(copyCardOnStack)); } } @Override public void undoAction(final MagicGame game) { game.getStack().removeFromTop(); } @Override public String toString() { return getClass().getSimpleName()+" ("+cardOnStack.getName()+')'; } }