diff --git a/Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs b/Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs index 67698402b9..21b96cbee2 100644 --- a/Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs @@ -9,6 +9,7 @@ using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.Utility; using Robust.Shared.IoC; +using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Utility; @@ -143,30 +144,26 @@ namespace Content.Client.GameObjects.EntitySystems return _tileData.ContainsKey(gridId); } - public (Texture, Color color)[] GetOverlays(GridId gridIndex, Vector2i indices) + public IEnumerable<(Texture, Color)> GetOverlays(GridId gridIndex, Vector2i indices) { if (!_tileData.TryGetValue(gridIndex, out var chunks)) - return Array.Empty<(Texture, Color)>(); + yield break; var chunkIndex = GetGasChunkIndices(indices); if (!chunks.TryGetValue(chunkIndex, out var chunk)) - return Array.Empty<(Texture, Color)>(); + yield break; var overlays = chunk.GetData(indices); if (overlays.Gas == null) - return Array.Empty<(Texture, Color)>(); + yield break; var fire = overlays.FireState != 0; - var length = overlays.Gas.Length + (fire ? 1 : 0); - var list = new (Texture, Color)[length]; - - for (var i = 0; i < overlays.Gas.Length; i++) + foreach (var gasData in overlays.Gas) { - var gasData = overlays.Gas[i]; var frames = _frames[gasData.Index]; - list[i] = (frames[_frameCounter[gasData.Index]], Color.White.WithAlpha(gasData.Opacity)); + yield return (frames[_frameCounter[gasData.Index]], Color.White.WithAlpha(gasData.Opacity)); } if (fire) @@ -174,10 +171,8 @@ namespace Content.Client.GameObjects.EntitySystems var state = overlays.FireState - 1; var frames = _fireFrames[state]; // TODO ATMOS Set color depending on temperature - list[length - 1] = (frames[_fireFrameCounter[state]], Color.White); + yield return (frames[_fireFrameCounter[state]], Color.White); } - - return list; } public override void FrameUpdate(float frameTime) diff --git a/Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs b/Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs index 3ab6d1ce4a..4d998f0552 100644 --- a/Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs @@ -933,16 +933,4 @@ namespace Content.Server.GameObjects.Components.Atmos // TODO ATMOS } } - - public struct IntermediateTileAtmosphere - { - public readonly Vector2i Indices; - public readonly GasMixture GasMixture; - - public IntermediateTileAtmosphere(Vector2i indices, GasMixture gasMixture) - { - Indices = indices; - GasMixture = gasMixture; - } - } } diff --git a/Content.Shared/GameObjects/EntitySystems/Atmos/SharedGasTileOverlaySystem.cs b/Content.Shared/GameObjects/EntitySystems/Atmos/SharedGasTileOverlaySystem.cs index e7c44303a6..ea0dd1d150 100644 --- a/Content.Shared/GameObjects/EntitySystems/Atmos/SharedGasTileOverlaySystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/Atmos/SharedGasTileOverlaySystem.cs @@ -53,7 +53,7 @@ namespace Content.Shared.GameObjects.EntitySystems.Atmos { FireState = fireState; FireTemperature = fireTemperature; - Gas = gas ?? Array.Empty(); + Gas = gas; Array.Sort(Gas, (a, b) => a.Index.CompareTo(b.Index));