﻿using UnityEngine;
using Opsive.UltimateCharacterController.Traits;
using AC;
using Opsive.UltimateCharacterController.Character.Abilities;

public class AC_UCC_Button : MonoBehaviour, IInteractableTarget
{

	#region Variables

	[SerializeField] private ActionList actionListOnInteract = null;
	[SerializeField] private ActionListAsset actionListAssetOnInteract = null;
	[SerializeField] private bool isInteractive = true;

	#endregion


	#region PublicFunctions

	public bool CanInteract (GameObject character, Interact interactAbility)
	{
		if (actionListOnInteract && actionListOnInteract.AreActionsRunning ())
		{
			return false;
		}

		if (actionListAssetOnInteract && KickStarter.actionListAssetManager.IsListRunning (actionListAssetOnInteract))
		{
			return false;
		}

		if (!KickStarter.stateHandler.IsInGameplay ())
		{
			return false;
		}

		return isInteractive;
	}


	public void Interact (GameObject character, Interact interactAbility)
	{
		if (actionListOnInteract)
		{
			actionListOnInteract.Interact ();
		}

		if (actionListAssetOnInteract)
		{
			actionListAssetOnInteract.Interact ();
		}
	}

	#endregion


	#region GetSet

	public bool IsInteractive
	{ 
		set
		{
			isInteractive = value;
		}
	}

	#endregion

}