local UISoloFightReward = UIViewClass() local SliderSensitivityParam = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("SliderSensitivityParam").FloatValue) function UISoloFightReward:OnOpened(context) local officialPVPGradeID = DataSheetManager.ConstData:GetDataByID("OfficialPVPGradeID").IntValue local titleData = MDL.OfficialPosition.GetCurTitleData() local txt if titleData and titleData.GradeID < officialPVPGradeID then txt = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[titleData.Name1]), titleData.QualityColor) else local color for i, v in DataSheetManager.OfficialPosition:GetEnumerator() do if officialPVPGradeID == v.GradeID then color = v.QualityColor break end end txt = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS.IDS_OfficialPosition_PVPTab), color) end self.UICommonPopUp.txt_Title.text = string.FormatByIdsId(Const_IDS.IDS_OfficialPosition_PvPRewardPreview, txt) self.dragDict = {} local gradeID = titleData and titleData.GradeID or officialPVPGradeID self.gradeID = math.min(gradeID, officialPVPGradeID) local curRank = MDL.SoloFight.GetSelfRankId() self.rankIndex = nil for i, v in DataSheetManager.OfflineSoloFightRanking:GetDataByGradeID_ID(self.gradeID) do if curRank <= v.Rank then self.rankIndex = i - 1 break end end --在配置的排名之后,当前选中档位应该是最后一档 if self.rankIndex == nil then self.rankIndex = DataSheetManager.OfflineSoloFightRanking:GetDataLengthByGradeID_ID(self.gradeID) - 1 end for i, v in DataSheetManager.OfflineSoloFightRanking:GetDataByGradeID_ID(self.gradeID) do self.view_StageSelect:AddData(v, 0) end self.view_StageSelect:SelectIndex(self.rankIndex, true) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS["IDS_OfflineSoloFight_RewardShow"]) self.lab_Tips.text = string.FormatByIdsId(Const_IDS.IDS_OfflineSoloFight_RewardTimeTips, UTL.Time.GetDiffLocalStrById(1503)) end function UISoloFightReward:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UISoloFightReward:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() end end function UISoloFightReward:OnCellInit(scrollRect, index, cellTable, data) local isCurRank = self.rankIndex == index UIUtils.SetActive(cellTable.img_Now, isCurRank) UIUtils.SetActive(cellTable.img_Select, isCurRank) if data.ID - 1 > 0 then local preRankConfig = DataSheetManager.OfflineSoloFightRanking:GetDataByGradeID_ID(self.gradeID, data.ID - 1) if data.Rank == 0 then cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_OfflineSoloFight_RankingList_Type2, preRankConfig.Rank + 1) else local offset = data.Rank - preRankConfig.Rank if offset <= 1 then cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_BossChallenge_Reward_RankRange_OneNum, data.Rank) else cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_OfflineSoloFight_RankingList_Type1, preRankConfig.Rank + 1, data.Rank) end end else if data.Rank > 1 then cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_OfflineSoloFight_RankingList_Type1, 1, data.Rank) else cellTable.txt_Rank.text = string.FormatByIdsId(Const_IDS.IDS_BossChallenge_Reward_RankRange_OneNum, data.Rank) end end local rewardTable = DataSheetManager.OfflineSoloRankingRewardRepeat:GetDataByAttrRepeatID(data.ItemRepeatID).Item_Table for i, v in ipairs(rewardTable) do if not cellTable.Content[i] then self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.Content, self.itemTemplate_Reward.gameObject) end UTL.Item.SetItemCell(cellTable.Content[i], v.ItemID, v.ItemNum) cellTable.Content[i].gameObject:SetActive(true) end for i = #rewardTable + 1, #cellTable.Content do cellTable.Content[i].gameObject:SetActive(false) end self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.BeginDrag, index) self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.Drag, index) self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.EndDrag, index) self.dragDict[cellTable.drag_Obj.gameObject] = cellTable.ScrollView.gameObject end function UISoloFightReward:Cell_OnBeginDrag(scrollRect, index, comp, eventData) if math.abs(eventData.delta.x) > SliderSensitivityParam then self.curDragObj = self.dragDict[comp.gameObject] else self.curDragObj = self.view_StageSelect.gameObject end UIUtils.ExecuteBeginDrag(self.curDragObj, eventData) end function UISoloFightReward:Cell_OnDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteDrag(self.curDragObj, eventData) end function UISoloFightReward:Cell_OnEndDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteEndDrag(self.curDragObj, eventData) end function UISoloFightReward:OnCellClicked(scrollRect, index, cellTable, target, data) for i, v in ipairs(cellTable.Content) do if v.event_Click == target then local rewardTable = DataSheetManager.OfflineSoloRankingRewardRepeat:GetDataByAttrRepeatID(data.ItemRepeatID).Item_Table UTL.ItemTips.ShowCommonTipsById(rewardTable[i].ItemID) break end end end return UISoloFightReward