﻿using UnityEngine;
using System.Collections;

namespace NDRLiteFPS
{
    public class PlayerInteraction : MonoBehaviour
    {
        [SerializeField] int rayLength = 10;
        [SerializeField] LayerMask layerMask;
        private GameObject raycastedObject;

        bool isCrosshairActivated = false;

        private void Update()
        {
            RaycastHit hit;
            Vector3 fwd = transform.TransformDirection(Vector3.forward);

            if (Physics.Raycast(transform.position, fwd, out hit, rayLength, layerMask.value))
            {
                if (hit.collider.CompareTag("Interactable"))
                {
                    raycastedObject = hit.collider.gameObject;
                    Interactable interactable = raycastedObject.GetComponent<Interactable>();
                    isCrosshairActivated = true;
                    if (!isCrosshairActivated)
                    {
                        
                    }

                    // Activate UI
                    UIManager.instance.SetInteraction(interactable.InteractionMessage, true);
                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        interactable.Interact();
                    
                        if(interactable.GetComponent<Pickupable>()) UIManager.instance.SetInteraction("", false);
                    }
                }
                //else if (hit.collider.CompareTag("Pickupable"))
                //{
                //    raycastedObject = hit.collider.gameObject;
                //    Pickupable pickupable = raycastedObject.GetComponent<Pickupable>();

                //    if (!isCrosshairActivated)
                //    {
                //        isCrosshairActivated = true;
                //    }

                //    // Activate UI
                //    UIManager.instance.SetInteraction(string.Empty, true);
                //    if (Input.GetKeyDown(KeyCode.E))
                //    {
                //        pickupable.
                //    }
                //}

                //if (hit.collider.CompareTag("ObjectiveArea"))
                //{
                //    raycastedObject = hit.collider.gameObject;

                //    if (raycastedObject.GetComponent<ObjectiveArea>().GetType() != typeof(InteractArea)) return;

                //    InteractArea objective = raycastedObject.GetComponent<InteractArea>();

                //    // Activate UI

                //    if (!isCrosshairActivated)
                //    {
                //        isCrosshairActivated = true;

                //    }
                //    UIManager.instance.SetInteraction(objective.InteractionTxt, true);
                //    if (Input.GetKeyDown(KeyCode.E))
                //    {
                //        objective.CompleteIt();
                //    }
                //}
            }
            else
            {
                if (raycastedObject)
                {
                    // Deactivate UI
                    isCrosshairActivated = false;
                    UIManager.instance.SetInteraction("", false);
                    raycastedObject = null;
                }
            }
        }
    }
}