using FairyGUI; using UI.Main; using System.Collections.Generic; using UI.CommonGame; using UI.TimeTracing; using System; using ET; using UnityEngine; using UI_ListRewardItem = UI.Main.UI_ListRewardItem; namespace GFGGame { public class TimeTracingLevelInfoView : BaseWindow { private const int _quicklyStarCount = 2;//达到2星可快速挑战 private UI_TimeTracingLevelInfoUI _ui; private int _levelID; private int _needItemId; private int _needItemCount; private int _type; private int _storyType; private int _index; private List _bonusList = new List(); public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_TimeTracingLevelInfoUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_listBonus.itemRenderer = UpdateBonusItem; // _ui.m_listBonus.onClickItem.Add(OnClickListBonusItem); _ui.m_btnStart.onClick.Add(OnClickBtnStart); _ui.m_btnFightOnce.onClick.Add(OnClickBtnFightOnce); _ui.m_btnFightTimes.onClick.Add(OnClickBtnFightTimes); _ui.m_suitAddBtn.target.onClick.Add(OnClickSuitAddBtn); _ui.m_scoreRewardBtn.target.onClick.Add(OnClickScoreRewardBtn); _ui.m_levelRankBtn.target.onClick.Add(OnClickRankBtn); _ui.m_backBtn.onClick.Add(OnClickBackBtn); _ui.m_btnAdditionDesc.onClick.Add(OnBtnAdditionDescClick); _ui.m_addBtn.onClick.Add(OnClickAddBtn); _ui.m_ruleBtn.onClick.Add(RuleController.ShowRuleView); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes); EventAgent.AddEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateVisitNum); EventAgent.AddEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateBtnFightTimes); EventAgent.AddEventListener(ConstMessage.TIMETRACINGREDUPDATE, UpdateRed); } protected async override void OnShown() { base.OnShown(); ViewManager.SetMaskAlpha(0.8f); _levelID = (int)(viewData as object[])[0]; _needItemId = (int)(viewData as object[])[1]; _needItemCount = (int)(viewData as object[])[2]; StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID); _type = levelCfg.type; _storyType = levelCfg.subType; _ui.m_btnStart.touchable = true; _ui.m_ruleBtn.data = 300030; await ReqGetLevelRank(); RedDotController.Instance.SetComRedDot(_ui.m_scoreRewardBtn.target, TimeTracingDataManager.Instance.GetLevelRewardStatus(_levelID)); UpdateView(); } protected override void OnHide() { base.OnHide(); ViewManager.SetMaskAlpha(0.6f); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes); EventAgent.RemoveEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateVisitNum); EventAgent.RemoveEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, UpdateBtnFightTimes); EventAgent.RemoveEventListener(ConstMessage.TIMETRACINGREDUPDATE, UpdateRed); } private void OnClickBtnStart() { // int time = InstanceZonesDataManager.GetCanFightTime(_levelID); InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title); if (times > 0) { DressUpFightType dressUpFightType = new DressUpFightType(); dressUpFightType.levelID = _levelID; dressUpFightType.teaPartID = 0; ViewManager.Show(dressUpFightType, true, false); this.Hide(); } else { var levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID); if (RoleDataManager.power < levelCfg.power) { ItemUtil.AddPower(OnClickBtnStart); } else { if (levelCfg.type == ConstInstanceZonesType.Studio && levelCfg.chapterId != StudioDataManager.Instance.GetLuckyBoxActivityID()) { var studioCfg = StudioCfgArray.Instance.GetCfg(levelCfg.chapterId); ViewManager.Show(studioCfg.limit); } else { PromptController.Instance.ShowFloatTextPrompt("挑战次数不足"); } } } } private void OnClickBtnFightOnce() { // int time = InstanceZonesDataManager.GetCanFightTime(_levelID); int starCount = InstanceZonesDataManager.GetStarCountHistory(_levelID); StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID); StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID); if (starCount < fightCfg.quickFightStart) { PromptController.Instance.ShowFloatTextPrompt("挑战星数不足"); return; } InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title); if (times > 0) { ViewManager.Show(new object[] { 1, _needItemId, _needItemCount }); this.Hide(); } else { if (RoleDataManager.power < levelCfg.power) { ItemUtil.AddPower(OnClickBtnFightOnce); } else { if (levelCfg.type == ConstInstanceZonesType.Studio && levelCfg.chapterId != StudioDataManager.Instance.GetLuckyBoxActivityID()) { var studioCfg = StudioCfgArray.Instance.GetCfg(levelCfg.chapterId); ViewManager.Show(studioCfg.limit); } else { PromptController.Instance.ShowFloatTextPrompt("挑战次数不足"); } } } } private void OnClickBtnFightTimes() { //只要按钮显示说明一定可以速刷多次 InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title); ViewManager.Show(new object[] { times, _needItemId, _needItemCount }); this.Hide(); } public void UpdateRed() { RedDotController.Instance.SetComRedDot(_ui.m_scoreRewardBtn.target, TimeTracingDataManager.Instance.GetLevelRewardStatus(_levelID)); } private void UpdateBonusItem(int index, GObject item) { ItemData itemData = _bonusList[index] as ItemData; UI_ListRewardItem listItem = UI_ListRewardItem.Proxy(item); ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemData.id); listItem.m_txtName.text = cfg.name; listItem.m_txtOwner.text = string.Format("已拥有:{0}", ItemDataManager.GetItemNum(itemData.id)); if (item.data == null) { item.data = new ItemView(listItem.m_comItem as GComponent); } (item.data as ItemView).SetData(itemData); //(item.data as ItemView).ShowTxtCount = false; List bonusOnceData = StoryBonusDataCache.GetBonusData(_levelID).bonusOnce; (item.data as ItemView).ImgShouTongVisable = !InstanceZonesDataManager.CheckLevelPass(_levelID) && index < bonusOnceData.Count; UI_ListRewardItem.ProxyEnd(); } private void UpdateBtnFightTimes() { InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title); _ui.m_btnFightTimes.title = title; _ui.m_btnFightTimes.visible = times > 1; } private void UpdateView() { StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID); StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID); var title = levelCfg.name; switch (levelCfg.type) { case ConstInstanceZonesType.Story: title = MainStoryDataManager.CurrentChapterOrder + "-" + InstanceZonesDataManager.currentLevelOrder + " " + levelCfg.name; break; } _ui.m_txtTitle.text = title; _ui.m_txtLevelDesc.text = levelCfg.desc; ItemUtil.UpdateItemNeedNum(_ui.m_comCostCurrent, ConstItemID.POWER, levelCfg.power); _ui.m_comCostCurrent.visible = levelCfg.power > 0; _ui.m_scoreType.url = "ui://CommonGame/kp_sx_" + fightCfg.scoreType; if (fightCfg.targetName != null && fightCfg.targetName.Length > 0) { _ui.m_txtTargetName.text = "挑战对手·" + fightCfg.targetName; _ui.m_loaderHead.url = ResPathUtil.GetNpcHeadPath(fightCfg.targetRes); } else { _ui.m_txtTargetName.text = RoleDataManager.roleName; _ui.m_loaderHead.url = ResPathUtil.GetNpcHeadPath("self"); } _bonusList.Clear(); if (InstanceZonesDataManager.CheckLevelPass(_levelID)) { _bonusList = StoryBonusDataCache.GetBonusList(_levelID, false, true); _ui.m_groupPass.visible = InstanceZonesDataManager.GetStarCountHistory(_levelID) >= _quicklyStarCount; _ui.m_groupUnpass.visible = InstanceZonesDataManager.GetStarCountHistory(_levelID) < _quicklyStarCount; UpdateBtnFightTimes(); } else { _bonusList = StoryBonusDataCache.GetBonusList(_levelID, true); _ui.m_groupPass.visible = false; _ui.m_groupUnpass.visible = true; _ui.m_txtUnpassTips.SetVar("count", NumberUtil.GetChiniseNumberText(fightCfg.quickFightStart)).FlushVars(); } _ui.m_listBonus.numItems = _bonusList.Count; // if (_ui.m_listBonus.numItems > 4) // { // _ui.m_listBonus.columnGap = 40; // } // else // { // _ui.m_listBonus.columnGap = 60; // } int score = InstanceZonesDataManager.GetScoreHighest(_levelID); if (score > 0) { string scoreStr = "" + score; if (score <= fightCfg.score1) { scoreStr = "[color=#A28D77]失败 " + scoreStr + "[/color]"; } _ui.m_txtHighestScore.text = scoreStr; _ui.m_flower.target.visible = true; int starCount = InstanceZonesDataManager.GetStarCountHistory(_levelID); StoryUtil.UpdateStar(starCount, _ui.m_flower.target); } else { _ui.m_txtHighestScore.text = "--"; _ui.m_flower.target.visible = false; } _ui.m_grpAdditionDesc.visible = false; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(TimeTracingDataManager.SuitID); DressUpMenuSuitDataManager.GetSuitProgressBySuitId(TimeTracingDataManager.SuitID, out int count, out int totalCount); _ui.m_txtAdditionDesc.text = string.Format("{0}套装收集进度:{1}/{2}", suitCfg.name, count, totalCount); float addition = 0; StudioDataManager.Instance.filingChapterId = levelCfg.chapterId; addition = StudioDataManager.Instance.GetAddition(ConstInstanceZonesType.PureFight); addition = addition / 10000 * 100; _ui.m_txtAddition.text = string.Format("{0}%加成", addition); SuitCfg cfg = SuitCfgArray.Instance.GetCfg(TimeTracingDataManager.SuitID); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.partsArr[0]); if (itemCfg.addition == 0) { _ui.m_txtAddition.text = "无加成"; } _ui.m_suitAddBtn.m_c1.selectedIndex = 0; _ui.m_scoreRewardBtn.m_c1.selectedIndex = 1; UpdateVisitNum(); UpdateRankBtn(); } private void UpdateRankBtn() { if (TimeTracingDataManager._LevelMaxInfoDic.ContainsKey(TimeTracingDataManager._currentChapterId)&& TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId].ContainsKey(_levelID)) { _ui.m_levelRankBtn.target.visible = true; _ui.m_levelRankBtn.m_name.text = TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].RoleName; ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].HeadItemId); ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(TimeTracingDataManager._LevelMaxInfoDic[TimeTracingDataManager._currentChapterId][_levelID].HeadBorderItemId); _ui.m_levelRankBtn.m_headbg.url = ResPathUtil.GetHeadBorderPath(headBorderCfg.res); _ui.m_levelRankBtn.m_head.url = ResPathUtil.GetHeadPath(headCfg.res); } else { _ui.m_levelRankBtn.m_name.text = ""; _ui.m_levelRankBtn.m_headbg.url = ""; _ui.m_levelRankBtn.m_head.url = ""; } } private void RenderListTagItem(int index, GObject obj) { UI_ComTag item = UI_ComTag.Proxy(obj); StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID); StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID); string tag = fightCfg.needTagsArr[index]; int tagType = TagCfgArray.Instance.GetCfg(tag).type; item.m_txtTag.text = tag; item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tagType); UI_ComTag.ProxyEnd(); } //时光回溯活动 private void UpdateVisitNum() { RoleLimitData limitData = RoleLimitDataManager.GetLimitData(ActivityFightCfgArray.Instance.GetCfg(TimeTracingDataManager._currentChapterId).limit); int time = limitData.TotalPlayMax - limitData.PlayTimes; _ui.m_limitNum.text = "今日免费次数:" + time + "/" + limitData.MaxStorageCount; } private void OnClickAddBtn() { int limitId = ActivityFightCfgArray.Instance.GetCfg(TimeTracingDataManager._currentChapterId).limit; string name = ItemCfgArray.Instance.GetCfg(LimitCfgArray.Instance.GetCfg(limitId).moneyId).name; string desc = string.Format("是否花费{0}{1}购买{2}次过关次数?", LimitCfgArray.Instance.GetCfg(limitId).moneyNumArr[0], name, 1); ViewManager.Show(new object[] { desc,limitId }); } private void OnBtnAdditionDescClick() { _ui.m_grpAdditionDesc.visible = !_ui.m_grpAdditionDesc.visible; } private void OnClickSuitAddBtn() { ViewManager.Show(); } private void OnClickScoreRewardBtn() { ViewManager.Show(_levelID); } private async void OnClickRankBtn() { await TimeTracingSProxy.ReqGetLevelRank(_levelID); await TimeTracingSProxy.ReqGetLevelFriendRank(_levelID); ViewManager.Show(_levelID); } private void OnClickBackBtn() { this.Hide(); } private async ETTask ReqGetLevelRank() { await TimeTracingSProxy.ReqGetLevelRank(_levelID); await TimeTracingSProxy.ReqGetLevelFriendRank(_levelID); } } }