using Content.Shared.Drugs; using Robust.Client.Graphics; using Robust.Client.Player; namespace Content.Client.Drugs; /// /// System to handle drug related overlays. /// public sealed class DrugOverlaySystem : EntitySystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IOverlayManager _overlayMan = default!; private RainbowOverlay _overlay = default!; public static string RainbowKey = "SeeingRainbows"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerDetachedEvent args) { _overlay.Intoxication = 0; _overlayMan.RemoveOverlay(_overlay); } private void OnInit(EntityUid uid, SeeingRainbowsComponent component, ComponentInit args) { if (_player.LocalPlayer?.ControlledEntity == uid) _overlayMan.AddOverlay(_overlay); } private void OnShutdown(EntityUid uid, SeeingRainbowsComponent component, ComponentShutdown args) { if (_player.LocalPlayer?.ControlledEntity == uid) { _overlay.Intoxication = 0; _overlayMan.RemoveOverlay(_overlay); } } }