using System;
using UnityEditor;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UIElements;
using NodeCanvas;
using NodeCanvas.Framework;
using ParadoxNotion;

public class PlayerControls : MonoBehaviour{
    // References
    private Player thisPlayer;

    // TODO: Turn these into accessors
    public Vector2 rawMoveInput;
    public Vector2 rawLookInput;

    public GraphOwner graph;

    void Awake(){
        thisPlayer = GetComponent<Player>();
        graph = GetComponent<GraphOwner>();
    }

    public void OnMove(InputValue value){
        rawMoveInput.x = value.Get<Vector2>().x;
        rawMoveInput.y = value.Get<Vector2>().y;
    }

    public void OnLook(InputValue value){
        rawLookInput.x = value.Get<Vector2>().x;
        rawLookInput.y = value.Get<Vector2>().y;
    }

    public void OnSprint(){
        graph.SendEvent<string>("InputEvent", "Sprint", null);
    }

    public void OnJump(){
        graph.SendEvent<string>("InputEvent", "Jump", null);
    }

    public void OnLockOn(){
        GetComponent<LockOnManager>().ChangeLockOnTarget();
        graph.SendEvent<string>("InputEvent", "LockOn", null);
    }

    public void OnCancelLockOn(){
        GetComponent<LockOnManager>().RemoveLockOnTarget();
        graph.SendEvent<string>("InputEvent", "CancelLockOn", null);
    }

    // public void OnGrapple(InputInteractionContext context){
    //     if (context.control.IsPressed()) {
    //         graph.SendEvent<string>("InputEvent", "GrappleDown", null);    
    //     } else {
    //         graph.SendEvent<string>("InputEvent", "GrappleUp", null);
    //     }
    // }
}
