package magic.model.event; import magic.model.MagicGame; import magic.model.MagicPlayer; import magic.model.MagicSource; import magic.model.action.ChangeLifeAction; import magic.model.condition.MagicCondition; import magic.model.condition.MagicConditionFactory; public class MagicPayLifeEvent extends MagicEvent { private final MagicCondition cond; private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> game.doAction(new ChangeLifeAction(event.getPlayer(), -event.getRefInt())); public MagicPayLifeEvent(final MagicSource source,final int amount) { this(source, source.getController(), amount); } public MagicPayLifeEvent(final MagicSource source,final MagicPlayer player,final int amount) { super( source, player, amount, EVENT_ACTION, "Pay RN life." ); cond = MagicConditionFactory.YouLifeAtLeast(amount); } @Override public boolean isSatisfied() { return cond.accept(getSource()) && super.isSatisfied(); } }