ReplayPuzzleGame/Assets/Resources/Scripts/Manager/UIManager.cs

88 lines
2.4 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIManager : MonoBehaviour
{
public static UIManager instance;
[SerializeField] private Text livesText;
[SerializeField] private Text timeText;
[SerializeField] private GameObject pausePanel;
[SerializeField] private Button ResumeButton;
[SerializeField] private Button ExitButton;
[SerializeField] private Button ReTryButton;
private void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
return;
}
}
private void Start()
{
if (pausePanel != null)
{
pausePanel.SetActive(false);
}
GameManager.instance.OnReplayCountChanged += UpdateLivesText;
GameManager.instance.OnTimeChanged += UpdateTimeText;
GameManager.instance.OnEnterLevel += ShowLevelUI;
GameManager.instance.OnExitLevel += HideLevelUI;
GameManager.instance.OnPressPause += OnPressPause;
ResumeButton.onClick.AddListener(GameManager.instance.TogglePause);
ExitButton.onClick.AddListener(GameManager.instance.ExitLevel);
ReTryButton.onClick.AddListener(GameManager.instance.Retry);
}
private void OnDestroy()
{
GameManager.instance.OnReplayCountChanged -= UpdateLivesText;
GameManager.instance.OnTimeChanged -= UpdateTimeText;
GameManager.instance.OnEnterLevel -= ShowLevelUI;
GameManager.instance.OnExitLevel -= HideLevelUI;
GameManager.instance.OnPressPause -= OnPressPause;
}
private void UpdateLivesText(int lives)
{
livesText.text = "X "+ lives;
}
private void UpdateTimeText(int time)
{
timeText.text = time.ToString();
}
private void OnPressPause(bool pause)
{
pausePanel.SetActive(pause);
EventSystem.current.SetSelectedGameObject(ResumeButton.gameObject);
}
private void ShowLevelUI()
{
timeText.gameObject.SetActive(true);
livesText.gameObject.SetActive(true);
pausePanel.SetActive(false);
}
private void HideLevelUI()
{
timeText.gameObject.SetActive(false);
livesText.gameObject.SetActive(false);
pausePanel.SetActive(false);
}
}