1
0

AdminVerbSystem.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Content.Shared.Administration;
  2. using Content.Shared.Administration.Managers;
  3. using Content.Shared.Mind.Components;
  4. using Content.Shared.Verbs;
  5. using Robust.Client.Console;
  6. using Robust.Shared.Utility;
  7. namespace Content.Client.Administration.Systems
  8. {
  9. /// <summary>
  10. /// Client-side admin verb system. These usually open some sort of UIs.
  11. /// </summary>
  12. sealed class AdminVerbSystem : EntitySystem
  13. {
  14. [Dependency] private readonly IClientConGroupController _clientConGroupController = default!;
  15. [Dependency] private readonly IClientConsoleHost _clientConsoleHost = default!;
  16. [Dependency] private readonly ISharedAdminManager _admin = default!;
  17. public override void Initialize()
  18. {
  19. SubscribeLocalEvent<GetVerbsEvent<Verb>>(AddAdminVerbs);
  20. }
  21. private void AddAdminVerbs(GetVerbsEvent<Verb> args)
  22. {
  23. // Currently this is only the ViewVariables verb, but more admin-UI related verbs can be added here.
  24. // View variables verbs
  25. if (_clientConGroupController.CanViewVar())
  26. {
  27. var verb = new VvVerb()
  28. {
  29. Text = Loc.GetString("view-variables"),
  30. Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/vv.svg.192dpi.png")),
  31. Act = () => _clientConsoleHost.ExecuteCommand($"vv {GetNetEntity(args.Target)}"),
  32. ClientExclusive = true // opening VV window is client-side. Don't ask server to run this verb.
  33. };
  34. args.Verbs.Add(verb);
  35. }
  36. if (!_admin.IsAdmin(args.User))
  37. return;
  38. if (_admin.HasAdminFlag(args.User, AdminFlags.Admin))
  39. args.ExtraCategories.Add(VerbCategory.Admin);
  40. if (_admin.HasAdminFlag(args.User, AdminFlags.Fun) && HasComp<MindContainerComponent>(args.Target))
  41. args.ExtraCategories.Add(VerbCategory.Antag);
  42. if (_admin.HasAdminFlag(args.User, AdminFlags.Debug))
  43. args.ExtraCategories.Add(VerbCategory.Debug);
  44. if (_admin.HasAdminFlag(args.User, AdminFlags.Fun))
  45. args.ExtraCategories.Add(VerbCategory.Smite);
  46. if (_admin.HasAdminFlag(args.User, AdminFlags.Admin))
  47. args.ExtraCategories.Add(VerbCategory.Tricks);
  48. }
  49. }
  50. }