diff --git a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs
index 42ea6bf6ea..a4b8c9d3dd 100644
--- a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs
+++ b/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs
@@ -12,7 +12,7 @@ using Robust.Shared.Utility;
using System;
using YamlDotNet.RepresentationModel;
-namespace Content.Client.GameObjects.Components.Disposal
+namespace Content.Client.GameObjects.Components.Atmos
{
[UsedImplicitly]
public class PumpVisualizer : AppearanceVisualizer
@@ -60,11 +60,26 @@ namespace Content.Client.GameObjects.Components.Disposal
sprite.LayerSetRSI(basePumpLayer, _pumpRSI);
sprite.LayerSetState(basePumpLayer, pumpBaseState);
sprite.LayerSetVisible(basePumpLayer, true);
+
+
+
+ var pumpEnabledAnimationState = "pumpEnabled";
+ pumpEnabledAnimationState += pumpVisualState.InletDirection.ToString();
+ pumpEnabledAnimationState += ((int) pumpVisualState.InletConduitLayer).ToString();
+ pumpEnabledAnimationState += pumpVisualState.OutletDirection.ToString();
+ pumpEnabledAnimationState += ((int) pumpVisualState.OutletConduitLayer).ToString();
+
+ sprite.LayerMapReserveBlank(Layer.PumpEnabled);
+ var pumpEnabledAnimationLayer = sprite.LayerMapGet(Layer.PumpEnabled);
+ sprite.LayerSetRSI(pumpEnabledAnimationLayer, _pumpRSI);
+ sprite.LayerSetState(pumpEnabledAnimationLayer, pumpEnabledAnimationState);
+ sprite.LayerSetVisible(pumpEnabledAnimationLayer, pumpVisualState.PumpEnabled);
}
private enum Layer
{
- PumpBase
+ PumpBase,
+ PumpEnabled,
}
}
}
diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs
index 1556c9a62c..24a44ae7d8 100644
--- a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs
+++ b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs
@@ -16,6 +16,21 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping
///
public abstract class BasePumpComponent : PipeNetDeviceComponent
{
+ ///
+ /// If the pump is currently pumping.
+ ///
+ [ViewVariables(VVAccess.ReadWrite)]
+ public bool PumpEnabled
+ {
+ get => _pumpEnabled;
+ set
+ {
+ _pumpEnabled = value;
+ UpdateAppearance();
+ }
+ }
+ private bool _pumpEnabled = true;
+
///
/// Needs to be same as that of a on this entity.
///
@@ -67,6 +82,9 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping
public override void Update()
{
+ if (!PumpEnabled)
+ return;
+
PumpGas(_inletPipe.Air, _outletPipe.Air);
}
@@ -74,7 +92,7 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping
private void UpdateAppearance()
{
- _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_inletDirection, _outletDirection, _inletPipe.ConduitLayer, _outletPipe.ConduitLayer));
+ _appearance?.SetData(PumpVisuals.VisualState, new PumpVisualState(_inletDirection, _outletDirection, _inletPipe.ConduitLayer, _outletPipe.ConduitLayer, PumpEnabled));
}
}
}
diff --git a/Content.Shared/GameObjects/Atmos/SharedPumpComponent.cs b/Content.Shared/GameObjects/Atmos/SharedPumpComponent.cs
index d4f304e53e..8546d9d071 100644
--- a/Content.Shared/GameObjects/Atmos/SharedPumpComponent.cs
+++ b/Content.Shared/GameObjects/Atmos/SharedPumpComponent.cs
@@ -17,13 +17,15 @@ namespace Content.Shared.GameObjects.Atmos
public readonly PipeDirection OutletDirection;
public readonly ConduitLayer InletConduitLayer;
public readonly ConduitLayer OutletConduitLayer;
+ public readonly bool PumpEnabled;
- public PumpVisualState(PipeDirection inletDirection, PipeDirection outletDirection, ConduitLayer inletConduitLayer, ConduitLayer outletConduitLayer)
+ public PumpVisualState(PipeDirection inletDirection, PipeDirection outletDirection, ConduitLayer inletConduitLayer, ConduitLayer outletConduitLayer, bool pumpEnabled)
{
InletDirection = inletDirection;
OutletDirection = outletDirection;
InletConduitLayer = inletConduitLayer;
OutletConduitLayer = outletConduitLayer;
+ PumpEnabled = pumpEnabled;
}
}
}
diff --git a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/meta.json
index f950406db6..d8390a7ef9 100644
--- a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/meta.json
+++ b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/meta.json
@@ -26,6 +26,26 @@
"name":"pumpWest2East2",
"directions":1,
"delays":[ [ 1.0 ] ]
+ },
+ {
+ "name":"pumpEnabledEast2West2",
+ "directions":1,
+ "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
+ },
+ {
+ "name":"pumpEnabledNorth2South2",
+ "directions":1,
+ "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
+ },
+ {
+ "name":"pumpEnabledSouth2North2",
+ "directions":1,
+ "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
+ },
+ {
+ "name":"pumpEnabledWest2East2",
+ "directions":1,
+ "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
}
]
}
\ No newline at end of file
diff --git a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledEast2West2.png b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledEast2West2.png
new file mode 100644
index 0000000000..4e2d4e1a78
Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledEast2West2.png differ
diff --git a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledNorth2South2.png b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledNorth2South2.png
new file mode 100644
index 0000000000..6e33ce9160
Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledNorth2South2.png differ
diff --git a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledSouth2North2.png b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledSouth2North2.png
new file mode 100644
index 0000000000..fffb200483
Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledSouth2North2.png differ
diff --git a/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledWest2East2.png b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledWest2East2.png
new file mode 100644
index 0000000000..ddcd2cd54d
Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pressurepump.rsi/pumpEnabledWest2East2.png differ