]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Adds a new `AtmosphereSystem.GetTileMixture()` override (#21804)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Tue, 28 Nov 2023 23:03:44 +0000 (18:03 -0500)
committerGitHub <noreply@github.com>
Tue, 28 Nov 2023 23:03:44 +0000 (10:03 +1100)
14 files changed:
Content.Server/Anomaly/Effects/GasProducerAnomalySystem.cs
Content.Server/Anomaly/Effects/TempAffectingAnomalySystem.cs
Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs
Content.Server/Atmos/Miasma/RottingSystem.cs
Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs
Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs
Content.Server/Atmos/Portable/PortableScrubberSystem.cs
Content.Server/Cloning/CloningSystem.cs
Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs
Content.Server/RatKing/RatKingSystem.cs
Content.Server/Temperature/Systems/TemperatureSystem.cs
Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs
Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs
Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs

index 6c5057edab0cd1554446b395998bee443b86a302..a5e42be54007b5d72f1cc03ee90d6f9b64b85557 100644 (file)
@@ -65,7 +65,7 @@ public sealed class GasProducerAnomalySystem : EntitySystem
         if (tilerefs.Length == 0)
             return;
 
-        var mixture = _atmosphere.GetTileMixture(xform.GridUid, xform.MapUid, _xform.GetGridOrMapTilePosition(uid, xform), true);
+        var mixture = _atmosphere.GetTileMixture((uid, xform), grid, true);
         if (mixture != null)
         {
             mixture.AdjustMoles(gas, mols);
index f65612f98ae6091cbcc1dbc459be38483cefc51f..869d451f70d64e2e93462c114cb470fa53d375c7 100644 (file)
@@ -22,7 +22,7 @@ public sealed class TempAffectingAnomalySystem : EntitySystem
         {
             var grid = xform.GridUid;
             var map = xform.MapUid;
-            var indices = _xform.GetGridOrMapTilePosition(ent, xform);
+            var indices = _xform.GetGridTilePositionOrDefault((ent, xform));
             var mixture = _atmosphere.GetTileMixture(grid, map, indices, true);
 
             if (mixture is { })
index 00ed05449cbe9ff991f5640ea4ab7a267bc9c5f3..310e602336a1f8d31b1e1aa45d15978b70089e6a 100644 (file)
@@ -127,9 +127,18 @@ public partial class AtmosphereSystem
         return ev.Mixtures;
     }
 
-    public GasMixture? GetTileMixture(EntityUid? gridUid, EntityUid? mapUid, Vector2i tile, bool excite = false)
+    public GasMixture? GetTileMixture (Entity<TransformComponent?> entity, MapGridComponent? grid = null, bool excite = false)
     {
-        var ev = new GetTileMixtureMethodEvent(gridUid, mapUid, tile, excite);
+        if (!Resolve(entity.Owner, ref entity.Comp))
+            return null;
+
+        var indices = _transformSystem.GetGridTilePositionOrDefault(entity);
+        return GetTileMixture(entity.Comp.GridUid, entity.Comp.MapUid, indices, excite);
+    }
+
+    public GasMixture? GetTileMixture(EntityUid? gridUid, EntityUid? mapUid, Vector2i gridTile, bool excite = false)
+    {
+        var ev = new GetTileMixtureMethodEvent(gridUid, mapUid, gridTile, excite);
 
         // If we've been passed a grid, try to let it handle it.
         if(gridUid.HasValue)
index 676c9ec6e99bff90702b41e66249b1dd14ab0b7f..698faa93c161f059b3fd6fe1e8152b21ecb6ac51 100644 (file)
@@ -118,9 +118,7 @@ public sealed class RottingSystem : EntitySystem
             return;
 
         var molsToDump = perishable.MolsPerSecondPerUnitMass * physics.FixturesMass * (float) component.TotalRotTime.TotalSeconds;
-        var transform = Transform(uid);
-        var indices = _transform.GetGridOrMapTilePosition(uid, transform);
-        var tileMix = _atmosphere.GetTileMixture(transform.GridUid, transform.MapUid, indices, true);
+        var tileMix = _atmosphere.GetTileMixture(uid, excite: true);
         tileMix?.AdjustMoles(Gas.Miasma, molsToDump);
     }
 
@@ -214,8 +212,7 @@ public sealed class RottingSystem : EntitySystem
             // We need a way to get the mass of the mob alone without armor etc in the future
             // or just remove the mass mechanics altogether because they aren't good.
             var molRate = perishable.MolsPerSecondPerUnitMass * (float) rotting.RotUpdateRate.TotalSeconds;
-            var indices = _transform.GetGridOrMapTilePosition(uid);
-            var tileMix = _atmosphere.GetTileMixture(xform.GridUid, null, indices, true);
+            var tileMix = _atmosphere.GetTileMixture(uid, excite: true);
             tileMix?.AdjustMoles(Gas.Miasma, molRate * physics.FixturesMass);
         }
     }
