| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using Content.Client.UserInterface.Controls;
- using Content.Shared.Atmos;
- using Robust.Client.AutoGenerated;
- using Robust.Client.UserInterface.CustomControls;
- using Robust.Client.UserInterface.XAML;
- namespace Content.Client.Atmos.UI
- {
- /// <summary>
- /// Client-side UI used to control a gas pressure pump.
- /// </summary>
- [GenerateTypedNameReferences]
- public sealed partial class GasPressurePumpWindow : FancyWindow
- {
- public bool PumpStatus = true;
- public event Action? ToggleStatusButtonPressed;
- public event Action<float>? PumpOutputPressureChanged;
- public float MaxPressure
- {
- get => _maxPressure;
- set
- {
- _maxPressure = value;
- PumpPressureOutputInput.Value = MathF.Min(value, PumpPressureOutputInput.Value);
- }
- }
- private float _maxPressure = Atmospherics.MaxOutputPressure;
- public GasPressurePumpWindow()
- {
- RobustXamlLoader.Load(this);
- ToggleStatusButton.OnPressed += _ => SetPumpStatus(!PumpStatus);
- ToggleStatusButton.OnPressed += _ => ToggleStatusButtonPressed?.Invoke();
- PumpPressureOutputInput.OnValueChanged += _ => SetOutputPressureButton.Disabled = false;
- SetOutputPressureButton.OnPressed += _ =>
- {
- PumpPressureOutputInput.Value = Math.Clamp(PumpPressureOutputInput.Value, 0f, _maxPressure);
- PumpOutputPressureChanged?.Invoke(PumpPressureOutputInput.Value);
- SetOutputPressureButton.Disabled = true;
- };
- SetMaxPressureButton.OnPressed += _ =>
- {
- PumpPressureOutputInput.Value = _maxPressure;
- SetOutputPressureButton.Disabled = false;
- };
- }
- public void SetOutputPressure(float pressure)
- {
- PumpPressureOutputInput.Value = pressure;
- }
- public void SetPumpStatus(bool enabled)
- {
- PumpStatus = enabled;
- if (enabled)
- {
- ToggleStatusButton.Text = Loc.GetString("comp-gas-pump-ui-status-enabled");
- }
- else
- {
- ToggleStatusButton.Text = Loc.GetString("comp-gas-pump-ui-status-disabled");
- }
- }
- }
- }
|