RoleInfoManager.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  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. public decimal GetGuideProgress()
  135. {
  136. int suitHaveCount;
  137. int suitTotalCount;
  138. DressUpMenuSuitDataManager.GetTotalProgress(out suitHaveCount, out suitTotalCount);
  139. decimal value = FieldGuideView.ProgressCalculate(suitHaveCount, suitTotalCount);
  140. return value;
  141. }
  142. public void UpdateHeadWithLv(GComponent component, int headId, int roleBorderId, int lv)
  143. {
  144. UI_ComHeadWithLv comHeadWithLv = UI_ComHeadWithLv.Proxy(component);
  145. UpdateHead(comHeadWithLv.m_comHead.target, headId, roleBorderId);
  146. UpdateLv(comHeadWithLv.m_comLv.target, lv);
  147. UI_ComHeadWithLv.ProxyEnd();
  148. }
  149. public void UpdateHeadWithLv1(GComponent component, int headId, int roleBorderId, int lv)
  150. {
  151. UI_ComHeadWithLv1 comHeadWithLv = UI_ComHeadWithLv1.Proxy(component);
  152. ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(headId == 0 ? ConstItemID.HEADID : headId);
  153. ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(roleBorderId == 0 ? ConstItemID.HEADBORDERID : roleBorderId);
  154. comHeadWithLv.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
  155. comHeadWithLv.m_loaHeadBorder.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res);
  156. comHeadWithLv.m_txtLv.text = lv > 0 ? lv.ToString() : "--";
  157. UI_ComHeadWithLv1.ProxyEnd();
  158. }
  159. public void UpdateHead(GComponent component, int headId, int roleBorderId)
  160. {
  161. ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(headId == 0 ? ConstItemID.HEADID : headId);
  162. ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(roleBorderId == 0 ? ConstItemID.HEADBORDERID : roleBorderId);
  163. UI_ComHead comHead = UI_ComHead.Proxy(component);
  164. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
  165. comHead.m_loaBorder.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res);
  166. UI_ComHead.ProxyEnd();
  167. }
  168. public void UpdateArenaNpcHead(GComponent component, string res)
  169. {
  170. UI_ComHead comHead = UI_ComHead.Proxy(component);
  171. if (string.IsNullOrEmpty(res))
  172. {
  173. comHead.m_comHead.m_loaIcon.url = res;
  174. }
  175. else
  176. {
  177. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(res);
  178. }
  179. UI_ComHead.ProxyEnd();
  180. }
  181. public void UpdateNpcHead(GComponent component, string res)
  182. {
  183. UI_ComHead comHead = UI_ComHead.Proxy(component);
  184. if (string.IsNullOrEmpty(res))
  185. {
  186. comHead.m_comHead.m_loaIcon.url = res;
  187. }
  188. else
  189. {
  190. comHead.m_comHead.m_loaIcon.url = ResPathUtil.GetNpcHeadPath(res);
  191. }
  192. UI_ComHead.ProxyEnd();
  193. }
  194. public void UpdateLv(GComponent component, int lv)
  195. {
  196. UI_ComHeadLv comLv = UI_ComHeadLv.Proxy(component);
  197. comLv.m_txtLvl.text = lv > 0 ? lv.ToString() : "--";
  198. UI_ComHeadLv.ProxyEnd();
  199. }
  200. public static string[] GetSuitPosItems()
  201. {
  202. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  203. string[] posItems = new string[GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0] + privilegeCfg.value2Arr[0]];
  204. for (int i = 0; i < posItems.Length; i++)
  205. {
  206. posItems[i] = "";
  207. if (GetPosType(i) == 0)
  208. {
  209. posItems[i] = "";
  210. }
  211. else if (GetPosType(i) == MonthCardType.Gold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold))
  212. {
  213. posItems[i] = "灵犀卡开启";
  214. }
  215. else if (GetPosType(i) == MonthCardType.BlackGold && !RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold))
  216. {
  217. posItems[i] = "璇玑卡开启";
  218. }
  219. }
  220. return posItems;
  221. }
  222. //获取指定位置月卡类型
  223. public static int GetPosType(int pos)
  224. {
  225. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum) return 0;
  226. MonthlyCardPrivilegeCfg privilegeCfg = MonthlyCardPrivilegeCfgArray.Instance.GetCfg(MonthCardPrivilegeType.Privilege4);
  227. if (pos < GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.Gold;
  228. if (pos >= GlobalCfgArray.globalCfg.freeAlbumNum + privilegeCfg.value1Arr[0]) return MonthCardType.BlackGold;
  229. return 0;
  230. }
  231. }
  232. }