SuitSyntheticView.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. using System.Collections;
  2. using UnityEngine;
  3. using UI.ClothingSynthetic;
  4. using FairyGUI;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using cfg.GfgCfg;
  8. using ET;
  9. namespace GFGGame
  10. {
  11. public class SuitSyntheticView : BaseView
  12. {
  13. private UI_ClothingSyntheticListUI _ui;
  14. private List<int> _suitListIds;
  15. public override void Dispose()
  16. {
  17. if (_ui != null)
  18. {
  19. _ui.Dispose();
  20. _ui = null;
  21. }
  22. base.Dispose();
  23. }
  24. protected override void OnInit()
  25. {
  26. base.OnInit();
  27. packageName = UI_ClothingSyntheticListUI.PACKAGE_NAME;
  28. _ui = UI_ClothingSyntheticListUI.Create();
  29. this.viewCom = _ui.target;
  30. isfullScreen = true;
  31. isReturnView = true;
  32. _ui.m_listSuit.itemRenderer = ListSuitItemRenderer;
  33. _ui.m_btnBack.onClick.Add(OnClickBtnBack);
  34. _ui.m_listMenu.onClickItem.Add(OnClickListMenuItem);
  35. _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hz_bjbj");
  36. }
  37. protected override void AddEventListener()
  38. {
  39. base.AddEventListener();
  40. EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus);
  41. EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);
  42. EventAgent.AddEventListener(ConstMessage.CLOTHING_SYNTHETIC_SUCCESS, UpdateSuitList);
  43. }
  44. protected override void OnShown()
  45. {
  46. base.OnShown();
  47. _ui.m_listMenu.selectedIndex = 0;
  48. if (this.viewData != null)
  49. {
  50. int suitId = (int)this.viewData;
  51. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  52. _ui.m_listMenu.selectedIndex = suitCfg.SyntheticType - 1;
  53. }
  54. // _ui.m_listMenu.GetChildAt(1).visible = false;
  55. UpdateSuitList();
  56. UpdateRedDot();
  57. //Timers.inst.AddUpdate(CheckGuide);
  58. }
  59. protected override void OnHide()
  60. {
  61. base.OnHide();
  62. //Timers.inst.Remove(CheckGuide);
  63. }
  64. protected override void RemoveEventListener()
  65. {
  66. base.RemoveEventListener();
  67. EventAgent.RemoveEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus);
  68. EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);
  69. EventAgent.RemoveEventListener(ConstMessage.CLOTHING_SYNTHETIC_SUCCESS, UpdateSuitList);
  70. }
  71. private void OnClickBtnBack()
  72. {
  73. ViewManager.GoBackFrom(typeof(SuitSyntheticView).FullName);
  74. }
  75. private void OnClickListMenuItem()
  76. {
  77. UpdateSuitList();
  78. }
  79. private void UpdateSuitList()
  80. {
  81. if (_suitListIds == null)
  82. {
  83. _suitListIds = new List<int>();
  84. }
  85. else
  86. {
  87. _suitListIds.Clear();
  88. }
  89. int index = _ui.m_listMenu.selectedIndex;
  90. var suitCfgs = CommonDataManager.Tables.TblSuitCfg.DataList.Where(a => a.SyntheticType == index + 1)
  91. .ToList();
  92. foreach (var suitCfg in suitCfgs)
  93. {
  94. _suitListIds.Add(suitCfg.Id);
  95. }
  96. _ui.m_listSuit.numItems = _suitListIds.Count;
  97. }
  98. private void ListSuitItemRenderer(int index, GObject item)
  99. {
  100. UI_SuitListItem listItem = UI_SuitListItem.Proxy(item);
  101. int suitId = _suitListIds[index];
  102. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  103. listItem.m_txtName.text = suitCfg.Name;
  104. listItem.m_loaderPic.url = ResPathUtil.GetFieldGuideIconPath(suitCfg.Res);
  105. int count = 0;
  106. int totalCount = 0;
  107. DressUpMenuSuitDataManager.GetSuitProgressBySuitId(suitId, out count, out totalCount);
  108. listItem.m_progBar.max = totalCount;
  109. listItem.m_progBar.value = count;
  110. RarityIconController.UpdateRarityIcon(listItem.m_rarity, suitId, false, true);
  111. bool haveSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitId);
  112. bool isLock = false;
  113. // SuitCfg suitSyntheticCfg = SuitCfgArray.Instance.GetCfg(suitId);
  114. if (suitCfg.SyntheticStoryLevelId > 0)
  115. {
  116. //int chapter = 0;
  117. //int level = 0;
  118. //CalculateHelper.GetStoryChapterLevel(suitSyntheticCfg.storyLevelId, out var chapter, out var level);
  119. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId);
  120. if (!isLevelPass)
  121. {
  122. isLock = true;
  123. var levelCfg =
  124. CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(suitCfg.SyntheticStoryLevelId);
  125. string str = "";
  126. if (levelCfg.Type == ConstInstanceZonesType.Studio &&
  127. levelCfg.SubType == ConstInstanceZonesSubType.Hard3)
  128. {
  129. StoryLevelCfg cfg =
  130. CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(suitCfg.SyntheticStoryLevelId);
  131. str = string.Format("通关查阅建档 {0}", cfg.Name);
  132. }
  133. else
  134. {
  135. var chapterCfg = CommonDataManager.Tables.TblStoryChapterCfg.GetOrDefault(levelCfg.ChapterId);
  136. str = string.Format("通关第{0}章第{1}关", chapterCfg.Order, levelCfg.Order);
  137. }
  138. listItem.m_txtLockDesc.text = str;
  139. }
  140. }
  141. if (suitCfg.SyntheticPreSuitId > 0)
  142. {
  143. bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId);
  144. if (!hasPreSuit)
  145. {
  146. isLock = true;
  147. string preSuitName = SuitUtil.GetSuitName(suitCfg.SyntheticPreSuitId);
  148. listItem.m_txtLockDesc.text = string.Format("集齐{0}套装", preSuitName);
  149. }
  150. }
  151. listItem.m_groupLock.visible = isLock;
  152. listItem.target.data = suitId;
  153. UpdateSuitBoxStatusView(listItem);
  154. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  155. listItem.m_bonusGift.m_loaderBonusBox.onClick.Clear();
  156. listItem.m_bonusGift.m_loaderBonusBox.onClick.Add(() => { SuitUtil.ShowSuitSyntheticBonus(suitId); });
  157. listItem.m_bg.onClick.Clear();
  158. listItem.m_bg.onClick.Add(() =>
  159. {
  160. if (!isLock)
  161. {
  162. ViewManager.Show<ClothingSyntheticView>(new object[] { suitId });
  163. }
  164. });
  165. // 提示合成物品的红点
  166. RedDotController.Instance.SetComRedDot(listItem.target,
  167. RedDotDataManager.Instance.GetClothingSyntheticRed(suitId), "", 0, 0);
  168. // 奖励红点
  169. RedDotController.Instance.SetComRedDot(listItem.m_bonusGift.target,
  170. status == ConstBonusStatus.CAN_GET && !isLock, "", -13, -7);
  171. //卡牌领取红点
  172. RedDotController.Instance.SetComRedDot(listItem.target,
  173. DressUpMenuSuitDataManager.GetSuitSyntheticRewardStatus(suitId) == 1, "");
  174. UI_SuitListItem.ProxyEnd();
  175. }
  176. private void UpdateSuitBoxStatus(EventContext eventContext)
  177. {
  178. int suitId = (int)eventContext.data;
  179. int num = _ui.m_listSuit.numChildren;
  180. for (int i = 0; i < num; i++)
  181. {
  182. UI_SuitListItem listItem = UI_SuitListItem.Proxy(_ui.m_listSuit.GetChildAt(i));
  183. int tempSuitId = (int)listItem.target.data;
  184. if (tempSuitId == suitId)
  185. {
  186. UpdateSuitBoxStatusView(listItem);
  187. }
  188. UI_SuitListItem.ProxyEnd();
  189. }
  190. }
  191. private void UpdateSuitBoxStatusView(UI_SuitListItem listItem)
  192. {
  193. UI_BonusGift bonusGift = UI_BonusGift.Proxy(listItem.m_bonusGift.target);
  194. bonusGift.m_iconGot.visible = false;
  195. int suitId = (int)listItem.target.data;
  196. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  197. if (status == ConstBonusStatus.CAN_GET)
  198. {
  199. bonusGift.m_loaderBonusBox.grayed = false;
  200. }
  201. else
  202. {
  203. bonusGift.m_loaderBonusBox.grayed = true;
  204. if (status == ConstBonusStatus.GOT)
  205. {
  206. bonusGift.m_iconGot.visible = true;
  207. }
  208. RedDotController.Instance.SetComRedDot(listItem.m_bonusGift.target, false, "");
  209. }
  210. UI_BonusGift.ProxyEnd();
  211. }
  212. private void UpdateRedDot()
  213. {
  214. RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(0).asCom,
  215. RedDotDataManager.Instance.GetClothingSyntheticTabRed(1), "", 0, -6);
  216. RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(1).asCom,
  217. RedDotDataManager.Instance.GetClothingSyntheticTabRed(2), "", 0, -6);
  218. RedDotController.Instance.SetComRedDot(_ui.m_listMenu.GetChildAt(2).asCom,
  219. RedDotDataManager.Instance.GetClothingSyntheticTabRed(3), "", 0, -6);
  220. }
  221. private void CheckGuide(object param)
  222. {
  223. if (GuideDataManager.IsGuideFinish(ConstGuideId.CLOTHING_SYNTHETIC) <= 0)
  224. {
  225. UpdateToCheckGuide(null);
  226. }
  227. else
  228. {
  229. Timers.inst.Remove(CheckGuide);
  230. }
  231. }
  232. protected override void UpdateToCheckGuide(object param)
  233. {
  234. if (!ViewManager.CheckIsTopView(this.viewCom)) return;
  235. int suitId = 200042;
  236. int suitIndex = 0;
  237. for (int i = 0; i < _suitListIds.Count; i++)
  238. {
  239. if (_suitListIds[i] == suitId)
  240. {
  241. suitIndex = i;
  242. break;
  243. }
  244. }
  245. //GuideController.TryGuide(_ui.m_listSuit, ConstGuideId.CLOTHING_SYNTHETIC, 3, "查看已解锁的图谱。", suitIndex);
  246. }
  247. }
  248. }