ItemDataManager.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using System.Collections.Generic;
  2. using ET;
  3. using FairyGUI;
  4. using UnityEngine;
  5. using static UnityEditor.Progress;
  6. namespace GFGGame
  7. {
  8. public class ItemDataManager
  9. {
  10. private static Dictionary<int, ItemData> _dataDic = new Dictionary<int, ItemData>();
  11. public static void Add(int itemID, int itemNum)
  12. {
  13. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
  14. if (itemCfg == null)
  15. {
  16. Debug.LogError($"添加了一个不存在的物品 {itemID}");
  17. return;
  18. }
  19. ItemData itemData = null;
  20. if (_dataDic.ContainsKey(itemID))
  21. {
  22. itemData = _dataDic[itemID];
  23. if (itemCfg.itemType == ConstItemType.CARD)
  24. {
  25. return;//每张卡牌只有一张
  26. }
  27. }
  28. else
  29. {
  30. itemData = ItemDataPool.GetItemData(itemID);
  31. _dataDic.Add(itemID, itemData);
  32. }
  33. itemData.num += itemNum;
  34. if (ItemUtilCS.IsDressUpItem(itemID) && itemID % GameConst.MAX_COUNT_EVERY_TYPE_ITEM > 0)
  35. {
  36. DressUpMenuItemDataManager.Add(itemID);
  37. }
  38. //Debug.Log("itemid:"+ itemID);
  39. //Debug.Log("itemCfg:" + itemCfg);
  40. if (itemCfg.itemType == ConstItemType.CARD)
  41. {
  42. CardDataManager.Add(itemID);
  43. }
  44. if (itemCfg.itemType == ConstItemType.DRESS_UP && !DressUpMenuItemDataManager.CheckIsSceneType(itemID))
  45. {
  46. DecomposeDataManager.Instance.Add(itemID);
  47. }
  48. PhotographDataManager.Instance.Add(itemID);
  49. EventAgent.DispatchEvent(ConstMessage.ITEM_CHANGED, itemID);
  50. }
  51. public static void Remove(int itemID, int itemNum)
  52. {
  53. if (_dataDic.ContainsKey(itemID))
  54. {
  55. ItemData itemData = _dataDic[itemID];
  56. itemData.num -= itemNum;
  57. if (itemData.num <= 0)
  58. {
  59. itemData.num = 0;
  60. _dataDic.Remove(itemID);
  61. if (ItemUtilCS.IsDressUpItem(itemID))
  62. {
  63. DressUpMenuItemDataManager.Remove(itemID);
  64. }
  65. }
  66. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
  67. if (itemCfg.itemType == ConstItemType.DRESS_UP && !DressUpMenuItemDataManager.CheckIsSceneType(itemID))
  68. {
  69. DecomposeDataManager.Instance.Remove(itemID);
  70. }
  71. EventAgent.DispatchEvent(ConstMessage.ITEM_CHANGED, itemID);
  72. }
  73. }
  74. public static int GetItemNum(int itemId)
  75. {
  76. int numericType = NumericUtil.GetNumericTypeByItemId(itemId);
  77. if (numericType != 0)
  78. {
  79. return GameGlobal.myNumericComponent.GetAsInt(numericType);
  80. }
  81. if (_dataDic.TryGetValue(itemId, out var itemData))
  82. {
  83. return itemData.num;
  84. }
  85. return 0;
  86. }
  87. public static void InitServerData(List<ItemInfoProto> items)
  88. {
  89. _dataDic.Clear();
  90. foreach (ItemInfoProto roleItem in items)
  91. {
  92. Add(roleItem.ConfigId, roleItem.Count);
  93. }
  94. }
  95. public static void GetMainScore(int itemId, out int mainScore, out int mainScoreValue)
  96. {
  97. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  98. //五个属性中最大的为主属性
  99. mainScore = 1;
  100. mainScoreValue = 0;
  101. if (itemCfg.score1 > mainScoreValue)
  102. {
  103. mainScoreValue = itemCfg.score1;
  104. mainScore = 1;
  105. }
  106. if (itemCfg.score2 > mainScoreValue)
  107. {
  108. mainScoreValue = itemCfg.score2;
  109. mainScore = 2;
  110. }
  111. if (itemCfg.score3 > mainScoreValue)
  112. {
  113. mainScoreValue = itemCfg.score3;
  114. mainScore = 3;
  115. }
  116. if (itemCfg.score4 > mainScoreValue)
  117. {
  118. mainScoreValue = itemCfg.score4;
  119. mainScore = 4;
  120. }
  121. }
  122. public static int GetItemScoreValue(int itemId, int scoreType)
  123. {
  124. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  125. if (scoreType == 1)
  126. {
  127. return itemCfg.score1;
  128. }
  129. else if (scoreType == 2)
  130. {
  131. return itemCfg.score2;
  132. }
  133. else if (scoreType == 3)
  134. {
  135. return itemCfg.score3;
  136. }
  137. else if (scoreType == 4)
  138. {
  139. return itemCfg.score4;
  140. }
  141. return 0;
  142. }
  143. }
  144. }