﻿using UnityEngine;
using AC;
using Opsive.UltimateCharacterController.Items;

public class AC_UCC_Item : MonoBehaviour
{
	
	#region Variables

	[SerializeField] private int linkedACItemID = 0;
	private CharacterItem item;
	
	#endregion


	#region  UnityStandards

	private void OnEnable ()
	{
		item = GetComponent<CharacterItem> ();

		if (item)
		{
			item.PickupItemEvent.AddListener (OnPickUp);
			item.EquipItemEvent.AddListener (OnEquip);
			item.UnequipItemEvent.AddListener (OnUnequip);
			item.DropItemEvent.AddListener (OnDrop);
		}
		else
		{
			ACDebug.LogWarning ("No CharacterItem found on " + this, this);
		}
	}


	private void OnDisable ()
	{
		if (item)
		{
			item.PickupItemEvent.RemoveListener (OnPickUp);
			item.EquipItemEvent.RemoveListener (OnEquip);
			item.UnequipItemEvent.RemoveListener (OnUnequip);
			item.DropItemEvent.RemoveListener (OnDrop);
		}
	}

	#endregion
	

	#region PrivateFunctions

	private void OnPickUp ()
	{
		KickStarter.runtimeInventory.Add (linkedACItemID);
	}


	private void OnEquip ()
	{
		KickStarter.runtimeInventory.SelectItemByID (linkedACItemID);
	}


	private void OnUnequip ()
	{
		if (KickStarter.runtimeInventory.SelectedItem != null &&
		    KickStarter.runtimeInventory.SelectedItem.id == linkedACItemID)
		{
			KickStarter.runtimeInventory.SetNull ();
		}
	}


	private void OnDrop ()
	{
		KickStarter.runtimeInventory.Remove (linkedACItemID);
	}
	
	#endregion
	
}
