Implement Molotov Cocktail

This commit is contained in:
henriquenakashima 2020-10-23 00:16:34 -04:00
parent 938a56231a
commit a37adf2972
17 changed files with 255 additions and 20 deletions

View file

@ -6,6 +6,7 @@ public class TriggerManager
{
private List<Trigger> activatedTriggers = new List<Trigger>();
private List<DamageTrigger> damageTriggers = new List<DamageTrigger>();
private List<StepTrigger> stepTriggers = new List<StepTrigger>();
public TriggerManager(BattleClock clock) {
clock.OnTimeChanged += this.NotifyTimeChanged;
@ -14,6 +15,13 @@ public class TriggerManager
private void NotifyTimeChanged(BattleTime now) {
if (now.RoundStep == RoundStep.StartOfHeroTurn) {
this.damageTriggers.RemoveAll(t => t.Expiration == TriggerExpiration.StartOfNextHeroTurn);
this.stepTriggers.RemoveAll(t => t.Expiration == TriggerExpiration.StartOfNextHeroTurn);
}
foreach (StepTrigger st in this.stepTriggers) {
if (st.IsTriggeredBy(now)) {
EnqueueActivatedTrigger(st);
}
}
}
@ -33,17 +41,23 @@ public class TriggerManager
}
}
public void ArmDamageTrigger(DamageTrigger damageTrigger) {
this.damageTriggers.Add(damageTrigger);
public void ArmDamageTrigger(DamageTrigger trigger) {
this.damageTriggers.Add(trigger);
}
public void ArmStepTrigger(StepTrigger trigger) {
this.stepTriggers.Add(trigger);
}
private void EnqueueActivatedTrigger(Trigger trigger) {
this.activatedTriggers.Add(trigger);
}
public void RunActivatedTriggers(IBattleEffectApplier effectApplier) {
public IEnumerator RunActivatedTriggers(IBattleEffectApplier effectApplier,
MonsterViewpoint viewpoint,
BattlePlayerControls playerControls) {
foreach (Trigger t in this.activatedTriggers) {
t.Run(effectApplier);
yield return t.Run(effectApplier, viewpoint, playerControls);
}
this.activatedTriggers.Clear();