maint: added livewatch asset
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
|
||||
{
|
||||
public class LevelFinishPanelUI : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private CanvasGroup panelBase;
|
||||
[SerializeField] private Text statusText;
|
||||
[SerializeField] private Button restartButton;
|
||||
|
||||
private LevelScene _levelScene;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_levelScene = FindObjectOfType<LevelScene>();
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
restartButton.onClick.AddListener(OnRestartButtonClicked);
|
||||
_levelScene.LevelStateManager.StateChanged += LevelStateManagerOnStateChanged;
|
||||
|
||||
SetShown(false);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
restartButton.onClick.RemoveListener(OnRestartButtonClicked);
|
||||
_levelScene.LevelStateManager.StateChanged -= LevelStateManagerOnStateChanged;
|
||||
}
|
||||
|
||||
private void LevelStateManagerOnStateChanged()
|
||||
{
|
||||
if (_levelScene.LevelStateManager.CurrentState is not LevelStateType.Win and not LevelStateType.Lose)
|
||||
return;
|
||||
|
||||
SetShown(true);
|
||||
|
||||
statusText.text = _levelScene.LevelStateManager.CurrentState == LevelStateType.Win
|
||||
? "YOU WON"
|
||||
: "YOU LOST";
|
||||
}
|
||||
|
||||
private void OnRestartButtonClicked()
|
||||
{
|
||||
SetShown(false);
|
||||
_levelScene.LevelStateManager.StartLevel();
|
||||
}
|
||||
|
||||
private void SetShown(bool isOn)
|
||||
{
|
||||
panelBase.alpha = isOn ? 1 : 0;
|
||||
panelBase.blocksRaycasts = isOn;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user