using Content.Shared.DamageOverlay;
using Robust.Client.Graphics;
using Robust.Client.Player;
using Robust.Shared.Player;
namespace Content.Client.DamageOverlay;
///
public sealed partial class DamageOverlaySystem : SharedDamageOverlaySystem
{
[Dependency] private IOverlayManager _overlayManager = default!;
[Dependency] private IPlayerManager _player = default!;
private DamageOverlay _overlay = default!;
///
public override void Initialize()
{
base.Initialize();
_overlay = new DamageOverlay();
}
[SubscribeLocalEvent]
private void OnComponentShutdown(Entity entity, ref ComponentShutdown args)
{
if (_player.LocalEntity != entity)
return;
_overlayManager.RemoveOverlay(_overlay);
}
[SubscribeLocalEvent]
private void OnPlayerAttached(Entity ent, ref LocalPlayerAttachedEvent args)
{
_overlayManager.AddOverlay(_overlay);
}
[SubscribeLocalEvent]
private void OnPlayerDetached(LocalPlayerDetachedEvent args)
{
_overlayManager.RemoveOverlay(_overlay);
}
protected override void EnsureOverlay(Entity entity)
{
base.EnsureOverlay(entity);
if (_player.LocalEntity != entity)
return;
if (!_overlayManager.HasOverlay())
_overlayManager.AddOverlay(_overlay);
}
}