RoleInfoManager.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  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. UpdateHead(comHeadWithLv.m_comHead.target, headId, roleBorderId);
  181. comHeadWithLv.m_txtLv.text = lv > 0 ? lv.ToString() : "--";
  182. UI_ComHeadWithLv1.ProxyEnd();
  183. }
  184. public void UpdateHead(GComponent component, int headId, int roleBorderId)
  185. {
  186. ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(headId == 0 ? ConstItemID.HEADID : headId);
  187. ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(roleBorderId == 0 ? ConstItemID.HEADBORDERID : roleBorderId);
  188. UI_ComHead comHead = UI_ComHead.Proxy(component);
  189. if(headBorderCfg.res.Length == 0)
  190. {
  191. if(comHead.m_c2 != null)
  192. {
  193. comHead.m_c2.selectedIndex = 0;
  194. }
  195. }
  196. else
  197. {
  198. if (comHead.m_c2 != null)
  199. {
  200. comHead.m_c2.selectedIndex = 1;
  201. }
  202. comHead.m_loaBorder.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res);
  203. }
  204. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
  205. UI_ComHead.ProxyEnd();
  206. }
  207. public void UpdateArenaNpcHead(GComponent component, string res)
  208. {
  209. UI_ComHead comHead = UI_ComHead.Proxy(component);
  210. if (string.IsNullOrEmpty(res))
  211. {
  212. comHead.m_comHead.m_loaIcon.url = res;
  213. }
  214. else
  215. {
  216. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(res);
  217. }
  218. UI_ComHead.ProxyEnd();
  219. }
  220. public void UpdateNpcHead(GComponent component, string res)
  221. {
  222. UI_ComHead comHead = UI_ComHead.Proxy(component);
  223. if (string.IsNullOrEmpty(res))
  224. {
  225. comHead.m_comHead.m_loaIcon.url = res;
  226. }
  227. else
  228. {
  229. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetNpcHeadPath(res);
  230. }
  231. UI_ComHead.ProxyEnd();
  232. }
  233. public void UpdateLv(GComponent component, int lv)
  234. {
  235. UI_ComHeadLv comLv = UI_ComHeadLv.Proxy(component);
  236. comLv.m_txtLvl.text = lv > 0 ? lv.ToString() : "--";
  237. UI_ComHeadLv.ProxyEnd();
  238. }
  239. public static string[] GetSuitPosItems()
  240. {
  241. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  242. string[] posItems = new string[GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0] + privilegeCfg.value2Arr[0]];
  243. for (int i = 0; i < posItems.Length; i++)
  244. {
  245. posItems[i] = "";
  246. if (GetPosType(i) == 0)
  247. {
  248. posItems[i] = "";
  249. }
  250. else if (GetPosType(i) == MonthCardType.Gold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold))
  251. {
  252. posItems[i] = "红包卡开启";
  253. }
  254. else if (GetPosType(i) == MonthCardType.BlackGold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold))
  255. {
  256. posItems[i] = "福气卡开启";
  257. }
  258. }
  259. return posItems;
  260. }
  261. //获取指定位置月卡类型
  262. public static int GetPosType(int pos)
  263. {
  264. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum) return 0;
  265. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  266. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.Gold;
  267. if (pos >= GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.BlackGold;
  268. return 0;
  269. }
  270. }
  271. }