using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;

public class kmHesapla : MonoBehaviour
{
    public AudioSource aso;
    public AudioClip music;



    public GameObject parmakPrefab; // Oluşturulacak parmak prefab'ı
    public Vector3 spawnPosition; // Parmak objesinin oluşturulacağı pozisyon
    public float power; // Kuvvet miktarı

    public TMP_Text distanceText; // TMP Text referansı
    private Vector3 startPosition; // Başlangıç pozisyonu
    private float traveledDistance = 0f; // İlerlenen toplam mesafe
    private bool islemYapildi = false; // İşlemin yalnızca bir kez çalışmasını kontrol eder
    private bool islemYapildi1 = false; // İşlemin yalnızca bir kez çalışmasını kontrol eder

    private GameObject spawnedParmak; // Instantiate edilen objenin referansı
    public Camera kameraM;



    float mind;
    float maxd;

    void Start()
    {
        // Başlangıç pozisyonunu kaydet
        startPosition = transform.position;

        mind=Random.Range(30,60);
        Debug.Log(mind);
        maxd=Random.Range(80,120);
        Debug.Log(maxd);
    }

    void Update()
    {
        // İlerlenen mesafeyi hesapla
        traveledDistance = Vector3.Distance(startPosition, transform.position);

        // TMP Text'e mesafeyi yazdır
        if (distanceText != null)
        {
            distanceText.text = $"{traveledDistance:F2}"; // Virgülden sonra 2 basamak gösterir
        }

        // 50 birimi geçince ve işlem yapılmamışsa
        if (traveledDistance >= mind && !islemYapildi)
        {
            islemYapildi = true; // İşlem yalnızca bir kez yapılacak
            StartCoroutine(ParmakGeldi());
        }
        if (traveledDistance >= maxd && !islemYapildi1)
        {
            islemYapildi1 = true; // İşlem yalnızca bir kez yapılacak
            StartCoroutine(ParmakGeldi());
        }
        if (traveledDistance>=150)
        {
            SceneManager.LoadScene(4);
        }
    }

    IEnumerator ParmakGeldi()
    {
        Vector3 yenikonum=new Vector2(kameraM.transform.position.x+spawnPosition.x,kameraM.transform.position.y+spawnPosition.y);
        PlaySound();
        spawnedParmak = Instantiate(parmakPrefab, yenikonum, Quaternion.identity);

        
        Rigidbody2D parmakRB = spawnedParmak.GetComponent<Rigidbody2D>();
        
        parmakRB.AddForce(Vector2.left * power, ForceMode2D.Impulse); 
        
        yield return new WaitForSeconds(3f);
        PlaySound();
        parmakRB.AddForce(Vector2.right * power * 10, ForceMode2D.Impulse);
        
        yield return new WaitForSeconds(3f);
    
        
            Destroy(spawnedParmak);
        
    }
    

    public void PlaySound()
    {
        if (music != null)
        {
            aso.clip = music;
            aso.Play();
        }
    }
}
