using UnityEngine;
using TMPro;
using UnityEngine.SocialPlatforms.Impl;

public class Score : MonoBehaviour
{
    public TextMeshProUGUI scoreText;     // Texto para el puntaje actual
    public TextMeshProUGUI highScoreText; // Texto para el puntaje máximo
    public PlayerMovement player;
    public BarraPinchosSpawner barraPinchosSpawner;

    private int currentScore = 0;         // Puntaje actual
    private int highScore = 0;           // Puntaje máximo (High Score)

    public float timer = 0f;             // Temporizador
    public float interval = 1f;          // Tiempo en segundos para incrementar el puntaje
    public int incrementThreshold = 100;
    private int ant = 0;

    void Start()
    {
        player = FindObjectOfType<PlayerMovement>();
        barraPinchosSpawner = FindObjectOfType<BarraPinchosSpawner>();
        // Leer el High Score desde PlayerPrefs y mostrarlo por pantalla
        highScore = PlayerPrefs.GetInt("HighScore", 0);
        UpdateHighScoreText();

        // Actualizar el texto inicial del puntaje actual
        PlayerPrefs.SetInt("CurrentScore", 0); // Inicializa el puntaje máximo en 0
        UpdateScoreText();
    }

    void Update()
    {
        // Incrementa el temporizador con el tiempo transcurrido en el frame actual
        timer += Time.deltaTime;

        // Comprueba si el temporizador ha alcanzado el intervalo
        if (timer >= interval)
        {
            currentScore = currentScore + 1; // Incrementa el puntaje en 1

            timer = 0f;     // Reinicia el temporizador

            // Actualizar el texto del puntaje actual
            UpdateScoreText();

            if (currentScore >= highScore)
            {
                highScore = currentScore;
                UpdateHighScoreText();
            }

            int score100 = ((int)currentScore / 100) * 100;

            if (ant != score100 && score100 % incrementThreshold == 0 && currentScore < 1000)
            {
                player.UpdateSpeed(0.2f);
                barraPinchosSpawner.UpdateSpeed(0.2f);
                ant = score100;
            }
        }
    }

    public void sumar(int amount)
    {
        currentScore += amount;
    }

    private void UpdateScoreText()
    {
        // Actualizar el texto del puntaje actual
        scoreText.text = "Score:\n" + currentScore.ToString();
        PlayerPrefs.SetInt("CurrentScore", currentScore); // Inicializa el puntaje máximo en 0

    }

    private void UpdateHighScoreText()
    {
        // Mostrar el High Score leído de PlayerPrefs
        highScoreText.text = "Highest Score:\n" + highScore.ToString();
    }
}
