using System; using TMPro; using UnityEngine; using UnityEngine.UI; public class TimeSliderUI : MonoBehaviour { [SerializeField] private TextMeshProUGUI _title; [SerializeField] private TextMeshProUGUI _description; [SerializeField] private Button _btnCancel; [SerializeField] private Button _btnOk; [SerializeField] private Slider _slider; private TimeSpan _time; public void ShowTimeSliderDialog(string title, string description, Action onCancel, Action onConfirm) { TimeManager.Instance.OnFastForwardEnd += CloseDialog; TimeManager.Instance.OnMinuteChanged += UpdateTime; TimeManager.Instance.Pause(); UIManager.Instance.Freeze(); gameObject.SetActive(true); _title.text = title; _description.text = description; _btnCancel.onClick.AddListener(() => { onCancel?.Invoke(); Hide(); CloseDialog(); }); _btnOk.onClick.AddListener(() => { onConfirm?.Invoke(_time); Hide(); }); } private void UpdateTime() { } private void CloseDialog() { UIManager.Instance.Unfreeze(); Destroy(this); } private void Update() { _time = TimeSpan.FromHours(_slider.value); _description.text = $"{_time.Hours} hours"; } private void Hide() { gameObject.SetActive(false); TimeManager.Instance.Resume(); } }