﻿using UnityEngine;
using UnityEngine.Events;
using System.Collections;

namespace Nostalgia.Example
{
	[AddComponentMenu("Nostalgia/Example/Door")]
	public sealed class Door : MonoBehaviour, IActionTrigger
	{
		public Stage stage;
		public int doorNo;
		public string openTileName;
		public AudioClip openSE;
		public UnityEvent openEvent;

		private CellObject _CellObject;
		private Tile _OpenTile;

		void Awake()
		{
			_CellObject = GetComponent<CellObject>();

			if (_CellObject != null && _CellObject.map.tileSet != null)
			{
				_OpenTile = _CellObject.map.tileSet.FindTile(openTileName);
			}
		}

		void IActionTrigger.OnEnter(Player player)
		{
		}

		void IActionTrigger.OnExit(Player player)
		{
		}

		void IActionTrigger.OnAction(Player player)
		{
			AudioUtility.PlayClipAtPoint(openSE, transform.position, 0.1f);
			OnOpen();
			openEvent.Invoke();

			VirtualInput.ResetInputAxes();
			StageManager.ChangeStage(stage, doorNo);
		}

		public void OnOpen()
		{
			_CellObject.SetTile(_OpenTile, 0, _CellObject.cell.tilePos, false, false);
		}
	}
}
