using Content.Shared._White.Cult.Components; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Shared.Player; using CultistComponent = Content.Shared._White.Cult.Components.CultistComponent; namespace Content.Client._White.Cult; public sealed class ShowCultHudSystem : EntitySystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IOverlayManager _overlayManager = default!; private Overlay _overlay = default!; public override void Initialize() { SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnComponentRemoved); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnComponentRemoved); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); _overlay = new CultHudOverlay(EntityManager); } private void OnComponentInit(EntityUid uid, T component, ComponentInit args) { if (_player.LocalSession?.AttachedEntity != uid) return; _overlayManager.AddOverlay(_overlay); } private void OnComponentRemoved(EntityUid uid, T component, ComponentRemove args) { if (_player.LocalSession?.AttachedEntity != uid) return; _overlayManager.RemoveOverlay(_overlay); } private void OnPlayerAttached(EntityUid uid, T component, PlayerAttachedEvent args) { if (_player.LocalSession != args.Player) return; _overlayManager.AddOverlay(_overlay); } private void OnPlayerDetached(EntityUid uid, T component, PlayerDetachedEvent args) { if (_player.LocalSession != args.Player) return; _overlayManager.RemoveOverlay(_overlay); } }