using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class playerToTarget : MonoBehaviour
{
    public GameObject target;
    public GameObject rangeFinder;
    public GameObject text;

    private float range;
    private TextMeshPro rangeText;
    public float finderRadius;
    public int refreshRate;
    public float targetHeight = 1.5f;
    public float planeLimit = 50f;              // Change to 500??

    // Start is called before the first frame update
    void Start()
    {
        rangeText = text.GetComponent<TextMeshPro>();
    }

    // Update is called once per frame
    void Update()
    {
        updateRange();

        if (refreshRate <= 0)
        {
            range = Vector3.Distance(target.transform.position, this.transform.position);
        }
        else
        {
            refreshRate--;
        }

        float angle = Mathf.Atan(
            (this.transform.position.x - target.transform.position.x) / 
            (this.transform.position.z - target.transform.position.z));

        if (this.transform.position.z > target.transform.position.z)
        {
            angle = Mathf.Deg2Rad * ((angle * Mathf.Rad2Deg) + 180);
        }

        float newZCoord = this.transform.position.z + (finderRadius * Mathf.Cos(angle));
        float newXCoord = this.transform.position.x + (finderRadius * Mathf.Sin(angle));
        float newYCoord = targetHeight;

        //rangeFinder.transform.position = new Vector3(newXCoord, newYCoord, newZCoord);

        rangeFinder.transform.position = new Vector3(newXCoord, newYCoord, newZCoord);
    }

    private void updateRange()
    {
        range = Vector3.Distance(target.transform.position, this.transform.position);

        //text.text = System.Convert.ToInt32(range).ToString();
        rangeText.text = System.Convert.ToInt32(range).ToString();

        //text.transform.eulerAngles.y = this.transform.rotation.y;

        text.transform.eulerAngles = new Vector3(
            text.transform.eulerAngles.x,
            this.transform.eulerAngles.y,
            text.transform.eulerAngles.z
        );


        //gameObj.transform.eulerAngles.y + 180,
    }

    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("Hit!");

        //Move target
        float newXCoord = Random.Range(-planeLimit, planeLimit);
        float newZCoord = Random.Range(-planeLimit, planeLimit);
        float newYCoord = targetHeight;
        
        target.transform.position = new Vector3(newXCoord, newYCoord, newZCoord);



        //Reset range finder
            //range = Vector3.Distance(target.transform.position, this.transform.position);

    }
}
