CTT/Unity/Assets/HotfixView/Event/UI/UpdateBagUIEvent.cs

113 lines
4.5 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using ET;
using FairyGUI;
using Cal.DataTable;
using System.Collections.Generic;
using ET.EventType;
namespace ET
{
public class UpdateBagUIEvent : AEvent_Sync<UpdateBagUI>
{
private readonly List<int> _needClearIndex = new List<int>();
public override void Run(UpdateBagUI args)
{
if (!(FUIComponent.Instance.Get(FUIPackage.Bag_BagUI) is FUI_BagUI bagUI)) return;
int totalCount = bagUI.m_slotList.numItems;
_needClearIndex.Clear();
for (int i = 0; i < totalCount; i++)
{
_needClearIndex.Add(i);
}
var bagMapList = args.list;
if (bagMapList != null)
{
2021-04-11 19:50:39 +08:00
foreach (BagMap bagMap in bagMapList)
2021-04-08 20:09:59 +08:00
{
int index = bagMap.Index;
_needClearIndex.Remove(index);
NetItem item = bagMap.NetItem;
//!添加数据
var bagDic = ClientItemDataComponent.Instance.ItemDic;
2021-04-11 19:50:39 +08:00
if (!bagDic.TryGetValueByKey1(index, out ClientItemData data))
2021-04-08 20:09:59 +08:00
{
data = EntityFactory.CreateWithParent<ClientItemData>(ClientItemDataComponent.Instance);
}
else
{
bagDic.Remove(index, data.ItemId, data);
}
//!更新物品Id
bagDic.Add(index, item.ItemId, data);
data.ItemId = item.ItemId;
data.ItemType = item.ItemType;
data.Count = item.Count;
data.IsLock = item.IsLock;
data.getSource = item.GetSource;
if (data.ItemType == ItemType.EquipItem)
{
//!装备赋值
if (bagMap.EquipTransMessage == null)
{
data.Equip = new Equip { EquipId = data.ItemId };
}
else
data.Equip = new Equip(bagMap.EquipTransMessage);
}
}
}
foreach (var kp in ClientItemDataComponent.Instance.ItemDic)
{
int index = kp.Key.Key;
GButton btn = bagUI.m_slotList.GetChildAt(index).asButton;
ClientItemData data = kp.Value;
//!显示
switch (data.ItemType)
{
default:
btn.icon = null;
btn.title = null;
break;
case ItemType.EquipItem:
EquipBase equipBase = DataTableHelper.Get<EquipBase>(data.ItemId);
btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, equipBase.IconName);
btn.title = data.Count.ToString();
break;
case ItemType.GoodsItem:
GoodsBase goodsBase = DataTableHelper.Get<GoodsBase>(data.ItemId);
btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, goodsBase.IconName);
btn.title = data.Count.ToString();
break;
case ItemType.MaterialsItem:
MaterialBase materialBase = DataTableHelper.Get<MaterialBase>(data.ItemId);
btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, materialBase.IconName);
btn.title = data.Count.ToString();
break;
}
}
//!对后面的格子进行处理
2021-04-11 19:50:39 +08:00
foreach (int index in _needClearIndex)
2021-04-08 20:09:59 +08:00
{
//!数据
var bagDic = ClientItemDataComponent.Instance.ItemDic;
2021-04-11 19:50:39 +08:00
if (!bagDic.TryGetValueByKey1(index, out ClientItemData data))
2021-04-08 20:09:59 +08:00
{
data = EntityFactory.CreateWithParent<ClientItemData>(ClientItemDataComponent.Instance);
}
else
{
bagDic.Remove(index, data.ItemId, data);
}
bagDic.Add(index, 0, data);
data.ItemType = ItemType.NoneItem;
data.ItemId = 0;
//!显示
GButton realbtn = bagUI.m_slotList.GetChildAt(index).asButton;
realbtn.icon = null;
realbtn.title = null;
}
}
}
}