SetMenuVisibilityCommand.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using Content.Client.Verbs;
  2. using Content.Shared.Verbs;
  3. using JetBrains.Annotations;
  4. using Robust.Shared.Console;
  5. namespace Content.Client.Commands;
  6. [UsedImplicitly]
  7. internal sealed class SetMenuVisibilityCommand : LocalizedCommands
  8. {
  9. [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!;
  10. public override string Command => "menuvis";
  11. public override string Help => LocalizationManager.GetString($"cmd-{Command}-help", ("command", Command));
  12. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  13. {
  14. if (!TryParseArguments(shell, args, out var visibility))
  15. return;
  16. _entitySystemManager.GetEntitySystem<VerbSystem>().Visibility = visibility;
  17. }
  18. private bool TryParseArguments(IConsoleShell shell, string[] args, out MenuVisibility visibility)
  19. {
  20. visibility = MenuVisibility.Default;
  21. foreach (var arg in args)
  22. {
  23. switch (arg.ToLower())
  24. {
  25. // ReSharper disable once StringLiteralTypo
  26. case "nofov":
  27. visibility |= MenuVisibility.NoFov;
  28. break;
  29. // ReSharper disable once StringLiteralTypo
  30. case "incontainer":
  31. visibility |= MenuVisibility.InContainer;
  32. break;
  33. case "invisible":
  34. visibility |= MenuVisibility.Invisible;
  35. break;
  36. case "all":
  37. visibility |= MenuVisibility.All;
  38. break;
  39. default:
  40. shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error", ("arg", arg)));
  41. return false;
  42. }
  43. }
  44. return true;
  45. }
  46. }