]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Avoid RGB controller error spam (#16440)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Sun, 14 May 2023 20:18:14 +0000 (08:18 +1200)
committerGitHub <noreply@github.com>
Sun, 14 May 2023 20:18:14 +0000 (16:18 -0400)
Content.Client/Light/RgbLightControllerSystem.cs

index 2f29c9d405786ff2a5622a711b39e5f61dff0423..ac51e820f0115c6fddd895b26b6b8a7db9853bc3 100644 (file)
@@ -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<RgbLightControllerComponent, MapLightComponent>())
+            foreach (var (map, rgb) in EntityQuery<MapLightComponent, RgbLightControllerComponent>())
             {
                 var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb);
                 map.AmbientLightColor = color;