GasPressurePumpWindow.xaml.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Content.Client.UserInterface.Controls;
  2. using Content.Shared.Atmos;
  3. using Robust.Client.AutoGenerated;
  4. using Robust.Client.UserInterface.CustomControls;
  5. using Robust.Client.UserInterface.XAML;
  6. namespace Content.Client.Atmos.UI
  7. {
  8. /// <summary>
  9. /// Client-side UI used to control a gas pressure pump.
  10. /// </summary>
  11. [GenerateTypedNameReferences]
  12. public sealed partial class GasPressurePumpWindow : FancyWindow
  13. {
  14. public bool PumpStatus = true;
  15. public event Action? ToggleStatusButtonPressed;
  16. public event Action<float>? PumpOutputPressureChanged;
  17. public float MaxPressure
  18. {
  19. get => _maxPressure;
  20. set
  21. {
  22. _maxPressure = value;
  23. PumpPressureOutputInput.Value = MathF.Min(value, PumpPressureOutputInput.Value);
  24. }
  25. }
  26. private float _maxPressure = Atmospherics.MaxOutputPressure;
  27. public GasPressurePumpWindow()
  28. {
  29. RobustXamlLoader.Load(this);
  30. ToggleStatusButton.OnPressed += _ => SetPumpStatus(!PumpStatus);
  31. ToggleStatusButton.OnPressed += _ => ToggleStatusButtonPressed?.Invoke();
  32. PumpPressureOutputInput.OnValueChanged += _ => SetOutputPressureButton.Disabled = false;
  33. SetOutputPressureButton.OnPressed += _ =>
  34. {
  35. PumpPressureOutputInput.Value = Math.Clamp(PumpPressureOutputInput.Value, 0f, _maxPressure);
  36. PumpOutputPressureChanged?.Invoke(PumpPressureOutputInput.Value);
  37. SetOutputPressureButton.Disabled = true;
  38. };
  39. SetMaxPressureButton.OnPressed += _ =>
  40. {
  41. PumpPressureOutputInput.Value = _maxPressure;
  42. SetOutputPressureButton.Disabled = false;
  43. };
  44. }
  45. public void SetOutputPressure(float pressure)
  46. {
  47. PumpPressureOutputInput.Value = pressure;
  48. }
  49. public void SetPumpStatus(bool enabled)
  50. {
  51. PumpStatus = enabled;
  52. if (enabled)
  53. {
  54. ToggleStatusButton.Text = Loc.GetString("comp-gas-pump-ui-status-enabled");
  55. }
  56. else
  57. {
  58. ToggleStatusButton.Text = Loc.GetString("comp-gas-pump-ui-status-disabled");
  59. }
  60. }
  61. }
  62. }