local UIThreeTeamFightReward = UIViewClass() local SliderSensitivityParam = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("SliderSensitivityParam").FloatValue) local TAB_INDEX_DAILY_RANK = 2 local TAB_INDEX_DAILY_TASK = 1 local TAB_INDEX_SEASON_REWARD = 0 local TAB_IDS_DAILY_RANK = Const_IDS.IDS_3TeamsPK_DailyRanking local TAB_IDS_DAILY_TASK = Const_IDS.IDS_FairTournament_DayTask local TAB_IDS_SEASON_REWARD = Const_IDS.IDS_3TeamsPK_SeasonRanks local INDEX_OFFSET = 6 function UIThreeTeamFightReward:OnOpened(context) self.isFoldIn = true self.templateObj = self.itemTemplate_Reward.gameObject self:RegistSystemEvent(EventID.UI_ThreeTeamFight_RefreshBasic, self.RefreshDailyTask) self:RegistSystemEvent(EventID.UI_ThreeTeamFight_OnSeasonFinish, self.OnSeasonFinish) self:RegistSystemEvent(CTL.RedPoint.RedPointKey.ThreeTeamFight_TaskCanGet, self.RefreshRewardRed) self.dailyRankTip = string.FormatByIdsId(Const_IDS.IDS_OfflineSoloFight_RewardTimeTips, UTL.Time.GetDiffLocalStrById(DataSheetManager.ConstData:GetDataByID("ThreeBattleRewardTime").IntValue)) self.dailyTaskTip = string.FormatByIdsId(Const_IDS.IDS_3TeamsPK_MailTips1, UTL.Time.GetDiffLocalStrById(1)) self.curRankLevelList = {} self.dragDict = {} self.selectToggleIndex = 0 UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_BossChallenge_Reward_Title) UIUtils.SetActive(self.UICommonPopUp.img_Info, false) self.loop_Tab:AddData(TAB_IDS_SEASON_REWARD, 0) self.loop_Tab:AddData(TAB_IDS_DAILY_TASK, 0) self.loop_Tab:AddData(TAB_IDS_DAILY_RANK, 0) self.loop_Tab:SelectIndex(0, true) self:RefreshRewardRed() end --每日任务 function UIThreeTeamFightReward:RefreshDailyTask(isForce) if isForce == false and self.selectToggleIndex ~= TAB_INDEX_DAILY_TASK then return end local taskInfoArray = MDL.ThreeTeamFight.GetTaskInfo() self.loopScroll_Task:ReloadAll(taskInfoArray) end --赛季奖励 function UIThreeTeamFightReward:RefreshSeasonReward() if self.hasInitSeasonReward then return end local selectIndex = 0 local myRank = MDL.ThreeTeamFight.GetMyRank() for i, v in DataSheetManager.ThreeTeamsPKLevel:GetEnumerator() do if myRank >= v.RankMin and myRank <= v.RankMax then selectIndex = i - 1 end self.loopScroll_Season:AddData(v, 0) end self.loopScroll_Season:SelectIndex(selectIndex, true) self.hasInitSeasonReward = true end function UIThreeTeamFightReward:UpdateCurRankLevelList(levelCfg) table.clearArray(self.curRankLevelList) for i, v in DataSheetManager.ThreeTeamsPKRank:GetEnumerator() do if v.Rank >= levelCfg.RankMin and v.Rank <= levelCfg.RankMax then table.insert(self.curRankLevelList, v) end end local selectIndex = 0 local myRank = MDL.ThreeTeamFight.GetMyRank() for i, v in ipairs(self.curRankLevelList) do if myRank <= v.Rank then selectIndex = i break end end return math.max(0, selectIndex - 1) end function UIThreeTeamFightReward:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Tab then if data ~= TAB_IDS_DAILY_RANK and data ~= TAB_IDS_DAILY_TASK and data ~= TAB_IDS_SEASON_REWARD then UIUtils.SetLabel(cellTable.txt_Name_Nomal, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.LevelName]), data.LevelColor)) UIUtils.SetLabel(cellTable.txt_Name_Selected, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.LevelName]), data.LevelColor)) local myRank = MDL.ThreeTeamFight.GetMyRank() UIUtils.SetActive(cellTable.group_Tag, myRank >= data.RankMin and myRank <= data.RankMax) else UIUtils.SetLabelText(cellTable.txt_Name_Nomal, data) UIUtils.SetLabelText(cellTable.txt_Name_Selected, data) if data == TAB_IDS_DAILY_RANK then UIUtils.SetActive(cellTable.img_ArrowS, true) UIUtils.SetActive(cellTable.img_Arrow, true) UIUtils.SetActive(cellTable.img_Selected, not self.isFoldIn) UIUtils.SetActive(cellTable.img_UnSelected, self.isFoldIn) else UIUtils.SetActive(cellTable.img_ArrowS, false) UIUtils.SetActive(cellTable.img_Arrow, false) end if data == TAB_IDS_DAILY_TASK then cellTable.img_UnSelected:SetRedPoint(CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.ThreeTeamFight_TaskCanGet)) end end else local rewardDatas if scrollRect == self.loopScroll_Daily then local myRank = MDL.ThreeTeamFight.GetMyRank() cellTable.state_Rank:SetState(3) local lastRankCfg = self.curRankLevelList[index] if lastRankCfg then if data.Rank - lastRankCfg.Rank == 1 then cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_DemonGod_UI_37, CTL.ThreeTeamFight.GetLevelRank(data.Rank)) else cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_DemonGod_UI_37, CTL.ThreeTeamFight.GetLevelRank(lastRankCfg.Rank + 1) .. "-" .. CTL.ThreeTeamFight.GetLevelRank(data.Rank)) end UIUtils.SetActive(cellTable.img_Own, myRank <= data.Rank and myRank >= lastRankCfg.Rank + 1) else cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_DemonGod_UI_37, CTL.ThreeTeamFight.GetLevelRank(data.Rank)) UIUtils.SetActive(cellTable.img_Own, myRank == data.Rank) end rewardDatas = DataSheetManager.ThreeTeamsPKRankReward:GetDataByAttrRepeatID(data.ItemRepeatID).Item_Table elseif scrollRect == self.loopScroll_Task then local taskCfg = DataSheetManager.ThreeTeamsPKTask:GetDataByID(data.taskId) rewardDatas = taskCfg.Item_Table local triggerData = DataSheetManager.TriggerID:GetDataByID(taskCfg.TriggerID) local value local state = data.state --0未完成 1可领取 2已领取 if state == 0 then cellTable.RewardState:SetState(0) value = UTL.Color.FormatRedColor(data.taskProgress) .. "/" .. triggerData.Unlock_Table[1].UnlockConditionParamA elseif state == 1 then cellTable.event_Collect:SetRedPoint(true) cellTable.RewardState:SetState(1) value = UTL.Color.FormatGreenColor(data.taskProgress) .. "/" .. triggerData.Unlock_Table[1].UnlockConditionParamA else cellTable.RewardState:SetState(2) value = UTL.Color.FormatGreenColor(data.taskProgress) .. "/" .. triggerData.Unlock_Table[1].UnlockConditionParamA end cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS[triggerData.Unlock_Table[1].UnlockConditionDes], value) elseif scrollRect == self.loopScroll_Season then cellTable.txt_Rank.text = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.LevelName]), data.LevelColor) local myRank = MDL.ThreeTeamFight.GetMyRank() UIUtils.SetActive(cellTable.img_Own, myRank >= data.RankMin and myRank <= data.RankMax) rewardDatas = DataSheetManager.ThreeTeamsPKLevelReward:GetDataByAttrRepeatID(data.LevelReward).Item_Table end for i, rewardData in ipairs(rewardDatas) do local contentItem = cellTable.ItemContent[i] if not contentItem then contentItem = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.ItemContent, self.templateObj) end contentItem.ItemID = rewardData.ItemID UTL.Item.SetItemCell(contentItem, rewardData.ItemID, rewardData.ItemNum, false) UIUtils.SetActive(contentItem.gameObject, true) end for i = #rewardDatas + 1, #cellTable.ItemContent do UIUtils.SetActive(cellTable.ItemContent[i].gameObject, false) end end end function UIThreeTeamFightReward:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_Tab then if data ~= TAB_IDS_DAILY_RANK and data ~= TAB_IDS_DAILY_TASK and data ~= TAB_IDS_SEASON_REWARD then local selectIndex = self:UpdateCurRankLevelList(data) self.loopScroll_Daily:ReloadAll(self.curRankLevelList) self.loopScroll_Daily:SelectIndex(selectIndex, true) else if index == TAB_INDEX_DAILY_RANK then self.lab_Tips.text = self.dailyRankTip self.scroll_State:SetState(0) self.txt_MyRank.text = nil if self.loop_Tab.Count > 3 then --收起页签 for i = self.loop_Tab.Count, 4, -1 do self.loop_Tab:RemoveIndex(i - 1) end self.isFoldIn = true UIUtils.SetActive(cellTable.img_Selected, false) UIUtils.SetActive(cellTable.img_UnSelected, true) else --展开页签 local selectRankIndex local myRankLevel = CTL.ThreeTeamFight.GetMyRankLevel() for i, v in DataSheetManager.ThreeTeamsPKLevel:GetEnumerator() do self.loop_Tab:AddData(v, 1) if myRankLevel == v.LevelID then selectRankIndex = i + 2 end end if selectRankIndex == nil then selectRankIndex = DataSheetManager.ThreeTeamsPKLevel:GetDataCount() + 2 end if selectRankIndex > INDEX_OFFSET then self.loop_Tab:SelectIndex(selectRankIndex, true) else self.loop_Tab:SelectIndex(selectRankIndex) end self.isFoldIn = false UIUtils.SetActive(cellTable.img_Selected, true) UIUtils.SetActive(cellTable.img_UnSelected, false) end else if index == TAB_INDEX_DAILY_TASK then self.lab_Tips.text = self.dailyTaskTip self.scroll_State:SetState(1) self:RefreshDailyTask(true) self.txt_MyRank.text = nil elseif index == TAB_INDEX_SEASON_REWARD then UIUtils.SetLabelText(self.lab_Tips, Const_IDS.IDS_3TeamsPK_MailTips2) self.scroll_State:SetState(2) local rankDesc = CTL.ThreeTeamFight.GetRankDesc(MDL.ThreeTeamFight.GetMyRank(), true, true) if rankDesc then self.txt_MyRank.text = string.FormatByIdsId(Const_IDS.IDS_BattlefieldMuster_MyRanking, rankDesc) else self.txt_MyRank.text = string.FormatByIdsId(Const_IDS.IDS_BattlefieldMuster_MyRanking, UIUtils.GetLocalizedTxt(Const_IDS.IDS_Rank_Unranked)) end self:RefreshSeasonReward() end if self.loop_Tab.Count > 3 then for i = self.loop_Tab.Count, 4, -1 do self.loop_Tab:RemoveIndex(i - 1) end self.isFoldIn = true self.loop_Tab:UpdateIndex(2) end end self.selectToggleIndex = index end else if target == cellTable.event_Collect then MDL.ThreeTeamFight.ThreeTeamsPKRewardInfoReq(data.taskId) end for i, v in ipairs(cellTable.ItemContent) do if v.event_Click == target then UTL.ItemTips.ShowCommonTipsById(v.ItemID) break end end end end function UIThreeTeamFightReward:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIThreeTeamFightReward:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() end end function UIThreeTeamFightReward:RefreshRewardRed() self.loop_Tab:UpdateIndex(1) end function UIThreeTeamFightReward:OnSeasonFinish() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end return UIThreeTeamFightReward