using System.Collections.Generic; using System.Data; using UnityEngine; namespace Game { public class UIManager : ManagerBase, IUIManager { private Queue _uis = new Queue(); private Dictionary _uiDic = new Dictionary(); protected override void OnInit() { base.OnInit(); } public T CreateUI(UIType uiType) where T : UIBase { IUI ui = new UIBase(new GameObject()); // ui.Init(); _uiDic.Add(uiType, ui); return ui as T; } public IUI CreateUI(UIType uiType) { IUI ui = new UIBase(new GameObject()); // ui.Init(); _uiDic.Add(uiType, ui); return ui; } public T OpenUI(UIType uiType) where T : UIBase { if (_uiDic.TryGetValue(uiType, out var ui)) { _uis.Enqueue(ui); ui.Open(); return (T)ui; } return null; } public IUI OpenUI(UIType uiType) { if (_uiDic.TryGetValue(uiType, out var ui)) { _uis.Enqueue(ui); ui.Open(); return ui; } return null; } public T GetUI(UIType uiType) where T : UIBase { if (_uiDic.TryGetValue(uiType, out var ui)) { return (T)ui; } return null; } public IUI GetUI(UIType uiType) { if (_uiDic.TryGetValue(uiType, out var ui)) { return ui; } return null; } public T CloseUI(UIType uiType) where T : UIBase { if (_uiDic.TryGetValue(uiType, out var ui)) { ui.Close(); return (T)ui; } return null; } public IUI CloseUI(UIType uiType) { if (_uiDic.TryGetValue(uiType, out var ui)) { ui.Close(); return ui; } return null; } public IUI CloseLast() { if (_uis.Count > 0) { var ui = _uis.Dequeue(); ui.Close(); return ui; } return null; } public void CloseAll() { while (_uis.Count > 0) { var ui = _uis.Dequeue(); ui.Close(); } } } }