1
0

DrugOverlaySystem.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Content.Shared.Drugs;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.Player;
  4. using Robust.Shared.Player;
  5. namespace Content.Client.Drugs;
  6. /// <summary>
  7. /// System to handle drug related overlays.
  8. /// </summary>
  9. public sealed class DrugOverlaySystem : EntitySystem
  10. {
  11. [Dependency] private readonly IPlayerManager _player = default!;
  12. [Dependency] private readonly IOverlayManager _overlayMan = default!;
  13. private RainbowOverlay _overlay = default!;
  14. public static string RainbowKey = "SeeingRainbows";
  15. public override void Initialize()
  16. {
  17. base.Initialize();
  18. SubscribeLocalEvent<SeeingRainbowsComponent, ComponentInit>(OnInit);
  19. SubscribeLocalEvent<SeeingRainbowsComponent, ComponentShutdown>(OnShutdown);
  20. SubscribeLocalEvent<SeeingRainbowsComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
  21. SubscribeLocalEvent<SeeingRainbowsComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
  22. _overlay = new();
  23. }
  24. private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerAttachedEvent args)
  25. {
  26. _overlayMan.AddOverlay(_overlay);
  27. }
  28. private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerDetachedEvent args)
  29. {
  30. _overlay.Intoxication = 0;
  31. _overlay.TimeTicker = 0;
  32. _overlayMan.RemoveOverlay(_overlay);
  33. }
  34. private void OnInit(EntityUid uid, SeeingRainbowsComponent component, ComponentInit args)
  35. {
  36. if (_player.LocalEntity == uid)
  37. _overlayMan.AddOverlay(_overlay);
  38. }
  39. private void OnShutdown(EntityUid uid, SeeingRainbowsComponent component, ComponentShutdown args)
  40. {
  41. if (_player.LocalEntity == uid)
  42. {
  43. _overlay.Intoxication = 0;
  44. _overlay.TimeTicker = 0;
  45. _overlayMan.RemoveOverlay(_overlay);
  46. }
  47. }
  48. }