﻿using UnityEngine;
using System.Collections;

using Augumenta;

/**
 * Click handler adds a click functionality to the object.
 * If the object is hoverred more than 'clickDelay' time,
 * then click has been made.
 */
public class ClickHandler : HoverPoseHandler {

	// delay before object is clicked after hovering in seconds
	[Tooltip("Delay before click happens after hover starts in seconds")]
	public float clickDelay = 0.5f;

	// time when hover started
	private float hoverStartTime = 0;
	// flag indicating if object is clicked
	public bool clicked { get; private set; }

	public override void Start () {
		base.Start ();
		clicked = false;
	}

	public override void Update() {
		// check if the object is currently hoverred, not clicked and hover
		// has started long enough ago, if so then make a click
		if (hoverred && !clicked && Time.time > hoverStartTime + clickDelay) {
			clicked = true;
			OnClick ();
		}
	}

	public override void OnHoverEnter () {
		// mark the time when hover entered
		hoverStartTime = Time.time;
	}

	public override void OnHoverLeave () {
		// clear click state when hover leaves
		clicked = false;
	}

	/**
	 * Click callback which is called when object is clicked.
	 */
	public virtual void OnClick() {
		Debug.Log ("OnClick");
	}
}
