local SRTextHelper = class("SRTextHelper")
function SRTextHelper:ctor()
end
function SRTextHelper:convertToRichText(source, defaultSize, defaultColor)
local PCFontConfig = SL:GetMetaValue("GAME_DATA", "PCFontConfig")
defaultSize = (PCFontConfig and PCFontConfig[2]) or defaultSize or SL:GetMetaValue("GAME_DATA", "DEFAULT_FONT_SIZE") or 16
defaultColor = defaultColor or "#FFFFFF"
local find_info = nil
local begin_pos = 0
local end_pos = 0
local font_text_table = {}
while string.len(source) > 0 do
find_info = {string.find( source, "{(.-)|(.-)}")}
begin_pos = find_info[1]
end_pos = find_info[2]
if begin_pos and end_pos then
if begin_pos > 1 then
local prefix = string.sub(source, 1, begin_pos-1)
self:convertToFontText(font_text_table, prefix, nil, defaultSize, defaultColor)
end
self:convertToFontText(font_text_table, find_info[3], find_info[4], defaultSize, defaultColor)
source = string.sub(source, end_pos + 1, string.len(source))
else
self:convertToFontText(font_text_table, source, nil, defaultSize, defaultColor)
source = ""
end
end
local fontText = table.concat(font_text_table, "")
return fontText
end
function SRTextHelper:convertToFontText(font_text_table, content, attr, defaultSize, defaultColor)
local styleColor = nil
local styleType = nil -- 0背景 1描边
if attr and string.len(attr) > 0 then
local slices = string.split(attr, ':')
defaultColor = GET_COLOR_BYID(tonumber(slices[1]))
styleColor = tonumber(slices[2])
styleType = tonumber(slices[3])
end
if styleType and styleType == 1 then
local color = GET_COLOR_BYID(styleColor)
content = string.format("%s", defaultSize, defaultColor, 1, color, content)
else
local PCFontConfig = SL:GetMetaValue("GAME_DATA", "PCFontConfig")
content = string.format("%s", (PCFontConfig and PCFontConfig[2]) or defaultSize, defaultColor, content)
end
table.insert(font_text_table, content)
end
return SRTextHelper