52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Data;
|
|
using Events;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace UI
|
|
{
|
|
public class HealthBar : MonoBehaviour
|
|
{
|
|
[Header("Events")]
|
|
[SerializeField] private EventBroker eventBroker;
|
|
|
|
[Header("Values")]
|
|
[SerializeField] private FloatValue maxHealth;
|
|
[SerializeField] private FloatValue currentHealth;
|
|
|
|
[Header("References")]
|
|
[SerializeField] private Image fillingImage;
|
|
[SerializeField] private TextMeshProUGUI deadMessageText;
|
|
|
|
private void Awake()
|
|
{
|
|
fillingImage.type = Image.Type.Filled;
|
|
fillingImage.fillMethod = Image.FillMethod.Horizontal;
|
|
fillingImage.fillOrigin = 0;
|
|
deadMessageText.gameObject.SetActive(false);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
eventBroker.PlayerDied += OnPlayerDied;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
eventBroker.PlayerDied -= OnPlayerDied;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
fillingImage.fillAmount = currentHealth.Value / maxHealth.Value;
|
|
}
|
|
|
|
private void OnPlayerDied()
|
|
{
|
|
fillingImage.fillAmount = 0.0f;
|
|
currentHealth.Value = 0.0f;
|
|
deadMessageText.gameObject.SetActive(true);
|
|
}
|
|
}
|
|
} |