using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using NaughtyAttributes;

namespace GameplayIngredients
{
    public class TimerDisplayRig : MonoBehaviour
    {
        [NonNullCheck]
        public Text text;
        [NonNullCheck]
        public TextMesh textMesh;


        [NonNullCheck]
        public Timer timer;

        [InfoBox("Use the following wildcards:\n - %h : hours\n - %m : minutes\n - %s : seconds\n - %x : milliseconds", InfoBoxType.Normal)]
        public string format = "%h:%m:%s:%x";

        private void OnValidate()
        {
            UpdateText();
        }

        private void Reset()
        {
            UpdateText();
        }

        private void Update()
        {
            if (timer == null || (text == null && textMesh == null))
                return;

            UpdateText();
        }

        void UpdateText()
        {
            var value = format;

            uint hours = timer != null ? timer.CurrentHours: 0;
            uint minutes = timer != null ? timer.CurrentMinutes : 0;
            uint seconds = timer != null ? timer.CurrentSeconds : 0;
            uint milliseconds = timer != null ? timer.CurrentMilliseconds : 0;

            value = value.Replace("%h", hours.ToString("D2"));
            value = value.Replace("%m", minutes.ToString("D2"));
            value = value.Replace("%s", seconds.ToString("D2"));
            value = value.Replace("%x", milliseconds.ToString("D3"));

            if (text != null)
                text.text = value;

            if (textMesh != null)
                textMesh.text = value;
        }
    }
}