package net.demilich.metastone.game.cards.costmodifier;
import net.demilich.metastone.game.entities.Entity;
import net.demilich.metastone.game.events.GameEvent;
import net.demilich.metastone.game.events.GameEventType;
import net.demilich.metastone.game.spells.desc.manamodifier.CardCostModifierDesc;
import net.demilich.metastone.game.spells.trigger.GameEventTrigger;
import net.demilich.metastone.game.spells.trigger.TurnStartTrigger;
public class OneTurnCostModifier extends CardCostModifier {
private GameEventTrigger turnStartTrigger = new TurnStartTrigger();
public OneTurnCostModifier(CardCostModifierDesc desc) {
super(desc);
}
@Override
public OneTurnCostModifier clone() {
OneTurnCostModifier clone = (OneTurnCostModifier) super.clone();
clone.turnStartTrigger = (GameEventTrigger) turnStartTrigger.clone();
return clone;
}
@Override
public boolean interestedIn(GameEventType eventType) {
if (turnStartTrigger.interestedIn() == eventType) {
return true;
}
return super.interestedIn(eventType);
}
@Override
public void onGameEvent(GameEvent event) {
Entity host = event.getGameContext().resolveSingleTarget(getHostReference());
if (event.getEventType() == turnStartTrigger.interestedIn() && turnStartTrigger.fires(event, host)) {
expire();
}
super.onGameEvent(event);
}
@Override
public boolean oneTurnOnly() {
return true;
}
@Override
public void setOwner(int playerIndex) {
super.setOwner(playerIndex);
turnStartTrigger.setOwner(playerIndex);
}
}