113 lines
4.5 KiB
C#
113 lines
4.5 KiB
C#
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)
|
|
{
|
|
foreach (BagMap bagMap in bagMapList)
|
|
{
|
|
int index = bagMap.Index;
|
|
_needClearIndex.Remove(index);
|
|
NetItem item = bagMap.NetItem;
|
|
//!添加数据
|
|
var bagDic = ClientItemDataComponent.Instance.ItemDic;
|
|
if (!bagDic.TryGetValueByKey1(index, out ClientItemData data))
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
//!对后面的格子进行处理
|
|
foreach (int index in _needClearIndex)
|
|
{
|
|
//!数据
|
|
var bagDic = ClientItemDataComponent.Instance.ItemDic;
|
|
if (!bagDic.TryGetValueByKey1(index, out ClientItemData data))
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |