1
0

MiningOverlaySystem.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Content.Shared.Mining.Components;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.Player;
  4. using Robust.Shared.Player;
  5. namespace Content.Client.Mining;
  6. /// <summary>
  7. /// This handles the lifetime of the <see cref="MiningOverlay"/> for a given entity.
  8. /// </summary>
  9. public sealed class MiningOverlaySystem : EntitySystem
  10. {
  11. [Dependency] private readonly IPlayerManager _player = default!;
  12. [Dependency] private readonly IOverlayManager _overlayMan = default!;
  13. private MiningOverlay _overlay = default!;
  14. /// <inheritdoc/>
  15. public override void Initialize()
  16. {
  17. SubscribeLocalEvent<MiningScannerViewerComponent, ComponentInit>(OnInit);
  18. SubscribeLocalEvent<MiningScannerViewerComponent, ComponentShutdown>(OnShutdown);
  19. SubscribeLocalEvent<MiningScannerViewerComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
  20. SubscribeLocalEvent<MiningScannerViewerComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
  21. _overlay = new();
  22. }
  23. private void OnPlayerAttached(Entity<MiningScannerViewerComponent> ent, ref LocalPlayerAttachedEvent args)
  24. {
  25. _overlayMan.AddOverlay(_overlay);
  26. }
  27. private void OnPlayerDetached(Entity<MiningScannerViewerComponent> ent, ref LocalPlayerDetachedEvent args)
  28. {
  29. _overlayMan.RemoveOverlay(_overlay);
  30. }
  31. private void OnInit(Entity<MiningScannerViewerComponent> ent, ref ComponentInit args)
  32. {
  33. if (_player.LocalEntity == ent)
  34. {
  35. _overlayMan.AddOverlay(_overlay);
  36. }
  37. }
  38. private void OnShutdown(Entity<MiningScannerViewerComponent> ent, ref ComponentShutdown args)
  39. {
  40. if (_player.LocalEntity == ent)
  41. {
  42. _overlayMan.RemoveOverlay(_overlay);
  43. }
  44. }
  45. }