package magic.model.event;
import magic.model.MagicSource;
import magic.model.choice.MagicTargetChoice;
public abstract class MagicChainEventFactory {
abstract public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice);
public MagicEvent getEvent(final MagicEvent event) {
return getEvent(event.getSource(), event.getTargetChoice());
}
public static final MagicChainEventFactory Tap = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicTapPermanentEvent(source, tchoice);
}
};
public static final MagicChainEventFactory Untap = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicUntapPermanentEvent(source, tchoice);
}
};
public static final MagicChainEventFactory Sac = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicSacrificePermanentEvent(source, tchoice);
}
};
public static final MagicChainEventFactory Bounce = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicBounceChosenPermanentEvent(source, tchoice);
}
};
public static final MagicChainEventFactory ExileCard = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicExileCardEvent(source, tchoice);
}
};
public static final MagicChainEventFactory ExilePerm = new MagicChainEventFactory() {
public MagicEvent getEvent(final MagicSource source, final MagicTargetChoice tchoice) {
return new MagicExileChosenPermanentEvent(source, tchoice);
}
};
}