From c904a7e9c4882d8f4d8cd83e2a912d1430ffa56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Aguilera=20Puerto?= Date: Mon, 12 Oct 2020 12:54:41 +0200 Subject: [PATCH] Fix error when trying to change layer that doesn't exist in SpriteChange and SpriteStateChange. --- Content.Server/Construction/Completions/SpriteChange.cs | 4 ++++ .../Construction/Completions/SpriteStateChange.cs | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Content.Server/Construction/Completions/SpriteChange.cs b/Content.Server/Construction/Completions/SpriteChange.cs index 490eec0a73..0f01863761 100644 --- a/Content.Server/Construction/Completions/SpriteChange.cs +++ b/Content.Server/Construction/Completions/SpriteChange.cs @@ -1,4 +1,5 @@ #nullable enable +using System; using System.Threading.Tasks; using Content.Shared.Construction; using JetBrains.Annotations; @@ -27,6 +28,9 @@ namespace Content.Server.Construction.Completions if (!entity.TryGetComponent(out SpriteComponent? sprite)) return; + // That layer doesn't exist, we do nothing. + if (sprite.LayerCount <= Layer) return; + sprite.LayerSetSprite(Layer, SpriteSpecifier); } } diff --git a/Content.Server/Construction/Completions/SpriteStateChange.cs b/Content.Server/Construction/Completions/SpriteStateChange.cs index 060dd76e2e..30be743f19 100644 --- a/Content.Server/Construction/Completions/SpriteStateChange.cs +++ b/Content.Server/Construction/Completions/SpriteStateChange.cs @@ -22,17 +22,15 @@ namespace Content.Server.Construction.Completions public int Layer { get; private set; } = 0; public string? State { get; private set; } = string.Empty; - public async Task StepCompleted(IEntity entity, IEntity user) - { - await PerformAction(entity, user); - } - public async Task PerformAction(IEntity entity, IEntity? user) { if (entity.Deleted || string.IsNullOrEmpty(State)) return; if (!entity.TryGetComponent(out SpriteComponent? sprite)) return; + // That layer doesn't exist, we do nothing. + if (sprite.LayerCount <= Layer) return; + sprite.LayerSetState(Layer, State); } }