package net.demilich.metastone.game.spells.trigger; import net.demilich.metastone.game.GameContext; 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.targeting.EntityReference; public interface IGameEventListener { public IGameEventListener clone(); public abstract boolean canFire(GameEvent event); public abstract EntityReference getHostReference(); public abstract int getOwner(); public abstract boolean interestedIn(GameEventType eventType); public abstract boolean isExpired(); public abstract void onAdd(GameContext context); public abstract void onGameEvent(GameEvent event); public abstract void onRemove(GameContext context); public abstract void setHost(Entity host); public abstract void setOwner(int playerIndex); public abstract boolean hasPersistentOwner(); public abstract boolean oneTurnOnly(); public abstract boolean isDelayed(); public abstract void delayTimeDown(); public abstract boolean hasCounter(); public abstract void countDown(); public abstract void expire(); public abstract boolean canFireCondition(GameEvent event); }