using Content.Server.Atmos.EntitySystems;
using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
///
/// This handles activation upon certain pressure thresholds.
///
public sealed class ArtifactPressureTriggerSystem : EntitySystem
{
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly ArtifactSystem _artifactSystem = default!;
public override void Update(float frameTime)
{
base.Update(frameTime);
List> toUpdate = new();
var query = EntityQueryEnumerator();
while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform))
{
var environment = _atmosphereSystem.GetTileMixture((uid, transform));
if (environment == null)
continue;
var pressure = environment.Pressure;
if (pressure >= trigger.MaxPressureThreshold || pressure <= trigger.MinPressureThreshold)
toUpdate.Add((uid, artifact));
}
foreach (var a in toUpdate)
{
_artifactSystem.TryActivateArtifact(a, null, a);
}
}
}