using System.Collections.Generic; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; namespace Content.Server.Atmos { public interface IGridAtmosphereComponent : IComponent, IEnumerable { /// /// Number of times has been called. /// int UpdateCounter { get; } /// /// How many tiles have high pressure delta. /// int HighPressureDeltaCount { get; } /// /// Control variable for equalization. /// long EqualizationQueueCycleControl { get; set; } /// /// Attemps to pry a tile. /// /// void PryTile(MapIndices indices); /// /// Burns a tile. /// /// void BurnTile(MapIndices gridIndices); /// /// Invalidates a coordinate to be revalidated again. /// Use this after changing a tile's gas contents, or when the tile becomes space, etc. /// /// void Invalidate(MapIndices indices); /// /// Adds an active tile so it becomes processed every update until it becomes inactive. /// Also makes the tile excited. /// /// void AddActiveTile(TileAtmosphere tile); /// /// Removes an active tile and disposes of its . /// Use with caution. /// /// void RemoveActiveTile(TileAtmosphere tile); /// /// Marks a tile as having a hotspot so it can be processed. /// /// void AddHotspotTile(TileAtmosphere tile); /// /// Removes a tile from the hotspot processing list. /// /// void RemoveHotspotTile(TileAtmosphere tile); /// /// Marks a tile has having high pressure differences that need to be equalized. /// /// void AddHighPressureDelta(TileAtmosphere tile); /// /// Returns whether the tile in question is marked as having high pressure differences or not. /// /// /// bool HasHighPressureDelta(TileAtmosphere tile); /// /// Adds a excited group to be processed. /// /// void AddExcitedGroup(ExcitedGroup excitedGroup); /// /// Removes an excited group. /// /// void RemoveExcitedGroup(ExcitedGroup excitedGroup); /// /// Returns a tile. /// /// /// TileAtmosphere GetTile(MapIndices indices); /// /// Returns a tile. /// /// /// TileAtmosphere GetTile(GridCoordinates coordinates); /// /// Returns if the tile in question is air-blocked. /// This could be due to a wall, an airlock, etc. /// Also see AirtightComponent. /// /// /// bool IsAirBlocked(MapIndices indices); /// /// Returns if the tile in question is space. /// /// /// bool IsSpace(MapIndices indices); /// /// Returns the volume in liters for a number of cells/tiles. /// /// /// float GetVolumeForCells(int cellCount); void Update(float frameTime); } }