﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;

using Arbor;

/// <summary>
/// Enemy appearance wave processing
/// </summary>
public class Wave : StateBehaviour
{
	/// <summary>
	/// Appearance list
	/// </summary>
	[SerializeField]
	private List<Spawner> _Spawners = new List<Spawner>();

	/// <summary>
	/// Transition when all disappear
	/// </summary>
	[SerializeField]
	private StateLink _AllNothingState = new StateLink();

	/// <summary>
	/// Check transition
	/// </summary>
	void CheckTransition()
	{
		// Check if spawner.instance is all null.
		foreach (Spawner spawner in _Spawners)
		{
			if (spawner.instance != null)
			{
				return;
			}
		}

		// Transition to _AllNothingState
		Transition(_AllNothingState);
	}

	// Use this for enter state
	public override void OnStateBegin()
	{
		// Instantiate all _Spawners.
		foreach (Spawner spawner in _Spawners)
		{
			spawner.Spawn();
		}
	}

	// Update is called once per frame
	void Update()
	{
		// Check transition
		CheckTransition();
	}
}