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