using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Uis { public class TycoonUiManager : Singleton { // Variables #region Variables [field: SerializeField] public RestaurantUpgradeUi RestaurantUpgradeUi { get; private set; } // Variables public List PopupUiList { get; private set; } #endregion // Unity events #region Unity events protected override void OnAwake() { InitializeComponents(); } private void OnEnable() { PopupUi.OnPopupUiOpenEvent += RegisterPopup; PopupUi.OnPopupUiCloseEvent += UnregisterPopup; } private void OnDisable() { PopupUi.OnPopupUiOpenEvent -= RegisterPopup; PopupUi.OnPopupUiCloseEvent -= UnregisterPopup; } #endregion // Initialize methods #region Initialize methods [Button("셋팅 초기화")] private void InitializeComponents() { RestaurantUpgradeUi = GetComponentInChildren(true); PopupUiList = new List(8); } #endregion // Methods #region Methods private void RegisterPopup(PopupUi popup) { if (!PopupUiList.Contains(popup)) { PopupUiList.Add(popup); } } private void UnregisterPopup(PopupUi popup) { if (PopupUiList.Contains(popup)) { PopupUiList.Remove(popup); } } public void CloseLastPopup() { if (PopupUiList.Count <= 0) return; PopupUiList[^1].Close(); } public void CloseAllPopup() { var tempList = new List(PopupUiList); foreach (var popup in tempList) { popup.Close(); } PopupUiList.Clear(); } public bool IsPopupListEmpty() => PopupUiList.Count == 0; #endregion } }