using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.AI;

public class RandomTargetSeeker : MonoBehaviour
{
    private List<Transform> targetPoints = new List<Transform>(); // NavMesh 上のターゲットポイントを格納する配列
    private NavMeshAgent navMeshAgent;

    void Awake()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
        SeekRandomTarget();
    }

    private void Start() {
        targetPoints = GameObject.FindGameObjectWithTag("TargetNav").GetComponentsInChildren<Transform>().ToList();
    }

    // ランダムなターゲットポイントを選択し、そこに向かう
    void SeekRandomTarget()
    {
        if (targetPoints.Count > 0)
        {
            // ランダムにターゲットポイントを選択
            int randomIndex = Random.Range(0, targetPoints.Count);
            Transform randomTarget = targetPoints[randomIndex];

            // NavMeshAgent を使用してターゲットに向かう
            navMeshAgent.SetDestination(randomTarget.position);
        }
        else
        {
            Debug.LogError("No target points assigned!");
        }
    }

    // 到着したら新しいターゲットポイントを選択する
    void Update()
    {
        if (navMeshAgent.pathPending ||
            navMeshAgent.pathStatus == NavMeshPathStatus.PathInvalid ||
            navMeshAgent.path.corners.Length == 0 ||
            navMeshAgent.remainingDistance >= 0.5f
            ) {
            Debug.Log($"{navMeshAgent.pathPending}.{navMeshAgent.pathStatus == NavMeshPathStatus.PathInvalid},{navMeshAgent.path.corners.Length == 0},{navMeshAgent.remainingDistance >= 0.5f}");
 return;
        }

        SeekRandomTarget();
    }
}
