OptionsUIController.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Content.Client.Options.UI;
  2. using JetBrains.Annotations;
  3. using Robust.Client.UserInterface.Controllers;
  4. using Robust.Shared.Console;
  5. namespace Content.Client.UserInterface.Systems.EscapeMenu;
  6. [UsedImplicitly]
  7. public sealed class OptionsUIController : UIController
  8. {
  9. [Dependency] private readonly IConsoleHost _con = default!;
  10. public override void Initialize()
  11. {
  12. _con.RegisterCommand("options", Loc.GetString("cmd-options-desc"), Loc.GetString("cmd-options-help"), OptionsCommand);
  13. }
  14. private void OptionsCommand(IConsoleShell shell, string argStr, string[] args)
  15. {
  16. if (args.Length == 0)
  17. {
  18. ToggleWindow();
  19. return;
  20. }
  21. OpenWindow();
  22. if (!int.TryParse(args[0], out var tab))
  23. {
  24. shell.WriteError(Loc.GetString("cmd-parse-failure-int", ("arg", args[0])));
  25. return;
  26. }
  27. _optionsWindow.Tabs.CurrentTab = tab;
  28. }
  29. private OptionsMenu _optionsWindow = default!;
  30. private void EnsureWindow()
  31. {
  32. if (_optionsWindow is { Disposed: false })
  33. return;
  34. _optionsWindow = UIManager.CreateWindow<OptionsMenu>();
  35. }
  36. public void OpenWindow()
  37. {
  38. EnsureWindow();
  39. _optionsWindow.UpdateTabs();
  40. _optionsWindow.OpenCentered();
  41. _optionsWindow.MoveToFront();
  42. }
  43. public void ToggleWindow()
  44. {
  45. EnsureWindow();
  46. if (_optionsWindow.IsOpen)
  47. {
  48. _optionsWindow.Close();
  49. }
  50. else
  51. {
  52. OpenWindow();
  53. }
  54. }
  55. }