package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicPlayer;
import magic.model.MagicSource;
import magic.model.MagicCounterType;
import magic.model.action.ChangeCountersAction;
import magic.model.condition.MagicCondition;
import magic.model.condition.MagicConditionFactory;
public class MagicPayEnergyEvent extends MagicEvent {
private final MagicCondition cond;
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) ->
game.doAction(new ChangeCountersAction(event.getPlayer(), MagicCounterType.Energy, -event.getRefInt()));
public MagicPayEnergyEvent(final MagicSource source,final int amount) {
this(source, source.getController(), amount);
}
public MagicPayEnergyEvent(final MagicSource source,final MagicPlayer player,final int amount) {
super(
source,
player,
amount,
EVENT_ACTION,
"Pay " + repeat("{E}", amount) + "."
);
cond = MagicConditionFactory.YouEnergyAtLeast(amount);
}
private static final String repeat(final String s, final int n) {
return new String(new char[n]).replace("\0", s);
}
@Override
public boolean isSatisfied() {
return cond.accept(getSource()) && super.isSatisfied();
}
}