local Color_Utility = {} local private = {} local LuaConst = LuaConst --公有常量 Color_Utility.Red = "ff3c3c" Color_Utility.Green = "70c664" Color_Utility.White = "ffffff" Color_Utility.yellow = "ffe13c" Color_Utility.orange = "db5920" Color_Utility.gray = "ababab" Color_Utility.LightRed = "ff4b4b" Color_Utility.ModelNameColor = { White = "ffffff", Green = "acff9f", Blue = "bde8ff", Red = "ff978f", } Color_Utility.QualityType = { Text = "CharacterColor", Circle = "FrameCircle", Square = "FrameSquare", NewSquare = "NewFrameSquare", Background = "FrameBase", EquipFrame = "EquipFrame", EquipFrameBase = "EquipFrameBase", EquipFragmentBase = "EquipFragmentBase", EquipFragmentInfoTitleBase = "EquipFragmentInfoTitleBase", EquipFragmentComposeBase = "EquipFragmentComposeBase", FormationMagicWeaponBg = "FormationMagicWeaponButtonBase", FormationHorseTreasureEquipBg = "FormationHorseButtonBase", --阵容坐骑、宝物、装备装备后品质背景 HeroSelectFrame = "HeroChooseFontBase", --武将选择外框图 HeroSelectBg = "HeroChooseBase", --武将选择背景底图 HeroAdvanceStar = "HeroAdvanceStar", MagicWeaponBg = "MagicWeaponBase", -- 神兵底图 MagicWeaponBgFrame = "MagicWeaponBase_Frame", -- 神兵底图外框 MagicWeaponInfoBg = "MagicWeaponChipInfoBase", HeroBiographyBg = "HeroBiographyBase", HeroBiographyCornerBase = "HeroBiographyCornerBase", DrawCardDetailCardBase = "DrawCardDetailCardBase", -- 抽卡详情 DrawCardBase = "DrawCardBase", -- 抽卡获取 CharacterUIModify = "CharacterUIModify", CharacterUIFrame = "CharacterUIFrame", OfficialPositionQuality = "OfficialPositionQuality", TreasureBase = "TreasureBase", -- 宝物一级界面品质底图 TreasureBaseFrame = "TreasureBase_Frame", -- 宝物一级界面品质底图边框 EquipRefineIcon = "EquipRefineIcon", Pictorial = "HeroPictorial", --图鉴品质底 HeroBiographyFrame = "HeroBiographyFrame", HeroBiographyGradientCover = "HeroBiographyGradientCover", HorseBase = "HorseBase", -- 战骑一级界面品质底图 HorseBaseOverFrame = "HorseBase_UnderFrame", -- 战骑一级界面品质底图上边框 HorseBaseUnderFrame = "HorseBase_OverFrame", -- 战骑一级界面品质底图下边框 OfficialProfitQuality = "OfficialProfitQuality", -- 官职收益品质框 AppearanceInfoBase = "AppearanceInfoBase", -- 武将外观品质底图 AppearanceBase_Frame = "AppearanceBase_Frame", -- 武将外观品质框 AppearanceLevelInfoBase = "AppearanceLevelInfoBase", -- 武将外观等级品质底图 StratagemFrame = "StratagemFrame", -- 计略品质底图 StoreGoodsIconBase = "StoreGoodsIconBase", -- 商城商品背景品质底图 StoreGoodsNameBase = "StoreGoodsNameBase", -- 商城商品名称品质底图 GodBeastFrame = "GodBeastFrame", -- 神兽一级界面品质底图 FunctionUpdateNoticeFrame = "FunctionUpdateNoticeFrame", -- 版本更新介绍界面品质底图 PetFrame = "PetFrame", -- 日本区分普通宠物与神兽底图 } Color_Utility.QualityIDSType = { GachaPoolHeroTitle = "GachaPoolHeroTitle", GachaPoolItemTitle = "GachaPoolItemTitle", } --私有常量 local ColorFormatStr = "%s" local GradientFormatStr = "%s" function Color_Utility.FormatRedColor(inputStr) return string.format(ColorFormatStr, Color_Utility.Red, inputStr) end function Color_Utility.FormatGreenColor(inputStr) return string.format(ColorFormatStr, Color_Utility.Green, inputStr) end function Color_Utility.FormatWhiteColor(inputStr) return string.format(ColorFormatStr, Color_Utility.ModelNameColor.White, inputStr) end function Color_Utility.FormatYellowColor(inputStr) return string.format(ColorFormatStr, Color_Utility.yellow, inputStr) end function Color_Utility.FormatGrayColor(inputStr) return string.format(ColorFormatStr, Color_Utility.gray, inputStr) end function Color_Utility.FormatLightRedColor(inputStr) return string.format(ColorFormatStr, Color_Utility.LightRed, inputStr) end function Color_Utility.GetColorfulText(colorValue, textIDS) return ""..UIUtils.GetLocalizedTxt(Const_IDS[textIDS]).."" end function Color_Utility.FormatTextByColor(color, inputStr) return string.format(ColorFormatStr, color, inputStr) end function Color_Utility.FormatQualityText(text, quality) local qualityColorData = DataSheetManager.QualityColor:GetDataByID(quality) local colorList = string.split(qualityColorData.CharacterColor, ",") if #colorList > 1 then return string.format(GradientFormatStr, colorList[1], colorList[2], text) else return string.format(ColorFormatStr, colorList[1], text) end end function Color_Utility.SetQualityIDSByType(text, quality, type) local qualityColorData = DataSheetManager.QualityColor:GetDataByID(quality) if type == Color_Utility.QualityIDSType.GachaPoolHeroTitle then UIUtils.SetLabelText(text, Const_IDS[qualityColorData[type]]) elseif type == Color_Utility.QualityIDSType.GachaPoolItemTitle then UIUtils.SetLabelText(text, Const_IDS[qualityColorData[type]]) end end function Color_Utility.SetQualityImageByType(comp, quality, type) local qualityColorData = DataSheetManager.QualityColor:GetDataByID(quality) if type == Color_Utility.QualityType.Circle then local path = string.format(ConstAssetPathConfig.AssetPath10, qualityColorData[type]); UIUtils.SetMirrorImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.Square then local path = string.format(ConstAssetPathConfig.AssetPath11, qualityColorData[type]); UIUtils.SetSlicedImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.NewSquare then UTL.Item.SetAtlasSprite(comp, "UI_Formation", qualityColorData[type]) elseif type == Color_Utility.QualityType.Background then UTL.Item.SetAtlasSprite(comp, "UI_Common", qualityColorData[type]) elseif type == Color_Utility.QualityType.EquipFragmentComposeBase or type == Color_Utility.QualityType.EquipFrame or type == Color_Utility.QualityType.EquipFrameBase or type == Color_Utility.QualityType.EquipRefineIcon then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.EquipFragmentInfoTitleBase then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.EquipFragmentBase then UTL.Item.SetAtlasSprite(comp, "UI_Common", qualityColorData[type]) elseif type == Color_Utility.QualityType.FormationHorseTreasureEquipBg then local path = string.format(ConstAssetPathConfig.AssetPath10, qualityColorData[type]); UIUtils.SetMirrorImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.FormationMagicWeaponBg then UTL.Item.SetAtlasSprite(comp, "UI_Formation", qualityColorData[type]) elseif type == Color_Utility.QualityType.HeroSelectFrame then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.HeroSelectBg then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.HeroAdvanceStar or type == Color_Utility.QualityType.AppearanceInfoBase or type == Color_Utility.QualityType.AppearanceBase_Frame or type == Color_Utility.QualityType.AppearanceLevelInfoBase or type == Color_Utility.QualityType.DrawCardDetailCardBase then UTL.Item.SetAtlasSprite(comp, "UI_Hero", qualityColorData[type]) elseif type == Color_Utility.QualityType.MagicWeaponBg then UTL.Item.SetAtlasSprite(comp, "UI_Treasure", qualityColorData[type]) elseif type == Color_Utility.QualityType.MagicWeaponBgFrame then UIUtils.SetImageByAssetBundle(comp, qualityColorData[type]) elseif type == Color_Utility.QualityType.MagicWeaponInfoBg then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.HeroBiographyBg then local path = string.format(ConstAssetPathConfig.AssetPath12, qualityColorData[type]); UIUtils.SetSlicedImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.HeroBiographyGradientCover or type == Color_Utility.QualityType.HeroBiographyCornerBase then UTL.Item.SetAtlasSprite(comp, "UI_HeroBiography", qualityColorData[type]) elseif type == Color_Utility.QualityType.DrawCardBase then UIUtils.SetImageByAssetBundle(comp, qualityColorData[type]) elseif type == Color_Utility.QualityType.CharacterUIModify then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.CharacterUIFrame then UTL.Item.SetAtlasSprite(comp, "UI_Equipment", qualityColorData[type]) elseif type == Color_Utility.QualityType.OfficialPositionQuality then local path = string.format(ConstAssetPathConfig.AssetPath11, qualityColorData[type]); UIUtils.SetMirrorImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.TreasureBase then --UTL.Item.SetAtlasSprite(comp, "UI_Treasure", qualityColorData[type]) local path = string.format(ConstAssetPathConfig.AssetPath13, qualityColorData[type]); UIUtils.SetSlicedImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.TreasureBaseFrame then UTL.Item.SetAtlasSprite(comp, "UI_Treasure", qualityColorData[type]) elseif type == Color_Utility.QualityType.Pictorial then --品质不同处理方式不同 暗金为simple方式 其它是九宫拉伸 local path = string.format(ConstAssetPathConfig.AssetPath14, qualityColorData[type]); UIUtils.SetSlicedImage(comp, path, quality ~= UTL.Item.AN_JIN_QUALITY) elseif type == Color_Utility.QualityType.HeroBiographyFrame then UTL.Item.SetAtlasSprite(comp, "UI_HeroBiography", qualityColorData[type]) elseif type == Color_Utility.QualityType.HorseBase then UTL.Item.SetAtlasSprite(comp, "UI_Horse", qualityColorData[type]) elseif type == Color_Utility.QualityType.HorseBaseOverFrame then UTL.Item.SetAtlasSprite(comp, "UI_Horse", qualityColorData[type]) elseif type == Color_Utility.QualityType.HorseBaseUnderFrame then UTL.Item.SetAtlasSprite(comp, "UI_Horse", qualityColorData[type]) elseif type == Color_Utility.QualityType.OfficialProfitQuality then UTL.Item.SetAtlasSprite(comp, "UI_Common", qualityColorData[type]) elseif type == Color_Utility.QualityType.PetFrame then UTL.Item.SetAtlasSprite(comp, "UI_Pet", qualityColorData[type]) elseif type == Color_Utility.QualityType.StratagemFrame then UIUtils.SetImageByAssetBundle(comp, qualityColorData[type]) elseif type == Color_Utility.QualityType.StoreGoodsIconBase then UIUtils.SetImageByAssetBundle(comp, string.format(ConstAssetPathConfig.Path0, qualityColorData[type])) elseif type == Color_Utility.QualityType.StoreGoodsNameBase then UIUtils.SetImageByAssetBundle(comp, string.format(ConstAssetPathConfig.Path0, qualityColorData[type])) elseif type == Color_Utility.QualityType.GodBeastFrame then UIUtils.SetImageByAssetBundle(comp, qualityColorData[type]) elseif type == Color_Utility.QualityType.FunctionUpdateNoticeFrame then UIUtils.SetImageByAssetBundle(comp, qualityColorData[type]) end end function Color_Utility.GetContentWithColor(colorID, inputStr) local colorStr = DataSheetManager.TextColor:GetDataByID(colorID).CharacterColor return string.format(ColorFormatStr, colorStr, inputStr) end function Color_Utility.SetHeroSquareBgColor(bgImage, heroId, isAwaken) Color_Utility.SetQualityImageByType(bgImage, CTL.HeroAwaken.GetHeroQuality(heroId, isAwaken), UTL.Color.QualityType.Square) end function Color_Utility.SetItemSquareBgColor(bgImage, itemId) local itemData = DataSheetManager.ItemData:GetDataByID(itemId) Color_Utility.SetQualityImageByType(bgImage, itemData.Color, UTL.Color.QualityType.Square) end function Color_Utility.ReplaceGreenTextInSpecificChar(str, color, char_1, char_2) return string.gsub(str, "%"..char_1 .. "(.*)" .. "%" .. char_2, function(s) return char_1 .. Color_Utility.FormatTextByColor(color, s) .. char_2 end) end function Color_Utility.SetTitleFrame(titleID, label, image) local config = DataSheetManager.TitleFrame:GetDataByID(titleID) if config then UIUtils.SetTitleText(label, config.Size, config.LowColorNum, config.UpColorNum) if config.IsLocal then UIUtils.SetLocalizationImage(image, config.Frame) else UIUtils.SetImageByAssetBundle(image, config.Frame) end end end Color_Utility.EffectType = { Main = "Main", --一级界面 Formation = "Formation", --阵容界面 Skin = "Skin", --皮肤相关 Item = "Item", --物品ICON } function Color_Utility.PlayQualityEffect(effectComp, effectId, propertyName) local effectPath, effectPos = UTL.Item.GetDarkGoldenEffectDatas(effectId, propertyName) if not string.isNilOrEmpty(effectPath) then effectComp:PlayUIEffect(effectPath, -1) if effectPos and next(effectPos) then effectComp.transform:GetChild(0):SetLocalPosition(effectPos[1], effectPos[2], 0) end end end function Color_Utility.FormatGradient(color1, color2, text) return string.format(GradientFormatStr, color1, color2, text) end function Color_Utility.GetColorModelNameByCampRelationType(originName, relationType, isSelf) local color if isSelf then color = Color_Utility.ModelNameColor.Green else if relationType == LuaConst.ECampRelationType.FRIEND then color = Color_Utility.ModelNameColor.Blue elseif relationType == LuaConst.ECampRelationType.ENEMY then color = Color_Utility.ModelNameColor.Red elseif relationType == LuaConst.ECampRelationType.NEUTRAL then color = LuaConst.ECampRelationType.White end end return Color_Utility.FormatTextByColor(color, originName) end return Color_Utility