local UIGVGFightSeasonMedal = UIViewClass() local TabIds = { Const_IDS.IDS_GVGFight_Badge_TaskTab1, Const_IDS.IDS_GVGFight_Badge_TaskTab2, Const_IDS.IDS_GVGFight_Badge_TaskTab3, } -------------------- function UIGVGFightSeasonMedal:OnCreated() self.clickItemDict = {} self.oldGVGFightBadgeData = nil end function UIGVGFightSeasonMedal:OnOpened(context) self:RegistSystemEvent(EventID.GVGFight_RefreshFightSeasonPanel, self.RefreshTab) self:RegistSystemEvent(EventID.GVGFight_RefreshFightSeasonPanel, self.RefreshSeasonMedalPage) self:RegistSystemEvent(EventID.GVGFight_RefreshGVGBadgeScore, self.RefreshMedalInfo) self:InitPanel() MDL.GVGFight.GVGBadgePanelReq() end function UIGVGFightSeasonMedal:OnClosed() UIUtils.SetActive(self.UICommonPopUp.img_Info, false) end function UIGVGFightSeasonMedal:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIGVGFightSeasonMedal:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.btn_MedalList then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGVGFightMedalList) elseif comp == self.UICommonPopUp.img_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.GVGFightSeasonMedal}) end end function UIGVGFightSeasonMedal:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_GVGSeasonMedalPage then UIUtils.SetLabelText(cellTable.txt_SelectedTabName, TabIds[data]) UIUtils.SetLabelText(cellTable.txt_UnselectedTabName, TabIds[data]) local hasRedPoint = false for _, v in MDL.GVGFight.GetSeasonMedalTaskInfoIterator() do local data = DataSheetManager.GVGFightBadgeTask:GetDataByBadgeTaskID(v.taskId) if tonumber(data.BadgeTaskTab) == index + 1 and v.state == MDL.GVGFight.GVGSeasonMedalTaskState.ReachNoGet then hasRedPoint = true break end end UIUtils.SetActive(cellTable.img_RedPoint, hasRedPoint) else UIUtils.SetLabelText(cellTable.txt_Task, Const_IDS[data.BadgeTaskTitle]) cellTable.txt_Point.text = "+" .. data.ScoreNum local triggerData = DataSheetManager.TriggerID:GetDataByID(data.TriggerID) local info = MDL.GVGFight.GetSeasonMedalTaskInfo(data.BadgeTaskID) local targetNum = tonumber(triggerData.Unlock_Table[1].UnlockConditionParamA) if info.reachNum < targetNum then cellTable.txt_TaskNum.text = string.format("%s/%s", UTL.Color.FormatTextByColor(UTL.Color.yellow, info.reachNum), targetNum) else cellTable.txt_TaskNum.text = string.format("%s/%s", UTL.Color.FormatTextByColor(UTL.Color.Green, info.reachNum), targetNum) end local info = MDL.GVGFight.GetSeasonMedalTaskInfo(data.BadgeTaskID) if info.state == MDL.GVGFight.GVGSeasonMedalTaskState.NoReach then UIUtils.SetActive(cellTable.btn_Go, true) UIUtils.SetActive(cellTable.btn_Receive, false) UIUtils.SetActive(cellTable.img_Received, false) UIUtils.SetLabelText(cellTable.lab_CurrentState, Const_IDS.IDS_GVGFight_SeasonTask_State2) elseif info.state == MDL.GVGFight.GVGSeasonMedalTaskState.ReachNoGet then UIUtils.SetActive(cellTable.btn_Receive, true) cellTable.btn_Receive:SetRedPoint(true) UIUtils.SetActive(cellTable.btn_Go, false) UIUtils.SetActive(cellTable.img_Received, false) cellTable.lab_CurrentState.text = nil elseif info.state == MDL.GVGFight.GVGSeasonMedalTaskState.Got then UIUtils.SetActive(cellTable.img_Received, true) UIUtils.SetActive(cellTable.btn_Go, false) UIUtils.SetActive(cellTable.btn_Receive, false) cellTable.lab_CurrentState.text = nil end local rewards = DataSheetManager.GVGFightRewardRepeat:GetDataByID(data.RewardID) for i, item in ipairs(rewards.Item_Table) do local obj = cellTable.Content[i] if obj == nil then obj = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.Content, self.itemTemplate.gameObject) UIUtils.SetActive(obj.gameObject, true) end UIUtils.SetActive(obj.gameObject, true) if GameAppInfo.IsVersionGreaterThan16000() then self:InitCellUITemplate(cellTable.cell.gameObject, obj.item, cellTable.Content) end self.clickItemDict[obj.item.event_Click] = item.ItemID UTL.Item.SetItemCell(obj.item, item.ItemID, item.ItemNum) UIUtils.SetActive(obj.mask_ItemReceived, info.state == MDL.GVGFight.GVGSeasonMedalTaskState.Got) end for i = #rewards.Item_Table + 1, #cellTable.Content do local obj = cellTable.Content[i] UIUtils.SetActive(obj.gameObject, false) end end end function UIGVGFightSeasonMedal:OnCellClicked(scrollRect, index, cellTable, target, data) if self.clickItemDict[target] then UTL.ItemTips.ShowCommonTipsById(self.clickItemDict[target]) elseif cellTable.btn_Receive == target then MDL.GVGFight.GVGGetBadgeReq(data.BadgeTaskID) self.curReqTaskId = data.BadgeTaskID self.curReqIndex = index end end function UIGVGFightSeasonMedal:OnCellSelect(scrollRect, index, cellTable, data) if scrollRect == self.loop_GVGSeasonMedalPage then if index + 1 == self.curSelectIndex then return end if self.curSelectIndex and self.curSelectIndex > 0 then local oldSelectCellTable = self.loop_GVGSeasonMedalPage:GetCellTableByIndex(self.curSelectIndex - 1) UIUtils.SetActive(oldSelectCellTable.group_UnSelected, true) UIUtils.SetActive(oldSelectCellTable.group_Selected, false) end self.curSelectIndex = index + 1 UIUtils.SetActive(cellTable.group_UnSelected, false) UIUtils.SetActive(cellTable.group_Selected, true) self:RefreshTab() end end -------------------- function UIGVGFightSeasonMedal:InitPanel() self.loop_GVGSeasonMedalPage:AddData(1, 0) self.loop_GVGSeasonMedalPage:AddData(2, 0) self.loop_GVGSeasonMedalPage:AddData(3, 0) UIUtils.SetActive(self.UICommonPopUp.img_Info, true) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_GVGFight_Badge_Title) -- 默认选中第一个页签 self.loop_GVGSeasonMedalPage:SelectIndex(0) end function UIGVGFightSeasonMedal:RefreshTab() self.Loop_GVGSeasonMedal:ClearCells() for _, v in MDL.GVGFight.GetSeasonMedalTaskInfoIterator() do local data = DataSheetManager.GVGFightBadgeTask:GetDataByBadgeTaskID(v.taskId) if tonumber(data.BadgeTaskTab) == self.curSelectIndex then self.Loop_GVGSeasonMedal:AddData(data, 0) end end end function UIGVGFightSeasonMedal:RefreshSeasonMedalPage() self.loop_GVGSeasonMedalPage:RefreshCells(false) end function UIGVGFightSeasonMedal:RefreshMedalInfo() local badgeScore = MDL.GVGFight.GetBadgeScore() local gvgFightBadgeData = CTL.GVGFight.GetGVGFightBadgeData(badgeScore) -- 设置徽章名字 UIUtils.SetLabelText(self.txt_Medal, Const_IDS[gvgFightBadgeData.BadgeName]) if string.isNilOrEmpty(gvgFightBadgeData.BadgeEffects) then -- 设置徽章图标 UIUtils.SetActive(self.img_MedalIcon, true) UIUtils.SetImageByAssetBundle(self.img_MedalIcon, gvgFightBadgeData.BadgeIcon) self.effect_Medal:StopUIEffect() UIUtils.SetActive(self.effect_Medal, false) else -- 设置徽章特效 UIUtils.SetActive(self.effect_Medal, true) self.effect_Medal:PlayUIEffect(gvgFightBadgeData.BadgeEffects, 0) UIUtils.SetActive(self.img_MedalIcon, false) end -- 设置徽章星星数量 self.stateCount:SetState(gvgFightBadgeData.BadgeStar) -- 设置进度 local nextGVGFightBadgeData = CTL.GVGFight.GetGVGFightNextBadgeData(badgeScore) if nextGVGFightBadgeData then self.lab_MedalPoints.text = string.FormatByIdsId(Const_IDS.IDS_GVGFight_Badge_Score, badgeScore, nextGVGFightBadgeData.BadgeScore) else self.lab_MedalPoints.text = string.FormatByIdsId(Const_IDS.IDS_GVGFight_Badge_Score, badgeScore, gvgFightBadgeData.BadgeScore) end if self.oldGVGFightBadgeData and self.oldGVGFightBadgeData.BadgeLevel ~= gvgFightBadgeData.BadgeLevel then self.effect_MedalUpgrade:PlayUIEffect() end self.oldGVGFightBadgeData = gvgFightBadgeData end return UIGVGFightSeasonMedal