using Content.Client.Overlays;
using Content.Shared.Screech;
using Robust.Client.Graphics;
namespace Content.Client.Effects;
///
/// This system ensures that does not use costly queries.
///
public sealed partial class ScreechShockWaveSystem : EntitySystem
{
[Dependency] private IOverlayManager _overlayMan = default!;
private readonly HashSet _registered = [];
public override void Initialize()
{
SubscribeLocalEvent(OnScreechShockWaveStartup);
SubscribeLocalEvent(OnScreechShockWaveRemoved);
}
private void OnScreechShockWaveStartup(Entity ent, ref ComponentStartup args)
{
var overlay = _overlayMan.GetOverlay();
// we must only pass here once
if (!_registered.Add(ent.Owner))
return;
overlay.Register(ent);
}
private void OnScreechShockWaveRemoved(Entity ent, ref ComponentRemove args)
{
_registered.Remove(ent.Owner);
}
}