CatStation/Content.Client/DamageOverlay/DamageOverlaySystem.cs
ScarKy0 0f46f12599
Move DamageOverlay to an Entity System + Component (#45165)
* may god have mercy upon my soul

* stuff

* Revert "Always raise MobStateChanged on client (#45103)"

This reverts commit 1951b00875.

* keep the cleanup

* fuck you though

* review

* Update Content.Shared/DamageOverlay/SharedDamageOverlaySystem.cs

Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>

* deltas

* queries

---------

Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
2026-08-10 13:27:15 +00:00

55 lines
1.4 KiB
C#

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