local UITreasureChangeView = UIViewClass() --排序规则:未装备 > 已装备 > 品质 local function sortRule(a,b) if a.EquipHeroId ~= nil and b.EquipHeroId == nil then return true elseif a.EquipHeroId == nil and b.EquipHeroId ~= nil then return false else if a.TreasureData.TreasureQuality ~= b.TreasureData.TreasureQuality then return a.TreasureData.TreasureQuality > b.TreasureData.TreasureQuality else return a.TreasureData.TreasureID < b.TreasureData.TreasureID end end end function UITreasureChangeView:OnOpened(context) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS["IDS_Treasure_Change_2"]) UIUtils.SetLabelText(self.lab_NoWarHorse, Const_IDS["IDS_Treasure_Other_1"]) self.toggle_Hide:SetToggleIDS("lab_Hide", Const_IDS.IDS_Treasure_Change_1) if context.treasureId then self.treasureId = context.treasureId local activeInfo = MDL.Treasure.GetTreasureInfo(self.treasureId) self.heroId = activeInfo.EquipHeroId self.treasureInfo = activeInfo.TreasureInfo --服务器Info else if context.heroId then self.heroId = context.heroId else logging.error(LTAG.ERROR, "没有传入宝物ID或者英雄ID!!!请程序注意!!!") end end self:UpdateInfo() local isOn = false if self.treasureInfo ~= nil then isOn = MDL.Player.Get_TypeState(MDL.Player.WearViewToggleStateType.TreasureChange) else isOn = MDL.Player.Get_TypeState(MDL.Player.WearViewToggleStateType.TreasureWear) end if isOn == self.toggle_Hide.isOn then self:LoadCellData(isOn) else self.toggle_Hide.isOn = isOn end end function UITreasureChangeView:UpdateInfo() local treasureInfoList = MDL.Treasure.GetTreasureInfoList() if treasureInfoList == nil then self.infoList = nil else self.infoList = {} if self.treasureInfo then --更换 for _,v in pairs(treasureInfoList) do if v.TreasureID ~= self.treasureInfo.Id then table.insert(self.infoList, v) end end else --穿戴 for _,v in pairs(treasureInfoList) do table.insert(self.infoList, v) end end end if self.infoList and #self.infoList > 0 then table.sort(self.infoList, sortRule) self.group_Mid:SetState(0) else --无激活宝物 self.group_Mid:SetState(1) UIUtils.SetActive(self.toggle_Hide.gameObject, false) end end function UITreasureChangeView:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UITreasureChangeView:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() end end function UITreasureChangeView:OnCellInit(scrollRect, index, cellTable, data) local btnLabel if GameAppInfo.IsJapanesePackage() then btnLabel = self.treasureInfo and Const_IDS["IDS_Horse_Title_5"] or Const_IDS["IDS_typeSourceIDS_3"] else btnLabel = self.treasureInfo and Const_IDS["IDS_Horse_Title_5"] or Const_IDS["IDS_Horse_Change_5"] end UIUtils.SetLabelText(cellTable.Text, btnLabel) cellTable.txt_Qua.text = data.TreasureData.TreasureTalent -- 宝物羁绊提示 if CTL.Treasure.GetTreasureBreakRelation(data.TreasureID, self.heroId) then UIUtils.SetLabel(cellTable.txt_WarHorseName, string.FormatByIdsId(Const_IDS.IDS_TreasureFetter_ExclusiveTreasure, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.TreasureData.TreasureName]), data.TreasureData.TreasureQuality))) else UIUtils.SetLabel(cellTable.txt_WarHorseName, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.TreasureData.TreasureName]), data.TreasureData.TreasureQuality)) end local itemId = data.TreasureData.Item_Table[1].ItemID UTL.Item.ItemSquareIcon(cellTable.img_Item, cellTable.sprite_Rank, itemId) UTL.Item.PlayItemEffect(cellTable, itemId) local starLevel = data.TreasureInfo.starLevel if starLevel <= 0 then UIUtils.SetActive(cellTable.bg_Strengthen, false) else UIUtils.SetActive(cellTable.bg_Strengthen, true) UIUtils.SetActive(cellTable.lab_Strengthen, true) cellTable.lab_Strengthen.text = "+"..starLevel end if data.EquipHeroId then cellTable.obj_state:SetState(0) local heroData = DataSheetManager.HeroNum:GetDataByID(data.EquipHeroId) UIUtils.SetLabelText(cellTable.lab_HeroName, Const_IDS[heroData.NameIDS]) else cellTable.obj_state:SetState(1) end if self.treasureInfo == nil and CTL.Treasure.IfHeroHasTreasureToEquip(self.heroId) then --穿戴红点 cellTable.btn_Change:SetRedPoint(data.EquipHeroId == nil) elseif self.treasureInfo ~= nil and (data.EquipHeroId == nil and data.TreasureInfo.gs > self.treasureInfo.gs)then --替换红点 cellTable.btn_Change:SetRedPoint(true) else cellTable.btn_Change:SetRedPoint(false) end UIUtils.SetActive(cellTable.img_Assistance, MDL.AssistanceFight.IsTreasureOnAssistancePos(data.TreasureID)) end function UITreasureChangeView:OnCellClicked(scrollRect, index, cellTable, target, data) if target == cellTable.btn_Change then if self.treasureInfo then --替换 local func = function() MDL.Treasure.TreasureEquipReq(self.heroId, data.TreasureID, Const_IDS.IDS_Treasure_Change_5) self:CloseView() end UTL.MessageBox.ShowOKCancelBox(nil, Const_IDS.IDS_Treasure_Change_3, func, nil) else --穿戴 MDL.Treasure.TreasureEquipReq(self.heroId, data.TreasureID, Const_IDS.IDS_Treasure_Change_4) self:CloseView() end end end function UITreasureChangeView:OnValueChanged(comp, state) if comp == self.toggle_Hide then self:LoadCellData(state) end end function UITreasureChangeView:LoadCellData(state) self.loop_ChangeWarHorseScroll:ClearCells() local isEmpty = true if self.infoList then for i = 1, #self.infoList do if (state == false or (state == true and self.infoList[i].EquipHeroId == nil)) then isEmpty = false self.loop_ChangeWarHorseScroll:AddData(self.infoList[i], 0) end end end if isEmpty then self.group_Mid:SetState(1) else self.group_Mid:SetState(0) end if self.treasureInfo ~= nil then MDL.Player.Set_TypeState(MDL.Player.WearViewToggleStateType.TreasureChange, state) else MDL.Player.Set_TypeState(MDL.Player.WearViewToggleStateType.TreasureWear, state) end end return UITreasureChangeView