EquipmentController.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. using System.Collections.Generic;
  2. using Excel2Json;
  3. using Fort23.UTool;
  4. using GameLogic.Bag;
  5. using GameLogic.Player;
  6. using UnityEditor;
  7. namespace GameLogic.Equipment
  8. {
  9. // public struct
  10. public class EquipmentController
  11. {
  12. /// <summary>
  13. /// 所有的职业装备
  14. /// </summary>
  15. public Dictionary<int, Dictionary<int ,List<ItemInfo>>> zyEqDic = new Dictionary<int, Dictionary<int ,List<ItemInfo>>>();
  16. /// <summary>
  17. /// 已穿戴的装备
  18. /// </summary>
  19. public Dictionary<int, List<ItemInfo>> equipZyEqDic = new Dictionary<int, List<ItemInfo>>();
  20. // private long curGUID;
  21. public void Init()
  22. {
  23. // curGUID = AccountFileInfo.Instance.playerData.eqGUID;
  24. }
  25. /// <summary>
  26. /// 生成装备的GUID
  27. /// </summary>
  28. /// <returns></returns>
  29. // public long GenerateGUID()
  30. // {
  31. // curGUID++;
  32. // AccountFileInfo.Instance.playerData.eqGUID = curGUID;
  33. // AccountFileInfo.Instance.SavePlayerData();
  34. // return curGUID;
  35. // }
  36. /// <summary>
  37. /// 通过品质获取装备的额外参数,装备属性会叠加这个值
  38. /// </summary>
  39. /// <param name="quality"></param>
  40. /// <returns></returns>
  41. public float GetEquipmentRarityAttributeFactor(int quality)
  42. {
  43. int[] factors = PlayerManager.Instance.gameConstantConfig.equipmentRarityAttributeFactor;
  44. return factors[quality - 1] / (float)100;
  45. }
  46. public ItemInfo BuildEquipment(int equipModelDropID, int qualityDropID, int lvDropID)
  47. {
  48. ItemInfo info = null;
  49. List<ItemInfo> equipModelDropItems = DropManager.Instance.DropItem(equipModelDropID);
  50. if (equipModelDropItems == null || equipModelDropItems.Count == 0)
  51. {
  52. return info;
  53. }
  54. ItemInfo equipModelInfo = equipModelDropItems[0];
  55. List<ItemInfo> qualityDropItems = DropManager.Instance.DropItem(qualityDropID);
  56. List<ItemInfo> lvDropItems = DropManager.Instance.DropItem(lvDropID);
  57. info = equipModelInfo;
  58. info.eqInfo = new EquipmentInfo();
  59. // info.eqInfo.InitEquipment(info.config,
  60. // lvDropItems[0].dropItemConfig.itemID[0],
  61. // qualityDropItems[0].dropItemConfig.itemID[0]);
  62. info.eqInfo.InitEquipment(equipModelInfo, lvDropItems[0], qualityDropItems[0]);
  63. return info;
  64. }
  65. /// <summary>
  66. /// 穿职业装备
  67. /// </summary>
  68. /// <param name="zy"></param>
  69. public void EquipZyEqs(int zy)
  70. {
  71. if (zyEqDic.TryGetValue(zy, out var bwDic))
  72. {
  73. foreach (KeyValuePair<int, List<ItemInfo>> keyValuePair in bwDic)
  74. {
  75. ItemInfo bestBwEq = null;
  76. foreach (ItemInfo bwItem in keyValuePair.Value)
  77. {
  78. bwItem.eqInfo.isEquip = false;
  79. if (bestBwEq == null)
  80. {
  81. bestBwEq = bwItem;
  82. continue;
  83. }
  84. if (bwItem.eqInfo.Attack > bestBwEq.eqInfo.Attack ||
  85. bwItem.eqInfo.Defense > bestBwEq.eqInfo.Defense ||
  86. bwItem.eqInfo.Hp > bestBwEq.eqInfo.Hp)
  87. {
  88. bestBwEq = bwItem;
  89. }
  90. }
  91. if (bestBwEq != null)
  92. bestBwEq.eqInfo.isEquip = true;
  93. }
  94. }
  95. }
  96. public void AddEquipment(ItemInfo eqItemInfo)
  97. {
  98. if (eqItemInfo.eqInfo == null)
  99. {
  100. return;
  101. }
  102. int pro = eqItemInfo.eqInfo.basicEquipConfig.profession;
  103. int bw = eqItemInfo.eqInfo.basicEquipConfig.Type;
  104. if (zyEqDic.TryGetValue(pro, out var bwDic))
  105. {
  106. if (bwDic.TryGetValue(bw, out var eqBwList))
  107. {
  108. eqBwList.Add(eqItemInfo);
  109. }
  110. else
  111. {
  112. eqBwList = new List<ItemInfo>();
  113. eqBwList.Add(eqItemInfo);
  114. bwDic.Add(bw, eqBwList);
  115. }
  116. // if (bwDic.ContainsKey(bw))
  117. // {
  118. // bwDic[bw].Add(eqItemInfo);
  119. // }
  120. // else
  121. // {
  122. // List<ItemInfo> eqBwList = new List<ItemInfo>();
  123. // eqBwList.Add(eqItemInfo);
  124. // bwDic.Add(bw, eqBwList);
  125. // }
  126. }
  127. else
  128. {
  129. bwDic = new Dictionary<int, List<ItemInfo>>();
  130. List<ItemInfo> eqBwList = new List<ItemInfo>();
  131. eqBwList.Add(eqItemInfo);
  132. bwDic.Add(bw, eqBwList);
  133. zyEqDic.Add(pro, bwDic);
  134. // zyEqDic.Add(pro, new List<ItemInfo>());
  135. // zyEqDic[pro].Add(eqItemInfo);
  136. }
  137. }
  138. public void RemoveEquipment(ItemInfo eqItemInfo)
  139. {
  140. if (eqItemInfo.eqInfo == null)
  141. {
  142. return;
  143. }
  144. int pro = eqItemInfo.eqInfo.basicEquipConfig.profession;
  145. // if (zyEqDic.ContainsKey(pro) && zyEqDic[pro].Contains(eqItemInfo))
  146. // {
  147. // zyEqDic[pro].Remove(eqItemInfo);
  148. // }
  149. // else
  150. // {
  151. // LogTool.Error("移除一个在背包不存在的,装备: guid=" + eqItemInfo.guid + " 职业=" + pro);
  152. // }
  153. }
  154. }
  155. }