VisualizeCommand.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Linq;
  2. using Content.Server.Administration;
  3. using Content.Server.EUI;
  4. using Content.Shared.Administration;
  5. using Content.Shared.Bql;
  6. using Content.Shared.Eui;
  7. using Robust.Shared.Toolshed;
  8. using Robust.Shared.Toolshed.Errors;
  9. namespace Content.Server.Toolshed.Commands;
  10. [ToolshedCommand, AdminCommand(AdminFlags.VarEdit)]
  11. public sealed class VisualizeCommand : ToolshedCommand
  12. {
  13. [Dependency] private readonly EuiManager _euiManager = default!;
  14. [CommandImplementation]
  15. public void VisualizeEntities(
  16. IInvocationContext ctx,
  17. [PipedArgument] IEnumerable<EntityUid> input
  18. )
  19. {
  20. if (ctx.Session is null)
  21. {
  22. ctx.ReportError(new NotForServerConsoleError());
  23. return;
  24. }
  25. var ui = new ToolshedVisualizeEui(
  26. input.Select(e => (EntName(e), EntityManager.GetNetEntity(e))).ToArray()
  27. );
  28. _euiManager.OpenEui(ui, ctx.Session);
  29. _euiManager.QueueStateUpdate(ui);
  30. }
  31. }
  32. internal sealed class ToolshedVisualizeEui : BaseEui
  33. {
  34. private readonly (string name, NetEntity entity)[] _entities;
  35. public ToolshedVisualizeEui((string name, NetEntity entity)[] entities)
  36. {
  37. _entities = entities;
  38. }
  39. public override EuiStateBase GetNewState()
  40. {
  41. return new ToolshedVisualizeEuiState(_entities);
  42. }
  43. }