Files
Cube-Tower-Defense/Assets/Scripts/UI/GameMenuButtons.cs
T

50 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class GameMenuButtons : MonoBehaviour
{
[SerializeField] private GameManager _gameManager;
[SerializeField] private SandPathBuildService _sandPathBuildService;
[SerializeField] private Button _mainMenuButton;
[SerializeField] private Button _nextLevelButton;
[SerializeField] private Button _resetPathButton;
private void OnEnable()
{
_gameManager.OnStateChanged += OnStateChanged;
_mainMenuButton.onClick.AddListener(ExitToMainMenu);
if (_resetPathButton != null)
_resetPathButton.onClick.AddListener(OnResetButtonClick);
}
private void OnDisable()
{
_gameManager.OnStateChanged -= OnStateChanged;
_mainMenuButton.onClick.RemoveListener(ExitToMainMenu);
if (_resetPathButton != null)
_resetPathButton.onClick.RemoveListener(OnResetButtonClick);
}
private void OnStateChanged(GameManager.GameState newState)
{
_nextLevelButton.interactable = newState != GameManager.GameState.BuildingPath;
if (!_nextLevelButton.interactable || _resetPathButton == null)
return;
_resetPathButton.onClick.RemoveAllListeners();
Destroy(_resetPathButton.gameObject);
_resetPathButton = null;
}
private void OnResetButtonClick()
{
_sandPathBuildService.ResetPath();
_gameManager.CurrentState = GameManager.GameState.BuildingPath;
}
private void ExitToMainMenu() =>
UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu");
}