104 lines
2.6 KiB
C#
104 lines
2.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Script.UI
|
|
{
|
|
public class UIManager : SingleManager<UIManager>
|
|
{
|
|
private Dictionary<PanelType, PanelBase> _panelBases;
|
|
|
|
public UIManager()
|
|
{
|
|
_panelBases = new Dictionary<PanelType, PanelBase>();
|
|
}
|
|
|
|
// public void AddPanel(PanelBase panelBase)
|
|
// {
|
|
// Debug.Log($"add {panelBase.panelType}");
|
|
// if (!_panelBases.ContainsKey(panelBase.panelType))
|
|
// {
|
|
// _panelBases.Add(panelBase.panelType, panelBase);
|
|
// }
|
|
// }
|
|
|
|
public void InitPanel(List<PanelBase> list)
|
|
{
|
|
_panelBases = new Dictionary<PanelType, PanelBase>();
|
|
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<T>(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<T>(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<T>(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;
|
|
}
|
|
}
|
|
} |