using UnityEngine;
using System.Collections;

public class PlayerHurdleChecker : MonoBehaviour
{
    public float speed = 2f;
    public float detectionDistance = 10f;
    public LayerMask hurdleLayer;
    public int requiredTaps = 5;

    private Transform nextHurdle;
    private float timeToReachHurdle;
    private bool awaitingTaps = false;
    private int tapCount = 0;

    void Update()
    {
        transform.Translate(Vector3.forward * speed * Time.deltaTime);

        if (!awaitingTaps)
            DetectNextHurdle();
        else
            CheckForTaps();
    }

    void DetectNextHurdle()
    {
        if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, detectionDistance, hurdleLayer))
        {
            nextHurdle = hit.transform;
            float distance = hit.distance;
            timeToReachHurdle = distance / speed;
            StartCoroutine(BeginTapChallenge(timeToReachHurdle));
        }
    }

    IEnumerator BeginTapChallenge(float duration)
    {
        awaitingTaps = true;
        tapCount = 0;
        Debug.Log($"Tap {requiredTaps} times in {duration:F2} seconds!");

        float timer = 0f;
        while (timer < duration)
        {
            timer += Time.deltaTime;
            yield return null;

            if (tapCount >= requiredTaps)
            {
                JumpOverHurdle();
                yield break;
            }
        }

        FailChallenge();
    }

    void CheckForTaps()
    {
        if (Input.GetMouseButtonDown(0) || Input.touchCount > 0)
            tapCount++;
    }

    void JumpOverHurdle()
    {
        Debug.Log("Success! Jumped over hurdle!");
        awaitingTaps = false;
        // Optional: Play jump animation or tween upward
    }

    void FailChallenge()
    {
        Debug.Log("Failed to jump. Game Over.");
        awaitingTaps = false;
        // Trigger game over logic here
    }
}