44 lines
No EOL
1.1 KiB
C#
44 lines
No EOL
1.1 KiB
C#
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;}
|
|
} |