using System.Collections.Generic; using UnityEngine; namespace Script.UI { public class UIManager : SingleManager { private Dictionary _panelBases; public UIManager() { _panelBases = new Dictionary(); } // public void AddPanel(PanelBase panelBase) // { // Debug.Log($"add {panelBase.panelType}"); // if (!_panelBases.ContainsKey(panelBase.panelType)) // { // _panelBases.Add(panelBase.panelType, panelBase); // } // } public void InitPanel(List list) { _panelBases = new Dictionary(); foreach (var panelBase in list) { _panelBases.Add(panelBase.panelType, panelBase); // Debug.Log($"add {panelBase.panelType}"); } } public PanelBase OpenPanel(PanelType panelType) { if (_panelBases.TryGetValue(panelType, out var panelBase)) { panelBase.Open(); return panelBase; } return null; } public T OpenPanel(PanelType panelType) where T : PanelBase { T t = null; if (_panelBases.TryGetValue(panelType, out var panelBase)) { t = panelBase as T; t.Open(); return t; } return null; } public PanelBase GetPanel(PanelType panelType) { if (_panelBases.TryGetValue(panelType, out var panelBase)) { return panelBase; } return null; } public T GetPanel(PanelType panelType) where T : PanelBase { T t = null; if (_panelBases.TryGetValue(panelType, out var panelBase)) { t = panelBase as T; return t; } return null; } public PanelBase ClosePanel(PanelType panelType) { if (_panelBases.TryGetValue(panelType, out var panelBase)) { panelBase.Close(); return panelBase; } return null; } public T ClosePanel(PanelType panelType) where T : PanelBase { T t = null; if (_panelBases.TryGetValue(panelType, out var panelBase)) { t = panelBase as T; t.Close(); return t; } return null; } } }