1
0

RotateEyesCommand.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Content.Server.Administration;
  2. using Content.Shared.Administration;
  3. using Content.Shared.Movement.Components;
  4. using Robust.Shared.Console;
  5. namespace Content.Server.Movement;
  6. [AdminCommand(AdminFlags.Fun)]
  7. public sealed class RotateEyesCommand : IConsoleCommand
  8. {
  9. public string Command => "rotateeyes";
  10. public string Description => Loc.GetString("rotateeyes-command-description");
  11. public string Help => Loc.GetString("rotateeyes-command-help");
  12. public void Execute(IConsoleShell shell, string argStr, string[] args)
  13. {
  14. var entManager = IoCManager.Resolve<IEntityManager>();
  15. var rotation = Angle.Zero;
  16. if (args.Length == 1)
  17. {
  18. if (!float.TryParse(args[0], out var degrees))
  19. {
  20. shell.WriteError(Loc.GetString("parse-float-fail", ("arg", args[0])));
  21. return;
  22. }
  23. rotation = Angle.FromDegrees(degrees);
  24. }
  25. var count = 0;
  26. foreach (var mover in entManager.EntityQuery<InputMoverComponent>(true))
  27. {
  28. if (mover.TargetRelativeRotation.Equals(rotation))
  29. continue;
  30. mover.TargetRelativeRotation = rotation;
  31. entManager.Dirty(mover);
  32. count++;
  33. }
  34. shell.WriteLine(Loc.GetString("rotateeyes-command-count", ("count", count)));
  35. }
  36. }