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
}
}
}