using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class GameManager : MonoBehaviour
{
    private int lives = 3;

    private int currentScore = 0;

    [SerializeField] private GameObject playerPrefab;

    [SerializeField] private Transform playerParentTransform;

    private PlayerController currentPlayer;

    [SerializeField] private float delayToSpawnPlayer = 1f;

    [SerializeField] private CameraController myCamera;

    [SerializeField] private TextMeshProUGUI scoreText;

    [SerializeField] private TextMeshProUGUI livesText;

    // Start is called before the first frame update
    void Start()
    {
        UpdateScore(0);
        UpdateLivesText();
        SpawnPlayer();

    }

    public void PlayerDefeated()
    {
        if(lives > 1)
        {
            Debug.Log("Game Manager Recorded a Defeated Player.");
            lives--;

        Invoke("SpawnPlayer", currentPlayer.GetDestroyDelayTime() + delayToSpawnPlayer);
        
        }
        else
        {
            Debug.Log("Game Over");
        }
        
    }

    private void SpawnPlayer()
    {
        GameObject player =Instantiate(playerPrefab, new Vector3(0,0,0), Quaternion.identity, playerParentTransform);
        currentPlayer = player.GetComponent<PlayerController>();
        myCamera.SetPlayer(player);
        UpdateLivesText();
    }

    public void UpdateScore(int scoreToAdd)
    {
        currentScore += scoreToAdd;
        scoreText.text = "Score: " + currentScore.ToString("D4");
    }

    private void UpdateLivesText()
    {
        livesText.text = "Lives: " + lives.ToString("D2");
    }
}
