Files
crystall-punk-14/Content.Client/_CP14/Religion/CP14ClientReligionGodSystem.cs
Red fc0beb5ccf Gods part 3 (#1421)
* apprice action, dead notice

* fix refollowing

* mist lumera action
2025-06-14 02:11:36 +03:00

84 lines
2.4 KiB
C#

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<CP14ReligionVisionComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
SubscribeLocalEvent<CP14ReligionVisionComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
SubscribeLocalEvent<CP14ReligionVisionComponent, ComponentInit>(OnOverlayInit);
SubscribeLocalEvent<CP14ReligionVisionComponent, ComponentRemove>(OnOverlayRemove);
}
public override void SendMessageToGods(ProtoId<CP14ReligionPrototype> religion, string msg, EntityUid source) { }
public override void Shutdown()
{
base.Shutdown();
_overlayMgr.RemoveOverlay<CP14ReligionVisionOverlay>();
}
private void OnPlayerAttached(Entity<CP14ReligionVisionComponent> ent, ref LocalPlayerAttachedEvent args)
{
AddOverlay();
}
private void OnPlayerDetached(Entity<CP14ReligionVisionComponent> ent, ref LocalPlayerDetachedEvent args)
{
RemoveOverlay();
}
private void OnOverlayInit(Entity<CP14ReligionVisionComponent> ent, ref ComponentInit args)
{
var attachedEnt = _player.LocalEntity;
if (attachedEnt != ent.Owner)
return;
AddOverlay();
}
private void OnOverlayRemove(Entity<CP14ReligionVisionComponent> 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;
}
}