Added blocked visuals to volumetric pump (#20610)
This commit is contained in:
@@ -9,6 +9,9 @@ namespace Content.Server.Atmos.Piping.Binary.Components
|
||||
[DataField("enabled")]
|
||||
public bool Enabled { get; set; } = true;
|
||||
|
||||
[DataField("blocked")]
|
||||
public bool Blocked { get; set; } = false;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool Overclocked { get; set; } = false;
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ using Content.Server.NodeContainer.Nodes;
|
||||
using Content.Shared.Atmos.Piping;
|
||||
using Content.Shared.Atmos.Piping.Binary.Components;
|
||||
using Content.Shared.Atmos.Piping.Unary.Components;
|
||||
using Content.Shared.Atmos.Visuals;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Examine;
|
||||
@@ -83,12 +84,24 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems
|
||||
var inputStartingPressure = inlet.Air.Pressure;
|
||||
var outputStartingPressure = outlet.Air.Pressure;
|
||||
|
||||
var previouslyBlocked = pump.Blocked;
|
||||
pump.Blocked = false;
|
||||
|
||||
// Pump mechanism won't do anything if the pressure is too high/too low unless you overclock it.
|
||||
if ((inputStartingPressure < pump.LowerThreshold) || (outputStartingPressure > pump.HigherThreshold) && !pump.Overclocked)
|
||||
return;
|
||||
{
|
||||
pump.Blocked = true;
|
||||
}
|
||||
|
||||
// Overclocked pumps can only force gas a certain amount.
|
||||
if ((outputStartingPressure - inputStartingPressure > pump.OverclockThreshold) && pump.Overclocked)
|
||||
{
|
||||
pump.Blocked = true;
|
||||
}
|
||||
|
||||
if (previouslyBlocked != pump.Blocked)
|
||||
UpdateAppearance(uid, pump);
|
||||
if (pump.Blocked)
|
||||
return;
|
||||
|
||||
// We multiply the transfer rate in L/s by the seconds passed since the last process to get the liters.
|
||||
@@ -172,7 +185,12 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems
|
||||
if (!Resolve(uid, ref pump, ref appearance, false))
|
||||
return;
|
||||
|
||||
_appearance.SetData(uid, PumpVisuals.Enabled, pump.Enabled, appearance);
|
||||
if (!pump.Enabled)
|
||||
_appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Off, appearance);
|
||||
else if (pump.Blocked)
|
||||
_appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Blocked, appearance);
|
||||
else
|
||||
_appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.On, appearance);
|
||||
}
|
||||
|
||||
private void OnPacketRecv(EntityUid uid, GasVolumePumpComponent component, DeviceNetworkPacketEvent args)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Atmos.Visuals
|
||||
{
|
||||
[Serializable, NetSerializable]
|
||||
public enum GasVolumePumpVisuals : byte
|
||||
{
|
||||
State,
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum GasVolumePumpState : byte
|
||||
{
|
||||
Off,
|
||||
On,
|
||||
Blocked,
|
||||
}
|
||||
}
|
||||
@@ -82,10 +82,11 @@
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.PumpVisuals.Enabled:
|
||||
enum.GasVolumePumpVisuals.State:
|
||||
enabled:
|
||||
True: { state: pumpVolumeOn }
|
||||
False: { state: pumpVolume }
|
||||
On: { state: pumpVolumeOn }
|
||||
Off: { state: pumpVolume }
|
||||
Blocked: { state: pumpVolumeBlocked }
|
||||
- type: PipeColorVisuals
|
||||
- type: GasVolumePump
|
||||
enabled: false
|
||||
|
||||
@@ -52,6 +52,11 @@
|
||||
"name":"pumpVolumeOn",
|
||||
"directions":4,
|
||||
"delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
|
||||
},
|
||||
{
|
||||
"name":"pumpVolumeBlocked",
|
||||
"directions":4,
|
||||
"delays":[ [ 1.0, 1.0 ], [ 1.0, 1.0 ], [ 1.0, 1.0 ], [ 1.0, 1.0 ] ]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
Reference in New Issue
Block a user