package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicSource;
import magic.model.action.SetKickerAction;
import magic.model.choice.MagicMayChoice;
public class MagicKickerCost extends MagicAdditionalCost implements MagicEventAction {
final MagicMatchedCostEvent cost;
final String name;
private MagicKickerCost(final MagicMatchedCostEvent aCost, final String aName) {
cost = aCost;
name = aName;
}
public MagicKickerCost(final MagicMatchedCostEvent aCost) {
this(aCost, "kicker");
}
public static MagicKickerCost Buyback(final MagicMatchedCostEvent aCost) {
return new MagicKickerCost(aCost, "buyback");
}
public static MagicKickerCost Entwine(final MagicMatchedCostEvent aCost) {
return new MagicKickerCost(aCost, "entwine");
}
public static MagicKickerCost Conspire(final MagicMatchedCostEvent aCost) {
return new MagicKickerCost(aCost, "conspire");
}
public MagicEvent getEvent(final MagicSource source) {
return new MagicEvent(
source,
new MagicMayChoice(
"Pay the " + name + " cost?",
cost
),
this,
"PN may$ pay the " + name + " cost."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
final MagicEvent costEvent = cost.getEvent(event.getSource());
if (event.isYes() & costEvent.isSatisfied()) {
game.addFirstEvent(costEvent);
game.doAction(new SetKickerAction(1));
}
}
}