using UnityEngine; using UnityEngine.UI; namespace GeometryTD.UI { public class TowerIconArea : IconArea { [SerializeField] private Image _baseIcon; [SerializeField] private Image _bearingIcon; [SerializeField] private Image _muzzleIcon; public Sprite BaseIconSprite => _baseIcon != null ? _baseIcon.sprite : null; public Sprite BearingIconSprite => _bearingIcon != null ? _bearingIcon.sprite : null; public Sprite MuzzleIconSprite => _muzzleIcon != null ? _muzzleIcon.sprite : null; public Color BaseIconColor => _baseIcon != null ? _baseIcon.color : Color.white; public Color BearingIconColor => _bearingIcon != null ? _bearingIcon.color : Color.white; public Color MuzzleIconColor => _muzzleIcon != null ? _muzzleIcon.color : Color.white; public Material BaseIconMaterial => _baseIcon != null ? _baseIcon.material : null; public Material BearingIconMaterial => _bearingIcon != null ? _bearingIcon.material : null; public Material MuzzleIconMaterial => _muzzleIcon != null ? _muzzleIcon.material : null; public override void OnInit(IconAreaContext context) { if (!(context is TowerIconAreaContext towerContext)) { base.OnInit(context); return; } SetRarity(towerContext.Rarity); SetIconVisible(false); SetLayerColor(_baseIcon, towerContext.BaseColor); SetLayerColor(_bearingIcon, towerContext.BearingColor); SetLayerColor(_muzzleIcon, towerContext.MuzzleColor); } public void OnInit(TowerIconAreaContext context) { OnInit((IconAreaContext)context); } public override void OnReset() { base.OnReset(); SetLayerColor(_baseIcon, Color.clear); SetLayerColor(_bearingIcon, Color.clear); SetLayerColor(_muzzleIcon, Color.clear); SetIconVisible(false); } private static void SetLayerColor(Image icon, Color color) { if (icon == null) { return; } icon.color = color; } } }