From 65408f63d41c8ef16bd845070d23eab270a830db Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sat, 9 Jul 2022 21:59:39 +1200 Subject: [PATCH] Injector sprite fix (#9011) --- Content.Client/SubFloor/SubFloorHideSystem.cs | 18 ++++++++---------- .../SubFloor/SharedSubFloorHideSystem.cs | 5 +++++ .../SubFloor/SubFloorHideComponent.cs | 9 +++++++++ .../Structures/Piping/Atmospherics/unary.yml | 7 ++++++- .../outletinjector.rsi/injector.png | Bin 906 -> 4567 bytes 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Content.Client/SubFloor/SubFloorHideSystem.cs b/Content.Client/SubFloor/SubFloorHideSystem.cs index 81e476b0c4..8f1f505cee 100644 --- a/Content.Client/SubFloor/SubFloorHideSystem.cs +++ b/Content.Client/SubFloor/SubFloorHideSystem.cs @@ -53,16 +53,19 @@ public sealed class SubFloorHideSystem : SharedSubFloorHideSystem } // Is there some layer that is always visible? - if (args.Sprite.LayerMapTryGet(SubfloorLayers.FirstLayer, out var firstLayer)) + var hasVisibleLayer = false; + foreach (var layerKey in component.VisibleLayers) { - var layer = args.Sprite[firstLayer]; + if (!args.Sprite.LayerMapTryGet(layerKey, out var layerIndex)) + continue; + + var layer = args.Sprite[layerIndex]; layer.Visible = true; layer.Color = layer.Color.WithAlpha(1f); - args.Sprite.Visible = true; - return; + hasVisibleLayer = true; } - args.Sprite.Visible = revealed; + args.Sprite.Visible = hasVisibleLayer || revealed; } private void UpdateAll() @@ -73,8 +76,3 @@ public sealed class SubFloorHideSystem : SharedSubFloorHideSystem } } } - -public enum SubfloorLayers : byte -{ - FirstLayer, // always visible. E.g. vent part of a vent.. -} diff --git a/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs b/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs index 527e7b8ad4..77c76bec88 100644 --- a/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs +++ b/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs @@ -184,4 +184,9 @@ namespace Content.Shared.SubFloor Covered, // is there a floor tile over this entity ScannerRevealed, // is this entity revealed by a scanner or some other entity? } + + public enum SubfloorLayers : byte + { + FirstLayer + } } diff --git a/Content.Shared/SubFloor/SubFloorHideComponent.cs b/Content.Shared/SubFloor/SubFloorHideComponent.cs index 585c998a98..b9c581d4e4 100644 --- a/Content.Shared/SubFloor/SubFloorHideComponent.cs +++ b/Content.Shared/SubFloor/SubFloorHideComponent.cs @@ -1,4 +1,6 @@ using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic; namespace Content.Shared.SubFloor { @@ -43,6 +45,13 @@ namespace Content.Shared.SubFloor [DataField("scannerTransparency")] public float ScannerTransparency = 0.8f; + /// + /// Sprite layer keys for the layers that are always visible, even if the entity is below a floor tile. E.g., + /// the vent part of a vent is always visible, even though the piping is hidden. + /// + [DataField("visibleLayers", customTypeSerializer:typeof(CustomHashSetSerializer))] + public HashSet VisibleLayers = new() { SubfloorLayers.FirstLayer }; + /// /// The entities this subfloor is revealed by. /// diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index b12ba516f0..f408df273b 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -158,8 +158,9 @@ layers: - state: pipeHalf sprite: Structures/Piping/Atmospherics/pipe.rsi - map: [ "enum.PipeVisualLayers.Pipe", "enum.SubfloorLayers.FirstLayer" ] + map: [ "enum.PipeVisualLayers.Pipe" ] - state: injector + map: [ "enum.SubfloorLayers.FirstLayer" ] - state: injector-unshaded shader: unshaded map: [ "unshaded" ] @@ -177,6 +178,10 @@ - type: Construction graph: GasUnary node: outletinjector + - type: SubFloorHide + visibleLayers: + - enum.SubfloorLayers.FirstLayer + - unshaded - type: entity parent: BaseMachinePowered diff --git a/Resources/Textures/Structures/Piping/Atmospherics/outletinjector.rsi/injector.png b/Resources/Textures/Structures/Piping/Atmospherics/outletinjector.rsi/injector.png index c2bd54b1df7278b9d31720a9be5e3dac9c5ed68c..0f79b218fd7d4ca7befb7a43a9c12ed00b06a66c 100644 GIT binary patch delta 4555 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 KMNUMnLSTXyCYKrj