AdminSystem.Overlay.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Content.Client.Administration.Managers;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.ResourceManagement;
  4. using Robust.Client.UserInterface;
  5. using Robust.Shared.Configuration;
  6. namespace Content.Client.Administration.Systems
  7. {
  8. public sealed partial class AdminSystem
  9. {
  10. [Dependency] private readonly IOverlayManager _overlayManager = default!;
  11. [Dependency] private readonly IResourceCache _resourceCache = default!;
  12. [Dependency] private readonly IClientAdminManager _adminManager = default!;
  13. [Dependency] private readonly IEyeManager _eyeManager = default!;
  14. [Dependency] private readonly EntityLookupSystem _entityLookup = default!;
  15. [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
  16. private AdminNameOverlay _adminNameOverlay = default!;
  17. public event Action? OverlayEnabled;
  18. public event Action? OverlayDisabled;
  19. private void InitializeOverlay()
  20. {
  21. _adminNameOverlay = new AdminNameOverlay(this, EntityManager, _eyeManager, _resourceCache, _entityLookup, _userInterfaceManager);
  22. _adminManager.AdminStatusUpdated += OnAdminStatusUpdated;
  23. }
  24. private void ShutdownOverlay()
  25. {
  26. _adminManager.AdminStatusUpdated -= OnAdminStatusUpdated;
  27. }
  28. private void OnAdminStatusUpdated()
  29. {
  30. AdminOverlayOff();
  31. }
  32. public void AdminOverlayOn()
  33. {
  34. if (_overlayManager.HasOverlay<AdminNameOverlay>()) return;
  35. _overlayManager.AddOverlay(_adminNameOverlay);
  36. OverlayEnabled?.Invoke();
  37. }
  38. public void AdminOverlayOff()
  39. {
  40. _overlayManager.RemoveOverlay<AdminNameOverlay>();
  41. OverlayDisabled?.Invoke();
  42. }
  43. }
  44. }