local UIGoldenHeroStoryLevelInfo = UIViewClass() local EventSystem = require('Event/EventSystem') function UIGoldenHeroStoryLevelInfo:OnOpened(context) self.activityId = context.activityId self.heroType = context.heroType self.storyLevelCfg = context.storyLevelInfo.levelCfg self.levelState = context.storyLevelInfo.levelState self:RegistSystemEvent(EventID.UI_GoldenHero_RefreshCurrency, self.RefreshLevelInfoPanel) self:RegistSystemEvent(EventID.UI_GoldenHeroStory_RefreshStoryStarPanel, self.RefreshLevelInfoPanel) self:RegistSystemEvent(EventID.UI_OperationActivity_CloseView, self.OnCloseActivitySelf) self:RefreshLevelInfoPanel() end function UIGoldenHeroStoryLevelInfo:OnCloseActivitySelf(viewClassPath, activityId) if viewClassPath == self.__viewClassPath then if self.activityId and activityId == self.activityId then self:CloseView() end end end function UIGoldenHeroStoryLevelInfo:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UIGoldenHeroStoryLevelInfo:OnButtonClicked(comp) if comp == self.btn_Close then self:CloseView() EventSystem.Dispatch(EventID.UI_GoldenHeroStory_RecoverPathPosition) elseif comp == self.btn_Sweep then -- 扫荡 self:ClickSweep() elseif comp == self.btn_GoTo then -- 前往副本 self:EnterGoldHeroStoryFuBen() elseif comp == self.btn_Star then -- 关卡成就入口 CTL.GoldenHeroStory.OpenUIGoldenHeroStoryStarPanel(self.activityId, self.storyLevelCfg) end end function UIGoldenHeroStoryLevelInfo:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.LevelRewardScroll then UTL.Item.SetItemCell(cellTable.item, data[1].ItemID, data[1].ItemNum, data[2]) end end function UIGoldenHeroStoryLevelInfo:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.LevelRewardScroll then UTL.ItemTips.ShowCommonTipsById(data[1].ItemID) end end function UIGoldenHeroStoryLevelInfo:RefreshLevelInfoPanel() UIUtils.SetLabelText(self.txt_Task, Const_IDS[self.storyLevelCfg.BarrierName]) -- 关卡标题 UIUtils.SetImageByAssetBundle(self.img_Level, self.storyLevelCfg.BarrierPic) -- 关卡图片 UIUtils.SetLabelText(self.txt_Desc, Const_IDS[self.storyLevelCfg.BarrierDes]) -- 关卡描述 if self.levelState ~= MDL.GoldenHeroStory.LevelState.UnLock then -- 消耗道具数量 local energyNum = self.storyLevelCfg.EnergyNum if CTL.GoldenHeroStory.IsEnergyEnough(self.activityId, self.storyLevelCfg.ID) then energyNum = UTL.Color.FormatWhiteColor(energyNum) else energyNum = UTL.Color.FormatRedColor(energyNum) end local itemData = DataSheetManager.ItemData:GetDataByID(DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType).LevelEnergyType)-- 消耗道具图片 UIUtils.SetImageByAssetBundle(self.img_Icon, string.format(ConstAssetPathConfig.ItemIconPath, itemData.Icon)) UIUtils.SetLabel(self.txt_Num, energyNum) -- 消耗道具数量 end -- 首通不消耗体力 UIUtils.SetLabelText(self.lab_Notice, Const_IDS.IDS_GoldHeroActivity_ActivityLevel_FirstHint) self.state_tip:SetState(self.levelState == MDL.GoldenHeroStory.LevelState.UnLock and 0 or 1) UIUtils.SetActive(self.btn_Sweep, self.levelState == MDL.GoldenHeroStory.LevelState.Sweep and true or false) -- 扫荡按钮显隐 self.btn_Sweep:SetRedPoint(MDL.GoldenHeroStory.GetSweepRedPointByActivityID_LevelID(self.activityId, self.storyLevelCfg.ID)) -- 奖励 local cfg = DataSheetManager.RewardClientShow:GetDataByClientShowID(self.storyLevelCfg.RewardClientShowID) local rewardData = DataSheetUtil.GetRewardClientShowItemTable(cfg) if self.LevelRewardScroll.Count > 0 then self.LevelRewardScroll:ClearCells() end for i, v in ipairs(rewardData) do local cellData if self.levelState == MDL.GoldenHeroStory.LevelState.Sweep then -- 是否首通 if not v.FristGothrough then cellData = {v, false} end else if v.FristGothrough then cellData = {v, true} else cellData = {v, false} end end if cellData then self.LevelRewardScroll:AddData(cellData, 0) end end local achievementStateList = MDL.GoldenHeroStory.GetAchievementRewardRedPointListByActivityID_LevelID(self.activityId, self.storyLevelCfg.ID) local hasRP = MDL.GoldenHeroStory.GetAchievementRewardRedPointByActivityID_LevelID(self.activityId, self.storyLevelCfg.ID) for k,v in ipairs(self.group_Star) do UIUtils.SetActive(v.img_Bright, achievementStateList[k] >= MDL.GoldenHeroStory.Enum_LevelAchieveState.WaitForGet) if achievementStateList[k] == MDL.GoldenHeroStory.Enum_LevelAchieveState.WaitForGet then v.effect_Fire:PlayUIEffect() else v.effect_Fire:StopUIEffect() end end self.btn_Star:SetRedPoint(hasRP) end -- 进攻 function UIGoldenHeroStoryLevelInfo:EnterGoldHeroStoryFuBen() if self.levelState == MDL.GoldenHeroStory.LevelState.Lock then CTL.Tips.AddTipsMsg(Const_IDS.IDS_GoldHeroActivity_ActivityLevel_LockHint3) -- 请先完成前置任务 else local levelId = self.storyLevelCfg.ID if self.levelState == MDL.GoldenHeroStory.LevelState.UnLock or CTL.GoldenHeroStory.IsEnergyEnough(self.activityId, levelId) then local timeId = DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType).DailyRankEndTime if UTL.Time.IsServerInOpeningTime(1, timeId) then NotSyncBattleSetter.StopAutoFightPathInTown() MDL.GoldenHeroStory.EnterGoldenHeroStoryRequest(levelId, self.storyLevelCfg.MissonDataID[1], self.activityId) -- 进副本 else -- 23点~隔日5点 扫荡不会发现讨伐boss UTL.MessageBox.ShowOKCancelBox(nil, Const_IDS.IDS_GoldHeroActivity_NewHint_1, function() NotSyncBattleSetter.StopAutoFightPathInTown() MDL.GoldenHeroStory.EnterGoldenHeroStoryRequest(levelId, self.storyLevelCfg.MissonDataID[1], self.activityId) -- 进副本 end) end else if not CTL.GoldenHeroMain.OpenEnergyBuyViewByAttack(self.activityId, MDL.GoldenHeroMain.EnergyType.Story) then CTL.Tips.AddTipsMsg(string.FormatByIdsId(Const_IDS.IDS_GoldHeroActivity_ActivityLevel_WrongHint1, UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.ItemData:GetDataByID(DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType).LevelEnergyType).Name]))) end end end end -- 扫荡 function UIGoldenHeroStoryLevelInfo:ClickSweep() if self.levelState == MDL.GoldenHeroStory.LevelState.Lock then CTL.Tips.AddTipsMsg(Const_IDS.IDS_GoldHeroActivity_ActivityLevel_LockHint3) -- 请先完成前置任务 elseif self.levelState == MDL.GoldenHeroStory.LevelState.UnLock then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Sweep_NoCondition) -- 通关关卡后可扫荡 else local levelId = self.storyLevelCfg.ID if CTL.GoldenHeroStory.IsEnergyEnough(self.activityId, levelId) then local timeId = DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType).DailyRankEndTime if UTL.Time.IsServerInOpeningTime(1, timeId) then CTL.Sweep.OpenSweepGoldHeroStoryView(levelId, self.activityId, self.heroType) else -- 23点~隔日5点 扫荡不会发现讨伐boss UTL.MessageBox.ShowOKCancelBox(nil, Const_IDS.IDS_GoldHeroActivity_NewHint_1, function() CTL.Sweep.OpenSweepGoldHeroStoryView(levelId, self.activityId, self.heroType) end) end else if not CTL.GoldenHeroMain.OpenEnergyBuyViewByAttack(self.activityId, MDL.GoldenHeroMain.EnergyType.Story) then CTL.Tips.AddTipsMsg(string.FormatByIdsId(Const_IDS.IDS_GoldHeroActivity_ActivityLevel_WrongHint1, UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.ItemData:GetDataByID(DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType).LevelEnergyType).Name]))) end end end end return UIGoldenHeroStoryLevelInfo