1
0

ToggleNukeCommand.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Linq;
  2. using Content.Server.Administration;
  3. using Content.Shared.Administration;
  4. using JetBrains.Annotations;
  5. using Robust.Shared.Console;
  6. namespace Content.Server.Nuke.Commands;
  7. [UsedImplicitly]
  8. [AdminCommand(AdminFlags.Fun)]
  9. public sealed class ToggleNukeCommand : LocalizedCommands
  10. {
  11. [Dependency] private readonly IEntityManager _entManager = default!;
  12. public override string Command => "nukearm";
  13. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  14. {
  15. EntityUid? bombUid = null;
  16. NukeComponent? bomb = null;
  17. if (args.Length >= 2)
  18. {
  19. if (!_entManager.TryParseNetEntity(args[1], out bombUid))
  20. {
  21. shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number"));
  22. return;
  23. }
  24. }
  25. else
  26. {
  27. var query = _entManager.EntityQueryEnumerator<NukeComponent>();
  28. while (query.MoveNext(out var bomba, out bomb))
  29. {
  30. bombUid = bomba;
  31. break;
  32. }
  33. if (bombUid == null)
  34. {
  35. shell.WriteError(Loc.GetString("cmd-nukearm-not-found"));
  36. return;
  37. }
  38. }
  39. var nukeSys = _entManager.System<NukeSystem>();
  40. if (args.Length >= 1)
  41. {
  42. if (!float.TryParse(args[0], out var timer))
  43. {
  44. shell.WriteError("shell-argument-must-be-number");
  45. return;
  46. }
  47. nukeSys.SetRemainingTime(bombUid.Value, timer, bomb);
  48. }
  49. nukeSys.ToggleBomb(bombUid.Value, bomb);
  50. }
  51. public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
  52. {
  53. if (args.Length == 1)
  54. {
  55. return CompletionResult.FromHint(Loc.GetString(Loc.GetString("cmd-nukearm-1-help")));
  56. }
  57. if (args.Length == 2)
  58. {
  59. return CompletionResult.FromHintOptions(CompletionHelper.Components<NukeComponent>(args[1]), Loc.GetString("cmd-nukearm-2-help"));
  60. }
  61. return CompletionResult.Empty;
  62. }
  63. }