IFFConsoleWindow.xaml.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Content.Client.Computer;
  2. using Content.Client.UserInterface.Controls;
  3. using Content.Shared.Shuttles.BUIStates;
  4. using Content.Shared.Shuttles.Components;
  5. using Robust.Client.AutoGenerated;
  6. using Robust.Client.UserInterface.Controls;
  7. using Robust.Client.UserInterface.XAML;
  8. namespace Content.Client.Shuttles.UI;
  9. [GenerateTypedNameReferences]
  10. public sealed partial class IFFConsoleWindow : FancyWindow,
  11. IComputerWindow<IFFConsoleBoundUserInterfaceState>
  12. {
  13. private readonly ButtonGroup _showIFFButtonGroup = new();
  14. private readonly ButtonGroup _showVesselButtonGroup = new();
  15. public event Action<bool>? ShowIFF;
  16. public event Action<bool>? ShowVessel;
  17. public IFFConsoleWindow()
  18. {
  19. RobustXamlLoader.Load(this);
  20. ShowIFFOffButton.Group = _showIFFButtonGroup;
  21. ShowIFFOnButton.Group = _showIFFButtonGroup;
  22. ShowIFFOnButton.OnPressed += args => ShowIFFPressed(true);
  23. ShowIFFOffButton.OnPressed += args => ShowIFFPressed(false);
  24. ShowVesselOffButton.Group = _showVesselButtonGroup;
  25. ShowVesselOnButton.Group = _showVesselButtonGroup;
  26. ShowVesselOnButton.OnPressed += args => ShowVesselPressed(true);
  27. ShowVesselOffButton.OnPressed += args => ShowVesselPressed(false);
  28. }
  29. private void ShowIFFPressed(bool pressed)
  30. {
  31. ShowIFF?.Invoke(pressed);
  32. }
  33. private void ShowVesselPressed(bool pressed)
  34. {
  35. ShowVessel?.Invoke(pressed);
  36. }
  37. public void UpdateState(IFFConsoleBoundUserInterfaceState state)
  38. {
  39. if ((state.AllowedFlags & IFFFlags.HideLabel) != 0x0)
  40. {
  41. ShowIFFOffButton.Disabled = false;
  42. ShowIFFOnButton.Disabled = false;
  43. if ((state.Flags & IFFFlags.HideLabel) != 0x0)
  44. {
  45. ShowIFFOffButton.Pressed = true;
  46. }
  47. else
  48. {
  49. ShowIFFOnButton.Pressed = true;
  50. }
  51. }
  52. else
  53. {
  54. ShowIFFOffButton.Disabled = true;
  55. ShowIFFOnButton.Disabled = true;
  56. }
  57. if ((state.AllowedFlags & IFFFlags.Hide) != 0x0)
  58. {
  59. ShowVesselOffButton.Disabled = false;
  60. ShowVesselOnButton.Disabled = false;
  61. if ((state.Flags & IFFFlags.Hide) != 0x0)
  62. {
  63. ShowVesselOffButton.Pressed = true;
  64. }
  65. else
  66. {
  67. ShowVesselOnButton.Pressed = true;
  68. }
  69. }
  70. else
  71. {
  72. ShowVesselOffButton.Disabled = true;
  73. ShowVesselOnButton.Disabled = true;
  74. }
  75. }
  76. }