//----------------------------------------------//
// Gamelogic Grids                              //
// http://www.gamelogic.co.za                   //
// Copyright (c) 2013 Gamelogic (Pty) Ltd       //
//----------------------------------------------//

using Gamelogic.Grids;
using UnityEngine;

public class RectTest_2dtk : GLMonoBehaviour
{
	private readonly Vector2 CellDimensions = new Vector2(40, 40); 
	
	public Cell_2dtk cellPrefab;
	public GameObject root;

	private RectGrid<Cell_2dtk> grid;
	private IMap3D<RectPoint> map;
		
	public void Start()
	{		
		BuildGrid();
	}
	
	public void Update()
	{
		if(Input.GetMouseButtonDown(0))
		{			
			Vector3 worldPosition = ExampleUtils.ScreenToWorld(root, Input.mousePosition);
            
			RectPoint rectPoint = map[worldPosition];

			if(grid.Contains(rectPoint))
			{
				grid[rectPoint].HighlightOn = !grid[rectPoint].HighlightOn;
			}
		}
	}
		
	private void BuildGrid()
	{
		grid = RectGrid<Cell_2dtk>
			.BeginShape()
			.Rectangle(7,7)	
			.EndShape();
		
		map = new RectMap(CellDimensions/100 * 1.2f)
			.AnchorCellMiddleCenter()
			.WithWindow(ExampleUtils.ScreenRect)
			.AlignMiddleCenter(grid)
			.To3DXY();
		
		foreach(RectPoint point in grid)
		{
			Cell_2dtk cell = Instantiate(cellPrefab);
			Vector3 worldPoint = map[point];
			
			cell.transform.parent = root.transform;
			cell.transform.localScale = Vector3.one;
			cell.transform.localPosition = worldPoint;
			
			cell.Color = ExampleUtils.Colors[point.GetColor4()*2];
			
			string name = point.X + ", " + point.Y;
			cell.Text = name;
			cell.name = name;

			
			grid[point] = cell;
		}
	}
}
