TileMixtureEnumerator.cs 678 B

123456789101112131415161718192021222324252627282930
  1. using System.Diagnostics.CodeAnalysis;
  2. using Content.Shared.Atmos;
  3. namespace Content.Server.Atmos;
  4. public struct TileMixtureEnumerator
  5. {
  6. public readonly TileAtmosphere?[] Tiles;
  7. public int Index = 0;
  8. public static readonly TileMixtureEnumerator Empty = new(Array.Empty<TileAtmosphere>());
  9. internal TileMixtureEnumerator(TileAtmosphere?[] tiles)
  10. {
  11. Tiles = tiles;
  12. }
  13. public bool MoveNext([NotNullWhen(true)] out GasMixture? mix)
  14. {
  15. while (Index < Tiles.Length)
  16. {
  17. mix = Tiles[Index++]?.Air;
  18. if (mix != null)
  19. return true;
  20. }
  21. mix = null;
  22. return false;
  23. }
  24. }