RoleInfoManager.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. using FairyGUI;
  2. using ET;
  3. using System.Collections.Generic;
  4. using System;
  5. using UI.CommonGame;
  6. namespace GFGGame
  7. {
  8. public class RoleInfoManager : SingletonBase<RoleInfoManager>
  9. {
  10. public void Clear()
  11. {
  12. _headDatas.Clear();
  13. _headBorderDatas.Clear();
  14. _newHeadDatas.Clear();
  15. _newHeadBorderDatas.Clear();
  16. }
  17. private List<int> _headDatas = new List<int>();
  18. public List<int> headDatas
  19. {
  20. get
  21. {
  22. return _headDatas;
  23. }
  24. }
  25. private List<int> _headBorderDatas = new List<int>();
  26. public List<int> headBorderDatas
  27. {
  28. get
  29. {
  30. return _headBorderDatas;
  31. }
  32. }
  33. public void Add(ItemInfoProto itemInfoProto)
  34. {
  35. var itemId = itemInfoProto.ConfigId;
  36. //游戏初始化禁止使用ItemCfg
  37. if (itemInfoProto.SubType == 0)
  38. {
  39. if (_headDatas.IndexOf(itemId) < 0)
  40. {
  41. _headDatas.Add(itemId);
  42. }
  43. }
  44. else if (itemInfoProto.SubType == 1)
  45. {
  46. if (_headBorderDatas.IndexOf(itemId) < 0)
  47. {
  48. _headBorderDatas.Add(itemId);
  49. }
  50. }
  51. }
  52. public void Remove(int itemId)
  53. {
  54. ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemId);
  55. if (cfg.subType == 0)
  56. {
  57. if (_headDatas.IndexOf(itemId) >= 0) _headDatas.Remove(itemId);
  58. }
  59. else if (cfg.subType == 1)
  60. {
  61. if (_headBorderDatas.IndexOf(itemId) >= 0) _headBorderDatas.Remove(itemId);
  62. }
  63. }
  64. private List<int> _newHeadDatas = new List<int>();
  65. public List<int> newHeadDatas
  66. {
  67. get
  68. {
  69. return _newHeadDatas;
  70. }
  71. }
  72. private List<int> _newHeadBorderDatas = new List<int>();
  73. public List<int> newHeadBorderDatas
  74. {
  75. get
  76. {
  77. return _newHeadBorderDatas;
  78. }
  79. }
  80. public void AddNew(int itemId)
  81. {
  82. int subType = ItemDataManager.GetItemSubType(itemId);
  83. if (subType == 0)
  84. {
  85. if (_newHeadDatas.IndexOf(itemId) < 0) _newHeadDatas.Add(itemId);
  86. }
  87. else if (subType == 1)
  88. {
  89. if (_newHeadBorderDatas.IndexOf(itemId) < 0) _newHeadBorderDatas.Add(itemId);
  90. }
  91. }
  92. public void RemoveNew(int itemId)
  93. {
  94. ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemId);
  95. if (cfg.subType == 0)
  96. {
  97. if (_newHeadDatas.IndexOf(itemId) >= 0) _newHeadDatas.Remove(itemId);
  98. }
  99. else if (cfg.subType == 1)
  100. {
  101. if (_newHeadBorderDatas.IndexOf(itemId) >= 0) _newHeadBorderDatas.Remove(itemId);
  102. }
  103. }
  104. public bool isNewHead(int itemId)
  105. {
  106. return _newHeadDatas.IndexOf(itemId) >= 0;
  107. }
  108. public bool isNewHeadBorder(int itemId)
  109. {
  110. return _newHeadBorderDatas.IndexOf(itemId) >= 0;
  111. }
  112. public void SortHeadDatas()
  113. {
  114. _headDatas.Sort((int a, int b) =>
  115. {
  116. if (_newHeadDatas.IndexOf(a) >= 0 && _newHeadDatas.IndexOf(b) < 0) return -1;
  117. if (_newHeadDatas.IndexOf(b) >= 0 && _newHeadDatas.IndexOf(a) < 0) return 1;
  118. if (a == RoleDataManager.headId && b != RoleDataManager.headId) return -1;
  119. if (b == RoleDataManager.headId && a != RoleDataManager.headId) return 1;
  120. return b - a;
  121. });
  122. }
  123. public void SortHeadBorderDatas()
  124. {
  125. _headBorderDatas.Sort((int a, int b) =>
  126. {
  127. if (_newHeadBorderDatas.IndexOf(a) >= 0 && _newHeadBorderDatas.IndexOf(b) < 0) return -1;
  128. if (_newHeadBorderDatas.IndexOf(b) >= 0 && _newHeadBorderDatas.IndexOf(a) < 0) return 1;
  129. if (a == RoleDataManager.headBorderId && b != RoleDataManager.headBorderId) return -1;
  130. if (b == RoleDataManager.headBorderId && a != RoleDataManager.headBorderId) return 1;
  131. return b - a;
  132. });
  133. }
  134. /// <summary>
  135. /// 套装收集进度
  136. /// </summary>
  137. /// <returns></returns>
  138. public int GetSuitGuideProgress()
  139. {
  140. DressUpMenuSuitDataManager.GetTotalProgress(out int suitHaveCount, out int suitTotalCount);
  141. int value = FieldGuideView.ProgressCalculate(suitHaveCount, suitTotalCount);
  142. return value;
  143. }
  144. /// <summary>
  145. /// 卡牌收集进度
  146. /// </summary>
  147. /// <returns></returns>
  148. public int GetCardGuideProgress()
  149. {
  150. CardDataManager.GetTotalProgress(out int haveCount, out int totalCount);
  151. int value = FieldGuideView.ProgressCalculate(haveCount, totalCount);
  152. return value;
  153. }
  154. public string GetLeagueName()
  155. {
  156. LeagueData leagueData = LeagueDataManager.Instance.LeagueData;
  157. if (leagueData == null)
  158. {
  159. return "暂未加入雅集";
  160. }
  161. else
  162. {
  163. return leagueData.Name;
  164. }
  165. }
  166. public long GetRoleID()
  167. {
  168. return RoleDataManager.roleId;
  169. }
  170. public void UpdateHeadWithLv(GComponent component, int headId, int roleBorderId, int lv)
  171. {
  172. UI_ComHeadWithLv comHeadWithLv = UI_ComHeadWithLv.Proxy(component);
  173. UpdateHead(comHeadWithLv.m_comHead.target, headId, roleBorderId);
  174. UpdateLv(comHeadWithLv.m_comLv.target, lv);
  175. UI_ComHeadWithLv.ProxyEnd();
  176. }
  177. public void UpdateHeadWithLv1(GComponent component, int headId, int roleBorderId, int lv)
  178. {
  179. UI_ComHeadWithLv1 comHeadWithLv = UI_ComHeadWithLv1.Proxy(component);
  180. ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(headId == 0 ? ConstItemID.HEADID : headId);
  181. ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(roleBorderId == 0 ? ConstItemID.HEADBORDERID : roleBorderId);
  182. comHeadWithLv.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
  183. comHeadWithLv.m_loaHeadBorder.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res);
  184. comHeadWithLv.m_txtLv.text = lv > 0 ? lv.ToString() : "--";
  185. UI_ComHeadWithLv1.ProxyEnd();
  186. }
  187. public void UpdateHead(GComponent component, int headId, int roleBorderId)
  188. {
  189. ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(headId == 0 ? ConstItemID.HEADID : headId);
  190. ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(roleBorderId == 0 ? ConstItemID.HEADBORDERID : roleBorderId);
  191. UI_ComHead comHead = UI_ComHead.Proxy(component);
  192. if(headBorderCfg.res.Length == 0)
  193. {
  194. if(comHead.m_c2 != null)
  195. {
  196. comHead.m_c2.selectedIndex = 0;
  197. }
  198. }
  199. else
  200. {
  201. if (comHead.m_c2 != null)
  202. {
  203. comHead.m_c2.selectedIndex = 1;
  204. }
  205. comHead.m_loaBorder.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res);
  206. }
  207. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
  208. UI_ComHead.ProxyEnd();
  209. }
  210. public void UpdateArenaNpcHead(GComponent component, string res)
  211. {
  212. UI_ComHead comHead = UI_ComHead.Proxy(component);
  213. if (string.IsNullOrEmpty(res))
  214. {
  215. comHead.m_comHead.m_loaIcon.url = res;
  216. }
  217. else
  218. {
  219. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(res);
  220. }
  221. UI_ComHead.ProxyEnd();
  222. }
  223. public void UpdateNpcHead(GComponent component, string res)
  224. {
  225. UI_ComHead comHead = UI_ComHead.Proxy(component);
  226. if (string.IsNullOrEmpty(res))
  227. {
  228. comHead.m_comHead.m_loaIcon.url = res;
  229. }
  230. else
  231. {
  232. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetNpcHeadPath(res);
  233. }
  234. UI_ComHead.ProxyEnd();
  235. }
  236. public void UpdateLv(GComponent component, int lv)
  237. {
  238. UI_ComHeadLv comLv = UI_ComHeadLv.Proxy(component);
  239. comLv.m_txtLvl.text = lv > 0 ? lv.ToString() : "--";
  240. UI_ComHeadLv.ProxyEnd();
  241. }
  242. public static string[] GetSuitPosItems()
  243. {
  244. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  245. string[] posItems = new string[GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0] + privilegeCfg.value2Arr[0]];
  246. for (int i = 0; i < posItems.Length; i++)
  247. {
  248. posItems[i] = "";
  249. if (GetPosType(i) == 0)
  250. {
  251. posItems[i] = "";
  252. }
  253. else if (GetPosType(i) == MonthCardType.Gold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold))
  254. {
  255. posItems[i] = "豆包卡开启";
  256. }
  257. else if (GetPosType(i) == MonthCardType.BlackGold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold))
  258. {
  259. posItems[i] = "阿福卡开启";
  260. }
  261. }
  262. return posItems;
  263. }
  264. //获取指定位置月卡类型
  265. public static int GetPosType(int pos)
  266. {
  267. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum) return 0;
  268. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  269. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.Gold;
  270. if (pos >= GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.BlackGold;
  271. return 0;
  272. }
  273. }
  274. }