TimeTracingSwitchView.cs 8.8 KB

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