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