package magic.model.event; import magic.model.MagicManaCost; import magic.model.MagicPlayer; import magic.model.MagicSource; import magic.model.MagicCard; import magic.model.choice.MagicPayManaCostChoice; import magic.model.condition.MagicCondition; public class MagicPayManaCostEvent extends MagicEvent { private final MagicCondition cond; public static final MagicPayManaCostEvent Cast(final MagicCard card, final String cost) { return Cast(card, MagicManaCost.create(cost)); } public static final MagicPayManaCostEvent Cast(final MagicCard card, final MagicManaCost cost) { return new MagicPayManaCostEvent(card, card.getGame().modCost(card, cost)); } public MagicPayManaCostEvent(final MagicSource source, final String cost) { this(source, source.getController(), MagicManaCost.create(cost)); } public MagicPayManaCostEvent(final MagicSource source, final MagicManaCost cost) { this(source, source.getController(), cost); } public MagicPayManaCostEvent(final MagicSource source, final MagicPlayer player, final String cost) { this(source, player, MagicManaCost.create(cost)); } private MagicPayManaCostEvent(final MagicSource source,final MagicPlayer player,final MagicManaCost cost) { super( source, player, new MagicPayManaCostChoice(cost), MagicEventAction.NONE, cost == MagicManaCost.NONE ? "" : "Pay " + cost.getText() + "$." ); cond = cost.getCondition(); } @Override public boolean isSatisfied() { return cond.accept(getSource()) && super.isSatisfied(); } }