using System.Collections;
using UnityEngine;


public class PlayerMovementScript : MonoBehaviour
{
    private Camera cam;
    private GameObject manager;
    private ManagerScript managerScript;
    private float mouseX;
    private float mouseY;
    private float camRotX;
    private float rotY;
    private Vector2 moveDir;
    private float moveSpeed = 20;
    private Rigidbody rb;

    void Start()
    {
        cam = Camera.main;
        rb = GetComponent<Rigidbody>();
        manager = GameObject.FindGameObjectWithTag("Manager");
        managerScript = manager.GetComponent<ManagerScript>();
        StartCoroutine(timer());
    }

    
    void Update()
    {
        //Rotate with mouse
        if (managerScript.isPaused == false)
        {
            //Rotate camera up-down
            mouseY = Input.GetAxis("Mouse Y");
            camRotX += mouseY * managerScript.mouseSens;
            camRotX = Mathf.Clamp(camRotX, -90, 90);
            cam.transform.localRotation = Quaternion.Euler(-camRotX, 0, 0);

            //Rotate character sideways
            mouseX = Input.GetAxis("Mouse X");
            rotY += mouseX * managerScript.mouseSens; ;
            transform.rotation = Quaternion.Euler(0, rotY, 0);
        }


        //Movement input
        if (Input.GetKey(KeyCode.W))
        {
            moveDir.y = 1;
        }

        if (Input.GetKey(KeyCode.A))
        {
            moveDir.x = -1;
        }

        if (Input.GetKey(KeyCode.S))
        {
            moveDir.y = -1;
        }

        if (Input.GetKey(KeyCode.D))
        {
            moveDir.x = 1;
        }

    }

    private void FixedUpdate()
    {
        //Move
        rb.AddRelativeForce(new Vector3(moveDir.x, 0, moveDir.y).normalized * moveSpeed);

        moveDir = new Vector2(0, 0);
    }


    IEnumerator timer()
    {
        yield return new WaitForSeconds(1);
        //Execute commands
        StartCoroutine(timer());
    }
}