using UnityEngine;

namespace Gyvr.Mythril2D
{
    public class SlowMotionGFX : GFXBase
    {
        private Coroutine routine;

        public void Trigger(float scale = 0.5f, float duration = 2f)
        {
            if (isRunning) Interrupt();

            isRunning = true;
            OnStarted?.Invoke();
            routine = StartCoroutine(RunSlow(scale, duration));
        }

        protected override void OnTrigger() { /* not used */ }

        private System.Collections.IEnumerator RunSlow(float scale, float duration)
        {
            Time.timeScale = scale;
            yield return new WaitForSecondsRealtime(duration);
            Time.timeScale = 1f;
            Finish();
        }

        public override void Interrupt()
        {
            if (routine != null)
            {
                StopCoroutine(routine);
                routine = null;
            }

            Time.timeScale = 1f;
            Finish();
        }
    }
}
