ItemData.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using FL.Data.Items;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using XGame.Database;
  6. using XGame.Framework.Data;
  7. namespace FL.Data
  8. {
  9. public class ItemData : DataSingleton<ItemData>, IDisposable
  10. {
  11. private Dictionary<int, long> _itemDic = new Dictionary<int, long>(); // 拥有的道具数据
  12. private Dictionary<EEquipType, EquipItem> _equipIdDic = new Dictionary<EEquipType, EquipItem>(); // 身上穿戴的装备数据
  13. private Dictionary<long, EquipItem> _newEquipDic = new Dictionary<long, EquipItem>(); // 拥有的新装备数据
  14. /// <summary>
  15. /// 拥有的道具数量
  16. /// </summary>
  17. /// <param name="id"></param>
  18. /// <returns></returns>
  19. public long GetItemNum(int id)
  20. {
  21. if (_itemDic.ContainsKey(id))
  22. {
  23. return _itemDic[id];
  24. }
  25. return 0;
  26. }
  27. /// <summary>
  28. /// 更新道具数据
  29. /// </summary>
  30. /// <param name="id"></param>
  31. /// <param name="num"></param>
  32. public void OnChangeItemData(int id, long count)
  33. {
  34. if (_itemDic.ContainsKey(id))
  35. {
  36. _itemDic[id] = count;
  37. }
  38. else
  39. {
  40. _itemDic.Add(id, count);
  41. }
  42. }
  43. /// <summary>
  44. /// 获取身上穿戴的部位装备
  45. /// </summary>
  46. /// <param name="equipType"></param>
  47. /// <returns></returns>
  48. public EquipItem GetEquipData(EEquipType equipType)
  49. {
  50. if (_equipIdDic.ContainsKey(equipType))
  51. {
  52. return _equipIdDic[equipType];
  53. }
  54. return null;
  55. }
  56. /// <summary>
  57. /// 更换装备
  58. /// </summary>
  59. /// <param name="equipType"></param>
  60. /// <param name="id"></param>
  61. public void OnChangeEquip(EEquipType equipType, EquipItem equipData)
  62. {
  63. if (_equipIdDic.ContainsKey(equipType))
  64. {
  65. _equipIdDic[equipType] = equipData;
  66. }
  67. else
  68. {
  69. _equipIdDic.Add(equipType, equipData);
  70. }
  71. }
  72. public void AddNewEquip(EquipItem newEquip)
  73. {
  74. _newEquipDic.Add(newEquip.Id, newEquip);
  75. }
  76. public void RemoveNewEquip(long id)
  77. {
  78. if (_newEquipDic.ContainsKey(id))
  79. {
  80. _newEquipDic.Remove(id);
  81. }
  82. }
  83. public EquipItem GetNewEquip(long id)
  84. {
  85. if (_newEquipDic.ContainsKey(id))
  86. {
  87. return _newEquipDic[id];
  88. }
  89. return null;
  90. }
  91. public long GetNewEquipId()
  92. {
  93. if (_newEquipDic.Count == 0) return 0;
  94. return _newEquipDic.First().Value.Id;
  95. }
  96. void IDisposable.Dispose()
  97. {
  98. _itemDic.Clear();
  99. foreach (var item in _equipIdDic.Values)
  100. {
  101. (item as IDisposable)?.Dispose();
  102. }
  103. _equipIdDic.Clear();
  104. foreach (var item1 in _newEquipDic.Values)
  105. {
  106. (item1 as IDisposable)?.Dispose();
  107. }
  108. _newEquipDic.Clear();
  109. }
  110. }
  111. }