using System; using System.Collections.Generic; using UnityEngine; namespace DepthsOfGreed.HandbookUI { [Serializable] public sealed class PreviewSpriteLayer { public Sprite sprite; public Vector2 offset; public Vector2 scale=Vector2.one; public float rotation; public bool rotateWithAim=true; } public sealed class LayeredTowerPreview:MonoBehaviour { readonly List renderers=new List(); PreviewSpriteLayer[] layers; public void Show(HandbookTowerEntry entry,Sprite fallback) { layers=entry.previewLayers??Array.Empty(); Sprite reference=null;for(int i=layers.Length-1;i>=0;i--)if(layers[i]?.sprite){reference=layers[i].sprite;break;} bool empty=!reference;if(empty)reference=fallback; float size=entry.baseShape==BaseShape.Rectangle?entry.baseSize.x:entry.baseRadius*1.4142136f; float common=entry.previewScale>0?entry.previewScale:size/Mathf.Max(.001f,reference.bounds.size.x); int count=empty?1:layers.Length; while(renderers.Count());} for(int i=0;i