This commit is contained in:
2026-11-04 15:51:04 +01:00
parent d21f0c9b6c
commit cd65f702ae
111 changed files with 246848 additions and 1021 deletions

View File

@@ -0,0 +1,68 @@
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]
private 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 LIFECYCLES
void Start()
{
// Start: every Awake has run, so Player.Instance is set
_player = Player.Instance;
if (!_player)
{
Debug.LogError("UiManager: no Player in the scene.", this);
return;
}
_references.HealthView.Bind(_player.Health);
_references.AmmoView.Bind(_player.Launcher);
_player.Health.OnDied += HandlePlayerDied;
_references.Hud.SetActive(true);
_references.GameOverView.Hide();
}
void OnDestroy()
{
if (_player)
_player.Health.OnDied -= HandlePlayerDied;
}
#endregion
#region PRIVATE METHODS
private void HandlePlayerDied()
{
_references.Hud.SetActive(false);
_references.GameOverView.Show();
}
#endregion
}
}