package magic.model.event; import java.util.LinkedList; import java.util.List; import magic.model.MagicCard; import magic.model.MagicCardDefinition; import magic.model.MagicGame; import magic.model.MagicLocationType; import magic.model.MagicSource; import magic.model.action.CastCardAction; public class MagicFlashbackActivation extends MagicGraveyardCastActivation { private final List<MagicMatchedCostEvent> matchedCostEvents; public MagicFlashbackActivation(final MagicCardDefinition cdef, final List<MagicMatchedCostEvent> aMatchedCostEvents) { super( MagicHandCastActivation.CARD_CONDITION, cdef.getActivationHints(), "Flashback" ); matchedCostEvents = aMatchedCostEvents; } @Override public Iterable<? extends MagicEvent> getCostEvent(final MagicCard source) { final List<MagicEvent> costEvents = new LinkedList<MagicEvent>(); for (final MagicMatchedCostEvent matched : matchedCostEvents) { costEvents.add(matched.getEvent(source)); } return costEvents; } @Override public MagicEvent getEvent(final MagicSource source) { return new MagicEvent( source, this, "Flashback SN." ); } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { game.doAction(CastCardAction.WithoutManaCost( event.getPlayer(), event.getCard(), MagicLocationType.Graveyard, MagicLocationType.Exile )); } }