--[[ 宠物升级界面 ]]-- local UIPetLevelUp = UIViewClass() function UIPetLevelUp:OnOpened(context) self:RegistSystemEvent(EventID.UI_Pet_UpdateBasePanel, self.UpdateBasePanel) CTL.Bag.RegisteEventByItemType(LuaConst.ItemType.Pet, self.UpdateMat, self, LuaConst.ItemMaterialsType.ExpPill) self.lastAttrDic = {} self.nextAttrDic = {} self.attrList = {} self.materialArr = {} for i = 1, 4 do self:RegistTriggerEvent(self.item_Arr[i].item.event_Click, UIEventTriggerType.PointerDown) self:RegistTriggerEvent(self.item_Arr[i].btn_Get, UIEventTriggerType.PointerDown) end self:UpdateBasePanel(context.petUniqueID) end function UIPetLevelUp:UpdateBasePanel(petUniqueID) self.petUniqueID = petUniqueID local curInfo = MDL.Pet.GetActiveInfo(self.petUniqueID) self.petInfo, self.petConfig = curInfo.Info, curInfo.Config self:RefreshPanel() self:UpdateMat() end function UIPetLevelUp:OnClosed() CTL.Bag.UnRegisteEventByItemType(LuaConst.ItemType.Pet, self.UpdateMat, self, LuaConst.ItemMaterialsType.ExpPill) end function UIPetLevelUp:RefreshPanel() local levelUpConfig = DataSheetManager.PetLevelUp:GetDataByLevelUpID_PetLevel(self.petConfig.LevelUpID, self.petInfo.petLevel) UIUtils.SetLabel(self.txt_LvBefore, string.FormatByIdsId(Const_IDS.IDS_PetLevel1, UTL.Item.GetNobilityByTeamLevel(self.petInfo.petLevel))) UIUtils.SetLabel(self.txt_XP, self.petInfo.petExp .. "/" .. levelUpConfig.NeedExp) self.slider_XP.value = self.petInfo.petExp / levelUpConfig.NeedExp --通过当前等级+1读取下一个等级配置,有可能等级已满,无下个等级配置 local success, nextLevelUpConfig = DataSheetManager.PetLevelUp:TryGetDataByLevelUpID_PetLevel(self.petConfig.LevelUpID, self.petInfo.petLevel + 1) if success then UIUtils.SetActive(self.group_XP, true) UIUtils.SetLabel(self.txt_LvAfter, string.FormatByIdsId(Const_IDS.IDS_PetLevel1, UTL.Item.GetNobilityByTeamLevel(self.petInfo.petLevel + 1))) UIUtils.SetActive(self.sprite_Arrow, true) self.lab_Full.text = nil table.clearArray(self.attrList) local index = 0 for _, next in ipairs(nextLevelUpConfig.Attr_Table) do if next.AttrNum > 0 then local isNew = true for _, now in ipairs(levelUpConfig.Attr_Table) do if now.AttrType == next.AttrType then isNew = false if next.AttrNum > now.AttrNum then index = index + 1 table.insert(self.attrList, index) self.lastAttrDic[index] = now self.nextAttrDic[index] = next end break end end if isNew then index = index + 1 table.insert(self.attrList, index) self.lastAttrDic[index] = nil self.nextAttrDic[index] = next end end end self.loop_Property:ReloadAll(self.attrList) else UIUtils.SetActive(self.group_XP, false) UIUtils.SetActive(self.sprite_Arrow, false) UIUtils.SetLabel(self.txt_LvAfter, nil) UIUtils.SetLabelText(self.lab_Full, Const_IDS.IDS_Handbook_Hero_LevelUp_Max) self.loop_Property:ClearCells() end end function UIPetLevelUp:UpdateMat() table.clearArray(self.materialArr) for idx, v in DataSheetManager.PetLevelMaterial:GetEnumerator() do table.insert(self.materialArr, v.ItemID) local itemCollection = self.item_Arr[idx] local curCount = MDL.Bag.GetItemCount(v.ItemID) itemCollection.state:SetState(curCount <= 0 and 1 or 0) UTL.Item.SetItemCell(itemCollection.item, v.ItemID, curCount) end local isRed = MDL.Pet.IsPetLineUpOrAssistance(self.petInfo.petUniqId) and CTL.Pet.CheckPetIfLevelUp(self.petConfig, self.petInfo) self.btn_Next:SetRedPoint(isRed) self.btn_Max:SetRedPoint(isRed) end function UIPetLevelUp:OnClickRecast() UTL.MessageBox.ShowOKCancelBox(nil, Const_IDS.IDS_PetRelease5, function() MDL.Pet.PetRecastReq(self.petUniqueID) end) end function UIPetLevelUp.OnClickItemLevelUp(itemID) MDL.Pet.PetAddExpReq(MDL.Pet.LevelUpOptType, self.petUniqueID, itemID) end function UIPetLevelUp:OnPointerDown(obj, eventData) for i, v in ipairs(self.item_Arr) do if obj == v.btn_Get then UTL.ItemTips.ShowCommonTipsById(self.materialArr[i]) return elseif obj == v.item.event_Click then MDL.Pet.PetAddExpReq(MDL.Pet.LevelUpOptType.UseExpMat, self.petUniqueID, self.materialArr[i]) return end end end function UIPetLevelUp:OnCellInit(scrollRect, index, cellTable, data) local nextAttr = self.nextAttrDic[data] UTL.Attr.SetAttrIcon(cellTable.img_Property, nextAttr.AttrType) UIUtils.SetLabelText(cellTable.lab_Property, Const_IDS[DataSheetManager.AttrData:GetDataByID(nextAttr.AttrType).Name]) local baseAttrNum = 0 for i, v in ipairs(self.petConfig.Attr_Table) do if v.AttrType == nextAttr.AttrType then baseAttrNum = v.AttrNum break end end local lastAttr = self.lastAttrDic[data] if lastAttr then UIUtils.SetLabel(cellTable.txt_Present, baseAttrNum + lastAttr.AttrNum) else UIUtils.SetLabel(cellTable.txt_Present, baseAttrNum) end UIUtils.SetLabel(cellTable.txt_Add, baseAttrNum + nextAttr.AttrNum) end function UIPetLevelUp:OnButtonClicked(comp) if comp == self.btn_Change then self:OnClickRecast() elseif comp == self.btn_Next then MDL.Pet.PetAddExpReq(MDL.Pet.LevelUpOptType.Once, self.petUniqueID) elseif comp == self.btn_Max then MDL.Pet.PetAddExpReq(MDL.Pet.LevelUpOptType.OneKey, self.petUniqueID) end end return UIPetLevelUp