2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.9 KiB
C#

2 years ago
using System.Collections.Generic;
using Game.Common;
namespace Game
{
public class PageGmPanel : UIPageBase<ViewGMPanel>
{
private Dictionary<string, List<GmInfo>> _mGmDict;
public PageGmPanel()
{
_mGmDict = new Dictionary<string, List<GmInfo>>();
}
protected override void OnCreate()
{
CreateUI(true);
View.m_ConsoleInput.onClick.Clear();
View.m_ConsoleInput.onClick.Add(() =>
{
View.m_ConsoleInput.RequestFocus();
});
}
protected override void OnDestroy() { }
protected override void OnOpen()
{
View.m_LayerList.RemoveChildrenToPool();
_mGmDict.Clear();
var gmList = GmManager.Instance.MGmList;
foreach (var gmInfo in gmList)
{
var layerName = gmInfo.MLayer.ToString();
if (!_mGmDict.ContainsKey(layerName))
{
_mGmDict[layerName] = new List<GmInfo>();
var item = View.m_LayerList.AddItemFromPool().asButton;
item.title = layerName;
item.onClick.Clear();
item.onClick.Add(() =>
{
RefreshSubPanel(item.title);
});
}
_mGmDict[layerName].Add(gmInfo);
}
RefreshSubPanel("_first");
}
protected override void OnClose()
{
}
public override void Update()
{
}
public void RefreshSubPanel(string layerName)
{
View.m_GmList.RemoveChildrenToPool();
if (layerName == "_first")
{
if (_mGmDict.Count == 0)
{
return;
}
else
{
var e = _mGmDict.Keys.GetEnumerator();
e.MoveNext();
layerName = e.Current;
}
}
var gmList = _mGmDict[layerName];
foreach (var gmInfo in gmList)
{
var item = View.m_GmList.AddItemFromPool().asButton;
item.title = gmInfo.MName;
item.onClick.Clear();
item.onClick.Add(() =>
{
gmInfo.MCallback(StringHelper.ParseToParam(View.m_ConsoleInput.text));
});
}
}
protected override void OnInput(PPlayerInput context)
{
if (context.Action == EKeyActionType.Press)
{
if (context.Key == EFunctionKey.Menu)
{
UIManager.Instance.Close();
}
}
}
}
}