Files
Arena/Assets/_Content/Scripts/Combat/UiManager.cs
2026-10-07 15:46:51 +02:00

69 lines
1.3 KiB
C#

using UnityEngine;
using Arena.Characters;
namespace Arena.UI
{
/// <summary>
/// Single entry point of the UI: connects the views to the player and switches screens.
/// </summary>
public class UiManager : MonoBehaviour
{
[System.Serializable]
public struct References
{
[Tooltip("In-game screen: health, ammo.")]
public GameObject Hud;
public HealthView HealthView;
public AmmoView AmmoView;
public GameOverView GameOverView;
}
#region Fields
[SerializeField] private References _references;
private Player _player;
#endregion
#region Unity Lifecycle
private void Start()
{
// Start: every Awake has run, so Player.Instance is set
_player = Player.Instance;
if (_player == null)
{
Debug.LogError("UiManager: no Player in the scene.");
return;
}
_references.HealthView.Bind(_player.Health);
_references.AmmoView.Bind(_player.Launcher);
_player.Health.OnDied += HandlePlayerDied;
_references.Hud.SetActive(true);
_references.GameOverView.Hide();
}
private void OnDestroy()
{
if (_player != null)
_player.Health.OnDied -= HandlePlayerDied;
}
#endregion
#region Private Methods
private void HandlePlayerDied()
{
_references.Hud.SetActive(false);
_references.GameOverView.Show();
}
#endregion
}
}