Files
project-reset/Assets/Plugins/LiveWatchLite/TowerDefenceDemo/Scripts/HealthManager.cs
2025-08-31 18:14:07 -04:00

59 lines
1.4 KiB
C#

using System;
using UnityEngine;
namespace Ingvar.LiveWatch.TowerDefenceDemo
{
public class HealthManager : MonoBehaviour
{
public event Action HealthChanged;
public int CurrentHealth
{
get => _health;
set
{
if (_health == value)
return;
_health = value;
HealthChanged?.Invoke();
}
}
public int MaxHealth => _levelScene.LevelConfig.MaxHealth;
private LevelScene _levelScene;
private int _health;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void Start()
{
Watch.GetOrAdd("Health", () => CurrentHealth)
.SetSortOrder(TD_WatchSortOrder.Health);
}
private void OnEnable()
{
_levelScene.MobManager.MobReachedFinish += OnMobReachedFinish;
}
private void OnDisable()
{
_levelScene.MobManager.MobReachedFinish -= OnMobReachedFinish;
}
public void ResetHealth()
{
CurrentHealth = MaxHealth;
}
private void OnMobReachedFinish(MobMain mob)
{
CurrentHealth = Mathf.Clamp(CurrentHealth - 1, 0, MaxHealth);
HealthChanged?.Invoke();
}
}
}