namespace UIWidgets.Examples { using System; using UIWidgets; using UnityEngine; using UnityEngine.UI; /// /// ListViewIcons item component. /// public class TileViewComponentSample : ListViewItem, IViewData { /// /// Init graphics foreground. /// protected override void GraphicsForegroundInit() { if (GraphicsForegroundVersion == 0) { Foreground = new Graphic[] { UtilitiesUI.GetGraphic(NameAdapter), UtilitiesUI.GetGraphic(CapitalAdapter), UtilitiesUI.GetGraphic(AreaAdapter), UtilitiesUI.GetGraphic(PopulationAdapter), UtilitiesUI.GetGraphic(DensityAdapter), }; GraphicsForegroundVersion = 1; } } /// /// The icon. /// [SerializeField] public Image Icon; /// /// The text. /// [SerializeField] [HideInInspector] [Obsolete("Replaced with NameAdapter.")] public Text Name; /// /// The capital. /// [SerializeField] [HideInInspector] [Obsolete("Replaced with CapitalAdapter.")] public Text Capital; /// /// The area. /// [SerializeField] [HideInInspector] [Obsolete("Replaced with AreaAdapter.")] public Text Area; /// /// The population. /// [SerializeField] [HideInInspector] [Obsolete("Replaced with PopulationAdapter.")] public Text Population; /// /// The density. /// [SerializeField] [HideInInspector] [Obsolete("Replaced with DensityAdapter.")] public Text Density; /// /// The text. /// [SerializeField] public TextAdapter NameAdapter; /// /// The capital. /// [SerializeField] public TextAdapter CapitalAdapter; /// /// The area. /// [SerializeField] public TextAdapter AreaAdapter; /// /// The population. /// [SerializeField] public TextAdapter PopulationAdapter; /// /// The density. /// [SerializeField] public TextAdapter DensityAdapter; /// /// Set icon native size. /// public bool SetNativeSize = true; /// /// TileView. /// public TileViewSample Tiles; /// /// Current item. /// public TileViewItemSample Item; /// /// Duplicate current item in TileView.DataSource. /// public void Duplicate() { Tiles.DataSource.Add(Item); } /// /// Remove current item from TileView.DataSource. /// public void Remove() { Tiles.DataSource.RemoveAt(Index); } /// /// Sets component data with specified item. /// /// Item. public void SetData(TileViewItemSample item) { Item = item; if (Item == null) { if (Icon != null) { Icon.sprite = null; } if (NameAdapter != null) { NameAdapter.text = string.Empty; } if (CapitalAdapter != null) { CapitalAdapter.text = string.Empty; } if (AreaAdapter != null) { AreaAdapter.text = string.Empty; } if (PopulationAdapter != null) { PopulationAdapter.text = string.Empty; } if (DensityAdapter != null) { DensityAdapter.text = string.Empty; } } else { name = item.Name; if (Icon != null) { Icon.sprite = Item.Icon; } if (NameAdapter != null) { NameAdapter.text = Item.Name; } if (CapitalAdapter != null) { CapitalAdapter.text = string.Format("Capital: {0}", Item.Capital); } if (AreaAdapter != null) { AreaAdapter.text = string.Format("Area: {0} sq. km", Item.Area.ToString("N0")); } if (PopulationAdapter != null) { PopulationAdapter.text = string.Format("Population: {0}", Item.Population.ToString("N0")); } if (DensityAdapter != null) { var density = Item.Area == 0 ? "n/a" : string.Format("{0} / sq. km", Mathf.CeilToInt(((float)Item.Population) / Item.Area).ToString("N")); DensityAdapter.text = string.Format("Density: {0}", density); } } if (Icon != null) { if (SetNativeSize) { Icon.SetNativeSize(); } // set transparent color if no icon Icon.color = (Icon.sprite == null) ? Color.clear : Color.white; } } /// /// Upgrade this instance. /// public override void Upgrade() { #pragma warning disable 0612, 0618 Utilities.GetOrAddComponent(Name, ref NameAdapter); Utilities.GetOrAddComponent(Capital, ref CapitalAdapter); Utilities.GetOrAddComponent(Area, ref AreaAdapter); Utilities.GetOrAddComponent(Population, ref PopulationAdapter); Utilities.GetOrAddComponent(Density, ref DensityAdapter); #pragma warning restore 0612, 0618 } } }