local UIHeroBreakInfoView = UIViewClass() local SkillIconPath = ConstAssetPathConfig.SkillImagePath local LockTextColor = "888b97" local UnlockContentColor = "d5def4" function UIHeroBreakInfoView:OnOpened(context) self.heroId = context.heroId local appearanceWearID = MDL.HeroSelect.GetAttrAppearanceIDByHeroID(self.heroId) UIUtils.SetActive(self.group_Appearance.gameObject, appearanceWearID > 0 and DataSheetManager.HeroAppearance:GetDataByID(appearanceWearID).Intelligence > 0) if appearanceWearID > 0 then local appearanceData = DataSheetManager.HeroAppearance:GetDataByID(appearanceWearID) UIUtils.SetLabel(self.Lab_Appearance, string.FormatByIdsId(Const_IDS.IDS_Appearance_UI_TuPoJiaCheng, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[appearanceData.AppearanceName]), appearanceData.HeroQuality))) end self.starLevel = MDL.HeroStar.GetHeroStarLevel(self.heroId) local showNumLimit = DataSheetManager.HeroStar:GetDataByHeroID_Star(self.heroId, self.starLevel).PreDevelopEffectNum for i, v in DataSheetManager.HeroStar:GetDataByHeroID_Star(self.heroId) do if v.Star ~= 0 then self.loop_HeroBreakInfo:AddData(v, 0) end if i > showNumLimit then return end end end function UIHeroBreakInfoView:OnBackButtonPressed() self:OnButtonClicked(self.BtnClose) end function UIHeroBreakInfoView:OnButtonClicked(comp) if comp == self.BtnClose or comp == self.btn_Bottom then self:CloseView() end end function UIHeroBreakInfoView:RefreshAptitudeCell(cellTable, data) local attrTypeId = MDL.HeroSelect.GetHeroLevelAttrID(self.heroId) local newAtk, newDef, newHp = MDL.HeroSelect.GetAtkDefHpGrowNumber(attrTypeId, data.Star) UIUtils.SetLabel(cellTable.group_Aptitude.group_Hp.Lab_Hp, string.FormatByIdsId(Const_IDS.IDS_HeroStarGrowth, UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.AttrData:GetDataByID(LuaConst.AttrTypeId.hplmt).Name]))) UIUtils.SetLabel(cellTable.group_Aptitude.group_Atk.Lab_Atk, string.FormatByIdsId(Const_IDS.IDS_HeroStarGrowth, UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.AttrData:GetDataByID(LuaConst.AttrTypeId.atk).Name]))) UIUtils.SetLabel(cellTable.group_Aptitude.group_Def.Lab_Def, string.FormatByIdsId(Const_IDS.IDS_HeroStarGrowth, UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.AttrData:GetDataByID(LuaConst.AttrTypeId.def).Name]))) UIUtils.SetLabel(cellTable.group_Aptitude.group_Hp.txt_Num, string.format("%.1f", newHp)) UIUtils.SetLabel(cellTable.group_Aptitude.group_Atk.txt_Num, string.format("%.1f", newAtk)) UIUtils.SetLabel(cellTable.group_Aptitude.group_Def.txt_Num, string.format("%.1f", newDef)) end function UIHeroBreakInfoView:RefreshSkillCell(cellTable, data) UIUtils.SetActive(cellTable.group_Skill.gameObject, true) local starData = DataSheetManager.HeroStar:GetDataByHeroID_Star(self.heroId, data.Star) local developEffectID = starData.DevelopEffectID local name, skillText = MDL.HeroStar.GetTalentNameAndDesc(developEffectID) cellTable.txt_SkillInfo.text = skillText local developEffectData = DataSheetManager.DevelopEffectData:GetDataByID(developEffectID) UIUtils.SetImageByAssetBundle(cellTable.img_Skill, string.format(SkillIconPath, developEffectData.Icon)) local level = MDL.HeroStar.GetHeroTalentLevel(self.heroId, developEffectID) if level == 1 then UIUtils.SetLabelText(cellTable.txt_AttrTitle, Const_IDS.IDS_TalentSkill_HeroStarHint3) else UIUtils.SetLabelText(cellTable.txt_AttrTitle, Const_IDS.IDS_TalentSkill_HeroStarHint4) end UIUtils.SetActive(cellTable.group_Level.gameObject, level > 0) cellTable.txt_Lv.text = level end function UIHeroBreakInfoView:RefreshAttrsCell(cellTable, data) UIUtils.SetActive(cellTable.group_Attr.gameObject, true) local starBreakAttrId local heroWearAppearanceID = MDL.HeroSelect.GetAttrAppearanceIDByHeroID(self.heroId) if heroWearAppearanceID and heroWearAppearanceID > 0 then local appearanceData = DataSheetManager.HeroAppearance:GetDataByID(heroWearAppearanceID) if appearanceData.Intelligence > 0 then starBreakAttrId = DataSheetManager.HeroStarAppearance:GetDataByHeroAppearanceID_Star(heroWearAppearanceID, data.Star).AttrSpecial else starBreakAttrId = DataSheetManager.HeroStar:GetDataByHeroID_Star(self.heroId, data.Star).AttrSpecial end else starBreakAttrId = DataSheetManager.HeroStar:GetDataByHeroID_Star(self.heroId, data.Star).AttrSpecial end local attrTable = DataSheetManager.HeroStarAttrRepeat:GetDataByAttrRepeatID(starBreakAttrId).Attr_Table for i, v in ipairs(cellTable.group_Attr) do local attrData = attrTable[i] if attrData then local attrName = DataSheetManager.AttrData:GetDataByID(attrData.AttrType).Name UIUtils.SetLabelText(v.txt_AttrName, Const_IDS[attrName]) local attrNum = "+" .. attrData.AttrNum local isUnlock = self.starLevel < data.Star UIUtils.SetLabel(v.txt_AttrNum, isUnlock and attrNum or UTL.Color.FormatGreenColor(attrNum)) UIUtils.SetActive(v.gameObject, true) else UIUtils.SetActive(v.gameObject, false) end end end function UIHeroBreakInfoView:OnCellInit(scrollRect, index, cellTable, data) local isUnlock = self.starLevel >= data.Star local titleText = string.FormatByIdsId(Const_IDS.IDS_HeroStarLevel, data.Star) cellTable.txt_CellTitle.text = isUnlock and titleText or UTL.Color.FormatTextByColor(LockTextColor, titleText) UIUtils.SetActive(cellTable.img_Locked, not isUnlock) UIUtils.SetActive(cellTable.group_Locked.gameObject, not isUnlock) self:RefreshAptitudeCell(cellTable, data) if data.StarType == LuaConst.UIBreakStarType.Skill then self:RefreshSkillCell(cellTable, data) UIUtils.SetActive(cellTable.group_Attr.gameObject, false) elseif data.StarType == LuaConst.UIBreakStarType.Attrs then self:RefreshAttrsCell(cellTable, data) UIUtils.SetActive(cellTable.group_Skill.gameObject, false) elseif data.StarType == LuaConst.UIBreakStarType.Both then self:RefreshSkillCell(cellTable, data) self:RefreshAttrsCell(cellTable, data) end cellTable.state_Txt:SetState(isUnlock and 0 or 1) end return UIHeroBreakInfoView