123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- namespace textUtility
- {
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using textUtility;
- using UnityEngine;
- using Object = UnityEngine.Object;
-
- [Serializable]
- public class RichTextImageManager
- {
- #region Config
-
- [SerializeField] private bool Inited;
- [SerializeField] private RichText RichText;
- [SerializeField] public List<RichTextImage> Images;
- public List<UIVertex> Vertices;
- #endregion
- public void Init(RichText richText)
- {
- if (Inited)
- {
- return;
- }
- else
- {
- Inited = true;
- }
- RichText = richText;
- Images = new List<RichTextImage>();
- }
-
-
- public void ClearRenderTask()
- {
- for (int i = 0; i < Images.Count; i++)
- {
- if (Images[i] == null)
- {
- Images.RemoveAt(i--);
- continue;
- }
- Images[i].ClearMatches();
- Images[i].gameObject.SetActive(false);
- }
- }
-
- public void RenderSprites(List<BaseMatch> baseMatches)
- {
- if (baseMatches.Count == 0)
- {
- return;
- }
-
- Dictionary<Texture2D, List<BaseMatch>> groupDictionary = new Dictionary<Texture2D, List<BaseMatch>>();
- foreach (var baseMatch in baseMatches)
- {
- SpriteMatch spriteMatch = (SpriteMatch) baseMatch;
- if (groupDictionary.ContainsKey(spriteMatch.SpriteInfo.Sprite.texture))
- {
- groupDictionary[spriteMatch.SpriteInfo.Sprite.texture].Add(spriteMatch);
- }
- else
- {
- groupDictionary.Add(spriteMatch.SpriteInfo.Sprite.texture, new List<BaseMatch>());
- groupDictionary[spriteMatch.SpriteInfo.Sprite.texture].Add(spriteMatch);
- }
- }
-
- //int createCount = groupDictionary.Count - Images.Count;
- //for (int i = 0; i < createCount; i++)
- //{
- // Images.Add(RichTextImage.CreateImage(RichText));
- //}
-
- List<List<BaseMatch>> groups = groupDictionary.Values.ToList();
- for (int i = 0; i < groups.Count; i++)
- {
- RichTextImage image = GetRichTextImage();
- //Images[i].gameObject.SetActive(true);
- foreach (var baseMatch in groups[i])
- {
- image.AddMatch(baseMatch);
- }
- }
- }
-
- public void RenderUnderlines(List<BaseMatch> baseMatches)
- {
- if (baseMatches.Count == 0)
- {
- return;
- }
-
- //if (Images.Count == 0)
- //{
- // Images.Add(RichTextImage.CreateImage(RichText));
- //}
- //Images[0].gameObject.SetActive(true);
- RichTextImage image = GetRichTextImage();
- foreach (var baseMatch in baseMatches)
- {
- image.AddMatch(baseMatch);
- }
- }
-
- public void RenderSuperlinks(List<BaseMatch> baseMatches)
- {
- if (baseMatches.Count == 0)
- {
- return;
- }
-
- //if (Images.Count == 0)
- //{
- // Images.Add(RichTextImage.CreateImage(RichText));
- //}
- //Images[0].gameObject.SetActive(true);
-
- RichTextImage image = GetRichTextImage();
- foreach (var baseMatch in baseMatches)
- {
- image.AddMatch(baseMatch);
- }
- }
-
- public void DestroyAllImage()
- {
- for (int i = 0; i < Images.Count; i++)
- {
- Object.DestroyImmediate(Images[i]);
- }
- Images = new List<RichTextImage>();
- }
-
- private RichTextImage GetRichTextImage()
- {
- foreach (var image in Images)
- {
- if (image.gameObject.activeSelf)
- {
- continue;
- }
- image.gameObject.SetActive(true);
- return image;
- }
- RichTextImage richTextImage = RichTextImage.CreateImage(RichText);
- Images.Add(richTextImage);
- return richTextImage;
- }
- }
- }
|