using TMPro; using UnityEngine; using UnityEngine.SceneManagement; namespace Aula11 { public class ControladorJogo : MonoBehaviour { [Header("Interface")] [SerializeField] private TMP_Text textoPontuacao; [SerializeField] private GameObject painelFimDeJogo; [SerializeField] private GameObject avisoInicio; [Header("Reinício")] [Tooltip("Segundos entre a derrota e o primeiro reinício aceito pelo comando Impulsionar.")] [Min(0f)] [SerializeField] private float esperaReinicio = 0.6f; public bool PartidaAtiva { get; private set; } public bool PartidaIniciada { get; private set; } public int Pontuacao => pontuacao; private int pontuacao; private float instanteDerrota; private void Start() { pontuacao = 0; PartidaAtiva = true; PartidaIniciada = false; painelFimDeJogo.SetActive(false); avisoInicio.SetActive(true); AtualizarPontuacao(); } public void IniciarPartida() { if (!PartidaAtiva || PartidaIniciada) return; PartidaIniciada = true; avisoInicio.SetActive(false); } public void AdicionarPonto() { if (!PartidaAtiva || !PartidaIniciada) return; pontuacao++; AtualizarPontuacao(); } public void RegistrarDerrota() { if (!PartidaAtiva) return; PartidaAtiva = false; instanteDerrota = Time.time; painelFimDeJogo.SetActive(true); } public void SolicitarReinicio() { if (PartidaAtiva || Time.time - instanteDerrota < esperaReinicio) return; ReiniciarPartida(); } public void ReiniciarPartida() { SceneManager.LoadScene(SceneManager.GetActiveScene().name); } private void AtualizarPontuacao() { textoPontuacao.text = pontuacao.ToString(); } } }