using System; using UnityEngine; namespace DDD { public abstract class BaseUi : MonoBehaviour { protected CanvasGroup _canvasGroup; protected GameObject _panel; public virtual bool IsBlockingTime => false; public virtual bool IsOpen => _panel.activeSelf; protected virtual void Awake() { _canvasGroup = GetComponent(); _panel = transform.Find(CommonConstants.Panel).gameObject; } protected virtual void Start() { TryRegister(); ClosePanel(); } protected virtual void Update() { } protected virtual void OnDestroy() { TryUnregister(); } protected virtual void TryRegister() { } protected virtual void TryUnregister() { } public virtual void OpenPanel() => _panel.SetActive(true); public virtual void ClosePanel() => _panel.SetActive(false); public virtual void SetUiInteractable(bool active) { _canvasGroup.interactable = active; _canvasGroup.blocksRaycasts = active; } } }