| using System.Collections; | 
| using System.Collections.Generic; | 
| using System.Text.RegularExpressions; | 
| using UnityEngine; | 
|   | 
| public class ColorAnalysis : TRichAnalysis<ColorAnalysis> | 
| { | 
|     public static Regex Color_Start_Regex = new Regex(@"<color=#([0-9a-zA-Z]+)>", 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; | 
|     } | 
| } |