local UIGoldenHeroAnecdoteDetail = UIViewClass() function UIGoldenHeroAnecdoteDetail:OnOpened(context) self.activityId = context.activityId self.heroType = context.heroType self.selectIndex = context.selectIndex --标题 UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_GoldHeroActivity_AnecdotalTitle) self:RegistSystemEvent(EventID.UI_GoldenHeroAnecdote_RefreshInfo, self.RefreshAnecdoteList) self:RegistSystemEvent(EventID.UI_GoldenHeroAnecdote_RefreshInfo, self.RefreshReward) self:RegistSystemEvent(EventID.UI_OperationActivity_CloseView, self.OnCloseActivitySelf) self:RefreshAnecdoteList(self.activityId) end function UIGoldenHeroAnecdoteDetail:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIGoldenHeroAnecdoteDetail:RefreshAnecdoteList(activityId) if activityId ~= self.activityId then return end if self.loop_AnecdoteDetail.Count > 0 then self.loop_AnecdoteDetail:RefreshCells() else for i, v in DataSheetManager.GoldHeroActivityAnecdoteLevel:GetEnumerator() do if self.heroType == v.HeroType then self.loop_AnecdoteDetail:AddData(v, 0) self.loop_AnecdoteDetail:AddData(nil, 1) end end self.loop_AnecdoteDetail:RemoveIndex(self.loop_AnecdoteDetail.Count - 1) --移除最后一个箭头cell end self.loop_AnecdoteDetail:MoveIndex(math.max(self.selectIndex - 2, 0)) --默认选中逻辑 self.loop_AnecdoteDetail:SelectIndex(self.selectIndex) end function UIGoldenHeroAnecdoteDetail:RefreshAnecdoteContent() CTL.GoldenHeroAnecdote.SetAnecdoteCheck(self.activityId, self.selectId) local anecdoteData = DataSheetManager.GoldHeroActivityAnecdoteLevel:GetDataByID(self.selectId) UIUtils.SetLabelText(self.txt_AnecdoteTitle, Const_IDS[anecdoteData.BarrierTitle]) UIUtils.SetLabelText(self.txt_AnecdoteName, Const_IDS[anecdoteData.BarrierName]) if self.loop_AnecdoteContent.Count > 0 then self.loop_AnecdoteContent:ClearCells() end for i, v in DataSheetManager.GoldHeroActivityAnecdote:GetDataByAnecdoteID_AnecdoteChildID(anecdoteData.AnecdotaID) do if v.TextType == MDL.GoldenHeroAnecdote.TextType.Narrator then self.loop_AnecdoteContent:AddData(v, 0) else self.loop_AnecdoteContent:AddData(v, v.TextPosition) end end self:RefreshReward() end function UIGoldenHeroAnecdoteDetail:RefreshReward() local anecdoteData = DataSheetManager.GoldHeroActivityAnecdoteLevel:GetDataByID(self.selectId) UIUtils.SetActive(self.img_RewardPreview, false) if not CTL.GoldenHeroAnecdote.IsLevelRewardCollected(self.activityId, self.selectId) then UIUtils.SetActive(self.btn_Reward, true) local rewardData = DataSheetManager.RewardClientShow:GetDataByClientShowID(anecdoteData.AnecdotaRewardClientShowID) local rewardTable = DataSheetUtil.GetRewardClientShowItemTable(rewardData) self.rewardId = {} for i, v in ipairs(self.group_Reward) do local reward = rewardTable[i] if reward then local itemId = reward.ItemID UIUtils.SetActive(v.gameObject.transform.parent, true) UTL.Item.SetItemCell(v, itemId, reward.ItemNum) self.rewardId[i] = itemId else UIUtils.SetActive(v.gameObject.transform.parent, false) end end if CTL.GoldenHeroAnecdote.IsLevelPassed(self.activityId, self.selectId) then self.effect_Available:PlayUIEffect() else self.effect_Available:StopUIEffect() end else UIUtils.SetActive(self.btn_Reward, false) end end function UIGoldenHeroAnecdoteDetail:OnCloseActivitySelf(viewClassPath, activityId) if viewClassPath == self.__viewClassPath then if self.activityId and activityId == self.activityId then self:CloseView() end end end function UIGoldenHeroAnecdoteDetail:OnButtonClicked(comp) if comp == self.btn_Reward then if CTL.GoldenHeroAnecdote.IsLevelPassed(self.activityId, self.selectId) then MDL.GoldenHeroAnecdote.GoldHeroAnecdotesRewardReq(self.activityId, self.selectId) else UIUtils.SetActive(self.img_RewardPreview, true) end elseif comp == self.btn_PreviewBg then UIUtils.SetActive(self.img_RewardPreview, false) elseif comp == self.UICommonPopUp.btn_Close then self:CloseView() else for i, v in ipairs(self.group_Reward) do if comp == v.event_Click then UTL.ItemTips.ShowCommonTipsById(self.rewardId[i]) return end end end end function UIGoldenHeroAnecdoteDetail:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_AnecdoteDetail and data then local anecdoteId = data.ID UTL.Item.SetHeroIconByHeroId(cellTable.img_HeroHead, data.HeroID) UIUtils.SetActive(cellTable.group_Selected, self.selectId == anecdoteId) UIUtils.SetActive(cellTable.img_LockCover, not CTL.GoldenHeroAnecdote.IsLevelUnlock(self.activityId, anecdoteId)) cellTable.cell:SetRedPoint(CTL.GoldenHeroAnecdote.IsLevelPassed(self.activityId, anecdoteId) and not CTL.GoldenHeroAnecdote.IsLevelRewardCollected(self.activityId, anecdoteId) or CTL.GoldenHeroAnecdote.IsAnecdoteNotCheck(self.activityId, anecdoteId)) elseif scrollRect == self.loop_AnecdoteContent then if data.TextType == MDL.GoldenHeroAnecdote.TextType.Hero then local heroId = data.HeroID UTL.Item.SetHeroIconByHeroId(cellTable.img_HeroHead, heroId) local heroData = DataSheetManager.HeroNum:GetDataByID(heroId) UIUtils.SetLabelText(cellTable.txt_HeroName, Const_IDS[heroData.NameIDS]) elseif data.TextType == MDL.GoldenHeroAnecdote.TextType.Others then UIUtils.SetImageByAssetBundle(cellTable.img_HeroHead, data.HeroIcon) UIUtils.SetLabelText(cellTable.txt_HeroName, Const_IDS[data.HeroName]) end UIUtils.SetLabelText(cellTable.lab_Content, Const_IDS[data.TextIDS]) end end function UIGoldenHeroAnecdoteDetail:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_AnecdoteDetail then if data then local anecdoteId = data.ID if self.selectId ~= anecdoteId then if CTL.GoldenHeroAnecdote.IsLevelUnlock(self.activityId, anecdoteId) then self.selectId = anecdoteId if self.selectIndex then self.loop_AnecdoteDetail:UpdateIndex(self.selectIndex) end self.selectIndex = index UIUtils.SetActive(cellTable.group_Selected, self.selectId == anecdoteId) self:RefreshAnecdoteContent() else CTL.Tips.AddTipsMsg(Const_IDS.IDS_GoldHeroActivity_AnecdotalHint9, MDL.GoldenHeroAnecdote.GetAnecdoteWholeName(anecdoteId)) end cellTable.cell:SetRedPoint(CTL.GoldenHeroAnecdote.IsLevelPassed(self.activityId, anecdoteId) and not CTL.GoldenHeroAnecdote.IsLevelRewardCollected(self.activityId, anecdoteId) or CTL.GoldenHeroAnecdote.IsAnecdoteNotCheck(self.activityId, anecdoteId)) end end end end return UIGoldenHeroAnecdoteDetail