EquipmentController.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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 equipZyEqDic))
  72. {
  73. // List<ItemInfo> eqList = zyEqDic[zy];
  74. // foreach (ItemInfo eqItemInfo in eqList)
  75. // {
  76. //
  77. // }
  78. }
  79. }
  80. public void AddEquipment(ItemInfo eqItemInfo)
  81. {
  82. if (eqItemInfo.eqInfo == null)
  83. {
  84. return;
  85. }
  86. int pro = eqItemInfo.eqInfo.basicEquipConfig.profession;
  87. int bw = eqItemInfo.eqInfo.basicEquipConfig.Type;
  88. if (zyEqDic.TryGetValue(pro, out var bwDic))
  89. {
  90. if (bwDic.ContainsKey(bw))
  91. {
  92. bwDic[bw].Add(eqItemInfo);
  93. }
  94. else
  95. {
  96. List<ItemInfo> eqBwList = new List<ItemInfo>();
  97. eqBwList.Add(eqItemInfo);
  98. bwDic.Add(bw, eqBwList);
  99. }
  100. }
  101. else
  102. {
  103. bwDic = new Dictionary<int, List<ItemInfo>>();
  104. List<ItemInfo> eqBwList = new List<ItemInfo>();
  105. eqBwList.Add(eqItemInfo);
  106. bwDic.Add(bw, eqBwList);
  107. zyEqDic.Add(pro, bwDic);
  108. // zyEqDic.Add(pro, new List<ItemInfo>());
  109. // zyEqDic[pro].Add(eqItemInfo);
  110. }
  111. }
  112. public void RemoveEquipment(ItemInfo eqItemInfo)
  113. {
  114. if (eqItemInfo.eqInfo == null)
  115. {
  116. return;
  117. }
  118. int pro = eqItemInfo.eqInfo.basicEquipConfig.profession;
  119. // if (zyEqDic.ContainsKey(pro) && zyEqDic[pro].Contains(eqItemInfo))
  120. // {
  121. // zyEqDic[pro].Remove(eqItemInfo);
  122. // }
  123. // else
  124. // {
  125. // LogTool.Error("移除一个在背包不存在的,装备: guid=" + eqItemInfo.guid + " 职业=" + pro);
  126. // }
  127. }
  128. }
  129. }