DrunkSystem.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Content.Shared.Drunk;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.Player;
  4. using Robust.Shared.Player;
  5. namespace Content.Client.Drunk;
  6. public sealed class DrunkSystem : SharedDrunkSystem
  7. {
  8. [Dependency] private readonly IPlayerManager _player = default!;
  9. [Dependency] private readonly IOverlayManager _overlayMan = default!;
  10. private DrunkOverlay _overlay = default!;
  11. public override void Initialize()
  12. {
  13. base.Initialize();
  14. SubscribeLocalEvent<DrunkComponent, ComponentInit>(OnDrunkInit);
  15. SubscribeLocalEvent<DrunkComponent, ComponentShutdown>(OnDrunkShutdown);
  16. SubscribeLocalEvent<DrunkComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
  17. SubscribeLocalEvent<DrunkComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
  18. _overlay = new();
  19. }
  20. private void OnPlayerAttached(EntityUid uid, DrunkComponent component, LocalPlayerAttachedEvent args)
  21. {
  22. _overlayMan.AddOverlay(_overlay);
  23. }
  24. private void OnPlayerDetached(EntityUid uid, DrunkComponent component, LocalPlayerDetachedEvent args)
  25. {
  26. _overlay.CurrentBoozePower = 0;
  27. _overlayMan.RemoveOverlay(_overlay);
  28. }
  29. private void OnDrunkInit(EntityUid uid, DrunkComponent component, ComponentInit args)
  30. {
  31. if (_player.LocalEntity == uid)
  32. _overlayMan.AddOverlay(_overlay);
  33. }
  34. private void OnDrunkShutdown(EntityUid uid, DrunkComponent component, ComponentShutdown args)
  35. {
  36. if (_player.LocalEntity == uid)
  37. {
  38. _overlay.CurrentBoozePower = 0;
  39. _overlayMan.RemoveOverlay(_overlay);
  40. }
  41. }
  42. }