using Robust.Client.Graphics; using Robust.Shared.Player; using Robust.Client.Player; using Content.Client.Overlays; using Content.Shared.Eye; using Content.Client.Eye; using Content.Client.Sunrise.Overlays; using Content.Client.Sunrise.Eye; using Content.Shared.Sunrise.Eye; namespace Content.Client.Sunrise.Eye; public sealed class DarkenedVisionSystem : SharedDarkenedVisionSystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IOverlayManager _overlayMan = default!; private DarkenedVisionOverlay _overlay = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnAttached); SubscribeLocalEvent(OnDetached); _overlay = new(); } private void OnAttached(Entity ent, ref LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); _overlay.DarkenedVision = ent.Comp; } private void OnDetached(Entity ent, ref LocalPlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); _overlay.DarkenedVision = null; } private void OnStartup(Entity ent, ref ComponentStartup args) { if (_player.LocalEntity == ent.Owner) { _overlayMan.AddOverlay(_overlay); _overlay.DarkenedVision = ent.Comp; } } private void OnShutdown(Entity ent, ref ComponentShutdown args) { if (_player.LocalEntity == ent.Owner) { _overlayMan.RemoveOverlay(_overlay); _overlay.DarkenedVision = null; } } }