From e759a8aec946ccf1750e7c376191ecdc7e21945c Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Sun, 17 Jan 2021 09:10:22 -0600 Subject: [PATCH] Filter sprites & visualizer (#3008) Co-authored-by: py01 --- .../Components/Atmos/GasFilterVisualizer.cs | 52 ++++++++++++++++++ .../Atmos/Piping/GasFilterComponent.cs | 2 +- .../Components/Atmos/SharedFilterComponent.cs | 6 ++ .../Constructible/Ground/gasfilters.yml | 15 ++--- .../Entities/Constructible/Ground/pumps.yml | 6 +- .../Atmos/gasfilter.rsi/gasFilter.png | Bin 0 -> 825 bytes .../Atmos/gasfilter.rsi/gasFilterOn.png | Bin 0 -> 6420 bytes .../Atmos/gasfilter.rsi/meta.json | 1 + .../Constructible/Atmos/pump.rsi/meta.json | 2 +- ...DigitalValve2.png => pumpDigitalValve.png} | Bin ...mpManualValve2.png => pumpManualValve.png} | Bin ...mpPassiveGate2.png => pumpPassiveGate.png} | Bin ...ssiveGate2On.png => pumpPassiveGateOn.png} | Bin .../{pumpPressure2.png => pumpPressure.png} | Bin ...pumpPressure2On.png => pumpPressureOn.png} | Bin .../{pumpVolume2.png => pumpVolume.png} | Bin .../{pumpVolume2On.png => pumpVolumeOn.png} | Bin 17 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png create mode 100644 Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpDigitalValve2.png => pumpDigitalValve.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpManualValve2.png => pumpManualValve.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPassiveGate2.png => pumpPassiveGate.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPassiveGate2On.png => pumpPassiveGateOn.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPressure2.png => pumpPressure.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpPressure2On.png => pumpPressureOn.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpVolume2.png => pumpVolume.png} (100%) rename Resources/Textures/Constructible/Atmos/pump.rsi/{pumpVolume2On.png => pumpVolumeOn.png} (100%) diff --git a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs new file mode 100644 index 0000000000..9f9aa09c64 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs @@ -0,0 +1,52 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Atmos; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class GasFilterVisualizer : AppearanceVisualizer + { + private string _filterEnabledState = default!; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _filterEnabledState, "filterEnabledState", "gasFilterOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out var sprite)) return; + + sprite.LayerMapReserveBlank(Layer.FilterEnabled); + var filterEnabledLayer = sprite.LayerMapGet(Layer.FilterEnabled); + sprite.LayerSetState(filterEnabledLayer, _filterEnabledState); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out var sprite)) return; + if (!component.TryGetData(FilterVisuals.VisualState, out FilterVisualState filterVisualState)) return; + + var filterEnabledLayer = sprite.LayerMapGet(Layer.FilterEnabled); + sprite.LayerSetVisible(filterEnabledLayer, filterVisualState.Enabled); + } + + public enum Layer : byte + { + FilterEnabled, + } + } +} diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs index 70bbc7bbb6..8a6cd18f1d 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/GasFilterComponent.cs @@ -148,7 +148,7 @@ namespace Content.Server.GameObjects.Components.Atmos.Piping.Filters private void UpdateAppearance() { - _appearance?.SetData(FilterVisuals.VisualState, new FilterVisualState()); + _appearance?.SetData(FilterVisuals.VisualState, new FilterVisualState(FilterEnabled)); } private void SetPipes() diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs index 8308d30cbb..11d7e9972a 100644 --- a/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs +++ b/Content.Shared/GameObjects/Components/Atmos/SharedFilterComponent.cs @@ -1,3 +1,4 @@ +#nullable enable using System; using Robust.Shared.Serialization; @@ -12,6 +13,11 @@ namespace Content.Shared.GameObjects.Components.Atmos [Serializable, NetSerializable] public class FilterVisualState { + public bool Enabled { get; } + public FilterVisualState(bool enabled) + { + Enabled = enabled; + } } } diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml index fc84458bdc..ce2d6dafd5 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml @@ -9,9 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: scrubber - type: Damageable resistances: metallicResistances - type: Destructible @@ -28,11 +25,11 @@ description: It filters gases. components: - type: Sprite - sprite: Constructible/Atmos/pipe.rsi - state: pipeTJunction2 + sprite: Constructible/Atmos/gasfilter.rsi + state: gasFilter - type: Icon - sprite: Constructible/Atmos/pipe.rsi - state: pipeTJunction2 + sprite: Constructible/Atmos/gasfilter.rsi + state: gasFilter - type: NodeContainer nodes: - !type:PipeNode @@ -48,3 +45,7 @@ inletDirection: South filterOutletDirection: East outletDirection: North + - type: Appearance + visuals: + - type: GasFilterVisualizer + filerEnabledState: gasFilterOn \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml index 31c2f366af..d79302849c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml @@ -39,10 +39,10 @@ inletDirection: West outletDirection: East - type: Sprite - state: pumpPressure2 + state: pumpPressure - type: Icon - state: pumpPressure2 + state: pumpPressure - type: Appearance visuals: - type: PumpVisualizer - pumpEnabledState: pumpPressure2On + pumpEnabledState: pumpPressureOn diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png new file mode 100644 index 0000000000000000000000000000000000000000..0735d1b17b2ab1e3e4befe8da6bce98e915eca3a GIT binary patch literal 825 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 V`_Iz(({BerO+`z&R?#Z_e*v^0u^9jW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json new file mode 100644 index 0000000000..f715b8af46 --- /dev/null +++ b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasFilter", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gasFilterOn", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json index eafa97cacb..5ad04657cb 100644 --- a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate2On", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure2On", "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]]}, {"name": "pumpVolume2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpVolume2On", "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]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGateOn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressureOn", "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]]}, {"name": "pumpVolume", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"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]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpDigitalValve.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpManualValve.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGateOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGate2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPassiveGateOn.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressureOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressureOn.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume.png diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2On.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolumeOn.png similarity index 100% rename from Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolume2On.png rename to Resources/Textures/Constructible/Atmos/pump.rsi/pumpVolumeOn.png