using Michsky.UI.Heat; using Obvious.Soap; using TMPro; using UnityEngine; public class UI_ChangeDayTime : MonoBehaviour { [SerializeField] private TextMeshProUGUI timeText; [SerializeField] private SliderManager sliderManager; [SerializeField] private ModalWindowManager modalWindowManager; public FloatVariable dayTime; public BoolVariable isWindowButtonPressed; public BoolVariable isDayTimeWindowEnabled; private float _dayTime; private bool _isEnabled; private void Awake() { sliderManager.onValueChanged.AddListener(ChangeTime); } private void OnEnable() { isWindowButtonPressed.OnValueChanged += IsWindowButtonPressedOnOnValueChanged; } private void OnDisable() { isWindowButtonPressed.OnValueChanged -= IsWindowButtonPressedOnOnValueChanged; } private void IsWindowButtonPressedOnOnValueChanged(bool isPressed) { if (isPressed) { _isEnabled = true; isDayTimeWindowEnabled.Value = true; _dayTime = dayTime.Value; modalWindowManager.OpenWindow(); sliderManager.mainSlider.value = _dayTime / 24f; } } private void ChangeTime(float time) { if (time >= 24f) { sliderManager.mainSlider.value = 0f; _dayTime = 0f; } else { _dayTime = time * 24f; } } public void ApplyTime() { dayTime.Value = _dayTime; DissmissWindow(); } public void CancelTime() { _dayTime = dayTime.Value; DissmissWindow(); } private void DissmissWindow() { _isEnabled = false; Time.timeScale = 1f; isDayTimeWindowEnabled.Value = false; modalWindowManager.CloseWindow(); Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; } private void LateUpdate() { if (_isEnabled) { Cursor.visible = true; Cursor.lockState = CursorLockMode.None; Time.timeScale = 0f; string text = ((int)_dayTime).ToString("D2") + ":" + ((int)((_dayTime - (float)(int)_dayTime) * 60f)).ToString("D2"); timeText.text = text; } } }