RoleInfoManager.cs 10 KB

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