1
0

DrowsinessSystem.cs 1.7 KB

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