DressUpMenuSuitDataManager.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace GFGGame
  4. {
  5. public class DressUpMenuSuitDataManager
  6. {
  7. private static List<int> _suitIDList = new List<int>();
  8. //获得这件装备时套装的进度,用于展示
  9. private static Dictionary<int, int> _progressByItemIdDic = new Dictionary<int, int>();
  10. //套装当前的进度
  11. private static Dictionary<int, int> _progressBySuitIdDic = new Dictionary<int, int>();
  12. private static Dictionary<int, int> _suitGuideBoxBonusStatus = new Dictionary<int, int>();
  13. private static Dictionary<int, int> _suitSyntheticBoxBonusStatus = new Dictionary<int, int>();
  14. public static void InitData()
  15. {
  16. _suitIDList.Clear();
  17. _progressBySuitIdDic.Clear();
  18. _progressByItemIdDic.Clear();
  19. }
  20. public static void InitServerData(List<SystemSuit> systemSuitList)
  21. {
  22. _suitGuideBoxBonusStatus.Clear();
  23. _suitSyntheticBoxBonusStatus.Clear();
  24. if (systemSuitList != null)
  25. {
  26. foreach(SystemSuit systemSuit in systemSuitList)
  27. {
  28. _suitGuideBoxBonusStatus.Add(systemSuit.suitId, systemSuit.boxStatus);
  29. _suitSyntheticBoxBonusStatus.Add(systemSuit.suitId, systemSuit.boxStatusSyn);
  30. }
  31. }
  32. }
  33. public static void Add(int value)
  34. {
  35. if(!_suitIDList.Contains(value))
  36. {
  37. _suitIDList.Add(value);
  38. }
  39. }
  40. public static void Remove(int value)
  41. {
  42. if(_suitIDList.Contains(value))
  43. {
  44. _suitIDList.Remove(value);
  45. }
  46. }
  47. public static void GetTotalProgress(out int count, out int totalCount)
  48. {
  49. totalCount = SuitCfgManager.Instance.totalItemCount;
  50. count = 0;
  51. foreach(KeyValuePair<int , int> item in _progressBySuitIdDic)
  52. {
  53. count += item.Value;
  54. }
  55. }
  56. public static void GetSuitProgressByItemId(int itemID, out int suitId, out int count)
  57. {
  58. suitId = SuitCfgManager.Instance.GetItemSuitId(itemID);
  59. if(suitId > 0)
  60. {
  61. if(_progressByItemIdDic.ContainsKey(itemID))
  62. {
  63. count = _progressByItemIdDic[itemID];
  64. }
  65. else
  66. {
  67. count = 0;
  68. }
  69. }
  70. else
  71. {
  72. count = 0;
  73. }
  74. }
  75. public static void GetSuitProgressBySuitId(int suitId, out int count, out int totalCount)
  76. {
  77. if(suitId > 0)
  78. {
  79. if(_progressBySuitIdDic.ContainsKey(suitId))
  80. {
  81. count = _progressBySuitIdDic[suitId];
  82. }
  83. else
  84. {
  85. count = 0;
  86. }
  87. totalCount = SuitCfgManager.Instance.GetTotalCountOfOneSuit(suitId);
  88. }
  89. else
  90. {
  91. count = 0;
  92. totalCount = 1;
  93. }
  94. }
  95. public static float GetSuitProgressValueBySuitId(int suitId)
  96. {
  97. int count = 0;
  98. int totalCount = 1;
  99. GetSuitProgressBySuitId(suitId, out count, out totalCount);
  100. return (float)count/totalCount;
  101. }
  102. public static bool CheckHaveSuit(int suitId)
  103. {
  104. return _suitIDList.Contains(suitId);
  105. }
  106. public static void CheckItemInSuit(int itemId)
  107. {
  108. int suitId = SuitCfgManager.Instance.GetItemSuitId(itemId);
  109. if(suitId > 0)
  110. {
  111. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  112. int[] itemIds = SuitCfgManager.Instance.GetSuitItems(suitId);
  113. int totalCount = itemIds.Length;
  114. bool hasAll = true;
  115. int count = 0;
  116. for(int i = 0; i < totalCount; i++)
  117. {
  118. int tempItemId = itemIds[i];
  119. bool hasItem = DressUpMenuItemDataManager.CheckHasItem(tempItemId);
  120. if(!hasItem)
  121. {
  122. hasAll = false;
  123. }
  124. else
  125. {
  126. count++;
  127. }
  128. }
  129. _progressBySuitIdDic[suitId] = count;
  130. _progressByItemIdDic[itemId] = count;
  131. if(hasAll)
  132. {
  133. Add(suitId);
  134. }
  135. GetSuitItemController.AddItemId(itemId);
  136. }
  137. }
  138. public static List<int> GetSuitIDList()
  139. {
  140. return (List<int>)_suitIDList.GetRange(0, _suitIDList.Count);
  141. }
  142. public static int GetSuitGuideBonusStatus(int suitId)
  143. {
  144. int status = ConstBonusStatus.CAN_NOT_GET;
  145. if(_suitGuideBoxBonusStatus.ContainsKey(suitId))
  146. {
  147. status = _suitGuideBoxBonusStatus[suitId];
  148. }
  149. if(status == ConstBonusStatus.CAN_NOT_GET)
  150. {
  151. if (CheckHaveSuit(suitId))
  152. {
  153. status = ConstBonusStatus.CAN_GET;
  154. }
  155. }
  156. return status;
  157. }
  158. public static void GetSuitGuideBoxBonus(int suitId)
  159. {
  160. int status = ConstBonusStatus.GOT;
  161. _suitGuideBoxBonusStatus[suitId] = status;
  162. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  163. List<ItemData> itemDatas = ItemUtil.CreateItemDataList(suitCfg.boxBonusArr);
  164. foreach(ItemData itemData in itemDatas)
  165. {
  166. ItemDataManager.Add(itemData.id, itemData.num);
  167. }
  168. int statusSyn = GetSuitSyntheticBonusStatus(suitId);
  169. GameProxy.ReqUpdateSystemSuitBoxStatus(suitId, status, statusSyn);
  170. EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
  171. GetSuitItemController.TryShow(0);
  172. }
  173. public static int GetSuitSyntheticBonusStatus(int suitId)
  174. {
  175. int status = ConstBonusStatus.CAN_NOT_GET;
  176. if (_suitSyntheticBoxBonusStatus.ContainsKey(suitId))
  177. {
  178. status = _suitSyntheticBoxBonusStatus[suitId];
  179. }
  180. if (status == ConstBonusStatus.CAN_NOT_GET)
  181. {
  182. if (CheckHaveSuit(suitId))
  183. {
  184. status = ConstBonusStatus.CAN_GET;
  185. }
  186. }
  187. return status;
  188. }
  189. public static void GetSuitSyntheticBoxBonus(int suitId)
  190. {
  191. int status = ConstBonusStatus.GOT;
  192. _suitSyntheticBoxBonusStatus[suitId] = status;
  193. SuitSyntheticCfg suitCfg = SuitSyntheticCfgArray.Instance.GetCfg(suitId);
  194. List<ItemData> itemDatas = ItemUtil.CreateItemDataList(suitCfg.boxBonus);
  195. foreach (ItemData itemData in itemDatas)
  196. {
  197. ItemDataManager.Add(itemData.id, itemData.num);
  198. }
  199. int statusGuide = GetSuitGuideBonusStatus(suitId);
  200. GameProxy.ReqUpdateSystemSuitBoxStatus(suitId, statusGuide, status);
  201. EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
  202. }
  203. }
  204. }