summaryrefslogtreecommitdiff
path: root/GameCode/LineEffectExplosionModifier.cs
diff options
context:
space:
mode:
Diffstat (limited to 'GameCode/LineEffectExplosionModifier.cs')
-rw-r--r--GameCode/LineEffectExplosionModifier.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/GameCode/LineEffectExplosionModifier.cs b/GameCode/LineEffectExplosionModifier.cs
new file mode 100644
index 0000000..3f1c66b
--- /dev/null
+++ b/GameCode/LineEffectExplosionModifier.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections;
+using UnityEngine;
+
+public class LineEffectExplosionModifier : MonoBehaviour
+{
+ public AnimationCurve curve;
+
+ public float speed = 1f;
+
+ private LineEffect effect;
+
+ private Coroutine corutine;
+
+ private void Start()
+ {
+ effect = GetComponent<LineEffect>();
+ Explosion componentInParent = GetComponentInParent<Explosion>();
+ componentInParent.DealDamageAction = (Action<Damagable>)Delegate.Combine(componentInParent.DealDamageAction, new Action<Damagable>(DealDamage));
+ Explosion componentInParent2 = GetComponentInParent<Explosion>();
+ componentInParent2.DealHealAction = (Action<Damagable>)Delegate.Combine(componentInParent2.DealHealAction, new Action<Damagable>(DealDamage));
+ }
+
+ public void DealDamage(Damagable damagable)
+ {
+ if (corutine != null)
+ {
+ StopCoroutine(corutine);
+ }
+ corutine = StartCoroutine(DoCurve());
+ }
+
+ private IEnumerator DoCurve()
+ {
+ float c = 0f;
+ float t = curve.keys[curve.keys.Length - 1].time;
+ while (c < t)
+ {
+ effect.offsetMultiplier = curve.Evaluate(c);
+ c += TimeHandler.deltaTime * speed;
+ yield return null;
+ }
+ }
+}