DressUpMenuSuitDataManager.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. using System.Collections.Generic;
  2. using ET;
  3. namespace GFGGame
  4. {
  5. public class DressUpMenuSuitDataManager
  6. {
  7. private static List<int> _suitIDList = new List<int>();
  8. private static List<int> _actionIDList = new List<int>();//拥有的特殊动作列表列表
  9. private static List<int> _travelSuitIDList = new List<int>();//拥有的游历套装列表
  10. public static List<int> TravelSuitIDList
  11. {
  12. get
  13. {
  14. return _travelSuitIDList;
  15. }
  16. }
  17. //套装当前的进度
  18. private static Dictionary<int, int> _progressBySuitIdDic = new Dictionary<int, int>();
  19. private static Dictionary<int, int> _suitGuideBoxBonusStatus = new Dictionary<int, int>();
  20. private static Dictionary<int, int> _suitSyntheticBoxBonusStatus = new Dictionary<int, int>();
  21. public static void InitData()
  22. {
  23. _suitIDList.Clear();
  24. _travelSuitIDList.Clear();
  25. _progressBySuitIdDic.Clear();
  26. _actionIDList.Clear();
  27. }
  28. public static void SetSuitInfo(List<SuitInfoProto> suitInfoList)
  29. {
  30. if (suitInfoList != null)
  31. {
  32. _suitGuideBoxBonusStatus.Clear();
  33. _suitSyntheticBoxBonusStatus.Clear();
  34. foreach (SuitInfoProto suitInfo in suitInfoList)
  35. {
  36. SuitFosterData suitFosterData = new SuitFosterData()
  37. {
  38. suitId = suitInfo.SuitId,
  39. maintainStep = suitInfo.MaintainStep,
  40. maintainBonusSteps = suitInfo.MaintainBonusSteps,
  41. makeNewState = suitInfo.MakeNewState
  42. };
  43. SuitFosterDataManager.Instance.InitServerData(suitFosterData);
  44. //图鉴
  45. _suitGuideBoxBonusStatus.Add(suitInfo.SuitId, suitInfo.GuideBoxBonusState);
  46. //合成
  47. _suitSyntheticBoxBonusStatus.Add(suitInfo.SuitId, suitInfo.SyntheticBoxBonusState);
  48. _progressBySuitIdDic[suitInfo.SuitId] = suitInfo.PartsCount;
  49. if (suitInfo.CollectedAll)
  50. {
  51. Add(suitInfo.SuitId);
  52. }
  53. }
  54. EventAgent.DispatchEvent(ConstMessage.GET_SUIT_INFOS);
  55. }
  56. }
  57. public static void Add(int value)
  58. {
  59. if (!_suitIDList.Contains(value))
  60. {
  61. _suitIDList.Add(value);
  62. TravelSuitCfg travelSuitCfg = TravelSuitCfgArray.Instance.GetCfgBysuitId(value);
  63. if (travelSuitCfg != null)
  64. {
  65. _travelSuitIDList.Add(travelSuitCfg.id);
  66. }
  67. if (SuitCfgArray.Instance.CheckSuitHasAction(value))
  68. {
  69. _actionIDList.Add(value);
  70. }
  71. }
  72. }
  73. public static void Remove(int value)
  74. {
  75. if (_suitIDList.Contains(value))
  76. {
  77. _suitIDList.Remove(value);
  78. TravelSuitCfg travelSuitCfg = TravelSuitCfgArray.Instance.GetCfgBysuitId(value);
  79. if (travelSuitCfg != null && _travelSuitIDList.Contains(travelSuitCfg.id))
  80. {
  81. _travelSuitIDList.Remove(travelSuitCfg.id);
  82. }
  83. if (SuitCfgArray.Instance.CheckSuitHasAction(value) && _actionIDList.Contains(value))
  84. {
  85. _actionIDList.Remove(travelSuitCfg.id);
  86. }
  87. }
  88. }
  89. public static void GetTotalProgress(out int count, out int totalCount)
  90. {
  91. totalCount = GlobalCfgArray.globalCfg.suitPartTotalCount;
  92. count = 0;
  93. foreach (KeyValuePair<int, int> item in _progressBySuitIdDic)
  94. {
  95. count += item.Value;
  96. }
  97. }
  98. public static void GetSuitProgressBySuitId(int suitId, out int count, out int totalCount)
  99. {
  100. if (suitId > 0)
  101. {
  102. if (_progressBySuitIdDic.ContainsKey(suitId))
  103. {
  104. count = _progressBySuitIdDic[suitId];
  105. }
  106. else
  107. {
  108. count = 0;
  109. }
  110. totalCount = SuitCfgArray.Instance.GetTotalCountOfOneSuit(suitId);
  111. }
  112. else
  113. {
  114. count = 0;
  115. totalCount = 1;
  116. }
  117. }
  118. public static float GetSuitProgressValueBySuitId(int suitId)
  119. {
  120. int count = 0;
  121. int totalCount = 1;
  122. GetSuitProgressBySuitId(suitId, out count, out totalCount);
  123. return (float)count / totalCount;
  124. }
  125. public static bool CheckHaveSuit(int suitId)
  126. {
  127. return _suitIDList.Contains(suitId);
  128. }
  129. public static void CheckItemInSuit(int itemId)
  130. {
  131. int suitId = SuitCfgArray.Instance.GetSuitIdOfItem(itemId);
  132. if (suitId > 0)
  133. {
  134. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  135. int[] itemIds = SuitCfgArray.Instance.GetSuitItems(suitId);
  136. int totalCount = itemIds.Length;
  137. bool hasAll = true;
  138. int count = 0;
  139. for (int i = 0; i < totalCount; i++)
  140. {
  141. int tempItemId = itemIds[i];
  142. bool hasItem = DressUpMenuItemDataManager.CheckHasItem(tempItemId);
  143. if (!hasItem)
  144. {
  145. hasAll = false;
  146. }
  147. else
  148. {
  149. count++;
  150. }
  151. }
  152. _progressBySuitIdDic[suitId] = count;
  153. if (hasAll)
  154. {
  155. Add(suitId);
  156. }
  157. GetSuitItemController.AddItemId(itemId);
  158. }
  159. }
  160. public static List<int> GetSuitIDList()
  161. {
  162. return (List<int>)_suitIDList.GetRange(0, _suitIDList.Count);
  163. }
  164. public static List<int> GetActionIDList()
  165. {
  166. return _actionIDList;
  167. }
  168. public static int GetSuitGuideBonusStatus(int suitId)
  169. {
  170. int status = ConstBonusStatus.CAN_NOT_GET;
  171. if (_suitGuideBoxBonusStatus.ContainsKey(suitId))
  172. {
  173. status = _suitGuideBoxBonusStatus[suitId];
  174. }
  175. if (status == ConstBonusStatus.CAN_NOT_GET)//游戏过程中收集完成套装,不会有奖励可领状态不会有推送,需要前端判断
  176. {
  177. if (CheckHaveSuit(suitId))
  178. {
  179. status = ConstBonusStatus.CAN_GET;
  180. }
  181. }
  182. return status;
  183. }
  184. public static void SetSuitGuideBoxBonusCompleted(int suitId)
  185. {
  186. _suitGuideBoxBonusStatus[suitId] = ConstBonusStatus.GOT;
  187. EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
  188. }
  189. public static int GetSuitSyntheticBonusStatus(int suitId)
  190. {
  191. int status = ConstBonusStatus.CAN_NOT_GET;
  192. if (_suitSyntheticBoxBonusStatus.ContainsKey(suitId))
  193. {
  194. status = _suitSyntheticBoxBonusStatus[suitId];
  195. }
  196. if (status == ConstBonusStatus.CAN_NOT_GET)
  197. {
  198. if (CheckHaveSuit(suitId))
  199. {
  200. status = ConstBonusStatus.CAN_GET;
  201. }
  202. }
  203. return status;
  204. }
  205. public static void SetSuitSyntheticBoxBonusCompleted(int suitId)
  206. {
  207. _suitSyntheticBoxBonusStatus[suitId] = ConstBonusStatus.GOT;
  208. EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
  209. }
  210. //检查套装是否有动作资源
  211. public static bool CheckSuitHasActionRes(int suitId)
  212. {
  213. var suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  214. return suitCfg != null && ResPathUtil.CheckDressUpAnimationExist(suitCfg.aniRes);
  215. }
  216. }
  217. }