using Cysharp.Threading.Tasks; using System; using System.Collections.Generic; using UnityEngine; public class UISystem : MonoBehaviour { [SerializeField] private TimeSliderUI _timeSliderPrefab; [SerializeField] private JobSelectorUI _jobSelectorPrefab; [SerializeField] private GameObject _blurOverlay; [SerializeField] private RadialMenuItem _radialMenuItemPrefab; RadialMenuItem _popupMenu; private void Start() { _blurOverlay.SetActive(false); } public void ShowTimeSliderDialog(string title, string description, Action onCancel, Action onConfirm) { var timeSlider = Instantiate(_timeSliderPrefab, transform); timeSlider.ShowTimeSliderDialog(title, description, onCancel, onConfirm); } public void ShowJobSelectionDialog(string title, Action onCancel, Action onConfirm) { var jobSelector = Instantiate(_jobSelectorPrefab, transform); jobSelector.ShowJobSelectionDialog(title, onCancel, onConfirm); } public async UniTask ShowItemPopupMenu(Dictionary actions) { _popupMenu = Instantiate(_radialMenuItemPrefab); _popupMenu.transform.transform.SetParent(transform, false); _popupMenu.transform.position = Input.mousePosition; return await _popupMenu.ShowButtons(_popupMenu, actions); } public void ClosePopupMenu() { if (_popupMenu != null) { _popupMenu.CancelAndClose(); } } public void Freeze() { _blurOverlay.SetActive(true); } public void Unfreeze() { _blurOverlay.SetActive(false); } }