local UIBaseEquipTips = UIViewClass() local EventSystem = require('Event/EventSystem') local OffsetX = 316 local Attr_Type = { Base = 1, --基础 Refine = 2, --洗炼 } local EMPTY_ATTR = Const_IDS.IDS_EquipRefine_Hint4 --空属性IDS function UIBaseEquipTips:OnOpened(context) self.attrGroupList = {} if context.equipInfo then self.itemId = context.equipInfo.ItemData.ID else self.itemId = context.itemId end self:InitTipsButton(context.btnEnumList) --道具数据 local itemData = DataSheetManager.ItemData:GetDataByID(self.itemId) UIUtils.SetLabelText(self.txt_ItemType, Const_IDS[itemData.Tips]) UTL.Item.SetItemCell(self.ItemBase, self.itemId) UIUtils.SetActive(self.bg_Head, false) local color = itemData.Color UTL.Color.SetQualityImageByType(self.img_ItemInfoBg, color, UTL.Color.QualityType.EquipFragmentComposeBase) UTL.Color.SetQualityImageByType(self.img_ItemInfoBg2, color, UTL.Color.QualityType.EquipRefineIcon) self.txt_ItemName.text = UTL.Color.FormatQualityText(string.FormatByIdsId(Const_IDS[itemData.Name], itemData.ThirdType), color) if itemData.FirstType == LuaConst.ItemType.Gem then --宝石 --没有穿戴等级 UIUtils.SetLabel(self.lab_Lv, nil) UIUtils.SetLabel(self.txt_Lv, nil) local gemData = DataSheetManager.JadeData:GetDataByID(self.itemId) local fight = UTL.Attr.CalculateFight(gemData.Attr_Table) self.txt_ItemGs.text = fight local data = { titleIDS = Const_IDS.IDS_Equip_BasicAttr, attrDatas = gemData.Attr_Table, attrType = Attr_Type.Base, } self.loop_EquipInfo:AddData(data, 0) else --装备 --装备有部分数据是进了背包之后服务器生成的,因此背包内的装备tip需要传Equipment_Model模块的equipInfo if context.equipInfo then --背包数据 self.equipData = context.equipInfo.EquipData --头像 local heroId = MDL.Equipment.GetEquipHeroId(context.equipInfo.ID) if heroId then UIUtils.SetActive(self.bg_Head, true) UTL.Item.SetHeroIconByHeroId(self.img_PlayerHead, heroId, MDL.HeroAwaken.GetIsHeroAwaken(heroId)) end --总战力(所有属性之和) local fight = UTL.Attr.CalculateFight(CTL.Equipment.GetEquipAttr(context.equipInfo, true, false)) self.txt_ItemGs.text = fight local data = { titleIDS = Const_IDS.IDS_Equip_BasicAttr, attrDatas = self.equipData.Attr_Table, attrType = Attr_Type.Base, } --基础属性 self.loop_EquipInfo:AddData(data, 0) --洗炼属性 data.titleIDS = Const_IDS.IDS_EquipRefine_Attr data.attrType = Attr_Type.Refine local refineMaxNum = self.equipData.MaxRefineNum if refineMaxNum > 0 then local refineAttr = context.equipInfo.RefineAttrs local refineNum = refineAttr and #refineAttr or 0 if refineNum >= refineMaxNum then data.attrDatas = refineAttr else data.attrDatas = {} for i = 1, refineMaxNum do if i <= refineNum then data.attrDatas[i] = refineAttr[i] else data.attrDatas[i] = EMPTY_ATTR end end end self.loop_EquipInfo:AddData(data, 0) else data.titleIDS = Const_IDS.IDS_EquipRefine_Attr data.attrType = Attr_Type.Refine data.attrDatas = nil self.loop_EquipInfo:AddData(data, 0) end else local __, tempEquipData = DataSheetManager.EquipData:TryGetDataByID(self.itemId) self.equipData = tempEquipData if self.equipData == nil then --装备碎片 for _, v in DataSheetManager.EquipData:GetEnumerator() do if v.ItemID == self.itemId then self.equipData = v break end end end self.txt_ItemGs.text = "???" --基础属性 local data = { titleIDS = Const_IDS.IDS_Equip_BasicAttr, attrDatas = self.equipData.Attr_Table, attrType = Attr_Type.Base, } self.loop_EquipInfo:AddData(data, 0) --洗炼属性 data.titleIDS = Const_IDS.IDS_EquipRefine_Attr data.attrType = Attr_Type.Refine data.attrDatas = nil self.loop_EquipInfo:AddData(data, 0) end --穿戴等级 UIUtils.SetLabelText(self.lab_Lv, Const_IDS.IDS_EquipRefine_EquipLevel) local level = CTL.Equipment.GetEquipLevel(self.equipData) UIUtils.SetLabel(self.txt_Lv, level) end --描述 self.loop_EquipInfo:AddData(UTL.Item.GetItemDataSpliceByType(self.itemId).Des, 1) if not self.context.isChildTips and CTL.ItemSources.IsShowItemSource(self.itemId) then self.loop_EquipInfo:AddData({isItemSource = true}, 2) end if context.isOffset then self.Panel_ItemTips:SetLocalPosition(OffsetX, nil, nil) end self.context = context self:SetPushStyle(LuaConst.PushStyleEnum.CLOSENOTRECOVER) end function UIBaseEquipTips:CloseAll() if self.context.rootName then UIManager.CloseView(self.context.rootName) else self:CloseView() end end function UIBaseEquipTips:OnButtonClicked(comp) if comp == self.group_Btns.cell_ButtonEquip then local isChange = false for i, v in ipairs(self.context.btnEnumList) do if v == CTL.Equipment.TipsBtnEnum.Change then isChange = true break end end if isChange then self:OnClickTipsBtn(CTL.Equipment.TipsBtnEnum.Change) else self:OnClickTipsBtn(CTL.Equipment.TipsBtnEnum.Equip) end elseif comp == self.group_Btns.cell_ButtonRefine then self:OnClickTipsBtn(CTL.Equipment.TipsBtnEnum.Refine) elseif comp == self.group_Btns.cell_ButtonSmelt then self:OnClickTipsBtn(CTL.Equipment.TipsBtnEnum.Smelt) end end function UIBaseEquipTips:OnClickTipsBtn(btnEnum) local EquipTipsBtnEnum = CTL.Equipment.TipsBtnEnum local selectEquipInfo = self.context.equipInfo if btnEnum == EquipTipsBtnEnum.Equip then MDL.Equipment.WearEquipRequest(self.context.heroId, selectEquipInfo.EquipData.EquipType, selectEquipInfo.ID) elseif btnEnum == EquipTipsBtnEnum.Change then MDL.Equipment.WearEquipRequest(self.context.heroId, selectEquipInfo.EquipData.EquipType, selectEquipInfo.ID, Const_IDS.IDS_FormationOptimize_Inherit) elseif btnEnum == EquipTipsBtnEnum.Refine then CTL.Equipment.OpenRefinePopUp(self.context.equippedEquipInfo, selectEquipInfo) elseif btnEnum == EquipTipsBtnEnum.Smelt then CTL.Reborn.OpenRebornView(MDL.Reborn.RebornToggleIndex.Smelt, {equipId = selectEquipInfo.ID}) end self:CloseAll() end function UIBaseEquipTips:InitTipsButton(btnEnumList) for i, v in pairs(self.group_Btns) do UIUtils.SetActive(v, false) end if btnEnumList then UIUtils.SetActive(self.group_Btns.gameObject, true) for i, v in ipairs(btnEnumList) do local txt = CTL.Equipment.GetTipsBtnIds(v) if v == CTL.Equipment.TipsBtnEnum.Equip or v == CTL.Equipment.TipsBtnEnum.Change then local btn = self.group_Btns.cell_ButtonEquip UIUtils.SetActive(btn, true) btn:SetText(txt) btn.transform:SetAsLastSibling() elseif v == CTL.Equipment.TipsBtnEnum.Refine then local btn = self.group_Btns.cell_ButtonRefine UIUtils.SetActive(btn, true) btn:SetText(txt) btn.transform:SetAsLastSibling() elseif v == CTL.Equipment.TipsBtnEnum.Smelt then local btn = self.group_Btns.cell_ButtonSmelt UIUtils.SetActive(btn, true) btn:SetText(txt) btn.transform:SetAsLastSibling() end end self.btnEnumList = btnEnumList else UIUtils.SetActive(self.group_Btns.gameObject, false) end end function UIBaseEquipTips:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_EquipInfo then if type(data) == "string" then --是不是显示DESC cellTable.txt_ItemInfoDes.text = data elseif data.isItemSource then local sourcesList = MDL.ItemSources.GetItemSourcesById(self.itemId) for i, sourceData in ipairs(sourcesList) do local item = cellTable.Content[i] if not item then item = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.Content, cellTable.Content[1].gameObject) end UIUtils.SetActive(item.gameObject, true) item.txt_ItemSources.text = sourceData.desc item.state_ItemSources:SetState(sourceData.isUnlock) end else --是不是显示属性数据 --标题 UIUtils.SetLabelText(cellTable.txt_EquipTitle, data.titleIDS) --属性词条 local attrDatas = data.attrDatas if attrDatas then self:InstantiateAttrGroup(cellTable, #attrDatas) for i = 1, #attrDatas do if attrDatas[i] == EMPTY_ATTR then cellTable.Content_EquipAttr[i].txt_EquipAttrTitle.text = nil cellTable.Content_EquipAttr[i].txt_EquipAttrNum.text = nil UIUtils.SetLabelText(cellTable.Content_EquipAttr[i].lab_NoAttr, EMPTY_ATTR) else cellTable.Content_EquipAttr[i].lab_NoAttr.text = nil local attrNameIDS = Const_IDS[DataSheetManager.AttrData:GetDataByID(attrDatas[i].AttrType).Name] if data.attrType == Attr_Type.Refine then --洗炼属性需要加上颜色显示 local quality = CTL.Equipment.GetRefineAttrQuality(self.equipData.RefineID, attrDatas[i]) cellTable.Content_EquipAttr[i].txt_EquipAttrTitle.text = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(attrNameIDS), quality) cellTable.Content_EquipAttr[i].txt_EquipAttrNum.text = UTL.Color.FormatQualityText(attrDatas[i].AttrNum, quality) else UIUtils.SetLabelText(cellTable.Content_EquipAttr[i].txt_EquipAttrTitle, attrNameIDS) cellTable.Content_EquipAttr[i].txt_EquipAttrNum.text = attrDatas[i].AttrNum end end end else if data.attrType == Attr_Type.Refine then --道具预览不显示洗炼属性 self:InstantiateAttrGroup(cellTable, 1) cellTable.Content_EquipAttr[1].txt_EquipAttrTitle.text = nil cellTable.Content_EquipAttr[1].txt_EquipAttrNum.text = nil if self.equipData.MaxRefineNum > 0 then UIUtils.SetLabelText(cellTable.Content_EquipAttr[1].lab_NoAttr, Const_IDS.IDS_EquipRefine_NotObtainedTips) else UIUtils.SetLabelText(cellTable.Content_EquipAttr[1].lab_NoAttr, Const_IDS.IDS_EquipRefine_NotRefineTips) end end end end elseif scrollRect == self.loop_ItemSources then cellTable.txt_ItemSources.text = data.desc cellTable.state_ItemSources:SetState(data.isUnlock) end end function UIBaseEquipTips:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_EquipInfo then for i, itemCell in ipairs(cellTable.Content) do if target == itemCell.btn_ItemSources then local sourcesList = MDL.ItemSources.GetItemSourcesById(self.itemId) local sourceData = sourcesList[i] if sourceData.isUnlock > 0 then if CTL.ItemSources.ExecuteSourceFunctionById(sourceData.sourceId, self.itemId) then self:CloseAll() end else CTL.Tips.AddTipsMsg(Const_IDS.IDS_Formation_RelationShip_Closed) end end end end end function UIBaseEquipTips:InstantiateAttrGroup(cellTable, num) for i = 1, num do if cellTable.Content_EquipAttr[i] == nil then self:InstantiateCollection(cellTable.Content_EquipAttr, cellTable.cell_EquipAttr.gameObject) end UIUtils.SetActive(cellTable.Content_EquipAttr[i].gameObject, true) end for i = num + 1, #cellTable.Content_EquipAttr do UIUtils.SetActive(cellTable.Content_EquipAttr[i].gameObject, false) end end return UIBaseEquipTips