package magic.model.event; import magic.model.MagicGame; import magic.model.MagicSource; import magic.model.MagicPlayer; import magic.model.choice.MagicTargetChoice; import magic.model.condition.MagicCondition; import magic.model.condition.MagicConditionFactory; public class MagicRepeatedPermanentsEvent extends MagicEvent { private final MagicCondition cond; public MagicRepeatedPermanentsEvent(final MagicSource source, final MagicTargetChoice targetChoice, final int amt, final MagicChainEventFactory factory) { this(source, source.getController(), targetChoice, amt, factory); } public MagicRepeatedPermanentsEvent(final MagicSource source, final MagicPlayer player, final MagicTargetChoice targetChoice, final int amt, final MagicChainEventFactory factory) { super( source, player, targetChoice, amt - 1, (final MagicGame game, final MagicEvent event) -> { final MagicEvent ev = factory.getEvent(event); ev.executeEvent(game, event.getChosen()); for (int i = 0; i < event.getRefInt(); i++) { game.addFirstEvent(ev); } }, factory.getEvent(source, targetChoice).getDescription() ); cond = MagicConditionFactory.YouControlAtLeast(targetChoice.getPermanentFilter(), amt); } @Override public boolean isSatisfied() { return cond.accept(getSource()) && super.isSatisfied(); } }