diff --git a/Content.Client/GameObjects/Components/LowWallComponent.cs b/Content.Client/GameObjects/Components/LowWallComponent.cs index 3fb8cbf525..0b3c763678 100644 --- a/Content.Client/GameObjects/Components/LowWallComponent.cs +++ b/Content.Client/GameObjects/Components/LowWallComponent.cs @@ -2,9 +2,11 @@ using System.Diagnostics.CodeAnalysis; using System.Diagnostics.Contracts; using Content.Client.GameObjects.Components.IconSmoothing; +using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Maths; +using Robust.Shared.ViewVariables; using static Robust.Client.GameObjects.SpriteComponent; namespace Content.Client.GameObjects.Components @@ -27,20 +29,35 @@ namespace Content.Client.GameObjects.Components public CornerFill LastCornerSW { get; private set; } public CornerFill LastCornerNW { get; private set; } - /// + [ViewVariables] + private IEntity _overlayEntity; + private ISpriteComponent _overlaySprite; + protected override void Startup() { base.Startup(); + _overlayEntity = Owner.EntityManager.SpawnEntity("low_wall_overlay", Owner.Transform.GridPosition); + _overlayEntity.Transform.AttachParent(Owner); + + _overlaySprite = _overlayEntity.GetComponent(); + var overState0 = $"{StateBase}over_0"; - Sprite.LayerMapSet(OverCornerLayers.SE, Sprite.AddLayerState(overState0)); - Sprite.LayerSetDirOffset(OverCornerLayers.SE, DirectionOffset.None); - Sprite.LayerMapSet(OverCornerLayers.NE, Sprite.AddLayerState(overState0)); - Sprite.LayerSetDirOffset(OverCornerLayers.NE, DirectionOffset.CounterClockwise); - Sprite.LayerMapSet(OverCornerLayers.NW, Sprite.AddLayerState(overState0)); - Sprite.LayerSetDirOffset(OverCornerLayers.NW, DirectionOffset.Flip); - Sprite.LayerMapSet(OverCornerLayers.SW, Sprite.AddLayerState(overState0)); - Sprite.LayerSetDirOffset(OverCornerLayers.SW, DirectionOffset.Clockwise); + _overlaySprite.LayerMapSet(OverCornerLayers.SE, _overlaySprite.AddLayerState(overState0)); + _overlaySprite.LayerSetDirOffset(OverCornerLayers.SE, DirectionOffset.None); + _overlaySprite.LayerMapSet(OverCornerLayers.NE, _overlaySprite.AddLayerState(overState0)); + _overlaySprite.LayerSetDirOffset(OverCornerLayers.NE, DirectionOffset.CounterClockwise); + _overlaySprite.LayerMapSet(OverCornerLayers.NW, _overlaySprite.AddLayerState(overState0)); + _overlaySprite.LayerSetDirOffset(OverCornerLayers.NW, DirectionOffset.Flip); + _overlaySprite.LayerMapSet(OverCornerLayers.SW, _overlaySprite.AddLayerState(overState0)); + _overlaySprite.LayerSetDirOffset(OverCornerLayers.SW, DirectionOffset.Clockwise); + } + + protected override void Shutdown() + { + base.Shutdown(); + + _overlayEntity.Delete(); } internal override void CalculateNewSprite() @@ -161,10 +178,10 @@ namespace Content.Client.GameObjects.Components Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}"); Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}"); - Sprite.LayerSetState(OverCornerLayers.NE, $"{StateBase}over_{(int) lowCornerNE}"); - Sprite.LayerSetState(OverCornerLayers.SE, $"{StateBase}over_{(int) lowCornerSE}"); - Sprite.LayerSetState(OverCornerLayers.SW, $"{StateBase}over_{(int) lowCornerSW}"); - Sprite.LayerSetState(OverCornerLayers.NW, $"{StateBase}over_{(int) lowCornerNW}"); + _overlaySprite.LayerSetState(OverCornerLayers.NE, $"{StateBase}over_{(int) lowCornerNE}"); + _overlaySprite.LayerSetState(OverCornerLayers.SE, $"{StateBase}over_{(int) lowCornerSE}"); + _overlaySprite.LayerSetState(OverCornerLayers.SW, $"{StateBase}over_{(int) lowCornerSW}"); + _overlaySprite.LayerSetState(OverCornerLayers.NW, $"{StateBase}over_{(int) lowCornerNW}"); LastCornerNE = cornerNE; LastCornerSE = cornerSE; diff --git a/Resources/Prototypes/Entities/buildings/low_wall.yml b/Resources/Prototypes/Entities/buildings/low_wall.yml index df3bd88594..611bd18ab3 100644 --- a/Resources/Prototypes/Entities/buildings/low_wall.yml +++ b/Resources/Prototypes/Entities/buildings/low_wall.yml @@ -33,3 +33,13 @@ placement: snap: - Wall + +- type: entity + id: low_wall_overlay + name: Low Wall Overlay + abstract: true + components: + - type: Sprite + color: "#71797a" + drawdepth: WallMountedItems + sprite: Buildings/low_wall.rsi