﻿using UnityEngine;

namespace Gamelogic.Grids.Examples
{
	public class PlatformCell : GLMonoBehaviour
	{
		public bool ContainsCoin { get; set; }
		public bool Traversable { get; set; }

		public void Awake()
		{
			Traversable = true;
			ContainsCoin = false;
			AttachRandomBehaviour();
		}

		public void RemoveBehaviours()
		{
			Destroy(GetComponent<Dropper>());
			Destroy(GetComponent<Popper>());
			Destroy(GetComponent<Flipper>());
		}

		private void AttachRandomBehaviour()
		{
			switch (Random.Range(0, 4))
			{
				case 0:
					AddDropper();
					break;
				case 1:
					AddPopper();
					break;
				case 2:
					AddFlipper();
					break;
				default:
					Debug.Log("No behaviour");
					break;
			}
		}

		private void AddDropper()
		{
			Debug.Log("AddDropper()");
			gameObject.AddComponent<Dropper>();

			if (Random.Range(0f, 1f) < 0.1f)
			{
				AddFlipper();
			}
		}

		private void AddPopper()
		{
			Debug.Log("AddPopper()");
			gameObject.AddComponent<Popper>();

			if (Random.Range(0f, 1f) < 0.1f)
			{
				AddFlipper();
			}
		}

		private void AddFlipper()
		{
			Debug.Log("AddFlipper()");
			gameObject.AddComponent<Flipper>();
		}
	}
}