using UnityEngine;

namespace Popcron
{
	public class PolygonDrawer : Drawer
	{
		public PolygonDrawer()
		{

		}

		public override int Draw(ref Vector3[] buffer, params object[] values)
		{
			var position = (Vector3)values[0];
			var points = (int)values[1];
			var radius = (float)values[2];
			var offset = (float)values[3];
			var rotation = (Quaternion)values[4];

			var step = 360f / points;
			offset *= Mathf.Deg2Rad;

			for (var i = 0; i < points; i++)
			{
				var cx = Mathf.Cos((Mathf.Deg2Rad * step * i) + offset) * radius;
				var cy = Mathf.Sin((Mathf.Deg2Rad * step * i) + offset) * radius;
				var current = new Vector3(cx, cy);

				var nx = Mathf.Cos((Mathf.Deg2Rad * step * (i + 1)) + offset) * radius;
				var ny = Mathf.Sin((Mathf.Deg2Rad * step * (i + 1)) + offset) * radius;
				var next = new Vector3(nx, ny);

				buffer[i * 2] = position + (rotation * current);
				buffer[(i * 2) + 1] = position + (rotation * next);
			}

			return points * 2;
		}
	}
}
