Fix low wall layering.

This makes windows look great.
This commit is contained in:
Pieter-Jan Briers
2019-12-24 13:40:13 +01:00
parent 6b99946fd8
commit 26c8995dad
2 changed files with 40 additions and 13 deletions

View File

@@ -2,9 +2,11 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using Content.Client.GameObjects.Components.IconSmoothing; using Content.Client.GameObjects.Components.IconSmoothing;
using Robust.Client.Interfaces.GameObjects.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.ViewVariables;
using static Robust.Client.GameObjects.SpriteComponent; using static Robust.Client.GameObjects.SpriteComponent;
namespace Content.Client.GameObjects.Components namespace Content.Client.GameObjects.Components
@@ -27,20 +29,35 @@ namespace Content.Client.GameObjects.Components
public CornerFill LastCornerSW { get; private set; } public CornerFill LastCornerSW { get; private set; }
public CornerFill LastCornerNW { get; private set; } public CornerFill LastCornerNW { get; private set; }
/// <inheritdoc /> [ViewVariables]
private IEntity _overlayEntity;
private ISpriteComponent _overlaySprite;
protected override void Startup() protected override void Startup()
{ {
base.Startup(); base.Startup();
_overlayEntity = Owner.EntityManager.SpawnEntity("low_wall_overlay", Owner.Transform.GridPosition);
_overlayEntity.Transform.AttachParent(Owner);
_overlaySprite = _overlayEntity.GetComponent<ISpriteComponent>();
var overState0 = $"{StateBase}over_0"; var overState0 = $"{StateBase}over_0";
Sprite.LayerMapSet(OverCornerLayers.SE, Sprite.AddLayerState(overState0)); _overlaySprite.LayerMapSet(OverCornerLayers.SE, _overlaySprite.AddLayerState(overState0));
Sprite.LayerSetDirOffset(OverCornerLayers.SE, DirectionOffset.None); _overlaySprite.LayerSetDirOffset(OverCornerLayers.SE, DirectionOffset.None);
Sprite.LayerMapSet(OverCornerLayers.NE, Sprite.AddLayerState(overState0)); _overlaySprite.LayerMapSet(OverCornerLayers.NE, _overlaySprite.AddLayerState(overState0));
Sprite.LayerSetDirOffset(OverCornerLayers.NE, DirectionOffset.CounterClockwise); _overlaySprite.LayerSetDirOffset(OverCornerLayers.NE, DirectionOffset.CounterClockwise);
Sprite.LayerMapSet(OverCornerLayers.NW, Sprite.AddLayerState(overState0)); _overlaySprite.LayerMapSet(OverCornerLayers.NW, _overlaySprite.AddLayerState(overState0));
Sprite.LayerSetDirOffset(OverCornerLayers.NW, DirectionOffset.Flip); _overlaySprite.LayerSetDirOffset(OverCornerLayers.NW, DirectionOffset.Flip);
Sprite.LayerMapSet(OverCornerLayers.SW, Sprite.AddLayerState(overState0)); _overlaySprite.LayerMapSet(OverCornerLayers.SW, _overlaySprite.AddLayerState(overState0));
Sprite.LayerSetDirOffset(OverCornerLayers.SW, DirectionOffset.Clockwise); _overlaySprite.LayerSetDirOffset(OverCornerLayers.SW, DirectionOffset.Clockwise);
}
protected override void Shutdown()
{
base.Shutdown();
_overlayEntity.Delete();
} }
internal override void CalculateNewSprite() internal override void CalculateNewSprite()
@@ -161,10 +178,10 @@ namespace Content.Client.GameObjects.Components
Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}"); Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}");
Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}"); Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}");
Sprite.LayerSetState(OverCornerLayers.NE, $"{StateBase}over_{(int) lowCornerNE}"); _overlaySprite.LayerSetState(OverCornerLayers.NE, $"{StateBase}over_{(int) lowCornerNE}");
Sprite.LayerSetState(OverCornerLayers.SE, $"{StateBase}over_{(int) lowCornerSE}"); _overlaySprite.LayerSetState(OverCornerLayers.SE, $"{StateBase}over_{(int) lowCornerSE}");
Sprite.LayerSetState(OverCornerLayers.SW, $"{StateBase}over_{(int) lowCornerSW}"); _overlaySprite.LayerSetState(OverCornerLayers.SW, $"{StateBase}over_{(int) lowCornerSW}");
Sprite.LayerSetState(OverCornerLayers.NW, $"{StateBase}over_{(int) lowCornerNW}"); _overlaySprite.LayerSetState(OverCornerLayers.NW, $"{StateBase}over_{(int) lowCornerNW}");
LastCornerNE = cornerNE; LastCornerNE = cornerNE;
LastCornerSE = cornerSE; LastCornerSE = cornerSE;

View File

@@ -33,3 +33,13 @@
placement: placement:
snap: snap:
- Wall - 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