using ET; using FairyGUI; using Cal.DataTable; using System.Collections.Generic; using ET.EventType; namespace ET { public class UpdateBagUIEvent : AEvent_Sync { private readonly List _needClearIndex = new List(); 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 (var bagMap in bagMapList) { int index = bagMap.Index; _needClearIndex.Remove(index); NetItem item = bagMap.NetItem; //!添加数据 var bagDic = ClientItemDataComponent.Instance.ItemDic; if (!bagDic.TryGetValueByKey1(index, out var data)) { data = EntityFactory.CreateWithParent(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(data.ItemId); btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, equipBase.IconName); btn.title = data.Count.ToString(); break; case ItemType.GoodsItem: GoodsBase goodsBase = DataTableHelper.Get(data.ItemId); btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, goodsBase.IconName); btn.title = data.Count.ToString(); break; case ItemType.MaterialsItem: MaterialBase materialBase = DataTableHelper.Get(data.ItemId); btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, materialBase.IconName); btn.title = data.Count.ToString(); break; } } //!对后面的格子进行处理 foreach (var index in _needClearIndex) { //!数据 var bagDic = ClientItemDataComponent.Instance.ItemDic; if (!bagDic.TryGetValueByKey1(index, out var data)) { data = EntityFactory.CreateWithParent(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; } } } }