ZoomCommand.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Content.Client.Movement.Systems;
  2. using Content.Shared.Movement.Components;
  3. using JetBrains.Annotations;
  4. using Robust.Client.Graphics;
  5. using Robust.Client.Player;
  6. using Robust.Shared.Console;
  7. using System.Numerics;
  8. namespace Content.Client.Commands;
  9. [UsedImplicitly]
  10. public sealed class ZoomCommand : LocalizedCommands
  11. {
  12. [Dependency] private readonly IEntityManager _entityManager = default!;
  13. [Dependency] private readonly IEyeManager _eyeManager = default!;
  14. [Dependency] private readonly IPlayerManager _playerManager = default!;
  15. public override string Command => "zoom";
  16. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  17. {
  18. Vector2 zoom;
  19. if (args.Length is not (1 or 2 or 3))
  20. {
  21. shell.WriteLine(Help);
  22. return;
  23. }
  24. if (!float.TryParse(args[0], out var arg0))
  25. {
  26. shell.WriteError(LocalizationManager.GetString("cmd-parse-failure-float", ("arg", args[0])));
  27. return;
  28. }
  29. if (arg0 > 0)
  30. zoom = new(arg0, arg0);
  31. else
  32. {
  33. shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error"));
  34. return;
  35. }
  36. if (args.Length == 2)
  37. {
  38. if (!float.TryParse(args[1], out var arg1))
  39. {
  40. shell.WriteError(LocalizationManager.GetString("cmd-parse-failure-float", ("arg", args[1])));
  41. return;
  42. }
  43. if (arg1 > 0)
  44. zoom.Y = arg1;
  45. else
  46. {
  47. shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error"));
  48. return;
  49. }
  50. }
  51. var scalePvs = true;
  52. if (args.Length == 3 && !bool.TryParse(args[2], out scalePvs))
  53. {
  54. shell.WriteError(LocalizationManager.GetString("cmd-parse-failure-bool", ("arg", args[2])));
  55. return;
  56. }
  57. var player = _playerManager.LocalSession?.AttachedEntity;
  58. if (_entityManager.TryGetComponent<ContentEyeComponent>(player, out var content))
  59. {
  60. _entityManager.System<ContentEyeSystem>().RequestZoom(player.Value, zoom, true, scalePvs, content);
  61. return;
  62. }
  63. _eyeManager.CurrentEye.Zoom = zoom;
  64. }
  65. }