using FL.Data.Items; using System; using System.Collections.Generic; using System.Linq; using XGame.Database; using XGame.Framework.Data; namespace FL.Data { public class ItemData : DataSingleton, IDisposable { private Dictionary _itemDic = new Dictionary(); // 拥有的道具数据 private Dictionary _equipIdDic = new Dictionary(); // 身上穿戴的装备数据 private Dictionary _newEquipDic = new Dictionary(); // 拥有的新装备数据 /// /// 拥有的道具数量 /// /// /// public long GetItemNum(int id) { if (_itemDic.ContainsKey(id)) { return _itemDic[id]; } return 0; } /// /// 更新道具数据 /// /// /// public void OnChangeItemData(int id, long count) { if (_itemDic.ContainsKey(id)) { _itemDic[id] = count; } else { _itemDic.Add(id, count); } } /// /// 获取身上穿戴的部位装备 /// /// /// public EquipItem GetEquipData(EEquipType equipType) { if (_equipIdDic.ContainsKey(equipType)) { return _equipIdDic[equipType]; } return null; } /// /// 更换装备 /// /// /// public void OnChangeEquip(EEquipType equipType, EquipItem equipData) { if (_equipIdDic.ContainsKey(equipType)) { _equipIdDic[equipType] = equipData; } else { _equipIdDic.Add(equipType, equipData); } } public void AddNewEquip(EquipItem newEquip) { _newEquipDic.Add(newEquip.Id, newEquip); } public void RemoveNewEquip(long id) { if (_newEquipDic.ContainsKey(id)) { _newEquipDic.Remove(id); } } public EquipItem GetNewEquip(long id) { if (_newEquipDic.ContainsKey(id)) { return _newEquipDic[id]; } return null; } public long GetNewEquipId() { if (_newEquipDic.Count == 0) return 0; return _newEquipDic.First().Value.Id; } void IDisposable.Dispose() { _itemDic.Clear(); foreach (var item in _equipIdDic.Values) { (item as IDisposable)?.Dispose(); } _equipIdDic.Clear(); foreach (var item1 in _newEquipDic.Values) { (item1 as IDisposable)?.Dispose(); } _newEquipDic.Clear(); } } }