package magic.model.event;
import java.util.Collection;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicMessage;
import magic.model.MagicPermanent;
import magic.model.MagicSource;
import magic.model.action.RemoveFromPlayAction;
import magic.model.choice.MagicTargetChoice;
import magic.model.target.MagicTargetFilter;
import magic.model.target.MagicTargetHint;
public class MagicUniquenessEvent extends MagicEvent {
public MagicUniquenessEvent(final MagicSource source, final MagicTargetFilter<MagicPermanent> filter) {
super(
source,
new MagicTargetChoice(
filter,
MagicTargetHint.None,
"one. Put the rest into their owner's graveyard"
),
EVENT_ACTION,
"Choose one$. Put the rest into their owner's graveyard."
);
}
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) ->
event.processTargetPermanent(game, (final MagicPermanent permanent) -> {
final Collection<MagicPermanent> targets = event.getTargetChoice().getPermanentFilter().filter(event);
for (final MagicPermanent target : targets) {
if (target != permanent) {
game.logAppendMessage(
event.getPlayer(),
MagicMessage.format("Put %s into its owner's graveyard (Uniqueness rule).", target)
);
game.doAction(new RemoveFromPlayAction(target,MagicLocationType.Graveyard));
}
}
});
}