using System;
using UnityEngine;

namespace mgaia.Utils
{
	/// <summary>
	/// Behaviour utilizado para disparar uma ação segundos após a inicialização de um objeto
	/// </summary>
	/// <owner>Victor</owner>
	public class RandomTimeActionMaker : MonoBehaviour
	{
		[SerializeField]
		private float _maximumDelayTime = 1;

		/// <summary>
		/// Delegate que vai ser executar a ação
		/// </summary>
		public Action DoActionDelegate
		{
			get;
			set;
		}

		private void Start()
		{
			float delayToWait = UnityEngine.Random.Range(0, _maximumDelayTime);

			Assert.AssertTrue(DoActionDelegate != null, "DoActionDelegate não pode ser nulo!");

			GameTimeScheduler.Schedule(GameTimeScheduler.ScheduleType.Normal, DoActionDelegate, 1, delayToWait);
		}

		private void OnDestroy()
		{
			GameTimeScheduler.RemoveAll(DoActionDelegate);
		}
	}
}