using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Serialization; using Content.Server.NodeContainer.NodeGroups; namespace Content.Server.Atmos.Components { /// /// Internal Atmos class. Use to interact with atmos instead. /// [RegisterComponent, Serializable, Access(typeof(AtmosphereSystem), typeof(GasTileOverlaySystem), typeof(AtmosDebugOverlaySystem))] public sealed partial class GridAtmosphereComponent : Component { [ViewVariables(VVAccess.ReadWrite)] public bool Simulated { get; set; } = true; [ViewVariables] public bool ProcessingPaused { get; set; } = false; [ViewVariables] public float Timer { get; set; } = 0f; [ViewVariables] public int UpdateCounter { get; set; } = 1; // DO NOT SET TO ZERO BY DEFAULT! It will break roundstart atmos... [ViewVariables] [IncludeDataField(customTypeSerializer:typeof(TileAtmosCollectionSerializer))] public Dictionary Tiles = new(1000); [ViewVariables] public HashSet MapTiles = new(1000); [ViewVariables] public readonly HashSet ActiveTiles = new(1000); [ViewVariables] public int ActiveTilesCount => ActiveTiles.Count; [ViewVariables] public readonly HashSet ExcitedGroups = new(1000); [ViewVariables] public int ExcitedGroupCount => ExcitedGroups.Count; [ViewVariables] public readonly HashSet HotspotTiles = new(1000); [ViewVariables] public int HotspotTilesCount => HotspotTiles.Count; [ViewVariables] public readonly HashSet SuperconductivityTiles = new(1000); [ViewVariables] public int SuperconductivityTilesCount => SuperconductivityTiles.Count; [ViewVariables] public HashSet HighPressureDelta = new(1000); [ViewVariables] public int HighPressureDeltaCount => HighPressureDelta.Count; [ViewVariables] public readonly HashSet PipeNets = new(); [ViewVariables] public readonly HashSet> AtmosDevices = new(); [ViewVariables] public readonly Queue CurrentRunTiles = new(); [ViewVariables] public readonly Queue CurrentRunExcitedGroups = new(); [ViewVariables] public readonly Queue CurrentRunPipeNet = new(); [ViewVariables] public readonly Queue> CurrentRunAtmosDevices = new(); [ViewVariables] public readonly HashSet InvalidatedCoords = new(1000); [ViewVariables] public readonly Queue CurrentRunInvalidatedTiles = new(); [ViewVariables] public readonly List PossiblyDisconnectedTiles = new(100); [ViewVariables] public int InvalidatedCoordsCount => InvalidatedCoords.Count; [ViewVariables] public long EqualizationQueueCycleControl { get; set; } [ViewVariables] public AtmosphereProcessingState State { get; set; } = AtmosphereProcessingState.Revalidate; } }