1
0

StartSingularityEngineCommand.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Content.Server.Administration;
  2. using Content.Server.ParticleAccelerator.Components;
  3. using Content.Server.ParticleAccelerator.EntitySystems;
  4. using Content.Server.Singularity.Components;
  5. using Content.Server.Singularity.EntitySystems;
  6. using Content.Shared.Administration;
  7. using Content.Shared.Singularity.Components;
  8. using Robust.Shared.Console;
  9. namespace Content.Server.Singularity
  10. {
  11. [AdminCommand(AdminFlags.Admin)]
  12. public sealed class StartSingularityEngineCommand : IConsoleCommand
  13. {
  14. public string Command => "startsingularityengine";
  15. public string Description => "Automatically turns on the particle accelerator and containment field emitters.";
  16. public string Help => $"{Command}";
  17. public void Execute(IConsoleShell shell, string argStr, string[] args)
  18. {
  19. if (args.Length != 0)
  20. {
  21. shell.WriteLine($"Invalid amount of arguments: {args.Length}.\n{Help}");
  22. return;
  23. }
  24. var entityManager = IoCManager.Resolve<IEntityManager>();
  25. var entitySystemManager = IoCManager.Resolve<IEntitySystemManager>();
  26. // Turn on emitters
  27. var emitterQuery = entityManager.EntityQueryEnumerator<EmitterComponent>();
  28. var emitterSystem = entitySystemManager.GetEntitySystem<EmitterSystem>();
  29. while (emitterQuery.MoveNext(out var uid, out var emitterComponent))
  30. {
  31. //FIXME: This turns on ALL emitters, including APEs. It should only turn on the containment field emitters.
  32. emitterSystem.SwitchOn(uid, emitterComponent);
  33. }
  34. // Turn on radiation collectors
  35. var radiationCollectorQuery = entityManager.EntityQueryEnumerator<RadiationCollectorComponent>();
  36. var radiationCollectorSystem = entitySystemManager.GetEntitySystem<RadiationCollectorSystem>();
  37. while (radiationCollectorQuery.MoveNext(out var uid, out var radiationCollectorComponent))
  38. {
  39. radiationCollectorSystem.SetCollectorEnabled(uid, enabled: true, user: null, radiationCollectorComponent);
  40. }
  41. // Setup PA
  42. var paSystem = entitySystemManager.GetEntitySystem<ParticleAcceleratorSystem>();
  43. var paQuery = entityManager.EntityQueryEnumerator<ParticleAcceleratorControlBoxComponent>();
  44. while (paQuery.MoveNext(out var paId, out var paControl))
  45. {
  46. paSystem.RescanParts(paId, controller: paControl);
  47. if (!paControl.Assembled)
  48. continue;
  49. paSystem.SetStrength(paId, ParticleAcceleratorPowerState.Level0, comp: paControl);
  50. paSystem.SwitchOn(paId, comp: paControl);
  51. }
  52. shell.WriteLine("Done!");
  53. }
  54. }
  55. }