index 66bd28eaac7b11a90a1434dc332e18250d2c0801..3cfbda27af329e4db4a4c34d4c9d6dde7ab8f041 100644 (file)
@@ -110,9 +110,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems
             // Some of the gas from the mixture leaks when overclocked.
             if (pump.Overclocked)
             {
-                var transform = Transform(uid);
-                var indices = _transformSystem.GetGridOrMapTilePosition(uid, transform);
-                var tile = _atmosphereSystem.GetTileMixture(transform.GridUid, null, indices, true);
+                var tile = _atmosphereSystem.GetTileMixture(uid, excite: true);
 
                 if (tile != null)
                 {
index f7f13a4d33ca3f071a27c3e99742a1d8445cf380..d63b521a35f8777de6cef594f036b7ccc73c1b38 100644 (file)
@@ -67,8 +67,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems
             if (xform.GridUid == null)
                 return;
 
-            var position = _transformSystem.GetGridOrMapTilePosition(uid, xform);
-
+            var position = _transformSystem.GetGridTilePositionOrDefault((uid,xform));
             var environment = _atmosphereSystem.GetTileMixture(xform.GridUid, xform.MapUid, position, true);
 
             Scrub(timeDelta, scrubber, environment, outlet);
index a5e4793056a6ff4e5ec0c244c971724c9fc1aa33..17e2ae591f9422bd9c586e6fe1d14081f709b030 100644 (file)
@@ -79,8 +79,7 @@ namespace Content.Server.Atmos.Portable
             if (xform.GridUid == null)
                 return;
 
-            var position = _transformSystem.GetGridOrMapTilePosition(uid, xform);
-
+            var position = _transformSystem.GetGridTilePositionOrDefault((uid,xform));
             var environment = _atmosphereSystem.GetTileMixture(xform.GridUid, xform.MapUid, position, true);
 
             var running = Scrub(timeDelta, component, environment);
index 8bfd6250efce3798c01760e625ac7eb9d5d0db13..f8395c1080a479d12ee72e217ef147038ea0540b 100644 (file)
@@ -339,8 +339,7 @@ namespace Content.Server.Cloning
             clonePod.CloningProgress = 0f;
             UpdateStatus(uid, CloningPodStatus.Idle, clonePod);
             var transform = Transform(uid);
-            var indices = _transformSystem.GetGridOrMapTilePosition(uid);
-
+            var indices = _transformSystem.GetGridTilePositionOrDefault((uid, transform));
             var tileMix = _atmosphereSystem.GetTileMixture(transform.GridUid, null, indices, true);
 
             if (HasComp<EmaggedComponent>(uid))
index 0e56d0fb184c5a791550e5bfa2efaea5f0f78ad1..5408a1f521ae361d44b3ffe850d58ed52dec40b8 100644 (file)
@@ -576,7 +576,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem
     private void HandleAir(EntityUid uid, DisposalUnitComponent component, TransformComponent xform)
     {
         var air = component.Air;
-        var indices = _transformSystem.GetGridOrMapTilePosition(uid, xform);
+        var indices = _transformSystem.GetGridTilePositionOrDefault((uid, xform));
 
         if (_atmosSystem.GetTileMixture(xform.GridUid, xform.MapUid, indices, true) is { Temperature: > 0f } environment)
         {
index 3cf6d48751f709b65a7baf9d38be95b482be216e..b678652ab283148f9a167eb3cd656dbf3579160c 100644 (file)
@@ -88,10 +88,7 @@ namespace Content.Server.RatKing
             _hunger.ModifyHunger(uid, -component.HungerPerDomainUse, hunger);
 
             _popup.PopupEntity(Loc.GetString("rat-king-domain-popup"), uid);
-
-            var transform = Transform(uid);
-            var indices = _xform.GetGridOrMapTilePosition(uid, transform);
-            var tileMix = _atmos.GetTileMixture(transform.GridUid, transform.MapUid, indices, true);
+            var tileMix = _atmos.GetTileMixture(uid, excite: true);
             tileMix?.AdjustMoles(Gas.Miasma, component.MolesMiasmaPerDomain);
         }
 
index 646f60eb636c0e27831cd24d008f1a1030606010..5de609d24bacd4692fc8909856077f94381bc256 100644 (file)
@@ -149,8 +149,7 @@ public sealed class TemperatureSystem : EntitySystem
         if (transform.MapUid == null)
             return;
 
-        var position = _transform.GetGridOrMapTilePosition(uid, transform);
-
+        var position = _transform.GetGridTilePositionOrDefault((uid, transform));
         var temperatureDelta = args.GasMixture.Temperature - temperature.CurrentTemperature;
         var tileHeatCapacity =
             _atmosphere.GetTileHeatCapacity(transform.GridUid, transform.MapUid.Value, position);
index a0c4971d8eb0bf111e3198ea32ce2d3cc0f52ff4..96f1dc37835e89d82415976276f6e04eae18ef52 100644 (file)
@@ -37,9 +37,7 @@ public sealed class ArtifactGasTriggerSystem : EntitySystem
             if (trigger.ActivationGas == null)
                 continue;
 
-            var environment = _atmosphereSystem.GetTileMixture(transform.GridUid, transform.MapUid,
-                _transformSystem.GetGridOrMapTilePosition(uid, transform));
-
+            var environment = _atmosphereSystem.GetTileMixture((uid, transform));
             if (environment == null)
                 continue;
 
index 6c62f5d3424eef6e25343e4be36d09a236e58830..33d1a43c1257dd503fa3b9fd33b9de6a650bcd1f 100644 (file)
@@ -28,8 +28,7 @@ public sealed class ArtifactHeatTriggerSystem : EntitySystem
         var query = EntityQueryEnumerator<ArtifactHeatTriggerComponent, TransformComponent, ArtifactComponent>();
         while (query.MoveNext(out var uid, out var trigger, out var transform, out var artifact))
         {
-            var environment = _atmosphereSystem.GetTileMixture(transform.GridUid, transform.MapUid,
-                _transformSystem.GetGridOrMapTilePosition(uid, transform));
+            var environment = _atmosphereSystem.GetTileMixture((uid, transform));
             if (environment == null)
                 continue;
 
index cf730d8b49fe4c55fca7e501873c7a505668b3d4..4388756cce003d7058ee8b7c2edadc2da19e7360 100644 (file)
@@ -21,9 +21,7 @@ public sealed class ArtifactPressureTriggerSystem : EntitySystem
         var query = EntityQueryEnumerator<ArtifactPressureTriggerComponent, ArtifactComponent, TransformComponent>();
         while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform))
         {
-            var environment = _atmosphereSystem.GetTileMixture(transform.GridUid, transform.MapUid,
-                _transformSystem.GetGridOrMapTilePosition(uid, transform));
-
+            var environment = _atmosphereSystem.GetTileMixture((uid, transform));
             if (environment == null)
                 continue;