private void UpdateGenerator()
{
- foreach (var (active, gen) in EntityQuery<GeneratingAnomalyGeneratorComponent, AnomalyGeneratorComponent>())
+ var query = EntityQueryEnumerator<GeneratingAnomalyGeneratorComponent, AnomalyGeneratorComponent>();
+ while (query.MoveNext(out var ent, out var active, out var gen))
{
- var ent = active.Owner;
-
if (Timing.CurTime < active.EndTime)
continue;
active.AudioStream?.Stop();
private void OnScannerAnomalyShutdown(ref AnomalyShutdownEvent args)
{
- foreach (var component in EntityQuery<AnomalyScannerComponent>())
+ var query = EntityQueryEnumerator<AnomalyScannerComponent>();
+ while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
- _ui.TryCloseAll(component.Owner, AnomalyScannerUiKey.Key);
+ _ui.TryCloseAll(uid, AnomalyScannerUiKey.Key);
}
}
private void OnScannerAnomalySeverityChanged(ref AnomalySeverityChangedEvent args)
{
- foreach (var component in EntityQuery<AnomalyScannerComponent>())
+ var query = EntityQueryEnumerator<AnomalyScannerComponent>();
+ while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
- UpdateScannerUi(component.Owner, component);
+ UpdateScannerUi(uid, component);
}
}
private void OnScannerAnomalyStabilityChanged(ref AnomalyStabilityChangedEvent args)
{
- foreach (var component in EntityQuery<AnomalyScannerComponent>())
+ var query = EntityQueryEnumerator<AnomalyScannerComponent>();
+ while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
- UpdateScannerUi(component.Owner, component);
+ UpdateScannerUi(uid, component);
}
}
private void OnScannerAnomalyHealthChanged(ref AnomalyHealthChangedEvent args)
{
- foreach (var component in EntityQuery<AnomalyScannerComponent>())
+ var query = EntityQueryEnumerator<AnomalyScannerComponent>();
+ while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
- UpdateScannerUi(component.Owner, component);
+ UpdateScannerUi(uid, component);
}
}
private void OnVesselAnomalyShutdown(ref AnomalyShutdownEvent args)
{
- foreach (var component in EntityQuery<AnomalyVesselComponent>())
+ var query = EntityQueryEnumerator<AnomalyVesselComponent>();
+ while (query.MoveNext(out var ent, out var component))
{
- var ent = component.Owner;
-
if (args.Anomaly != component.Anomaly)
continue;
private void OnVesselAnomalyStabilityChanged(ref AnomalyStabilityChangedEvent args)
{
- foreach (var component in EntityQuery<AnomalyVesselComponent>())
+ var query = EntityQueryEnumerator<AnomalyVesselComponent>();
+ while (query.MoveNext(out var ent, out var component))
{
- var ent = component.Owner;
if (args.Anomaly != component.Anomaly)
continue;
private void UpdateVessels()
{
- foreach (var vessel in EntityQuery<AnomalyVesselComponent>())
+ var query = EntityQueryEnumerator<AnomalyVesselComponent>();
+ while (query.MoveNext(out var vesselEnt, out var vessel))
{
- var vesselEnt = vessel.Owner;
if (vessel.Anomaly is not { } anomUid)
continue;
using Content.Server.Radio.EntitySystems;
using Content.Shared.Anomaly;
using Content.Shared.Anomaly.Components;
-using Content.Shared.DoAfter;
using Robust.Server.GameObjects;
using Robust.Shared.Configuration;
using Robust.Shared.Physics.Events;
/// <summary>
/// This is used for projectiles which affect anomalies through colliding with them.
/// </summary>
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalousParticleComponent : Component
{
/// <summary>
-using Content.Shared.Materials;
+using Content.Shared.Anomaly;
+using Content.Shared.Materials;
using Content.Shared.Radio;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
/// This is used for a machine that is able to generate
/// anomalies randomly on the station.
/// </summary>
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalyGeneratorComponent : Component
{
/// <summary>
-using System.Threading;
+using Content.Shared.Anomaly;
using Robust.Shared.Audio;
namespace Content.Server.Anomaly.Components;
/// This is used for scanning anomalies and
/// displaying information about them in the ui
/// </summary>
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalyScannerComponent : Component
{
/// <summary>
-using Content.Shared.Construction.Prototypes;
+using Content.Shared.Anomaly;
+using Content.Shared.Construction.Prototypes;
using Robust.Shared.Audio;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
/// they generate points for the selected server based on
/// the anomaly's stability and severity.
/// </summary>
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalyVesselComponent : Component
{
/// <summary>
-using Robust.Shared.Audio;
+using Content.Shared.Anomaly;
+using Robust.Shared.Audio;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Server.Anomaly.Components;
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class GeneratingAnomalyGeneratorComponent : Component
{
/// <summary>
{
foreach (var ind in _atmosphere.GetAdjacentTiles(grid.Value, indices))
{
- var mix = _atmosphere.GetTileMixture(grid, map, indices, true);
+ var mix = _atmosphere.GetTileMixture(grid, map, ind, true);
if (mix is not { })
continue;
{
base.Update(frameTime);
- foreach (var (pyro, anom, xform) in EntityQuery<PyroclasticAnomalyComponent, AnomalyComponent, TransformComponent>())
+ var query = EntityQueryEnumerator<PyroclasticAnomalyComponent, AnomalyComponent, TransformComponent>();
+ while (query.MoveNext(out var ent, out var pyro, out var anom, out var xform))
{
- var ent = pyro.Owner;
-
var grid = xform.GridUid;
var map = xform.MapUid;
var indices = _xform.GetGridOrMapTilePosition(ent, xform);
///
/// Anomalies and their related components were designed here: https://hackmd.io/@ss14-design/r1sQbkJOs
/// </summary>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalyComponent : Component
{
/// <summary>
/// <summary>
/// This component tracks anomalies that are currently pulsing
/// </summary>
-[RegisterComponent]
+[RegisterComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalyPulsingComponent : Component
{
/// <summary>
/// <summary>
/// Tracks anomalies going supercritical
/// </summary>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAnomalySystem))]
public sealed class AnomalySupercriticalComponent : Component
{
/// <summary>
namespace Content.Shared.Anomaly.Effects.Components;
-[RegisterComponent, NetworkedComponent]
-[Access(typeof(BluespaceAnomalySystem))]
+[RegisterComponent, NetworkedComponent, Access(typeof(BluespaceAnomalySystem))]
public sealed class BluespaceAnomalyComponent : Component
{
/// <summary>
namespace Content.Shared.Anomaly.Effects.Components;
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedGravityAnomalySystem))]
public sealed class GravityAnomalyComponent : Component
{
/// <summary>
{
base.Update(frameTime);
- foreach (var anomaly in EntityQuery<AnomalyComponent>())
+ var anomalyQuery = EntityQueryEnumerator<AnomalyComponent>();
+ while (anomalyQuery.MoveNext(out var ent, out var anomaly))
{
- var ent = anomaly.Owner;
-
// if the stability is under the death threshold,
// update it every second to start killing it slowly.
if (anomaly.Stability < anomaly.DecayThreshold)
}
}
- foreach (var pulse in EntityQuery<AnomalyPulsingComponent>())
+ var pulseQuery = EntityQueryEnumerator<AnomalyPulsingComponent>();
+ while (pulseQuery.MoveNext(out var ent, out var pulse))
{
- var ent = pulse.Owner;
-
if (Timing.CurTime > pulse.EndTime)
{
Appearance.SetData(ent, AnomalyVisuals.IsPulsing, false);
}
}
- foreach (var (super, anom) in EntityQuery<AnomalySupercriticalComponent, AnomalyComponent>())
+ var supercriticalQuery = EntityQueryEnumerator<AnomalySupercriticalComponent, AnomalyComponent>();
+ while (supercriticalQuery.MoveNext(out var ent, out var super, out var anom))
{
- var ent = anom.Owner;
-
if (Timing.CurTime <= super.EndTime)
continue;
DoAnomalySupercriticalEvent(ent, anom);