local UIEquipmentCommon = require "View/Equipment/UIEquipmentCommon" local UIEquipmentInfo = UIViewClass(UIEquipmentCommon) local resonance_info = require 'Proto/resonance_info_pb' function UIEquipmentInfo:OnOpened(context) --self:RegistSystemEvent(EventID.UI_UpdateEquipmentHeroId, self.RefreshEquipSuit) end function UIEquipmentInfo:OnButtonClicked(comp) if comp == self.btn_Resonance then self:OnResonanceLvClick() elseif comp == self.btn_SuitInfo then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.EquipSuit}) end end function UIEquipmentInfo:SetResonanceLvType() self.resonanceLvType = resonance_info.Equip_Quality end function UIEquipmentInfo:RefreshEquipInfo(equipInfo) self.equipInfo = equipInfo UIUtils.SetLabel(self.txt_EquipDes, UTL.Item.GetItemDataSpliceByType(equipInfo.ItemData.ID).Des) --战力(基础+洗炼) local fight = UTL.Attr.CalculateFight(CTL.Equipment.GetEquipAttr(equipInfo, true, false)) self.txt_GS.text = fight --基础属性 local baseAttr = equipInfo.EquipData.Attr_Table self:SetAttrGroup(#baseAttr, self.col_BaseAttr, self.group_AttrItem) for i, v in ipairs(baseAttr) do self.col_BaseAttr[i].state_empty:SetState(1) local attrData = DataSheetManager.AttrData:GetDataByID(v.AttrType) UTL.Item.SetAtlasSprite(self.col_BaseAttr[i].icon_Attr, "UI_Common", attrData.Icon) UIUtils.SetLabelText(self.col_BaseAttr[i].lab_Attr, Const_IDS[attrData.Name]) self.col_BaseAttr[i].txt_Attr.text = v.AttrNum end --洗炼属性 local refineMaxNum = equipInfo.EquipData.MaxRefineNum if refineMaxNum > 0 then self:SetAttrGroup(refineMaxNum, self.col_RefineAttr, self.group_AttrItem) local refineAttr = equipInfo.RefineAttrs local refineNum = refineAttr and #refineAttr or 0 for i = 1, refineMaxNum do if refineNum >= i then self.col_RefineAttr[i].state_empty:SetState(1) local attrData = DataSheetManager.AttrData:GetDataByID(refineAttr[i].AttrType) local quality = CTL.Equipment.GetRefineAttrQuality(equipInfo.EquipData.RefineID, refineAttr[i]) UTL.Item.SetAtlasSprite(self.col_RefineAttr[i].icon_Attr, "UI_Common", attrData.Icon) self.col_RefineAttr[i].lab_Attr.text = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[attrData.Name]), quality) self.col_RefineAttr[i].txt_Attr.text = UTL.Color.FormatQualityText(refineAttr[i].AttrNum, quality) else self.col_RefineAttr[i].state_empty:SetState(0) UIUtils.SetLabelText(self.col_RefineAttr[i].lab_Empty, Const_IDS.IDS_EquipRefine_Hint4) end end else self:SetAttrGroup(1, self.col_RefineAttr, self.group_AttrItem) self.col_RefineAttr[1].state_empty:SetState(0) UIUtils.SetLabelText(self.col_RefineAttr[1].lab_Empty, Const_IDS.IDS_EquipRefine_NotRefineTips) end end function UIEquipmentInfo:SetAttrGroup(num, col, item) for i = 1, num do if col[i] == nil then self:InstantiateCollection(col, item.gameObject) end UIUtils.SetActive(col[i].gameObject, true) end for i = num + 1, #col do UIUtils.SetActive(col[i].gameObject, false) end end function UIEquipmentInfo:RefreshEquipSuit(heroId) self:RefreshSuitEquipments(heroId) self:RefreshSuitAttrs(heroId) end function UIEquipmentInfo:RefreshSuitEquipments(heroId) if heroId then UIUtils.SetActive(self.img_NoSuite, false) UIUtils.SetActive(self.group_Suits.gameObject, true) local equipInfos = MDL.Equipment.GetEquipmentsByHeroId(heroId) local defaultEquips = MDL.Equipment.GetEquipmentsBySuitID(1) local index = {} for i = 1, #equipInfos, 1 do local equipInfo = equipInfos[i] if equipInfo and equipInfo.EquipData.SuitID > 0 then local posType = equipInfo.EquipData.EquipType local equipCell = self.group_SuitEquipments[posType] UIUtils.SetActive(equipCell.img_BlackMask, false) UTL.Item.SetItemCell(equipCell.item, equipInfo.ItemData.ID) table.insert(index, posType) end end for i, v in ipairs(self.group_SuitEquipments) do if not table.containValue(index, i) then UIUtils.SetActive(v.img_BlackMask, true) UTL.Item.SetItemCell(v.item, defaultEquips[i]) end end else if self.equipInfo.EquipData.SuitID and self.equipInfo.EquipData.SuitID > 0 then UIUtils.SetActive(self.img_NoSuite, false) UIUtils.SetActive(self.group_Suits.gameObject, true) local equipIdList = MDL.Equipment.GetEquipmentsBySuitID(self.equipInfo.EquipData.SuitID) for i, v in ipairs(self.group_SuitEquipments) do UTL.Item.SetItemCell(v.item, equipIdList[i]) UIUtils.SetActive(v.img_BlackMask, self.equipInfo.EquipData.ID ~= equipIdList[i]) end else UIUtils.SetActive(self.img_NoSuite, true) UIUtils.SetActive(self.group_Suits.gameObject, false) end end end function UIEquipmentInfo:RefreshSuitAttrs(heroId) if self.loop_SuitAttr.Count > 0 then self.loop_SuitAttr:ClearCells() end local suitIdList = MDL.Equipment.GetSuitIdListByHeroId(heroId) if not heroId then if self.equipInfo.EquipData.SuitID and self.equipInfo.EquipData.SuitID > 0 then suitIdList = {self.equipInfo.EquipData.SuitID} end end for _, v in ipairs(suitIdList) do local suitData = DataSheetManager.SuitData:GetDataBySuitID(v) local equippedSuitNums = MDL.Equipment.GetEquippedSuitNumBySuitID(heroId, v) self.loop_SuitAttr:AddData({Title = suitData.Name, EquippedSuitNums = equippedSuitNums, Quality = suitData.CharacterColorID}, 0) for index, value in DataSheetManager.SuitAttrData:GetDataBySuitID_SuitNum(v) do local attrTable = value.Attr_Table local state = CTL.Equipment.IsSuitNumActive(heroId, value.SuitID, value.SuitNum) and 1 or 0 self.loop_SuitAttr:AddData({SuitNum = value.SuitNum, AttrType = attrTable[1].AttrType, AttrNum = attrTable[1].AttrNum, State = state}, 1) if #attrTable > 1 then for i = 2, #attrTable do self.loop_SuitAttr:AddData({AttrType = attrTable[i].AttrType, AttrNum = attrTable[i].AttrNum, State = state}, 2) end end end end UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self.group_Suits) end function UIEquipmentInfo:OnCellInit(scrollRect, index, cellTable, data) if data.Title then local suitName = UIUtils.GetLocalizedTxt(Const_IDS[data.Title]) cellTable.txt_AttrTitle.text = UTL.Color.FormatQualityText(suitName, data.Quality) else if data.SuitNum then cellTable.txt_Order.text = "[" .. data.SuitNum .. "]" end UIUtils.SetLabelText(cellTable.txt_Attr, Const_IDS[DataSheetManager.AttrData:GetDataByID(data.AttrType).Name]) cellTable.txt_AttrNum.text = data.AttrNum cellTable.state:SetState(data.State) end end return UIEquipmentInfo