local UIHorseEquipMain = UIViewClass() local resonance_info = require 'Proto.resonance_info_pb' local horseEquipItemId = DataSheetManager.ConstData:GetDataByID("HorseEquipLevelItemSource").IntValue --定义了一个战装常量道具id,用来做获取途径显示 local toggleIds = { Const_IDS.IDS_HorseEquip_Type_1, Const_IDS.IDS_HorseEquip_Type_2, Const_IDS.IDS_HorseEquip_Type_3, Const_IDS.IDS_HorseEquip_Type_4, } function UIHorseEquipMain:OnOpened(context) self:RegistSystemEvent(EventID.UI_ResonanceChange_Refresh, self.RefreshResonanceLv) self:RegistSystemEvent(EventID.UI_UpdateWarHorseEquipInfo, self.RefreshEquipSlot) self:RegistSystemEvent(EventID.HorseEquip_UpdateBag, self.RefreshEquipItems) self:RegistSystemEvent(EventID.UI_HorseArmor_EquipUpdate, self.RefreshEquipItems) self:RegistSystemEvent(EventID.UI_CloseHorseEquipTips, self.OnCloseEquipTips) self:RegistSystemEvent(EventID.UI_Horse_Equip, self.CheckArmorIsActive) CTL.FormationResonance.SetSubResonanceImage(self.icon_Resonance, resonance_info.Horse_Equip, self.lab_Name) -- 设置共鸣图片 self:RefreshResonanceLv() self.parentView = context.parentView self.toggles:InstaniateToggles(4) for i = 1, 4 do self.toggles:SetToggleIDS(i,"txt_Pos", toggleIds[i]) self.toggles:SetToggleActive(i, true) end self:UpdateInfo(context.horseConfig) end function UIHorseEquipMain:OnButtonClicked(comp) if comp == self.btn_Resonance then UIManager.OpenView(Const_UI_Lua.UIEnum.UIResonanceInfo, {subResonanceID = resonance_info.Horse_Equip, isShowGoto = false}) elseif comp == self.btn_Attr then self:RefreshAttrInfo() elseif comp == self.btn_Bottom then UIUtils.SetActive(self.tip_Attr, false) UIUtils.SetActive(self.btn_Bottom, false) elseif comp == self.btn_Equip then if #MDL.HorseEquip.GetEquipItemList() > 0 then MDL.HorseEquip.OptHorseEquipReq(self.horseData.HorseID, "", MDL.HorseEquip.WearHorseEquipType.AutoEquip) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_HorseEquip_Hint_22) -- 暂无可装备的战装 end elseif comp == self.btn_Next then self.parentView:SwitchHorseShow(1) elseif comp == self.btn_Before then self.parentView:SwitchHorseShow(-1) elseif comp == self.btn_Armor or comp == self.btn_up then if self.equipedSlotNum == 4 then UIManager.OpenView(Const_UI_Lua.UIEnum.UIHorseEquipLevelUp,{horseData = self.horseData}) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_HorseEquip_Hint_1) end elseif comp == self.btn_ItemSources or comp == self.btn_CloseItemSources then self:OnClickItemSource() else for i, v in ipairs(self.group_Equipped) do if comp == v.btn_Empty then self.toggles:SelectIndex(i - 1) self:RefreshGroupEquipSelectStatus(i) elseif comp == v.btn_Equipped then self.toggles:SelectIndex(i - 1) local slotEquipId = MDL.HorseEquip.GetEquipSlotInfoByHorseId(self.horseData.HorseID, i).Id CTL.HorseEquip.OpenEquipTips(self.horseData.HorseID, slotEquipId, slotEquipId) self:RefreshGroupEquipSelectStatus(i) end end end end function UIHorseEquipMain:RefreshGroupEquipSelectStatus(selectEquipIndex) for i, v in ipairs(self.group_Equipped) do UIUtils.SetActive(self.group_Equipped[i].img_Selected, selectEquipIndex == i) end end function UIHorseEquipMain:OnValueChanged(comp, index) if comp == self.toggles then if self.filterSlotIndex ~= index + 1 then self.filterSlotIndex = index + 1 self:RefreshEquipItems() end end end function UIHorseEquipMain:UpdateInfo(horseConfig) self.iconLevelID = 0 self.oldLimitLv = 0 self.horseData = horseConfig self.filterSlotIndex = self.filterSlotIndex and self.filterSlotIndex or 0 UIUtils.SetLabel(self.txt_WarHorse, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[horseConfig.HorseName]), horseConfig.HorseQuality)) self.toggles:SelectIndex(self.filterSlotIndex >= 1 and self.filterSlotIndex - 1 or 0) self:RefreshEquipSlot() end function UIHorseEquipMain:RefreshEquipSlot() --更新装备槽位 self.equipedSlotNum = 0 self.limitLv = 0 for i, v in ipairs(self.group_Equipped) do UIUtils.SetActive(v.img_Selected, false) local equipInfo = MDL.HorseEquip.GetEquipSlotInfoByHorseId(self.horseData.HorseID,i) if equipInfo and CTL.HorseEquip.JudgeEquipId(equipInfo.Id) then v.state_Equipped:SetState(1) local equipInfo = MDL.HorseEquip.GetEquipInfoById(equipInfo.Id) UTL.Color.SetQualityImageByType(v.img_quality, equipInfo.itemData.Color, UTL.Color.QualityType.Circle) UTL.Item.OnlyItemIconWithoutBg(v.img_Equip, equipInfo.cfgId) v.txt_Armor.text = string.FormatByIdsId(Const_IDS.IDS_EquipData_StageShow, equipInfo.equipData.EquipStage) v.txt_Armor_lv.text = equipInfo.equipData.OfferLevel self.equipedSlotNum = self.equipedSlotNum + 1 self.limitLv = self.limitLv + equipInfo.equipData.OfferLevel v.btn_Equipped:SetRedPoint(CTL.HorseEquip.IsPosCanEquip(self.horseData.HorseID,i)) else v.state_Equipped:SetState(0) v.btn_Empty:SetRedPoint(CTL.HorseEquip.IsPosCanEquip(self.horseData.HorseID,i)) end end if self.equipedSlotNum == 4 then self.state_armor:SetState(0) self.txt_Lv.text = MDL.HorseEquip.GetArmorInfo(self.horseData.HorseID).level.."/"..self.limitLv local horseEquipEnhance = DataSheetManager.HorseEquipEnhance:GetDataByEnhanceLevel(self.limitLv) UIUtils.SetImageByAssetBundle(self.img_Armor, horseEquipEnhance.Icon) self.btn_Armor:SetRedPoint(CTL.HorseEquip.IsHorseArmorCanUpLv(self.horseData.HorseID)) self.btn_up:SetRedPoint(CTL.HorseEquip.IsHorseArmorCanUpLv(self.horseData.HorseID)) if self.iconLevelID ~= 0 and self.iconLevelID < horseEquipEnhance.IconLevelID and self.oldLimitLv ~= 0 then UIManager.OpenView(Const_UI_Lua.UIEnum.UIHorseEquipAscend, {oldLimitLv = self.oldLimitLv, curLimitLv = self.limitLv, horseId = self.horseData.HorseID}) end self.iconLevelID = horseEquipEnhance.IconLevelID else self.state_armor:SetState(1) self.btn_Armor:SetRedPoint(false) self.btn_up:SetRedPoint(false) self.iconLevelID = 0 end self.oldLimitLv = self.limitLv self.txt_Gs.text = CTL.HorseEquip.GetHorseEquipGs(self.horseData.HorseID) self:RefreshArrowRedPoint() end function UIHorseEquipMain:RefreshArrowRedPoint() local previewIndex = self.parentView.PreviewIndex local previewConfigList = self.parentView.PreviewHorseConfigList --右边箭头红点 local rightArrowRed = false for i = previewIndex + 1, #previewConfigList do local nextConfig = previewConfigList[i] if CTL.HorseEquip.CheckIfHorseEquipHasRp(nextConfig.HorseID) then rightArrowRed = true break end end self.btn_Next:SetRedPoint(rightArrowRed) --左边箭头红点 local leftArrowRed = false for i = 1, previewIndex - 1 do local lastConfig = previewConfigList[i] if CTL.HorseEquip.CheckIfHorseEquipHasRp(lastConfig.HorseID) then leftArrowRed = true break end end self.btn_Before:SetRedPoint(leftArrowRed) end function UIHorseEquipMain:CheckArmorIsActive(tempOptEquipData) if self.equipedSlotNum == 4 and not tempOptEquipData.isArmorActive then UIManager.OpenView(Const_UI_Lua.UIEnum.UIHorseEquipBreakSuccess, {limitLv = self.limitLv, horseData = self.horseData}) end end function UIHorseEquipMain:RefreshAttrInfo() local active = not self.tip_Attr.gameObject.activeInHierarchy UIUtils.SetActive(self.tip_Attr, active) UIUtils.SetActive(self.btn_Bottom, active) if active then --装备属性 local attrs, isEquiped = CTL.HorseEquip.GetHorseAttr(self.horseData.HorseID) if isEquiped then self.loop_Attr:ReloadAll(attrs) end UIUtils.SetActive(self.loop_Attr, isEquiped) UIUtils.SetActive(self.img_AttrEmpty, not isEquiped) end end function UIHorseEquipMain:RefreshEquipItems() self.equipBagList = {} if self.loop_HorseEquip.Count > 0 then self.loop_HorseEquip:ClearCells() end for i, v in ipairs(MDL.HorseEquip.GetEquipItemList()) do local equipInfo = MDL.HorseEquip.GetEquipInfoById(v) local equipData = equipInfo.equipData if equipData.EquipType == self.filterSlotIndex then table.insert(self.equipBagList, equipInfo) end end self.loop_HorseEquip:ReloadAll(self.equipBagList) UIUtils.SetActive(self.img_Empty, self.loop_HorseEquip.Count == 0) end -- 刷新共鸣显示 function UIHorseEquipMain:RefreshResonanceLv() UIUtils.SetActive(self.btn_Resonance, MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Resonance)) local level = MDL.FormationResonance.GetSubResonanceLv(resonance_info.Horse_Equip) self.txt_ResonanceLv.text = string.FormatByIdsId(Const_IDS["IDS_Resonance_Level"], level) end function UIHorseEquipMain:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Attr then UTL.Attr.SetAttrItemByCompName(cellTable, data.AttrType, data.AttrNum, true) elseif scrollRect == self.loop_HorseEquip then UTL.Item.SetItemCell(cellTable.item, data.cfgId) cellTable.txt_Armor.text = string.FormatByIdsId(Const_IDS.IDS_EquipData_StageShow, data.equipData.EquipStage) cellTable.txt_Armor_lv.text = data.equipData.OfferLevel if data.equipHorseId then UIUtils.SetActive(cellTable.bg_Head, true) local horseData = DataSheetManager.HorseData:GetDataByHorseID(data.equipHorseId) UIUtils.SetImageByAssetBundle(cellTable.img_HorseHead, horseData.HorseIcon) else cellTable.item.event_Click:SetRedPoint(false) UIUtils.SetActive(cellTable.bg_Head, false) end elseif scrollRect == self.loop_ItemSources then cellTable.txt_ItemSources.text = data.desc cellTable.state_ItemSources:SetState(data.isUnlock) end end function UIHorseEquipMain:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_HorseEquip then local slotEquipInfo = MDL.HorseEquip.GetEquipSlotInfoByHorseId(self.horseData.HorseID, data.equipData.EquipType) local slotEquipId = (slotEquipInfo and CTL.HorseEquip.JudgeEquipId(slotEquipInfo.Id)) and slotEquipInfo.Id or nil CTL.HorseEquip.OpenEquipTips(self.horseData.HorseID, data.id, slotEquipId) UIUtils.SetActive(cellTable.img_Select, true) elseif scrollRect == self.loop_ItemSources then if target == cellTable.btn_ItemSources then if data.isUnlock > 0 then CTL.ItemSources.ExecuteSourceFunctionById(data.sourceId) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_Formation_RelationShip_Closed) end end end end function UIHorseEquipMain:RrfreshArmorInfo() self.armorLv = MDL.HorseEquip.GetArmorInfo(self.horseData.HorseID).level end function UIHorseEquipMain:OnCloseEquipTips() self.loop_HorseEquip:SelectIndex(-1) self:RefreshGroupEquipSelectStatus(-1) end --点击道具获取途径 function UIHorseEquipMain:OnClickItemSource() if self.panel_ItemSources.gameObject.activeSelf then self.loop_ItemSources:ClearCells() UIUtils.SetActive(self.panel_ItemSources, false) UIUtils.SetActive(self.btn_CloseItemSources, false) else self:OpenItemSources() end end function UIHorseEquipMain:OpenItemSources() UIUtils.SetActive(self.panel_ItemSources, true) UIUtils.SetActive(self.btn_CloseItemSources, true) local sourcesList = MDL.ItemSources.GetItemSourcesById(horseEquipItemId) self.loop_ItemSources:ReloadAll(sourcesList) end return UIHorseEquipMain