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