1
0

NetworkConfiguratorBoundUserInterface.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using Content.Client.NetworkConfigurator.Systems;
  2. using Content.Shared.DeviceNetwork;
  3. using Robust.Client.GameObjects;
  4. using Robust.Client.UserInterface;
  5. using Robust.Client.UserInterface.Controls;
  6. namespace Content.Client.NetworkConfigurator;
  7. public sealed class NetworkConfiguratorBoundUserInterface : BoundUserInterface
  8. {
  9. private readonly NetworkConfiguratorSystem _netConfig;
  10. [ViewVariables]
  11. private NetworkConfiguratorConfigurationMenu? _configurationMenu;
  12. [ViewVariables]
  13. private NetworkConfiguratorLinkMenu? _linkMenu;
  14. [ViewVariables]
  15. private NetworkConfiguratorListMenu? _listMenu;
  16. public NetworkConfiguratorBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  17. {
  18. _netConfig = EntMan.System<NetworkConfiguratorSystem>();
  19. }
  20. public void OnRemoveButtonPressed(string address)
  21. {
  22. SendMessage(new NetworkConfiguratorRemoveDeviceMessage(address));
  23. }
  24. protected override void Open()
  25. {
  26. base.Open();
  27. switch (UiKey)
  28. {
  29. case NetworkConfiguratorUiKey.List:
  30. _listMenu = this.CreateWindow<NetworkConfiguratorListMenu>();
  31. _listMenu.ClearButton.OnPressed += _ => OnClearButtonPressed();
  32. _listMenu.OnRemoveAddress += OnRemoveButtonPressed;
  33. break;
  34. case NetworkConfiguratorUiKey.Configure:
  35. _configurationMenu = this.CreateWindow<NetworkConfiguratorConfigurationMenu>();
  36. _configurationMenu.Set.OnPressed += _ => OnConfigButtonPressed(NetworkConfiguratorButtonKey.Set);
  37. _configurationMenu.Add.OnPressed += _ => OnConfigButtonPressed(NetworkConfiguratorButtonKey.Add);
  38. //_configurationMenu.Edit.OnPressed += _ => OnConfigButtonPressed(NetworkConfiguratorButtonKey.Edit);
  39. _configurationMenu.Clear.OnPressed += _ => OnConfigButtonPressed(NetworkConfiguratorButtonKey.Clear);
  40. _configurationMenu.Copy.OnPressed += _ => OnConfigButtonPressed(NetworkConfiguratorButtonKey.Copy);
  41. _configurationMenu.Show.OnPressed += OnShowPressed;
  42. _configurationMenu.Show.Pressed = _netConfig.ConfiguredListIsTracked(Owner);
  43. _configurationMenu.OnRemoveAddress += OnRemoveButtonPressed;
  44. break;
  45. case NetworkConfiguratorUiKey.Link:
  46. _linkMenu = this.CreateWindow<NetworkConfiguratorLinkMenu>();
  47. _linkMenu.OnLinkDefaults += args =>
  48. {
  49. SendMessage(new NetworkConfiguratorLinksSaveMessage(args));
  50. };
  51. _linkMenu.OnToggleLink += (left, right) =>
  52. {
  53. SendMessage(new NetworkConfiguratorToggleLinkMessage(left, right));
  54. };
  55. _linkMenu.OnClearLinks += () =>
  56. {
  57. SendMessage(new NetworkConfiguratorClearLinksMessage());
  58. };
  59. break;
  60. }
  61. }
  62. private void OnShowPressed(BaseButton.ButtonEventArgs args)
  63. {
  64. _netConfig.ToggleVisualization(Owner, args.Button.Pressed);
  65. }
  66. protected override void UpdateState(BoundUserInterfaceState state)
  67. {
  68. base.UpdateState(state);
  69. switch (state)
  70. {
  71. case NetworkConfiguratorUserInterfaceState configState:
  72. _listMenu?.UpdateState(configState);
  73. break;
  74. case DeviceListUserInterfaceState listState:
  75. _configurationMenu?.UpdateState(listState);
  76. break;
  77. case DeviceLinkUserInterfaceState linkState:
  78. _linkMenu?.UpdateState(linkState);
  79. break;
  80. }
  81. }
  82. private void OnClearButtonPressed()
  83. {
  84. SendMessage(new NetworkConfiguratorClearDevicesMessage());
  85. }
  86. private void OnConfigButtonPressed(NetworkConfiguratorButtonKey buttonKey)
  87. {
  88. SendMessage(new NetworkConfiguratorButtonPressedMessage(buttonKey));
  89. }
  90. }