package magic.model.action; import java.util.Arrays; import java.util.Collections; import java.util.List; import magic.model.MagicCard; import magic.model.MagicGame; import magic.model.MagicPayedCost; import magic.model.MagicPlayer; import magic.model.stack.MagicCardOnStack; public class PlayCardAction extends MagicAction { protected final MagicCard card; protected final MagicPlayer controller; protected final List<? extends MagicPermanentAction> modifications; public PlayCardAction(final MagicCard aCard, final MagicPlayer aController,final List<? extends MagicPermanentAction> aModifications) { card = aCard; controller = aController; modifications = aModifications; } public PlayCardAction(final MagicCard aCard, final MagicPlayer aController,final MagicPermanentAction... aModifications) { this(aCard, aController, Arrays.asList(aModifications)); } public PlayCardAction(final MagicCard card, final MagicPlayer player) { this(card, player, Collections.<MagicPermanentAction>emptyList()); } public PlayCardAction(final MagicCard card, final List<? extends MagicPermanentAction> modifications) { this(card, card.getController(), modifications); } public PlayCardAction(final MagicCard card) { this(card, card.getController(), Collections.<MagicPermanentAction>emptyList()); } @Override public void doAction(final MagicGame game) { final MagicCardOnStack cardOnStack = new MagicCardOnStack(card, controller, MagicPayedCost.NOT_SPELL, modifications); game.addEvent(cardOnStack.getEvent()); } @Override public void undoAction(final MagicGame game) {} }