From f9f724b4afb1be0135291dcede4463e5460d9300 Mon Sep 17 00:00:00 2001 From: py01 <60152240+collinlunn@users.noreply.github.com> Date: Tue, 19 Jan 2021 07:26:16 -0600 Subject: [PATCH] Piping sprites cleanup (#3022) * Moves piping visualizers to own folder * Pump visualizer update * Siphon and vent visualiser only set enabled visibility * PipeVisualizer cleanup * Replaces off vent/scrubber sprites * Gas filter sprite update * Revert "Gas filter sprite update" This reverts commit 676e5d55e1157a229b1445eeea53a5c8032dbbb5. * Rotates gas filter sprites to match T-junction pipe directions * Removes pipes from scruber and vent state * Makes sprite components use layers * disabled sprite netsync on piping entities * piping meta.json cleanup Co-authored-by: py01 --- .../Atmos/{ => Piping}/GasFilterVisualizer.cs | 1 - .../Atmos/{ => Piping}/PipeVisualizer.cs | 9 ++- .../Atmos/{ => Piping}/PumpVisualizer.cs | 8 +- .../Atmos/Piping/SiphonVisualizer.cs | 51 +++++++++++++ .../Components/Atmos/Piping/VentVisualizer.cs | 51 +++++++++++++ .../Components/Atmos/SiphonVisualizer.cs | 72 ------------------ .../Components/Atmos/VentVisualizer.cs | 72 ------------------ .../Constructible/Ground/gascanisterports.yml | 13 ++-- .../Constructible/Ground/gasfilters.yml | 22 +++--- .../Entities/Constructible/Ground/pipes.yml | 2 +- .../Entities/Constructible/Ground/pumps.yml | 19 +++-- .../Constructible/Ground/scrubbers.yml | 22 +++--- .../Entities/Constructible/Ground/vents.yml | 22 +++--- .../Atmos/gascanisterport.rsi/meta.json | 16 +++- .../Atmos/gasfilter.rsi/gasFilter.png | Bin 825 -> 5791 bytes .../Atmos/gasfilter.rsi/gasFilterOn.png | Bin 6420 -> 16173 bytes .../Atmos/gasfilter.rsi/meta.json | 21 ++++- .../Constructible/Atmos/pipe.rsi/meta.json | 71 ++--------------- .../Atmos/pipeitems.rsi/meta.json | 47 ------------ .../Atmos/pipeitems.rsi/scrubber.png | Bin 649 -> 0 bytes .../Atmos/pipeitems.rsi/vent.png | Bin 1106 -> 0 bytes .../Constructible/Atmos/pump.rsi/meta.json | 46 ++++++++++- .../Atmos/pump.rsi/pumpPressure.png | Bin 1303 -> 5258 bytes .../Atmos/scrubber.rsi/meta.json | 32 +------- .../Atmos/scrubber.rsi/scrubOff.png | Bin 767 -> 6169 bytes .../Constructible/Atmos/vent.rsi/meta.json | 12 +-- .../Constructible/Atmos/vent.rsi/ventOff.png | Bin 612 -> 6506 bytes 27 files changed, 251 insertions(+), 358 deletions(-) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/GasFilterVisualizer.cs (98%) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/PipeVisualizer.cs (89%) rename Content.Client/GameObjects/Components/Atmos/{ => Piping}/PumpVisualizer.cs (85%) create mode 100644 Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs create mode 100644 Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs delete mode 100644 Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs delete mode 100644 Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png delete mode 100644 Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png diff --git a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs similarity index 98% rename from Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs index 9f9aa09c64..cc99c6c827 100644 --- a/Content.Client/GameObjects/Components/Atmos/GasFilterVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/GasFilterVisualizer.cs @@ -5,7 +5,6 @@ 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 diff --git a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs similarity index 89% rename from Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs index 0ff952ce6a..b0f3de2c2a 100644 --- a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/PipeVisualizer.cs @@ -10,6 +10,7 @@ using Robust.Shared.GameObjects.Components.Renderable; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Log; +using Robust.Shared.Serialization; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; @@ -18,14 +19,18 @@ namespace Content.Client.GameObjects.Components.Atmos [UsedImplicitly] public class PipeVisualizer : AppearanceVisualizer { + private string _rsiString; + private RSI _pipeRSI; public override void LoadData(YamlMappingNode node) { base.LoadData(node); - var rsiString = node.GetNode("pipeRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _rsiString, "rsiString", "Constructible/Atmos/pipe.rsi"); + + var rsiPath = SharedSpriteComponent.TextureRoot / _rsiString; try { var resourceCache = IoCManager.Resolve(); diff --git a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs similarity index 85% rename from Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs rename to Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs index 2f4f38ccd6..e3ce6d930a 100644 --- a/Content.Client/GameObjects/Components/Atmos/PumpVisualizer.cs +++ b/Content.Client/GameObjects/Components/Atmos/Piping/PumpVisualizer.cs @@ -1,9 +1,9 @@ -using Content.Shared.GameObjects.Components.Atmos; +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.Utility; +using Robust.Shared.Serialization; using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Atmos @@ -16,7 +16,9 @@ namespace Content.Client.GameObjects.Components.Atmos public override void LoadData(YamlMappingNode node) { base.LoadData(node); - _pumpEnabledState = node.GetNode("pumpEnabledState").ToString(); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _pumpEnabledState, "pumpEnabledState", "pumpPressureOn"); } public override void InitializeEntity(IEntity entity) diff --git a/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs new file mode 100644 index 0000000000..965810bf59 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/Piping/SiphonVisualizer.cs @@ -0,0 +1,51 @@ +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.Components.Atmos; +using YamlDotNet.RepresentationModel; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class SiphonVisualizer : AppearanceVisualizer + { + private string _siphonOnState; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _siphonOnState, "siphonOnState", "scrubOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; + + sprite.LayerMapReserveBlank(Layer.SiphonEnabled); + var layer = sprite.LayerMapGet(Layer.SiphonEnabled); + sprite.LayerSetState(layer, _siphonOnState); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; + if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return; + + var layer = sprite.LayerMapGet(Layer.SiphonEnabled); + sprite.LayerSetVisible(layer, siphonVisualState.SiphonEnabled); + } + + private enum Layer : byte + { + SiphonEnabled, + } + } +} diff --git a/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs new file mode 100644 index 0000000000..7a9cc36e10 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/Piping/VentVisualizer.cs @@ -0,0 +1,51 @@ +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.Components.Atmos; +using YamlDotNet.RepresentationModel; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class VentVisualizer : AppearanceVisualizer + { + private string _ventOnstate; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var serializer = YamlObjectSerializer.NewReader(node); + serializer.DataField(ref _ventOnstate, "ventOnState", "ventOn"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + + if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; + + sprite.LayerMapReserveBlank(Layer.VentEnabled); + var layer = sprite.LayerMapGet(Layer.VentEnabled); + sprite.LayerSetState(layer, _ventOnstate); + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; + if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return; + + var layer = sprite.LayerMapGet(Layer.VentEnabled); + sprite.LayerSetVisible(layer, ventVisualState.VentEnabled); + } + + private enum Layer : byte + { + VentEnabled, + } + } +} diff --git a/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs deleted file mode 100644 index 8dcee9a7b3..0000000000 --- a/Content.Client/GameObjects/Components/Atmos/SiphonVisualizer.cs +++ /dev/null @@ -1,72 +0,0 @@ -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.Interfaces.GameObjects.Components; -using Robust.Client.Interfaces.ResourceManagement; -using Robust.Client.ResourceManagement; -using Robust.Shared.GameObjects.Components.Renderable; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.Utility; -using System; -using Content.Shared.GameObjects.Components.Atmos; -using YamlDotNet.RepresentationModel; -using Robust.Shared.Interfaces.GameObjects; - -namespace Content.Client.GameObjects.Components.Atmos -{ - [UsedImplicitly] - public class SiphonVisualizer : AppearanceVisualizer - { - private RSI _siphonRSI; - - public override void LoadData(YamlMappingNode node) - { - base.LoadData(node); - - var rsiString = node.GetNode("siphonRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; - try - { - var resourceCache = IoCManager.Resolve(); - var resource = resourceCache.GetResource(rsiPath); - _siphonRSI = resource.RSI; - } - catch (Exception e) - { - Logger.ErrorS("go.siphonvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e); - } - } - - public override void InitializeEntity(IEntity entity) - { - base.InitializeEntity(entity); - if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; - sprite.LayerMapReserveBlank(Layer.SiphonBase); - var pipeBaseLayer = sprite.LayerMapGet(Layer.SiphonBase); - sprite.LayerSetRSI(pipeBaseLayer, _siphonRSI); - sprite.LayerSetVisible(pipeBaseLayer, true); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; - if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return; - - var siphonBaseState = "scrub"; - siphonBaseState += siphonVisualState.SiphonEnabled ? "On" : "Off"; - - var baseSiphonLayer = sprite.LayerMapGet(Layer.SiphonBase); - sprite.LayerSetRSI(baseSiphonLayer, _siphonRSI); - sprite.LayerSetState(baseSiphonLayer, siphonBaseState); - sprite.LayerSetVisible(baseSiphonLayer, true); - } - - private enum Layer : byte - { - SiphonBase, - } - } -} diff --git a/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs deleted file mode 100644 index aee70602d8..0000000000 --- a/Content.Client/GameObjects/Components/Atmos/VentVisualizer.cs +++ /dev/null @@ -1,72 +0,0 @@ -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.Interfaces.GameObjects.Components; -using Robust.Client.Interfaces.ResourceManagement; -using Robust.Client.ResourceManagement; -using Robust.Shared.GameObjects.Components.Renderable; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.Utility; -using System; -using Content.Shared.GameObjects.Components.Atmos; -using YamlDotNet.RepresentationModel; -using Robust.Shared.Interfaces.GameObjects; - -namespace Content.Client.GameObjects.Components.Atmos -{ - [UsedImplicitly] - public class VentVisualizer : AppearanceVisualizer - { - private RSI _ventRSI; - - public override void LoadData(YamlMappingNode node) - { - base.LoadData(node); - - var rsiString = node.GetNode("ventRSI").ToString(); - var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; - try - { - var resourceCache = IoCManager.Resolve(); - var resource = resourceCache.GetResource(rsiPath); - _ventRSI = resource.RSI; - } - catch (Exception e) - { - Logger.ErrorS("go.ventvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e); - } - } - - public override void InitializeEntity(IEntity entity) - { - base.InitializeEntity(entity); - if (!entity.TryGetComponent(out ISpriteComponent sprite)) return; - sprite.LayerMapReserveBlank(Layer.VentBase); - var pipeBaseLayer = sprite.LayerMapGet(Layer.VentBase); - sprite.LayerSetRSI(pipeBaseLayer, _ventRSI); - sprite.LayerSetVisible(pipeBaseLayer, true); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return; - if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return; - - var ventBaseState = "vent"; - ventBaseState += ventVisualState.VentEnabled ? "On" : "Off"; - - var baseVentLayer = sprite.LayerMapGet(Layer.VentBase); - sprite.LayerSetRSI(baseVentLayer, _ventRSI); - sprite.LayerSetState(baseVentLayer, ventBaseState); - sprite.LayerSetVisible(baseVentLayer, true); - } - - private enum Layer : byte - { - VentBase, - } - } -} diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml index e23edfc1e3..52fbfd854c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gascanisterports.yml @@ -10,15 +10,12 @@ - type: SnapGrid offset: Center - type: Sprite + netsync: false sprite: Constructible/Atmos/gascanisterport.rsi - state: gasCanisterPort - - type: Icon - sprite: Constructible/Atmos/gascanisterport.rsi - state: gasCanisterPort - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: gasCanisterPort - type: Damageable - type: Destructible thresholds: diff --git a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml index ce2d6dafd5..19a2f0e1cb 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/gasfilters.yml @@ -17,19 +17,23 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/gasfilter.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeTJunction + - state: gasFilter + - type: Appearance + visuals: + - type: GasFilterVisualizer + - type: entity parent: GasFilterBase id: GasFilter name: Gas Filter description: It filters gases. components: - - type: Sprite - sprite: Constructible/Atmos/gasfilter.rsi - state: gasFilter - - type: Icon - sprite: Constructible/Atmos/gasfilter.rsi - state: gasFilter - type: NodeContainer nodes: - !type:PipeNode @@ -45,7 +49,3 @@ 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/pipes.yml b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml index 952ca8cce9..1d0732e4d3 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml @@ -19,10 +19,10 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: Sprite + netsync: false - type: Appearance visuals: - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - type: Icon sprite: Constructible/Atmos/pipe.rsi diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml index d79302849c..fc5f3d712c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pumps.yml @@ -18,9 +18,15 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: Sprite + netsync: false sprite: Constructible/Atmos/pump.rsi - - type: Icon - sprite: Constructible/Atmos/pump.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeStraight + - state: pumpPressure + - type: Appearance + visuals: + - type: PumpVisualizer - type: entity parent: PumpBase @@ -38,11 +44,4 @@ - type: PressurePump inletDirection: West outletDirection: East - - type: Sprite - state: pumpPressure - - type: Icon - state: pumpPressure - - type: Appearance - visuals: - - type: PumpVisualizer - pumpEnabledState: pumpPressureOn + \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml b/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml index 9a6858382f..f83102c2b7 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/scrubbers.yml @@ -9,16 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: scrubber - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - - type: SiphonVisualizer - siphonRSI: Constructible/Atmos/scrubber.rsi - type: Damageable resistances: metallicResistances - type: Destructible @@ -27,7 +17,17 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/scrubber.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: scrubOff + - type: Appearance + visuals: + - type: SiphonVisualizer + - type: entity parent: ScrubberBase id: Scrubber diff --git a/Resources/Prototypes/Entities/Constructible/Ground/vents.yml b/Resources/Prototypes/Entities/Constructible/Ground/vents.yml index 030275ec7c..08c981107a 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/vents.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/vents.yml @@ -9,16 +9,6 @@ - type: Physics - type: SnapGrid offset: Center - - - type: Sprite - sprite: Constructible/Atmos/pipeitems.rsi - state: vent - - type: Appearance - visuals: - - type: PipeVisualizer - pipeRSI: Constructible/Atmos/pipe.rsi - - type: VentVisualizer - ventRSI: Constructible/Atmos/vent.rsi - type: Damageable resistances: metallicResistances - type: Destructible @@ -27,7 +17,17 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - + - type: Sprite + netsync: false + sprite: Constructible/Atmos/vent.rsi + layers: + - sprite: Constructible/Atmos/pipe.rsi + state: pipeHalf + - state: ventOff + - type: Appearance + visuals: + - type: VentVisualizer + - type: entity parent: VentBase id: Vent diff --git a/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json index 6e45e0d979..6cbbd9f2e8 100644 --- a/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/gascanisterport.rsi/meta.json @@ -1 +1,15 @@ -{"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": "gasCanisterPort", "directions": 1, "delays": [[1.0]]}]} \ 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":"gasCanisterPort", + "directions":1 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilter.png index 0735d1b17b2ab1e3e4befe8da6bce98e915eca3a..2c65982213274a32ad23c03ba31aa5b00e03be1c 100644 GIT binary patch literal 5791 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 delta 803 zcmV+;1Kj+dEx87eBYy(`Nkl>pq$JGQ_Wx@At3~Qps#9bX3(RhpVkAZ0f)n}WPXVr`o90wS7^0b z;dZ+<|F73;T(8$&Lzl}%XzS7TI}d%||Jv{OS`8h-;c(CrVSjG>e`E#D=d(5Ao6Tl$ znYrvs1yB{#WlTrru-_{H0BpBgX<8h|D2f7gT?^Asr<1CBC4Kf)=-5{ZpsMKK=O@al z>O3FQa2@+$5MY-iV2laN=-U5n(x5a=JO774U{aM4)Ok@`hGHZDW2`Z}OA;KjOy~tu zK%GBkS*I-~7=H;sh5^jlc>pM@s^j*uVW5MS0AUaaRc4H#tg6|EfK8MFc%Ij|To?qM zj;3ikyB7dIp1{AHp~FGB3Pe!^0L`QW{J7ksI!}mJ0-6)@JlCp2DL|g*h~v03&YrFF z{F@iGS%lUcz|XYL)_LH2GNvB@D2hU>F6~u-ce6)Let)tJP+3(dtE!o=WV=%y<7Mzs z$R`Mi(aU3;y_ADBHp0JwLxKDQg| zl5?XK9}osX<7#0LfHBtTD8&v?K03Cxg(wC&EX zut9sw1K;Cb)KNa44qEX6v<&eENQ7gS-94uO1%Dg+fH;nuI@@;1)A;xRKA#HhIY6c^ ziJ;173f=Sb_y1*8-FX5%r#zF!2LShhQ@mH$q^|4cZBq;Y(H4RJrhIP|A3&W`rS;{L zVJ$vjYWi-Vd9N6PkpS)8m+dh>H%0=qUG0@S4_Jy1m>Qd3mOL*VA7BF)A0SI`@c})& h(;Tt5!{Jyq{{j8BLrl`1S#|&b002ovPDHLkV1l}OdAk4r diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/gasFilterOn.png index 9688ee0b37b0109486db27759e2c79a282696592..891eface878691c8b320b85da128b36823b53629 100644 GIT binary patch literal 16173 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 V`_Iz(({BerO+`z&R?#Z_e*v^0u^9jW diff --git a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json index f715b8af46..c65ad1d7e1 100644 --- a/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/gasfilter.rsi/meta.json @@ -1 +1,20 @@ -{"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 +{ + "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 + }, + { + "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/pipe.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json index 7b7c971c8d..d9f1869ab8 100644 --- a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json @@ -9,84 +9,23 @@ "states":[ { "name":"pipeTJunction", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeHalf", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeBend", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 }, { "name":"pipeFourway", - "directions":1, - "delays":[ - [ - 1.0 - ] - ] + "directions":1 }, { "name":"pipeStraight", - "directions":4, - "delays":[ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "directions":4 } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json deleted file mode 100644 index e395e59a0f..0000000000 --- a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/meta.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "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": "scrubber", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "vent", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - } - ] -} diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/scrubber.png deleted file mode 100644 index 4a5d1d9d9e3455a4b6b0d7340ec54a686fee4560..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)R9JLGWpiV4 zX>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3KBSIJu}aDJiu`L03VEi!&v&s2C_}$igNKs4FKwiAG+c?2h9Kg0b)r+K~z|U?Uvh$gfI+-Ydsq^)i!N?{}V_MGh{k+=9=F|oRxk*T zh#cU1i6RGb9t?O#@Xn*i`F{@~2ELQaJ&GI%f^{)QX9MIhN?alH7`=_wM~*`HB{$$0 z#^9}IKkHo*qQsRU&n|(9w}G)I^A%Tk@CmK=&N|Pb0vz}iX9vUivF^I~m&pX~x%>p; z9Ejh7_&bn)iQ-z2SEIZisI%kPeY@#drH*wftjk@`E7}ZGClVNkUM5htx{(R+>=Ow* z_LwSHTY+=E({UVh(+}?Xvmd0B=e4S<;(p+g+2^o2jZs~XbA=gC_XA3%FKtWLHJXub z2SA(gbi7kC|7l;RUSCZ2)4FFo6G$UigrU7o&~)9hl}_+32lH5;tNoRWVh+S_;n@#< jJ%s&0i96C`|JQy14suv+{o8JP00000NkvXXu0mjfa$p!K diff --git a/Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png b/Resources/Textures/Constructible/Atmos/pipeitems.rsi/vent.png deleted file mode 100644 index f639ab114d45a9967007bc7e3f6073323ce15985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmV-Y1g-mtP)vxaydwnWR=ThU-hh|0P%PnJ3Bk5)oSQ;Iv9;c+;y#`0P~2)2QQrLrtLzi)1CxJCXOKcy6@ zR0{2O+u$lF; z3fo^YOmoL7_&tZf*KG<)DR%evXC{|LFburK&2b)vEI>lgXgp@8kOV zdhN~_xeU%`vzG0z4~Ih#LbwklR}IfO;BPPt1INe5I6pr}tJT8g)z2?N)?z<4|k z+K!chOMqA`hS6w*VzKD!Qetfp zHBED#+nCC?f`|_Yi+`#309~J)%YEIZPWt`F&zb-8>7PMAu=s#5`CWYhP18`ndjzEv z0GQJH-D4p40%7wn6kvMH*-Eme^YySm6hD(UXiqL)X;=t@Ur3x_p-^D<7VYjFHn>iN zSdmJlkj-YT_xJai=iP310|0DydNdj#9*;woWvHr(hlhvIZ4)9uyWNIqnz*>Q05FN{ ztW+va{$Mabxm-r4(*Xc98VyvdRb(>$Zvf(}*OwEzGB07*qoM6N<$f|z6pTmS$7 diff --git a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json index 5ad04657cb..8f00e4796d 100644 --- a/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/pump.rsi/meta.json @@ -1 +1,45 @@ -{"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 +{ + "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 + }, + { + "name":"pumpManualValve", + "directions":4 + }, + { + "name":"pumpPassiveGate", + "directions":4 + }, + { + "name":"pumpPassiveGateOn", + "directions":4 + }, + { + "name":"pumpPressure", + "directions":4 + }, + { + "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 + }, + { + "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/pumpPressure.png b/Resources/Textures/Constructible/Atmos/pump.rsi/pumpPressure.png index 7401c6bfd261806d81437362fa416d4e98c9dde1..8903bc856494bc09fcbca8b79ba7ac1de14bb100 100644 GIT binary patch literal 5258 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 Q2mk;807*qoM6N<$f-spcUjP6A delta 1284 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 RJn+wORgh7Yu9Gwg{x9Bn1k3;c literal 767 zcmVR6!QBm`Qb3|ehdpt+nh z+(3Z?heK{F)WOviE@1r#T4adcM&9w>g*bnkN-vBgC$NM8psK$fcB? zynd`$Ej3Ch7PSFjQ5%#}td^Skv7#(Xf*?Rj>GSf{0-B~F%Q8>Cs11|p9BVD((GY;~ zXo$6z$#l-5HeN)QWzT|ow17O%H))#UoFfcF;`kq{KhHkVPZZ>Zmsp?+cIo30dPKuky0Kc;KdR|QACowV!aLl z`1zM#vDW$w^b_UDS4)jChU=SKKD@s`YfTu2^m?x_Ci*%70A*RClmg)4{?1zr&`%T( z_jmLYg)xRjZCKR5d6$F`lx4Zsffq|q6vbIpRRlpm+qM{E{Mz-+t*`lNseLd3j4`xr zOArK9Rkim@-swOTMgCIRB93E(5Z;Z+bk2wO7mPxR8v@91uLaNpj} x18JJRI1f}+#s4x7{96e8cN5VGC!Fxj@fX&mfot!0*Ny-H002ovPDHLkV1m4Lc^&`& diff --git a/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json b/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json index b5dbb04a19..0346b40ada 100644 --- a/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json +++ b/Resources/Textures/Constructible/Atmos/vent.rsi/meta.json @@ -9,20 +9,12 @@ "states":[ { "name":"ventOff", - "directions":1, - "delays":[ [ 1.0 ] ] + "directions":4 }, { "name":"ventOn", "directions":1, - "delays":[ - [ - 0.08, - 0.08, - 0.08, - 0.08 - ] - ] + "delays":[ [ 0.08, 0.08, 0.08, 0.08 ] ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/vent.rsi/ventOff.png b/Resources/Textures/Constructible/Atmos/vent.rsi/ventOff.png index e8e469dc4b685f7ecdff3a39a1a3fe0baf8f20d1..bda0e1482652bcde93ccda7737ad0d20716d4587 100644 GIT binary patch literal 6506 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 Q?EnA(07*qoM6N<$g5XL$r2qf` literal 612 zcmV-q0-ODbP)6H0@K80(r5j{WSdgeCiLjSqu_&PpDnUi;2k1q56ngh82p+|YAHYkMke0NB zl#19x_mG4rLDNpq<;w0zlLO>) zv!pZG$hc4d$8k_f#ZIQxsMk(Vg?L=6|sMOH_-EP-&K(FfB?Freeq)T z{p*>u7dvev`;(3Wpie=k?INWloyi7VIG-r9u$cF*UDu^iuQ8L7OdClo%c4{&jStXn zp8@D|0q|_z+ANd1eT%hs?|Jy(eqi?nY%epXTLkr z{>KK;4)|AEscy5eUP4Mqxw6~WE8^^bB!FQYpwu4+I{RH7JzfG}VKL9v=1~pkI?y$s z9Wac8;{n*VO?77vfcd!_eEhIOuh--A*Kc0T_g)X6?|!rO500S_BG3o)>cixBK?rgD zM&$2=t1n*