Files
FreewayGamesTest/Assets/Scripts/Presentation/Views/ResultView.cs
T
2026-06-07 00:30:10 +07:00

90 lines
2.1 KiB
C#

using System;
using Minesweeper.Core;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Minesweeper.Presentation.Views
{
public sealed class ResultView : MonoBehaviour, IResultView
{
[SerializeField] private GameObject root;
[SerializeField] private Button restartButton;
[SerializeField] private Button mainMenuButton;
[SerializeField] private TMP_Text resultText;
public event Action RestartRequested;
public event Action GoToMenuRequested;
private GameObject Root => root != null ? root : gameObject;
private void Awake()
{
if (root == null)
{
root = gameObject;
}
}
private void OnEnable()
{
AddListeners();
}
private void OnDisable()
{
RemoveListeners();
}
public void Show(GameState state)
{
Root.SetActive(true);
if (resultText != null)
{
resultText.text = state == GameState.Won ? "YOU WIN" : "GAME OVER";
}
}
public void Hide()
{
Root.SetActive(false);
}
private void AddListeners()
{
if (restartButton != null)
{
restartButton.onClick.AddListener(OnRestartClicked);
}
if (mainMenuButton != null)
{
mainMenuButton.onClick.AddListener(OnMainMenuClicked);
}
}
private void RemoveListeners()
{
if (restartButton != null)
{
restartButton.onClick.RemoveListener(OnRestartClicked);
}
if (mainMenuButton != null)
{
mainMenuButton.onClick.RemoveListener(OnMainMenuClicked);
}
}
private void OnRestartClicked()
{
RestartRequested?.Invoke();
}
private void OnMainMenuClicked()
{
GoToMenuRequested?.Invoke();
}
}
}