TimeTracingLevelInfoView.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. using FairyGUI;
  2. using UI.Main;
  3. using System.Collections.Generic;
  4. using UI.CommonGame;
  5. using UI.TimeTracing;
  6. using System;
  7. using cfg.GfgCfg;
  8. using ET;
  9. using UnityEngine;
  10. using UI_ListRewardItem = UI.Main.UI_ListRewardItem;
  11. namespace GFGGame
  12. {
  13. public class TimeTracingLevelInfoView : BaseWindow
  14. {
  15. private const int _quicklyStarCount = 2;//达到2星可快速挑战
  16. private UI_TimeTracingLevelInfoUI _ui;
  17. private int _levelID;
  18. private int _needItemId;
  19. private int _needItemCount;
  20. private int _type;
  21. private int _storyType;
  22. private int _index;
  23. private List<ItemData> _bonusList = new List<ItemData>();
  24. public override void Dispose()
  25. {
  26. if (_ui != null)
  27. {
  28. _ui.Dispose();
  29. _ui = null;
  30. }
  31. base.Dispose();
  32. }
  33. protected override void OnInit()
  34. {
  35. base.OnInit();
  36. _ui = UI_TimeTracingLevelInfoUI.Create();
  37. this.viewCom = _ui.target;
  38. this.viewCom.Center();
  39. this.modal = true;
  40. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  41. _ui.m_listBonus.itemRenderer = UpdateBonusItem;
  42. // _ui.m_listBonus.onClickItem.Add(OnClickListBonusItem);
  43. _ui.m_btnStart.onClick.Add(OnClickBtnStart);
  44. _ui.m_btnFightOnce.onClick.Add(OnClickBtnFightOnce);
  45. _ui.m_btnFightTimes.onClick.Add(OnClickBtnFightTimes);
  46. _ui.m_suitAddBtn.target.onClick.Add(OnClickSuitAddBtn);
  47. _ui.m_scoreRewardBtn.target.onClick.Add(OnClickScoreRewardBtn);
  48. _ui.m_levelRankBtn.target.onClick.Add(OnClickRankBtn);
  49. _ui.m_backBtn.onClick.Add(OnClickBackBtn);
  50. _ui.m_btnAdditionDesc.onClick.Add(OnBtnAdditionDescClick);
  51. _ui.m_addBtn.onClick.Add(OnClickAddBtn);
  52. _ui.m_ruleBtn.onClick.Add(RuleController.ShowRuleView);
  53. }
  54. protected override void AddEventListener()
  55. {
  56. base.AddEventListener();
  57. EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);
  58. EventAgent.AddEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateVisitNum);
  59. EventAgent.AddEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateBtnFightTimes);
  60. EventAgent.AddEventListener(ConstMessage.TIMETRACINGREDUPDATE, UpdateRed);
  61. }
  62. protected async override void OnShown()
  63. {
  64. base.OnShown();
  65. ViewManager.SetMaskAlpha(0.8f);
  66. _levelID = (int)(viewData as object[])[0];
  67. _needItemId = (int)(viewData as object[])[1];
  68. _needItemCount = (int)(viewData as object[])[2];
  69. StoryLevelCfg levelCfg =CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(_levelID);
  70. _type = levelCfg.Type;
  71. _storyType = levelCfg.SubType;
  72. _ui.m_btnStart.touchable = true;
  73. _ui.m_ruleBtn.data = 300030;
  74. await ReqGetLevelRank();
  75. RedDotController.Instance.SetComRedDot(_ui.m_scoreRewardBtn.target, TimeTracingDataManager.Instance.GetLevelRewardStatus(_levelID));
  76. UpdateView();
  77. }
  78. protected override void OnHide()
  79. {
  80. base.OnHide();
  81. ViewManager.SetMaskAlpha(0.6f);
  82. }
  83. protected override void RemoveEventListener()
  84. {
  85. base.RemoveEventListener();
  86. EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);
  87. EventAgent.RemoveEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateVisitNum);
  88. EventAgent.RemoveEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateBtnFightTimes);
  89. EventAgent.RemoveEventListener(ConstMessage.TIMETRACINGREDUPDATE, UpdateRed);
  90. }
  91. private void OnClickBtnStart()
  92. {
  93. // int time = InstanceZonesDataManager.GetCanFightTime(_levelID);
  94. InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
  95. if (times > 0)
  96. {
  97. DressUpFightType dressUpFightType = new DressUpFightType();
  98. dressUpFightType.levelID = _levelID;
  99. dressUpFightType.teaPartID = 0;
  100. ViewManager.Show<DressUpFightView>(dressUpFightType, true, false);
  101. this.Hide();
  102. }
  103. else
  104. {
  105. var levelCfg = CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(_levelID);
  106. if (RoleDataManager.power < levelCfg.Power)
  107. {
  108. ItemUtil.AddPower(OnClickBtnStart);
  109. }
  110. else
  111. {
  112. if (levelCfg.Type == ConstInstanceZonesType.Studio && levelCfg.ChapterId != StudioDataManager.Instance.GetLuckyBoxActivityID())
  113. {
  114. var studioCfg =CommonDataManager.Tables.TblStudioCfg.GetOrDefault(levelCfg.ChapterId);
  115. ViewManager.Show<StudioBuyNumView>(studioCfg.Limit);
  116. }
  117. else
  118. {
  119. PromptController.Instance.ShowFloatTextPrompt("挑战次数不足");
  120. }
  121. }
  122. }
  123. }
  124. private void OnClickBtnFightOnce()
  125. {
  126. // int time = InstanceZonesDataManager.GetCanFightTime(_levelID);
  127. int starCount = InstanceZonesDataManager.GetStarCountHistory(_levelID);
  128. StoryLevelCfg levelCfg = CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(_levelID);
  129. StoryFightCfg fightCfg = CommonDataManager.Tables.TblStoryFightCfg.GetOrDefault(int.Parse(levelCfg.FightID));
  130. if (starCount < fightCfg.QuickFightStart)
  131. {
  132. PromptController.Instance.ShowFloatTextPrompt("挑战星数不足");
  133. return;
  134. }
  135. InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
  136. if (times > 0)
  137. {
  138. ViewManager.Show<StoryFightQuicklyView>(new object[] { 1, _needItemId, _needItemCount });
  139. this.Hide();
  140. }
  141. else
  142. {
  143. if (RoleDataManager.power < levelCfg.Power)
  144. {
  145. ItemUtil.AddPower(OnClickBtnFightOnce);
  146. }
  147. else
  148. {
  149. if (levelCfg.Type == ConstInstanceZonesType.Studio && levelCfg.ChapterId != StudioDataManager.Instance.GetLuckyBoxActivityID())
  150. {
  151. var studioCfg =CommonDataManager.Tables.TblStudioCfg.GetOrDefault(levelCfg.ChapterId);
  152. ViewManager.Show<StudioBuyNumView>(studioCfg.Limit);
  153. }
  154. else
  155. {
  156. PromptController.Instance.ShowFloatTextPrompt("挑战次数不足");
  157. }
  158. }
  159. }
  160. }
  161. private void OnClickBtnFightTimes()
  162. {
  163. //只要按钮显示说明一定可以速刷多次
  164. InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
  165. ViewManager.Show<StoryFightQuicklyView>(new object[] { times, _needItemId, _needItemCount });
  166. this.Hide();
  167. }
  168. public void UpdateRed()
  169. {
  170. RedDotController.Instance.SetComRedDot(_ui.m_scoreRewardBtn.target, TimeTracingDataManager.Instance.GetLevelRewardStatus(_levelID));
  171. }
  172. private void UpdateBonusItem(int index, GObject item)
  173. {
  174. ItemData itemData = _bonusList[index] as ItemData;
  175. UI_ListRewardItem listItem = UI_ListRewardItem.Proxy(item);
  176. ItemCfg cfg =CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemData.id);
  177. listItem.m_txtName.text = cfg.Name;
  178. listItem.m_txtOwner.text = string.Format("已拥有:{0}", ItemDataManager.GetItemNum(itemData.id));
  179. if (item.data == null)
  180. {
  181. item.data = new ItemView(listItem.m_comItem as GComponent);
  182. }
  183. (item.data as ItemView).SetData(itemData);
  184. //(item.data as ItemView).ShowTxtCount = false;
  185. List<ItemData> bonusOnceData = StoryBonusDataCache.GetBonusData(_levelID).bonusOnce;
  186. (item.data as ItemView).ImgShouTongVisable = !InstanceZonesDataManager.CheckLevelPass(_levelID) && index < bonusOnceData.Count;
  187. UI_ListRewardItem.ProxyEnd();
  188. }
  189. private void UpdateBtnFightTimes()
  190. {
  191. InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
  192. _ui.m_btnFightTimes.title = title;
  193. _ui.m_btnFightTimes.visible = times > 1;
  194. }
  195. private void UpdateView()
  196. {
  197. StoryLevelCfg levelCfg =CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(_levelID);
  198. StoryFightCfg fightCfg = CommonDataManager.Tables.TblStoryFightCfg.GetOrDefault(int.Parse(levelCfg.FightID));
  199. var title = levelCfg.Name;
  200. switch (levelCfg.Type)
  201. {
  202. case ConstInstanceZonesType.Story:
  203. title = MainStoryDataManager.CurrentChapterOrder + "-" + InstanceZonesDataManager.currentLevelOrder + " " + levelCfg.Name;
  204. break;
  205. }
  206. _ui.m_txtTitle.text = title;
  207. _ui.m_txtLevelDesc.text = levelCfg.Desc;
  208. ItemUtil.UpdateItemNeedNum(_ui.m_comCostCurrent, ConstItemID.POWER, levelCfg.Power);
  209. _ui.m_comCostCurrent.visible = levelCfg.Power > 0;
  210. _ui.m_scoreType.url = "ui://CommonGame/kp_sx_" + fightCfg.ScoreType;
  211. if (fightCfg.TargetName != null && fightCfg.TargetName.Length > 0)
  212. {
  213. _ui.m_txtTargetName.text = "挑战对手·" + fightCfg.TargetName;
  214. _ui.m_loaderHead.url = ResPathUtil.GetNpcHeadPath(fightCfg.TargetRes);
  215. }
  216. else
  217. {
  218. _ui.m_txtTargetName.text = RoleDataManager.roleName;
  219. _ui.m_loaderHead.url = ResPathUtil.GetNpcHeadPath("self");
  220. }
  221. _bonusList.Clear();
  222. if (InstanceZonesDataManager.CheckLevelPass(_levelID))
  223. {
  224. _bonusList = StoryBonusDataCache.GetBonusList(_levelID, false, true);
  225. _ui.m_groupPass.visible = InstanceZonesDataManager.GetStarCountHistory(_levelID) >= _quicklyStarCount;
  226. _ui.m_groupUnpass.visible = InstanceZonesDataManager.GetStarCountHistory(_levelID) < _quicklyStarCount;
  227. UpdateBtnFightTimes();
  228. }
  229. else
  230. {
  231. _bonusList = StoryBonusDataCache.GetBonusList(_levelID, true);
  232. _ui.m_groupPass.visible = false;
  233. _ui.m_groupUnpass.visible = true;
  234. _ui.m_txtUnpassTips.SetVar("count", NumberUtil.GetChiniseNumberText(fightCfg.QuickFightStart)).FlushVars();
  235. }
  236. _ui.m_listBonus.numItems = _bonusList.Count;
  237. // if (_ui.m_listBonus.numItems > 4)
  238. // {
  239. // _ui.m_listBonus.columnGap = 40;
  240. // }
  241. // else
  242. // {
  243. // _ui.m_listBonus.columnGap = 60;
  244. // }
  245. int score = InstanceZonesDataManager.GetScoreHighest(_levelID);
  246. if (score > 0)
  247. {
  248. string scoreStr = "" + score;
  249. if (score <= fightCfg.Score1)
  250. {
  251. scoreStr = "[color=#A28D77]失败 " + scoreStr + "[/color]";
  252. }
  253. _ui.m_txtHighestScore.text = scoreStr;
  254. _ui.m_flower.target.visible = true;
  255. int starCount = InstanceZonesDataManager.GetStarCountHistory(_levelID);
  256. StoryUtil.UpdateStar(starCount, _ui.m_flower.target);
  257. }
  258. else
  259. {
  260. _ui.m_txtHighestScore.text = "--";
  261. _ui.m_flower.target.visible = false;
  262. }
  263. _ui.m_grpAdditionDesc.visible = false;
  264. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(TimeTracingDataManager.SuitID);
  265. DressUpMenuSuitDataManager.GetSuitProgressBySuitId(TimeTracingDataManager.SuitID, out int count, out int totalCount);
  266. _ui.m_txtAdditionDesc.text = string.Format("{0}套装收集进度:{1}/{2}", suitCfg.Name, count, totalCount);
  267. float addition = 0;
  268. StudioDataManager.Instance.filingChapterId = levelCfg.ChapterId;
  269. addition = StudioDataManager.Instance.GetAddition(ConstInstanceZonesType.PureFight);
  270. addition = addition / 10000 * 100;
  271. _ui.m_txtAddition.text = string.Format("{0}%加成", addition);
  272. SuitCfg cfg =CommonDataManager.Tables.TblSuitCfg.GetOrDefault(TimeTracingDataManager.SuitID);
  273. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(cfg.Parts[0]);
  274. if (itemCfg.Addition == 0)
  275. {
  276. _ui.m_txtAddition.text = "无加成";
  277. }
  278. _ui.m_suitAddBtn.m_c1.selectedIndex = 0;
  279. _ui.m_scoreRewardBtn.m_c1.selectedIndex = 1;
  280. UpdateVisitNum();
  281. UpdateRankBtn();
  282. }
  283. private void UpdateRankBtn()
  284. {
  285. if (TimeTracingDataManager._LevelMaxInfoDic.ContainsKey(TimeTracingDataManager._currentChapterId)&& TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId].ContainsKey(_levelID))
  286. {
  287. _ui.m_levelRankBtn.target.visible = true;
  288. _ui.m_levelRankBtn.m_name.text = TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].RoleName;
  289. ItemCfg headCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].HeadItemId);
  290. ItemCfg headBorderCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].HeadBorderItemId);
  291. _ui.m_levelRankBtn.m_headbg.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.Res);
  292. _ui.m_levelRankBtn.m_head.url = ResPathUtil.GetHeadPath(headCfg.Res);
  293. }
  294. else
  295. {
  296. _ui.m_levelRankBtn.m_name.text = "";
  297. _ui.m_levelRankBtn.m_headbg.url = "";
  298. _ui.m_levelRankBtn.m_head.url = "";
  299. }
  300. }
  301. private void RenderListTagItem(int index, GObject obj)
  302. {
  303. UI_ComTag item = UI_ComTag.Proxy(obj);
  304. StoryLevelCfg levelCfg =CommonDataManager.Tables.TblStoryLevelCfg.GetOrDefault(_levelID);
  305. StoryFightCfg fightCfg =CommonDataManager.Tables.TblStoryFightCfg.GetOrDefault(int.Parse(levelCfg.FightID));
  306. string tag = fightCfg.NeedTags[index];
  307. int tagType =CommonDataManager.Tables.TblTagCfg.GetOrDefault(tag).Type;
  308. item.m_txtTag.text = tag;
  309. item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tagType);
  310. UI_ComTag.ProxyEnd();
  311. }
  312. //时光回溯活动
  313. private void UpdateVisitNum()
  314. {
  315. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(TimeTracingDataManager._currentChapterId).Limit);
  316. int time = limitData.TotalPlayMax - limitData.PlayTimes;
  317. _ui.m_limitNum.text = string.Format("今日免费次数:{0}/{1}", limitData.TotalPlayMax - limitData.PlayTimes, limitData.MaxStorageCount);
  318. }
  319. private void OnClickAddBtn()
  320. {
  321. int limitId = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(TimeTracingDataManager._currentChapterId).Limit;
  322. string name =CommonDataManager.Tables.TblItemCfg.GetOrDefault(CommonDataManager.Tables.TblLimitCfg.GetOrDefault(limitId).MoneyId).Name;
  323. string desc = string.Format("是否花费{0}{1}购买{2}次过关次数?", CommonDataManager.Tables.TblLimitCfg.GetOrDefault(limitId).MoneyNum[0], name, 1);
  324. ViewManager.Show<ZCJBBuyTipsView>(new object[] { desc,limitId });
  325. }
  326. private void OnBtnAdditionDescClick()
  327. {
  328. _ui.m_grpAdditionDesc.visible = !_ui.m_grpAdditionDesc.visible;
  329. }
  330. private void OnClickSuitAddBtn()
  331. {
  332. ViewManager.Show<TimeTracingSuitAddView>();
  333. }
  334. private void OnClickScoreRewardBtn()
  335. {
  336. ViewManager.Show<TimeTracingLevelRewardView>(_levelID);
  337. }
  338. private async void OnClickRankBtn()
  339. {
  340. await TimeTracingSProxy.ReqGetLevelRank(_levelID);
  341. await TimeTracingSProxy.ReqGetLevelFriendRank(_levelID);
  342. ViewManager.Show<TimeTracingLevelRankView>(_levelID);
  343. }
  344. private void OnClickBackBtn()
  345. {
  346. this.Hide();
  347. }
  348. private async ETTask ReqGetLevelRank()
  349. {
  350. //await TimeTracingSProxy.ReqGetLevelRank(_levelID);
  351. //await TimeTracingSProxy.ReqGetLevelFriendRank(_levelID);
  352. }
  353. }
  354. }