using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class DeathScreenUI : MonoBehaviour
{
public static DeathScreenUI Instance { get; private set; }
[Header("Панель смерти")]
public GameObject deathPanel;
public CanvasGroup canvasGroup;
[Header("Кнопки")]
public Button restartButton;
public Button mainMenuButton;
[Header("Настройки")]
public float fadeDuration = 0.8f;
public string mainMenuSceneName = "MainMenu";
private bool isShown = false;
public bool IsShown => isShown;
private void Awake()
{
if (Instance == null) Instance = this;
if (deathPanel != null)
{
deathPanel.SetActive(false);
}
if (restartButton != null)
{
restartButton.onClick.AddListener(RestartGame);
}
if (mainMenuButton != null)
{
mainMenuButton.onClick.AddListener(ReturnToMainMenu);
}
}
///
/// Показывает экран смерти с плавным затемнением и открывает курсор
///
public void ShowDeathScreen()
{
if (isShown) return;
isShown = true;
if (deathPanel != null)
{
deathPanel.SetActive(true);
StartCoroutine(FadeInRoutine());
}
// Разблокируем курсор для кликов по кнопкам
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
private IEnumerator FadeInRoutine()
{
if (canvasGroup != null)
{
canvasGroup.alpha = 0f;
float elapsed = 0f;
while (elapsed < fadeDuration)
{
elapsed += Time.unscaledDeltaTime;
canvasGroup.alpha = Mathf.Clamp01(elapsed / fadeDuration);
yield return null;
}
canvasGroup.alpha = 1f;
}
}
///
/// Перезапускает текущую игровую сцену
///
public void RestartGame()
{
Time.timeScale = 1f;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
Scene currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.name);
}
///
/// Возвращает игрока в главное меню
///
public void ReturnToMainMenu()
{
Time.timeScale = 1f;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
SceneManager.LoadScene(mainMenuSceneName);
}
}