--[[ 选择框 self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIScrollPad), {parentView = self, formerLevel = self.levelLimit, x = -120, y = 60}, nil, nil); 调用的地方需要添加接口: CloseScrollPadView(limitLevel) ]] local UIScrollPad = UIViewClass() --UIManager.OpenView("Common/UIScrollPad") function UIScrollPad:OnOpened(context) self.parentView = context.parentView local myLevel, myRank = MDL.Nobility.GetLevelAndNobility(MDL.HeroSelect.GetTeamLevel()) local rankMaxLevel = DataSheetManager.Nobility:GetDataByRankID(myRank).TeamLevelMax self.maxLevelLimit = math.min(MDL.HeroSelect.GetTeamLevel() + 20, DataSheetManager.HeroLevelUp:GetDataCount()) self.specLevelLimit, self.maxRankLimit = MDL.Nobility.GetLevelAndNobility(self.maxLevelLimit) if MDL.HeroSelect.GetTeamLevel() + 20 >= rankMaxLevel then self.maxRankLimit = myRank end if context.formerLevel > 0 then self.formerLevel, self.rank = MDL.Nobility.GetLevelAndNobility(context.formerLevel) end self:RefreshRankScroll() local x = context and context.x or 0 local y = context and context.y or 0 if x ~= nil and y ~= nil then local rectTrans = self.Bottom:GetComponent(typeof(RectTransform)) rectTrans:SetLocalPosition(x, y, 0) end end function UIScrollPad:ExcuteClose() if self.parentView and self.parentView.CloseScrollPadView then self.parentView:CloseScrollPadView(self.level) end end function UIScrollPad:OnButtonClicked(comp) if comp == self.TipWindow then self:ExcuteClose() end end function UIScrollPad:RefreshRankScroll() --爵位 for i, v in DataSheetManager.Nobility:GetEnumerator() do if i > self.maxRankLimit then break end self.scroll_Rank:AddData(v, 0) end AuxUtil.InitEnhanceScroll(self.scroll_Rank.transform, self.rank and self.rank - 1 or self.maxRankLimit - 1) end function UIScrollPad:RefreshLevelScroll(rank) --等级 if self.scroll_Level.Count > 0 then self.scroll_Level:ClearCells() end self.scroll_Level:AddData({HeroLevel = 0, TeamLevelName = "IDS_TeamUI_ApplyLimit_None"}, 0) local rankData = DataSheetManager.Nobility:GetDataByRankID(rank) local lowestLevel if rank <= 1 then lowestLevel = 0 else lowestLevel = DataSheetManager.Nobility:GetDataByRankID(rank - 1).TeamLevelMax end for i, v in DataSheetManager.HeroLevelUp:GetEnumerator() do if v.HeroLevel > rankData.TeamLevelMax or v.HeroLevel > self.maxLevelLimit then break end if v.HeroLevel > lowestLevel then self.scroll_Level:AddData(v, 0) end end AuxUtil.InitEnhanceScroll(self.scroll_Level.transform, self.formerLevel and self.formerLevel - 1 or 0) self.formerLevel = 1 end function UIScrollPad:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.scroll_Level then local levelStr = UTL.Item.GetNobilityByTeamLevel(data.HeroLevel) -- 爵位转换 cellTable.lab_Level.text = string.FormatByIdsId(Const_IDS[data.TeamLevelName], levelStr) elseif scrollRect == self.scroll_Rank then if string.isNilOrEmpty(data.Name) then UIUtils.SetLabelText(cellTable.lab_Level, Const_IDS["IDS_None"]) else UIUtils.SetLabelText(cellTable.lab_Level, Const_IDS[data.Name]) end end end function UIScrollPad:OnCellMoveCenter(scrollRect, index, cellTable, data) if scrollRect == self.scroll_Level then self.level = data.HeroLevel elseif scrollRect == self.scroll_Rank then self:RefreshLevelScroll(data.RankID) end end return UIScrollPad