using Content.Shared._CP14.Religion.Components; using Content.Shared._CP14.Religion.Prototypes; using Content.Shared._CP14.Religion.Systems; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Client._CP14.Religion; public sealed partial class CP14ClientReligionGodSystem : CP14SharedReligionGodSystem { [Dependency] private readonly IOverlayManager _overlayMgr = default!; [Dependency] private readonly IPlayerManager _player = default!; private CP14ReligionVisionOverlay? _overlay; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnOverlayInit); SubscribeLocalEvent(OnOverlayRemove); } public override void SendMessageToGods(ProtoId religion, string msg, EntityUid source) { } public override void Shutdown() { base.Shutdown(); _overlayMgr.RemoveOverlay(); } private void OnPlayerAttached(Entity ent, ref LocalPlayerAttachedEvent args) { AddOverlay(); } private void OnPlayerDetached(Entity ent, ref LocalPlayerDetachedEvent args) { RemoveOverlay(); } private void OnOverlayInit(Entity ent, ref ComponentInit args) { var attachedEnt = _player.LocalEntity; if (attachedEnt != ent.Owner) return; AddOverlay(); } private void OnOverlayRemove(Entity ent, ref ComponentRemove args) { var attachedEnt = _player.LocalEntity; if (attachedEnt != ent.Owner) return; RemoveOverlay(); } private void AddOverlay() { if (_overlay != null) return; _overlay = new CP14ReligionVisionOverlay(); _overlayMgr.AddOverlay(_overlay); } private void RemoveOverlay() { if (_overlay == null) return; _overlayMgr.RemoveOverlay(_overlay); _overlay = null; } }