namespace Content.Server.Atmos;
///
/// Internal Atmospherics class that stores data about a group of s
/// that are excited and need to be processed.
///
/// Excited Groups is an optimization routine executed during LINDA
/// that bunches small groups of active s
/// together and performs equalization processing on the entire group when the group dissolves.
/// Dissolution happens when LINDA operations between the tiles decrease to very low mole deltas.
///
public sealed class ExcitedGroup
{
///
/// Whether this Active Group has been disposed of.
/// Used to make sure we don't perform operations on active groups that
/// we've already dissolved.
///
[ViewVariables]
public bool Disposed = false;
///
/// List of tiles that belong to this excited group.
///
[ViewVariables]
public readonly List Tiles = new(100);
///
/// Cycles before this excited group will be queued for dismantling.
/// Dismantling is the process of equalizing the atmosphere
/// across all tiles in the excited group and removing the group.
///
[ViewVariables]
public int DismantleCooldown = 0;
///
/// Cycles before this excited group will be allowed to break down and deactivate.
/// Breakdown occurs when the excited group is small enough and inactive enough
/// to be safely removed without equalization. Used where the mole deltas across
/// the group are very low but not high enough for an equalization to occur.
///
[ViewVariables]
public int BreakdownCooldown = 0;
}