using Content.Shared.Inventory.Events; using Content.Shared.Overlays; using Robust.Client.Graphics; using System.Linq; namespace Content.Client.Overlays; /// /// Adds a health bar overlay. /// public sealed class ShowHealthBarsSystem : EquipmentHudSystem { [Dependency] private readonly IOverlayManager _overlayMan = default!; private EntityHealthBarOverlay _overlay = default!; public override void Initialize() { base.Initialize(); _overlay = new(EntityManager); } protected override void UpdateInternal(RefreshEquipmentHudEvent component) { base.UpdateInternal(component); foreach (var damageContainerId in component.Components.SelectMany(x => x.DamageContainers)) { _overlay.DamageContainers.Add(damageContainerId); } if (!_overlayMan.HasOverlay()) { _overlayMan.AddOverlay(_overlay); } } protected override void DeactivateInternal() { base.DeactivateInternal(); _overlay.DamageContainers.Clear(); _overlayMan.RemoveOverlay(_overlay); } }