local UIHorseSoulTip = UIViewClass() local EventSystem = require('Event/EventSystem') local ItemBg = ConstAssetPathConfig.ItemBg local TipsType = { BaseType = 1, -- 基础属性 LevelType = 2, -- 启魂属性 DescType = 3, -- 魂技说明 Path = 4, -- 获取途径 } function UIHorseSoulTip:OnOpened(context) self.context = context self.soulId = context.soulId self.isSlotEquip = false if context.horseId <= 0 then self.itemId = context.soulId self:SetSoulCfgTip() else self.horseId = context.horseId self.isSingleTip = context.isSingleTip self:SetSoulInfo() end end function UIHorseSoulTip:SetSoulCfgTip() local itemData = DataSheetManager.ItemData:GetDataByID(self.itemId) self.soulData = DataSheetManager.HorseSoulData:GetDataByHorseSoulID(self.itemId) UTL.Item.SetItemCell(self.ItemBase, self.itemId) local qualityData = DataSheetManager.QualityColor:GetDataByID(itemData.Color) local colorBg = qualityData.EquipFragmentComposeBase local colorPrint = qualityData.EquipRefineIcon local itemNameAndDesc = UTL.Item.GetItemDataSpliceByType(self.itemId) local colorName = UTL.Color.FormatQualityText(itemNameAndDesc.Name, itemData.Color) UIUtils.SetImageByAssetBundle(self.img_ItemInfoBg, string.format(ItemBg, colorBg)) UIUtils.SetImageByAssetBundle(self.img_ItemInfoBg2, string.format(ItemBg, colorPrint)) UIUtils.SetLabel(self.txt_ItemName, colorName) UIUtils.SetLabelText(self.txt_ItemType, Const_IDS[itemData.Tips]) self.ItemBase.txt_Level.text = "" CTL.HorseSoul.SetPositionImage(self.ItemBase.img_Pos, self.soulData.HorseSoulPositionID) self.loop_EquipInfo:AddData(TipsType.BaseType , 0) if itemData.Color >= LuaConst.QualityColor.Gold then self.loop_EquipInfo:AddData(TipsType.LevelType , 0) end self.loop_EquipInfo:AddData(TipsType.DescType , 1) if not self.context.isChildTips and CTL.ItemSources.IsShowItemSource(self.itemId) then self.loop_EquipInfo:AddData(TipsType.Path, 2) end self.txt_CE.text = UTL.Attr.CalculateFight(DataSheetManager.HorseSoulLevelData:GetDataByHorseSoulLevelAttrID_Level(self.soulData.HorseSoulLevelAttrID, 1).Attr_Table) self.state_CE:SetState(2) UIUtils.SetActive(self.group_Btns, false) UIUtils.SetActive(self.bg_Head, false) CTL.HorseSoul.SetStarLevel(self.ItemBase.group_Star, 0) end function UIHorseSoulTip:SetSoulInfo() self.soulInfo = MDL.HorseSoul.GetSoulInfoById(self.soulId) self.soulData = self.soulInfo.soulData self.itemId = self.soulInfo.cfgId UTL.Item.SetItemCell(self.ItemBase, self.itemId) local itemCfgData = DataSheetManager.ItemData:GetDataByID(self.itemId) local qualityData = DataSheetManager.QualityColor:GetDataByID(self.soulInfo.itemData.Color) local colorBg = qualityData.EquipFragmentComposeBase local colorPrint = qualityData.EquipRefineIcon local itemNameAndDesc = UTL.Item.GetItemDataSpliceByType(self.itemId) local colorName = UTL.Color.FormatQualityText(itemNameAndDesc.Name, itemCfgData.Color) UIUtils.SetImageByAssetBundle(self.img_ItemInfoBg, string.format(ItemBg, colorBg)) UIUtils.SetImageByAssetBundle(self.img_ItemInfoBg2, string.format(ItemBg, colorPrint)) UIUtils.SetLabel(self.txt_ItemName, colorName) UIUtils.SetLabelText(self.txt_ItemType, Const_IDS[itemCfgData.Tips]) self.ItemBase.txt_Level.text = self.soulInfo.levelInfo and self.soulInfo.levelInfo.level or "" CTL.HorseSoul.SetPositionImage(self.ItemBase.img_Pos, self.soulInfo.soulData.HorseSoulPositionID) self.loop_EquipInfo:AddData(TipsType.BaseType , 0) if itemCfgData.Color >= LuaConst.QualityColor.Gold then self.loop_EquipInfo:AddData(TipsType.LevelType , 0) end self.loop_EquipInfo:AddData(TipsType.DescType , 1) local soulGs = self.soulInfo.gs self.txt_CE.text = soulGs local slotInfo = MDL.HorseSoul.GetSoulSlotInfoByHorseId(self.horseId) local pos = self.soulData.HorseSoulPositionID local slotEquipId = slotInfo[pos] and slotInfo[pos].soulPearl self.isSlotEquip = CTL.HorseSoul.JudgeSoulId(slotEquipId) and true or false if self.isSlotEquip then local equipGs = CTL.HorseSoul.CalculateSoulGs(slotEquipId) if equipGs == soulGs then self.state_CE:SetState(2) else self.state_CE:SetState(equipGs < soulGs and 0 or 1) end else self.state_CE:SetState(2) end if self.isSingleTip == nil or self.context.isChildTips then UIUtils.SetActive(self.group_Btns, false) else UIUtils.SetActive(self.group_Btns, true) local horseID = MDL.HorseSoul.JudgeIfEquip(self.soulId) if horseID then UIUtils.SetActive(self.btn_Equip, false) if horseID == self.horseId then UIUtils.SetActive(self.btn_UnEquip, true) UIUtils.SetActive(self.btn_Exchange, false) else UIUtils.SetActive(self.btn_UnEquip, false) UIUtils.SetActive(self.btn_Exchange, true) end else UIUtils.SetActive(self.btn_UnEquip, false) UIUtils.SetActive(self.btn_Equip, not self.isSlotEquip) UIUtils.SetActive(self.btn_Exchange, self.isSlotEquip) end end if self.soulInfo.equipHorseId then UIUtils.SetActive(self.bg_Head, true) local horseData = DataSheetManager.HorseData:GetDataByHorseID(self.soulInfo.equipHorseId) UIUtils.SetImageByAssetBundle(self.img_HorseHead, horseData.HorseIcon) else UIUtils.SetActive(self.bg_Head, false) end CTL.HorseSoul.SetStarLevel(self.ItemBase.group_Star, self.soulInfo.star) end function UIHorseSoulTip:OnClosed() EventSystem.Dispatch(EventID.UI_CloseHorseSoulTips) end function UIHorseSoulTip:CloseAll() if self.context.rootName then UIManager.CloseView(self.context.rootName) else self:CloseView() end end function UIHorseSoulTip:OnButtonClicked(comp) if comp == self.btn_LevelUp then UIManager.OpenView(Const_UI_Lua.UIEnum.UIHorseSoulBase, {soulId = self.soulId}) self:CloseAll() elseif comp == self.btn_Equip or comp == self.btn_Exchange then MDL.HorseSoul.HorseSoulEquipReq(MDL.HorseSoul.HorseSoulEquipType.Equip, self.soulId, self.horseId, self.soulData.HorseSoulPositionID) self:CloseAll() elseif comp == self.btn_UnEquip then MDL.HorseSoul.HorseSoulEquipReq(MDL.HorseSoul.HorseSoulEquipType.Disboard, self.soulId, self.soulInfo.equipHorseId, self.soulData.HorseSoulPositionID) self:CloseAll() --elseif comp == self.btn_Break then end end function UIHorseSoulTip:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_EquipInfo then if data == TipsType.BaseType then UIUtils.SetActive(cellTable.group_Star.gameObject, false) UIUtils.SetActive(cellTable.txt_NoStar.gameObject, false) UIUtils.SetLabelText(cellTable.txt_EquipTitle, Const_IDS.IDS_BaseAttr) local attrTable = {} -- 抽卡界面预览拿不到levelInfo,这里做一下处理 if self.soulInfo then attrTable = CTL.HorseSoul.GetSoulAttrTable(self.soulData.HorseSoulLevelAttrID, self.soulInfo.levelInfo.level, self.soulInfo.levelInfo.breakLevel) else attrTable = CTL.HorseSoul.GetSoulAttrTable(self.soulData.HorseSoulLevelAttrID, 1) end for i, v in ipairs(attrTable) do if cellTable.Content_EquipAttr[i] == nil then self:InstantiateCollection(cellTable.Content_EquipAttr, cellTable.cell_EquipAttr.gameObject) UIUtils.SetActive(cellTable.Content_EquipAttr[i].gameObject, true) end UTL.Attr.SetAttrItemByCompName(cellTable.Content_EquipAttr[i], v.AttrType, v.AttrNum, true) end elseif data == TipsType.LevelType then UIUtils.SetActive(cellTable.group_Star.gameObject, self.soulInfo ~= nil and self.soulInfo.star > 0) if not self.soulInfo or self.soulInfo.star == 0 then UIUtils.SetLabelText(cellTable.txt_EquipTitle, Const_IDS.IDS_HorseSoul_TipsHint2) UIUtils.SetActive(cellTable.txt_NoStar.gameObject, true) UIUtils.SetLabelText(cellTable.txt_NoStar, Const_IDS.IDS_HorseSoul_StarHint1) else UIUtils.SetLabel(cellTable.txt_EquipTitle, string.FormatByIdsId(Const_IDS.IDS_HorseSoul_StarHint2, UIUtils.GetLocalizedTxt(Const_IDS["IDS_Number_Written_"..self.soulInfo.star]))) UIUtils.SetActive(cellTable.txt_NoStar.gameObject, false) CTL.HorseSoul.SetStarLevel(cellTable.group_Star, self.soulInfo.star) local attrTable = CTL.HorseSoul.GetSoulAwakeAttrTable(self.soulData.HorseSoulStarAttrID, self.soulInfo.star) for i, v in ipairs(attrTable) do if cellTable.Content_EquipAttr[i] == nil then self:InstantiateCollection(cellTable.Content_EquipAttr, cellTable.cell_EquipAttr.gameObject) UIUtils.SetActive(cellTable.Content_EquipAttr[i].gameObject, true) end UTL.Attr.SetAttrItemByCompName(cellTable.Content_EquipAttr[i], v.AttrType, v.AttrNum, true) end end elseif data == TipsType.DescType then UIUtils.SetLabelText(cellTable.txt_EquipDescTitle, Const_IDS.IDS_HorseSoul_TipsHint3) local firstLevelData = DataSheetManager.HorseSoulSuitData:GetDataByHorseSoulSuitID_HorseSoulSkillLevel(self.soulData.HorseSoulSuitID, 1) UIUtils.SetLabelText(cellTable.txt_SkillName, Const_IDS[firstLevelData.HorseSoulSkillName]) cellTable.txt_ItemInfoDes.text = UTL.String.FormatCombineTextByID(firstLevelData.HorseSoulSkillDes) UIUtils.SetLabelText(cellTable.txt_Lock, Const_IDS.IDS_HorseSoul_TipsHint6) elseif data == TipsType.Path 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 end end end function UIHorseSoulTip: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 UIHorseSoulTip: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 end for i = num + 1, #cellTable.Content_EquipAttr do UIUtils.SetActive(cellTable.Content_EquipAttr[i].gameObject, false) end end return UIHorseSoulTip