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

using Gamelogic.Grids;
using UnityEngine;

public class LineGridTest : GLMonoBehaviour
{
	private readonly Vector2 CellDimensions = new Vector2(30, 30); 
	
	public Cell cellPrefab;
	public GameObject root;
	
	private LineGrid<Cell> grid;
	private IMap3D<LinePoint> map;
		
	public void Start()
	{		
		BuildGrid();
	}
	
	public void Update()
	{
		if(Input.GetMouseButtonDown(0))
		{			
			Vector3 worldPosition = ExampleUtils.ScreenToWorld_NGUI(root, Input.mousePosition);
            
			var gridPoint = map[worldPosition];
			
			if(grid.Contains(gridPoint))
			{
				grid[gridPoint].HighlightOn = !grid[gridPoint].HighlightOn;
			}
		}
	}
		
	private void BuildGrid()
	{
		grid = LineGrid<Cell>
			.BeginShape()
			.Segment(300)
			.EndShape();
		
		map = new ArchimedianSpiralMap(CellDimensions, grid)
			.AnchorCellMiddleCenter()
			.WithWindow(ExampleUtils.ScreenRect)
			.AlignMiddleCenter(grid)
			.To3DXY();
		
		foreach(var point in grid)
		{
			var cell = Instantiate<Cell>(cellPrefab);
			Vector3 worldPoint = map[point];
			
			cell.transform.parent = root.transform;
			cell.transform.localScale = Vector3.one;
			cell.transform.localPosition = worldPoint;
			
			cell.SetColor(ExampleUtils.colors[point.GetColor(2)*4 + point.GetColor(16)/4]);
			cell.SetText(((int)point).ToString());
			grid[point] = cell;
		}
	}

	
}
