using System.Collections; public enum TriggerExpiration { Never, StartOfNextHeroTurn, } public enum TriggerRepetition { Once, Multiple, } public class Trigger { private TriggeredEffect callback; private TriggerExpiration expiration; private TriggerRepetition repetition; private bool expired; public Trigger(TriggeredEffect callback, TriggerExpiration expiration, TriggerRepetition repetition) { this.callback = callback; this.expiration = expiration; this.repetition = repetition; } public IEnumerator Run(IBattleEffectApplier effectApplier, MonsterViewpoint viewpoint, BattlePlayerControls playerControls) { if (this.expired) { yield break; } yield return callback(effectApplier, viewpoint, playerControls); if (this.repetition == TriggerRepetition.Once) { this.expired = true; } } public bool Expired {get => this.expired;} public TriggerExpiration Expiration {get => this.expiration;} public TriggerRepetition Repetition {get => this.repetition;} }