TimeTracingSwitchView.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. using System;
  2. using System.Collections.Generic;
  3. using ET;
  4. using FairyGUI;
  5. using UI.CommonGame;
  6. using UI.TimeTracing;
  7. using UnityEngine;
  8. namespace GFGGame
  9. {
  10. public class TimeTracingSwitchView : BaseWindow
  11. {
  12. private UI_TimeTracingSwitchUI _ui;
  13. private List<int> suitIdList = new List<int>() { 201030, 201010, 202006, 0};
  14. private List<int> chapterIdList = new List<int>() { 61001,62002,62003 ,0};
  15. private List<string> NumStringList = new List<string>() {"", "一", "二", "三", "四", "五" };
  16. public override void Dispose()
  17. {
  18. base.Dispose();
  19. }
  20. protected override void OnInit()
  21. {
  22. base.OnInit();
  23. packageName = UI_TimeTracingSwitchUI.PACKAGE_NAME;
  24. _ui = UI_TimeTracingSwitchUI.Create();
  25. this.viewCom = _ui.target;
  26. isfullScreen = true;
  27. modal = true;
  28. _ui.m_btnBack.onClick.Add(OnClickBtnBack);
  29. _ui.m_List.itemRenderer = RenderListItem;
  30. _ui.m_List.scrollPane.onScroll.Add(DoSpecialEffect);//滚动时派发事件
  31. }
  32. protected override void OnShown()
  33. {
  34. base.OnShown();
  35. UpdateList();
  36. _ui.m_List.numItems = suitIdList.Count + 2;
  37. for(int i = 0;i< suitIdList.Count;i++)
  38. {
  39. if(TimeTracingDataManager.SuitID == suitIdList[i])
  40. {
  41. _ui.m_List.ScrollToView(i, true, true);
  42. break;
  43. }
  44. }
  45. DoSpecialEffect();
  46. Timers.inst.AddUpdate(CheckGuide);
  47. }
  48. protected override void OnHide()
  49. {
  50. Timers.inst.Remove(CheckGuide);
  51. base.OnHide();
  52. }
  53. private void RenderListItem(int index, GObject obj)
  54. {
  55. UI_TimeTracingSwitchItem listItem = UI_TimeTracingSwitchItem.Proxy(obj);
  56. int isLock = 1;
  57. if (index == 0 || index == _ui.m_List.numItems - 1)
  58. {
  59. listItem.target.visible = false;
  60. UI_TimeTracingSwitchItem.ProxyEnd();
  61. return;
  62. }
  63. if (index != _ui.m_List.numItems - 2)
  64. {
  65. listItem.m_TimeTracingSwitchItm.m_periodsNumText.text = "第" + NumStringList[index] + "期";
  66. listItem.m_TimeTracingSwitchItm.m_periodsNameText.text = "";
  67. listItem.m_TimeTracingSwitchItm.m_suitIcon.icon = string.Format("ui://TimeTracing/select{0}",index);
  68. listItem.m_TimeTracingSwitchItm.m_waitText.visible = false;
  69. }
  70. else
  71. {
  72. listItem.m_TimeTracingSwitchItm.m_periodsNumText.visible = false;
  73. listItem.m_TimeTracingSwitchItm.m_periodsNameText.visible = false;
  74. listItem.m_TimeTracingSwitchItm.m_suitIcon.icon = "";
  75. listItem.m_TimeTracingSwitchItm.m_waitText.visible = true;
  76. }
  77. if (index > 1 && index < _ui.m_List.numItems - 2)
  78. {
  79. int count;
  80. int totalCount;
  81. DressUpMenuSuitDataManager.GetSuitProgressBySuitId(suitIdList[index - 2], out count, out totalCount);
  82. if (count >= totalCount)
  83. {
  84. isLock = 1;
  85. }
  86. else
  87. {
  88. isLock = 0;
  89. }
  90. }
  91. if (listItem.target.data == null)
  92. {
  93. listItem.target.onClick.Add(OnClickListChapterItem);
  94. }
  95. RedDotController.Instance.SetComRedDot(listItem.target, TimeTracingDataManager.Instance.GetChapterIDRewardStatus(chapterIdList[index - 1]), "", 0, 65);
  96. listItem.target.data = new List<int>() { index, suitIdList[index - 1], chapterIdList[index - 1], isLock };
  97. UI_TimeTracingSwitchItem.ProxyEnd();
  98. }
  99. private void OnClickListChapterItem(EventContext context)
  100. {
  101. GObject chapterItem = context.sender as GObject;
  102. List<int> chapterID = (List<int>)chapterItem.data;
  103. StoryChapterCfg chapterCfg = StoryChapterCfgArray.Instance.GetCfg(chapterID[1]);
  104. //这里变成-1,是因为调整了item,最左右两边现在有item但是是透明没数据的
  105. int index = chapterID[0];
  106. int firstChildIndex = _ui.m_List.GetFirstChildInView();
  107. if (firstChildIndex + 1 != index)
  108. {
  109. _ui.m_List.ScrollToView(index - 1, true, true);
  110. }
  111. else
  112. {
  113. if (chapterID[3] == 1)
  114. {
  115. if(chapterID[0] == _ui.m_List.numItems - 2 || chapterID[1] == 0)
  116. {
  117. return;
  118. }
  119. TimeTracingDataManager.SuitID = chapterID[1];
  120. TimeTracingDataManager._currentChapterId = chapterID[2];
  121. EventAgent.DispatchEvent(ConstMessage.TIMETRACINGUPDATE);
  122. this.Hide();
  123. }
  124. else
  125. {
  126. PromptController.Instance.ShowFloatTextPrompt("需集齐前置套装");
  127. return;
  128. }
  129. }
  130. }
  131. private void OnClickBtnBack()
  132. {
  133. ViewManager.GoBackFrom(typeof(TimeTracingSwitchView).FullName);
  134. }
  135. private void UpdateList()
  136. {
  137. chapterIdList.Clear();
  138. suitIdList.Clear();
  139. for (int i = 0;i<TimeTracingDataManager.Instance.IdList.Count;i++)
  140. {
  141. ActivityOpenCfg activityDate = ActivityOpenCfgArray.Instance.GetCfg(TimeTracingDataManager.Instance.IdList[i]);
  142. chapterIdList.Add(activityDate.params3Arr[0]);
  143. ActivityFightCfg storydate = ActivityFightCfgArray.Instance.GetCfg(chapterIdList[i]);
  144. if(storydate.activitySuitIdArr == null || storydate.activitySuitIdArr.Length == 0)
  145. {
  146. suitIdList.Add(0);
  147. }
  148. else
  149. {
  150. suitIdList.Add(storydate.activitySuitIdArr[0]);
  151. }
  152. }
  153. chapterIdList.Add(0);
  154. suitIdList.Add(0);
  155. }
  156. private void DoSpecialEffect(object parm = null)
  157. {
  158. //scrollPane.scrollingPosX这个实时变化,。scrollPane.posX这个使用ScrlootoVIew直接取终值
  159. float listCenter = _ui.m_List.scrollPane.scrollingPosX + _ui.m_List.viewWidth / 2;
  160. float listLeft = _ui.m_List.scrollPane.posX + _ui.m_List.viewWidth / 2; ;
  161. for (int i = 0; i < _ui.m_List.numChildren; i++)
  162. {
  163. GObject item = _ui.m_List.GetChildAt(i);
  164. float itemCenter = item.x + item.width / 2;//循环列表内元素的中心x值
  165. float itemWidth = item.width;//列表元素的宽度
  166. float distance = Mathf.Abs(listCenter - itemCenter);
  167. // if (distance < item.width)
  168. {
  169. float distanceRange = 1 + (1 - distance / itemWidth) * 0.2f;//使放大动画有渐进效果
  170. item.SetScale(distanceRange, distanceRange);//设置放大比例
  171. ////设置颜色变化
  172. //if (distance < item.width / 2)
  173. //{
  174. // UI_TimeTracingSwitchItem listItem = UI_TimeTracingSwitchItem.Proxy(_ui.m_List.GetChildAt(i));
  175. // listItem.m_content.m_compPic.m_pic.color = new Color(1.0f, 1.0f, 1.0f, 1.000f);
  176. //}
  177. //else
  178. //{
  179. // UI_TimeTracingSwitchItem listItem = UI_TimeTracingSwitchItem.Proxy(_ui.m_List.GetChildAt(i));
  180. // listItem.m_content.m_compPic.m_pic.color = new Color(0.4f, 0.4f, 0.4f, 1.000f);
  181. //}
  182. }
  183. //float distanceX = ((1 - (listCenter - itemCenter)) / itemWidth) * 0.05f;//使y轴移动有渐进效果
  184. //item.y = -_ui.m_List.height * distanceX;
  185. }
  186. }
  187. private void CheckGuide(object param)
  188. {
  189. GRoot.inst.touchable = true;
  190. if (GuideDataManager.IsGuideFinish("TimeTracingShowView") <= 0)
  191. UpdateCheckGuide(null);
  192. else
  193. Timers.inst.Remove(CheckGuide);
  194. }
  195. protected void UpdateCheckGuide(object param)
  196. {
  197. if (!ViewManager.CheckIsTopView(this.viewCom)) return;
  198. GuideController.TryGuide(null, "TimeTracingShowView", 7, "集齐前一套装可前往合成下一套。", - 1, true, 0, false, false, true);
  199. GuideController.TryGuide(_ui.m_btnBack, "TimeTracingShowView", 8, "点击返回。", -1, true, 0, false, false, true);
  200. }
  201. }
  202. }