using Content.Shared.Drunk; using Robust.Client.Graphics; using Robust.Client.Player; namespace Content.Client.Drunk; public sealed class DrunkSystem : SharedDrunkSystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IOverlayManager _overlayMan = default!; private DrunkOverlay _overlay = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnDrunkInit); SubscribeLocalEvent(OnDrunkShutdown); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } private void OnPlayerAttached(EntityUid uid, DrunkComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } private void OnPlayerDetached(EntityUid uid, DrunkComponent component, LocalPlayerDetachedEvent args) { _overlay.CurrentBoozePower = 0; _overlayMan.RemoveOverlay(_overlay); } private void OnDrunkInit(EntityUid uid, DrunkComponent component, ComponentInit args) { if (_player.LocalPlayer?.ControlledEntity == uid) _overlayMan.AddOverlay(_overlay); } private void OnDrunkShutdown(EntityUid uid, DrunkComponent component, ComponentShutdown args) { if (_player.LocalPlayer?.ControlledEntity == uid) { _overlay.CurrentBoozePower = 0; _overlayMan.RemoveOverlay(_overlay); } } }