101 lines
1.9 KiB
C#
101 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|