100 lines
2.3 KiB
C#
100 lines
2.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Minesweeper.Presentation.Views
|
|
{
|
|
public sealed class PauseView : MonoBehaviour, IPauseView
|
|
{
|
|
[SerializeField] private GameObject root;
|
|
[SerializeField] private Button restartButton;
|
|
[SerializeField] private Button resumeButton;
|
|
[SerializeField] private Button mainMenuButton;
|
|
|
|
public event Action RestartRequested;
|
|
public event Action ResumeRequested;
|
|
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()
|
|
{
|
|
Root.SetActive(true);
|
|
}
|
|
|
|
public void Hide()
|
|
{
|
|
Root.SetActive(false);
|
|
}
|
|
|
|
private void AddListeners()
|
|
{
|
|
if (restartButton != null)
|
|
{
|
|
restartButton.onClick.AddListener(OnRestartClicked);
|
|
}
|
|
|
|
if (resumeButton != null)
|
|
{
|
|
resumeButton.onClick.AddListener(OnResumeClicked);
|
|
}
|
|
|
|
if (mainMenuButton != null)
|
|
{
|
|
mainMenuButton.onClick.AddListener(OnMainMenuClicked);
|
|
}
|
|
}
|
|
|
|
private void RemoveListeners()
|
|
{
|
|
if (restartButton != null)
|
|
{
|
|
restartButton.onClick.RemoveListener(OnRestartClicked);
|
|
}
|
|
|
|
if (resumeButton != null)
|
|
{
|
|
resumeButton.onClick.RemoveListener(OnResumeClicked);
|
|
}
|
|
|
|
if (mainMenuButton != null)
|
|
{
|
|
mainMenuButton.onClick.RemoveListener(OnMainMenuClicked);
|
|
}
|
|
}
|
|
|
|
private void OnRestartClicked()
|
|
{
|
|
RestartRequested?.Invoke();
|
|
}
|
|
|
|
private void OnResumeClicked()
|
|
{
|
|
ResumeRequested?.Invoke();
|
|
}
|
|
|
|
private void OnMainMenuClicked()
|
|
{
|
|
GoToMenuRequested?.Invoke();
|
|
}
|
|
}
|
|
}
|