using System; using System.Collections.Generic; using System.Linq; using Assets.HeroEditor4D.Common.Scripts.Common; using Newtonsoft.Json; using UnityEngine; namespace Assets.HeroEditor4D.Common.Scripts.Data { /// /// Represents sprite entry in SpriteCollection. /// [Serializable] public class ItemSprite { public string Name; public string Id; public string Edition; public string Collection; public string Path; public Sprite Sprite; public List Sprites; public List Tags = new List(); public string Meta; public Dictionary MetaDict { get => Meta == "" ? new Dictionary() : JsonConvert.DeserializeObject>(Meta); set => Meta = JsonConvert.SerializeObject(value); } public ItemSprite(string edition, string collection, string type, string name, string path, Sprite sprite, List sprites) { Id = $"{edition}.{collection}.{type}.{name}"; if (sprites == null || sprites.Count == 0) { throw new Exception($"Please set [Texture Type = Sprite] for [{Id}] from Import Settings!"); } Name = name; Collection = collection; Edition = edition; Path = path; Sprite = sprite; Sprites = sprites.OrderBy(i => i.name).ToList(); } public Sprite GetSprite(string name) { return Sprites.Single(j => j.name == name); } } }