using UnityEngine;

namespace Shooter.Gameplay
{
    /// <summary>
    /// Игровое время суток: прокручивает <see cref="m_DayTime"/> от 0 до 1 и считает
    /// прошедшие «дни». Singleton — доступен через <see cref="Current"/>. Смена освещения
    /// по времени суток вынесена в опциональный блок (см. Главу 4).
    /// </summary>
    public class TimeControl : MonoBehaviour
    {
        public static TimeControl Current;

        [Tooltip("Источник глобального света (для опциональной смены освещения)")]
        public Light m_GlobalLight;

        [HideInInspector] public float m_DayTime = 0;
        [HideInInspector] public int m_DaysPassed = 0;
        [HideInInspector] public float m_TimeSpeed = 1;

        void Awake()
        {
            Current = this;
        }

        void Start()
        {
            m_DayTime = 0;
            m_DaysPassed = 0;
            m_TimeSpeed = .01f;
        }

        void Update()
        {
            m_DayTime += m_TimeSpeed * Time.deltaTime;
            if (m_DayTime > 1)
            {
                m_DaysPassed++;
                m_DayTime = 0;
            }

            #region Опциональная фича: смена освещения день/ночь (Глава 4)
            //m_GlobalLight.intensity = 0.6f + .4f * Mathf.Sin(2 * m_DayTime * Mathf.PI);
            //Vector3 lightTargetPoint = new Vector3(Mathf.Cos(2 * m_DayTime * Mathf.PI), -1, .4f);
            //m_GlobalLight.transform.forward = lightTargetPoint;
            #endregion
        }
    }
}
