CTT/Unity/Assets/HotfixView/UI/StateBuffUI/StateBuffUI.cs

101 lines
2.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00

using ET;
using System;
using System.Collections.Generic;
2021-04-11 19:50:39 +08:00
using FairyGUI;
2021-04-08 20:09:59 +08:00
namespace ET
{
public class StateBuffUIAwakeSyatem : AwakeSystem<StateBuffUI>
{
public override void Awake(StateBuffUI self)
{
self.Awake();
}
}
public class StateBuffUIDestroySyatem : DestroySystem<StateBuffUI>
{
public override void Destroy(StateBuffUI self)
{
self.Destroy();
}
}
public class StateBuffUI : Entity
{
public FUI_StateBuffUI ui;
private UnOrderMultiMap<long, BuffStateInfo> buffDic;
private FUIWindowComponent window;
public void Awake()
{
ui = GetParent<FUI_StateBuffUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
ui.m_list.RemoveChildrenToPool();
var unitList = BattleComponent.GetAll();
2021-04-11 19:50:39 +08:00
foreach (Unit unit in unitList)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
GObject item = ui.m_list.AddItemFromPool();
2021-04-08 20:09:59 +08:00
FUI_LabelStateBuffUI buffItem = FUI_LabelStateBuffUI.GetFormPool(this.ui,item);
long id = unit.Id;
string color = null;
string state = null;
if (unit.IsAlive)
{
color = "#ffff99";
state = "存活";
}
else
{
color = "#ff1100";
state = "死亡";
}
buffItem.self.title = $"[size=15]{id}[/size]\n[color={color}]{state}[/color]";
buffItem.m_buffList.RemoveChildrenToPool();
if (buffDic == null)
continue;
var list = buffDic[unit.Id];
if (list == null)
continue;
2021-04-11 19:50:39 +08:00
foreach (BuffStateInfo buffInfo in list)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
GButton iconBtn = buffItem.m_buffList.AddItemFromPool().asButton;
2021-04-08 20:09:59 +08:00
iconBtn.onClick.Clear();
TabHelper.SetTab(iconBtn, () =>
{
TabHelper.OpenBuffUI(buffInfo);
});
}
}
await ETTask.CompletedTask;
}
public void Init()
{
if (buffDic != null)
{
//ObjectPool.Instance.Recycle(buffDic);
buffDic = null;
}
}
public void RefreshUI(UnOrderMultiMap<long, BuffStateInfo> map)
{
if (buffDic != null)
{
//ObjectPool.Instance.Recycle(buffDic);
}
buffDic = map;
if (window != null &&
window.IsShowing)
{
AwakeAsync().Coroutine();
}
}
public void Destroy()
{
}
}
}