﻿using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using TMPro;

namespace Gyvr.Mythril2D
{
    public class UIHUDCountdownBar : MonoBehaviour
    {
        [SerializeField] private Slider slider; // Assign in inspector
        [SerializeField] private TextMeshProUGUI title;

        private Coroutine currentRoutine;

        public void Awake() => Hide();

        /// <summary>
        /// Shows and animates the slider over a countdown duration.
        /// </summary>
        /// <param name="countdown">Time in seconds to fill/drain.</param>
        /// <param name="fill">If true, fills from 0 → 1. If false, drains from 1 → 0.</param>
        public void Show(float countdown, string text = "", bool fill = false)
        {
            if (slider == null) return;

            // Enable objects
            slider.gameObject.SetActive(true);
            title.gameObject.SetActive(true);

            // Stop previous coroutine
            if (currentRoutine != null)
                StopCoroutine(currentRoutine);

            if(title!=null)
                title.text = text;
            currentRoutine = StartCoroutine(AnimateSlider(countdown, fill));
        }

        public void Hide()
        {
            if (title != null)
            {
                title.text = "";
                title.gameObject.SetActive(false);
            }
            slider.gameObject.SetActive(false);
        }

        private IEnumerator AnimateSlider(float duration, bool fill)
        {
            float elapsed = 0f;

            // Set starting value
            slider.value = fill ? 0f : 1f;

            while (elapsed < duration)
            {
                elapsed += Time.deltaTime;
                float t = Mathf.Clamp01(elapsed / duration);

                slider.value = fill ? t : 1f - t;

                yield return null;
            }

            slider.value = fill ? 1f : 0f;

            // Optionally hide when finished
            Hide();

            currentRoutine = null;
        }
    }
}
