using Robust.Client.UserInterface.CustomControls;
using static Robust.Client.UserInterface.Controls.BoxContainer;
-namespace Content.Client.UserInterface.Systems.Atmos.GasTank
+namespace Content.Client.UserInterface.Systems.Atmos.GasTank;
+
+public sealed class GasTankWindow
+ : BaseWindow
{
- public sealed class GasTankWindow
- : BaseWindow
- {
- private GasTankBoundUserInterface _owner;
- private readonly Label _lblName;
- private readonly BoxContainer _topContainer;
- private readonly Control _contentContainer;
+ private readonly RichTextLabel _lblPressure;
+ private readonly FloatSpinBox _spbPressure;
+ private readonly RichTextLabel _lblInternals;
+ private readonly Button _btnInternals;
+ public GasTankWindow(GasTankBoundUserInterface owner, string uidName)
+ {
+ Control contentContainer;
+ BoxContainer topContainer;
+ TextureButton btnClose;
+ var resourceCache = IoCManager.Resolve<IResourceCache>();
+ var rootContainer = new LayoutContainer { Name = "GasTankRoot" };
+ AddChild(rootContainer);
- private readonly IResourceCache _resourceCache = default!;
- private readonly RichTextLabel _lblPressure;
- private readonly FloatSpinBox _spbPressure;
- private readonly RichTextLabel _lblInternals;
- private readonly Button _btnInternals;
+ MouseFilter = MouseFilterMode.Stop;
- public GasTankWindow(GasTankBoundUserInterface owner)
+ var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
+ var back = new StyleBoxTexture
{
- TextureButton btnClose;
- _resourceCache = IoCManager.Resolve<IResourceCache>();
- _owner = owner;
- var rootContainer = new LayoutContainer {Name = "GasTankRoot"};
- AddChild(rootContainer);
+ Texture = panelTex,
+ Modulate = Color.FromHex("#25252A"),
+ };
- MouseFilter = MouseFilterMode.Stop;
+ back.SetPatchMargin(StyleBox.Margin.All, 10);
- var panelTex = _resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
- var back = new StyleBoxTexture
- {
- Texture = panelTex,
- Modulate = Color.FromHex("#25252A"),
- };
-
- back.SetPatchMargin(StyleBox.Margin.All, 10);
-
- var topPanel = new PanelContainer
- {
- PanelOverride = back,
- MouseFilter = MouseFilterMode.Pass
- };
+ var topPanel = new PanelContainer
+ {
+ PanelOverride = back,
+ MouseFilter = MouseFilterMode.Pass
+ };
- var bottomWrap = new LayoutContainer
- {
- Name = "BottomWrap"
- };
+ var bottomWrap = new LayoutContainer
+ {
+ Name = "BottomWrap"
+ };
- rootContainer.AddChild(topPanel);
- rootContainer.AddChild(bottomWrap);
+ rootContainer.AddChild(topPanel);
+ rootContainer.AddChild(bottomWrap);
- LayoutContainer.SetAnchorPreset(topPanel, LayoutContainer.LayoutPreset.Wide);
- LayoutContainer.SetMarginBottom(topPanel, -85);
+ LayoutContainer.SetAnchorPreset(topPanel, LayoutContainer.LayoutPreset.Wide);
+ LayoutContainer.SetMarginBottom(topPanel, -85);
- LayoutContainer.SetAnchorPreset(bottomWrap, LayoutContainer.LayoutPreset.VerticalCenterWide);
- LayoutContainer.SetGrowHorizontal(bottomWrap, LayoutContainer.GrowDirection.Both);
+ LayoutContainer.SetAnchorPreset(bottomWrap, LayoutContainer.LayoutPreset.VerticalCenterWide);
+ LayoutContainer.SetGrowHorizontal(bottomWrap, LayoutContainer.GrowDirection.Both);
- var topContainerWrap = new BoxContainer
+ var topContainerWrap = new BoxContainer
+ {
+ Orientation = LayoutOrientation.Vertical,
+ Children =
{
- Orientation = LayoutOrientation.Vertical,
- Children =
+ (topContainer = new BoxContainer
{
- (_topContainer = new BoxContainer
- {
- Orientation = LayoutOrientation.Vertical
- }),
- new Control {MinSize = new Vector2(0, 110)}
- }
- };
+ Orientation = LayoutOrientation.Vertical
+ }),
+ new Control {MinSize = new Vector2(0, 110)}
+ }
+ };
- rootContainer.AddChild(topContainerWrap);
+ rootContainer.AddChild(topContainerWrap);
- LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide);
+ LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide);
- var font = _resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13);
+ var font = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13);
- var topRow = new BoxContainer
+ var topRow = new BoxContainer
+ {
+ Orientation = LayoutOrientation.Horizontal,
+ Margin = new Thickness(4, 2, 12, 2),
+ Children =
{
- Orientation = LayoutOrientation.Horizontal,
- Margin = new Thickness(4, 2, 12, 2),
- Children =
+ (new Label
{
- (_lblName = new Label
- {
- Text = Loc.GetString("gas-tank-window-label"),
- FontOverride = font,
- FontColorOverride = StyleNano.NanoGold,
- VerticalAlignment = VAlignment.Center,
- HorizontalExpand = true,
- HorizontalAlignment = HAlignment.Left,
- Margin = new Thickness(0, 0, 20, 0),
- }),
- (btnClose = new TextureButton
- {
- StyleClasses = {DefaultWindow.StyleClassWindowCloseButton},
- VerticalAlignment = VAlignment.Center
- })
- }
- };
-
- var middle = new PanelContainer
- {
- PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#202025")},
- Children =
+ Text = uidName,
+ FontOverride = font,
+ FontColorOverride = StyleNano.NanoGold,
+ VerticalAlignment = VAlignment.Center,
+ HorizontalExpand = true,
+ HorizontalAlignment = HAlignment.Left,
+ Margin = new Thickness(0, 0, 20, 0),
+ }),
+ (btnClose = new TextureButton
{
- (_contentContainer = new BoxContainer
- {
- Orientation = LayoutOrientation.Vertical,
- Margin = new Thickness(8, 4),
- })
- }
- };
-
- _topContainer.AddChild(topRow);
- _topContainer.AddChild(new PanelContainer
- {
- MinSize = new Vector2(0, 2),
- PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")}
- });
- _topContainer.AddChild(middle);
- _topContainer.AddChild(new PanelContainer
+ StyleClasses = {DefaultWindow.StyleClassWindowCloseButton},
+ VerticalAlignment = VAlignment.Center
+ })
+ }
+ };
+
+ var middle = new PanelContainer
+ {
+ PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#202025") },
+ Children =
{
- MinSize = new Vector2(0, 2),
- PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")}
- });
+ (contentContainer = new BoxContainer
+ {
+ Orientation = LayoutOrientation.Vertical,
+ Margin = new Thickness(8, 4),
+ })
+ }
+ };
+ topContainer.AddChild(topRow);
+ topContainer.AddChild(new PanelContainer
+ {
+ MinSize = new Vector2(0, 2),
+ PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#525252ff") }
+ });
+ topContainer.AddChild(middle);
+ topContainer.AddChild(new PanelContainer
+ {
+ MinSize = new Vector2(0, 2),
+ PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#525252ff") }
+ });
- _lblPressure = new RichTextLabel();
- _contentContainer.AddChild(_lblPressure);
- //internals
- _lblInternals = new RichTextLabel
- {MinSize = new Vector2(200, 0), VerticalAlignment = VAlignment.Center};
- _btnInternals = new Button {Text = Loc.GetString("gas-tank-window-internals-toggle-button") };
+ _lblPressure = new RichTextLabel();
+ contentContainer.AddChild(_lblPressure);
- _contentContainer.AddChild(
- new BoxContainer
- {
- Orientation = LayoutOrientation.Horizontal,
- Margin = new Thickness(0, 7, 0, 0),
- Children = {_lblInternals, _btnInternals}
- });
+ //internals
+ _lblInternals = new RichTextLabel
+ { MinSize = new Vector2(200, 0), VerticalAlignment = VAlignment.Center };
+ _btnInternals = new Button { Text = Loc.GetString("gas-tank-window-internals-toggle-button") };
- // Separator
- _contentContainer.AddChild(new Control
+ contentContainer.AddChild(
+ new BoxContainer
{
- MinSize = new Vector2(0, 10)
- });
-
- _contentContainer.AddChild(new Label
- {
- Text = Loc.GetString("gas-tank-window-output-pressure-label"),
- Align = Label.AlignMode.Center
+ Orientation = LayoutOrientation.Horizontal,
+ Margin = new Thickness(0, 7, 0, 0),
+ Children = { _lblInternals, _btnInternals }
});
- _spbPressure = new FloatSpinBox
- {
- IsValid = f => f >= 0 || f <= 3000,
- Margin = new Thickness(25, 0, 25, 7)
- };
- _contentContainer.AddChild(_spbPressure);
-
- // Handlers
- _spbPressure.OnValueChanged += args =>
- {
- _owner.SetOutputPressure(args.Value);
- };
- _btnInternals.OnPressed += args =>
- {
- _owner.ToggleInternals();
- };
+ // Separator
+ contentContainer.AddChild(new Control
+ {
+ MinSize = new Vector2(0, 10)
+ });
- btnClose.OnPressed += _ => Close();
- }
+ contentContainer.AddChild(new Label
+ {
+ Text = Loc.GetString("gas-tank-window-output-pressure-label"),
+ Align = Label.AlignMode.Center
+ });
+ _spbPressure = new FloatSpinBox
+ {
+ IsValid = f => f >= 0 || f <= 3000,
+ Margin = new Thickness(25, 0, 25, 7)
+ };
+ contentContainer.AddChild(_spbPressure);
- public void UpdateState(GasTankBoundUserInterfaceState state)
+ // Handlers
+ _spbPressure.OnValueChanged += args =>
{
- _lblPressure.SetMarkup(Loc.GetString("gas-tank-window-tank-pressure-text", ("tankPressure", $"{state.TankPressure:0.##}")));
- _btnInternals.Disabled = !state.CanConnectInternals;
- _lblInternals.SetMarkup(Loc.GetString("gas-tank-window-internal-text",
- ("status", Loc.GetString(state.InternalsConnected ? "gas-tank-window-internal-connected" : "gas-tank-window-internal-disconnected"))));
- if (state.OutputPressure.HasValue)
- {
- _spbPressure.Value = state.OutputPressure.Value;
- }
- }
+ owner.SetOutputPressure(args.Value);
+ };
- protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
+ _btnInternals.OnPressed += args =>
{
- return DragMode.Move;
- }
+ owner.ToggleInternals();
+ };
- protected override bool HasPoint(Vector2 point)
+ btnClose.OnPressed += _ => Close();
+ }
+
+ public void UpdateState(GasTankBoundUserInterfaceState state)
+ {
+ _lblPressure.SetMarkup(Loc.GetString("gas-tank-window-tank-pressure-text", ("tankPressure", $"{state.TankPressure:0.##}")));
+ _btnInternals.Disabled = !state.CanConnectInternals;
+ _lblInternals.SetMarkup(Loc.GetString("gas-tank-window-internal-text",
+ ("status", Loc.GetString(state.InternalsConnected ? "gas-tank-window-internal-connected" : "gas-tank-window-internal-disconnected"))));
+ if (state.OutputPressure.HasValue)
{
- return false;
+ _spbPressure.Value = state.OutputPressure.Value;
}
}
+
+ protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
+ {
+ return DragMode.Move;
+ }
+
+ protected override bool HasPoint(Vector2 point)
+ {
+ return false;
+ }
}