using System.Collections.Generic; using System.Text; using UnityEngine; namespace Neatly.UI { public static class UIListPool { private const int CACHE_COUNT = 100; private static List> m_Queue = new List>(); public static List Create() { if (m_Queue.Count > 0) { var cache = m_Queue[0]; m_Queue.RemoveAt(0); cache.Clear(); return cache; } return new List(); } public static void Release(List list) { if (m_Queue.Count >= CACHE_COUNT) return; list.Clear(); m_Queue.Add(list); } public static string GetString(List list) { var sb = UIStringBuilder.Create(); for (var i = 0; i < list.Count; i++) { var info = list[i]; if (info.isNewLine) { sb.Append(ConstChar.NEW_LINE); } else { sb.Append(info.GetTabString()); } } return UIStringBuilder.GetStringAndRelease(sb); } public static void Log(List list) { foreach (var item in list) { Debug.Log(item.ToString()); } } } public struct StringInfo { public string text { get; set; } public bool isItalic { get; set; } public bool isBold { get; set; } public Color color { get; set; } public bool isNewLine { get; set; } public string ToString() { return new StringBuilder() .Append("text:").AppendLine(text) .Append("isItalic:").AppendLine(isItalic.ToString()) .Append("isBold:").AppendLine(isBold.ToString()) .Append("textColor:").AppendLine(color.ToString()) .Append("isNewLine:").AppendLine(isNewLine.ToString()) .ToString(); } public string GetTabString() { if (this.isItalic || this.isBold) { var sb = UIStringBuilder.Create(); sb.Append(this.text); if (this.isItalic) { sb.Insert(0, ""); sb.Append(""); } if (this.isBold) { sb.Insert(0, ""); sb.Append(""); } return UIStringBuilder.GetStringAndRelease(sb); } return this.text; } } }