using Robust.Shared.Map;
namespace Content.Shared.Atmos;
///
/// Raised on entities that have an AtmosExposedComponent when AtmosphereSystem updates.
/// Exposure events are raised by AtmosphereSystem at some fixed interval.
///
/// The coordinates of the entity that is being exposed.
/// The gas mixture that the entity is exposed to.
/// The xform of the entity that is being exposed.
[ByRefEvent]
public readonly struct AtmosExposedUpdateEvent(
EntityCoordinates coordinates,
GasMixture mixture,
TransformComponent transform)
{
public readonly EntityCoordinates Coordinates = coordinates;
public readonly GasMixture GasMixture = mixture;
public readonly TransformComponent Transform = transform;
}
///
/// Event that tries to query the mixture a certain entity is exposed to.
/// This is mainly intended for use with entities inside of containers.
/// This event is not raised for entities that are directly parented to the grid.
///
[ByRefEvent]
public struct AtmosExposedGetAirEvent
{
///
/// The entity we want to query this for.
///
public readonly Entity Entity;
///
/// The mixture that the entity is exposed to. Output parameter.
///
public GasMixture? Gas = null;
///
/// Whether to excite the mixture, if possible.
///
public readonly bool Excite = false;
///
/// Whether this event has been handled or not.
/// Check this before changing anything.
///
public bool Handled = false;
public AtmosExposedGetAirEvent(Entity entity, bool excite = false)
{
Entity = entity;
Excite = excite;
}
}