using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; public class ColorAnalysis : TRichAnalysis { public static Regex Color_Start_Regex = new Regex(@"", RegexOptions.Singleline); public override string Analysis(string val, bool IsRich) { if (!Color_Start_Regex.IsMatch(val) || RichTextMgr.Inst.presentRichText == null) { return val; } int index = 0; m_StringBuilder.Length = 0; var _text = RichTextMgr.Inst.presentRichText; if (_text.colorType == RichText.ColorType.Bright) { return val; } foreach (Match match in Color_Start_Regex.Matches(val)) { m_StringBuilder.Append(val.Substring(index, match.Groups[1].Index - index)); m_StringBuilder.Append(GetColorMap(match.Groups[1].Value)); index = match.Groups[1].Index + match.Groups[1].Length; } m_StringBuilder.Append(val.Substring(index, val.Length - index)); return m_StringBuilder.ToString(); } private string GetColorMap(string _value) { if (_value.Length > 6) { _value = _value.Substring(0, 6); } switch (_value.ToLower()) { case "109d06": return "35e122"; case "ff6701": return "f8983b"; case "006be3": return "31cefb"; case "ff0303": return "fa0101"; case "12a199": return "13a199"; case "686868": return "f7f7f7"; case "da48d5": return "ec4bf6"; case "f6408d": return "ff7c7c"; case "bb8800": return "ffde00"; case "666666": return "dddddd"; case "9460ff": return "7999ff"; case "0066ff": return "00c6ff"; case "00b337": return "66ff00"; case "ff6600": return "ff9000"; case "ff00f6": return "f000ff"; } return _value; } public override string CalculateTextIndex(string val, int index) { return string.Empty; } }