From 7065341171b65a6ab0c321a5c009c2a98ec1c21a Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 15 May 2023 08:18:14 +1200 Subject: [PATCH] Avoid RGB controller error spam (#16440) --- Content.Client/Light/RgbLightControllerSystem.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Content.Client/Light/RgbLightControllerSystem.cs b/Content.Client/Light/RgbLightControllerSystem.cs index 2f29c9d405..ac51e820f0 100644 --- a/Content.Client/Light/RgbLightControllerSystem.cs +++ b/Content.Client/Light/RgbLightControllerSystem.cs @@ -99,6 +99,7 @@ namespace Content.Client.Light rgb.HolderLayers.Add(key); } } + private void OnHandleState(EntityUid uid, RgbLightControllerComponent rgb, ref ComponentHandleState args) { if (args.Current is not RgbLightControllerState state) @@ -176,9 +177,10 @@ namespace Content.Client.Light if (rgb.Layers != null) { - foreach (var layer in rgb.Layers) + foreach (var index in rgb.Layers) { - sprite.LayerSetColor(layer, color); + if (sprite.TryGetLayer(index, out var layer)) + layer.Color = color; } } @@ -188,11 +190,12 @@ namespace Content.Client.Light foreach (var layer in rgb.HolderLayers) { - holderSprite.LayerSetColor(layer, color); + if (holderSprite.LayerMapTryGet(layer, out var index)) + holderSprite.LayerSetColor(index, color); } } - foreach (var (rgb, map) in EntityQuery()) + foreach (var (map, rgb) in EntityQuery()) { var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb); map.AmbientLightColor = color; -- 2.51.2