using Gamelogic.Grids;
using UnityEngine;

public class Cell : GLMonoBehaviour
{
	public SpriteRenderer sprite;

	private Color color;
	private Color highlightColor;
	
	[SerializeField] private bool highlightOn;
	[SerializeField] private int tileType;
	[SerializeField] private int x;
	[SerializeField] private int y;

	[HideInInspector]
	public Grid __grid;

	public bool HighlightOn
	{
		get
		{
			return highlightOn;
		}

		set
		{
			highlightOn = value;
			UpdateColor();
		}
	}

	public Vector2 Dimensions
	{
		get
		{
			return sprite.sprite.bounds.size;
		}
	}

	public PointyHexPoint GridPoint
	{
		get
		{
			return new PointyHexPoint(x, y);
		}

		set
		{
			x = value.X;
			y = value.Y;
		}
	}

	public int TileType
	{
		set
		{
			tileType = value;
			SetColor(__grid.colors[(int)tileType]);
		}

		get
		{
			return tileType;
		}
	}

	public void SetColor(Color color)
	{
		this.color = color;
		highlightColor = color.Lighter();
		UpdateColor();
	}

	public void SetColor(Color color, Color highlightColor)
	{
		this.color = color;
		this.highlightColor = highlightColor;
		UpdateColor();
	}
	
	public void ToggleHighlight()
	{
		HighlightOn = !HighlightOn;
	}

	public void UpdateColor()
	{
		sprite.color = highlightOn ? highlightColor : color;
	}

	public void SetOrientation(float angle)
	{
		sprite.transform.SetLocalRotationZ(angle);
	}
}
