﻿// (c) Copyright HutongGames, LLC 2010-2018. All rights reserved.

using UnityEngine.EventSystems;

namespace HutongGames.PlayMaker.Actions
{
	[ActionCategory(ActionCategory.UI)]
	[Tooltip("Gets pointer data Input Button on the last System event.")]
	public class UiGetLastPointerEventDataInputButton : FsmStateAction
	{
        [Tooltip("Store the Input Button pressed (Left, Right, Middle)")]
		[UIHint(UIHint.Variable)]
		[ObjectType(typeof(PointerEventData.InputButton))]
		public FsmEnum inputButton;

        [Tooltip("Event to send if Left Button clicked.")]
		public FsmEvent leftClick;

	    [Tooltip("Event to send if Middle Button clicked.")]
		public FsmEvent middleClick;

	    [Tooltip("Event to send if Right Button clicked.")]
		public FsmEvent rightClick;


		public override void Reset()
		{

			inputButton = PointerEventData.InputButton.Left;
			leftClick = null;
			middleClick = null;
			rightClick = null;

		}
		
		public override void OnEnter()
		{
			ExecuteAction();

			Finish();
		}

	    private void ExecuteAction()
		{
			if (UiGetLastPointerDataInfo.lastPointerEventData==null)
			{
				return;
			}

			if (!inputButton.IsNone)
			{
				inputButton.Value = UiGetLastPointerDataInfo.lastPointerEventData.button;
			}
			
			if (!string.IsNullOrEmpty(leftClick.Name) && 
			    UiGetLastPointerDataInfo.lastPointerEventData.button == PointerEventData.InputButton.Left)
			{
				Fsm.Event(leftClick);
				return;
			}

			if (!string.IsNullOrEmpty(middleClick.Name) && 
			    UiGetLastPointerDataInfo.lastPointerEventData.button == PointerEventData.InputButton.Middle)
			{
				Fsm.Event(middleClick);
				return;
			}

			if (!string.IsNullOrEmpty(rightClick.Name) && 
			    UiGetLastPointerDataInfo.lastPointerEventData.button == PointerEventData.InputButton.Right)
			{
				Fsm.Event(rightClick);
			}
		}
	}
}