From ba1fd6c5f3decb64d231c3e3b9689187a4152a7a Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 9 Feb 2025 13:13:47 +1100 Subject: [PATCH] Make ReactionResults an array (#34967) * Make ReactionResults an array We're making the dictionaries fixed-size anyway. Alternatively could use a frozendictionary but not sure on the perf difference. Worst case whoever adds another reactionresult makes a minor adjustment * apply conventions --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs | 4 ++-- Content.Server/Atmos/Reactions/PlasmaFireReaction.cs | 6 +++--- Content.Server/Atmos/Reactions/TritiumFireReaction.cs | 6 +++--- Content.Shared/Atmos/GasMixture.cs | 5 ++--- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index a03f27b561..70f91a5dc1 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -178,7 +178,7 @@ namespace Content.Server.Atmos.EntitySystems if (tile.Hotspot.Bypassing) { - tile.Hotspot.Volume = tile.Air.ReactionResults[GasReaction.Fire] * Atmospherics.FireGrowthRate; + tile.Hotspot.Volume = tile.Air.ReactionResults[(byte)GasReaction.Fire] * Atmospherics.FireGrowthRate; tile.Hotspot.Temperature = tile.Air.Temperature; } else @@ -187,7 +187,7 @@ namespace Content.Server.Atmos.EntitySystems affected.Temperature = tile.Hotspot.Temperature; React(affected, tile); tile.Hotspot.Temperature = affected.Temperature; - tile.Hotspot.Volume = affected.ReactionResults[GasReaction.Fire] * Atmospherics.FireGrowthRate; + tile.Hotspot.Volume = affected.ReactionResults[(byte)GasReaction.Fire] * Atmospherics.FireGrowthRate; Merge(tile.Air, affected); } diff --git a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs index 98d567d4ed..b214310da1 100644 --- a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs +++ b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs @@ -15,7 +15,7 @@ namespace Content.Server.Atmos.Reactions var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; var location = holder as TileAtmosphere; - mixture.ReactionResults[GasReaction.Fire] = 0; + mixture.ReactionResults[(byte)GasReaction.Fire] = 0; // More plasma released at higher temperatures. var temperatureScale = 0f; @@ -60,7 +60,7 @@ namespace Content.Server.Atmos.Reactions energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate; energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise - mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate); + mixture.ReactionResults[(byte)GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate); } } @@ -80,7 +80,7 @@ namespace Content.Server.Atmos.Reactions } } - return mixture.ReactionResults[GasReaction.Fire] != 0 ? ReactionResult.Reacting : ReactionResult.NoReaction; + return mixture.ReactionResults[(byte)GasReaction.Fire] != 0 ? ReactionResult.Reacting : ReactionResult.NoReaction; } } } diff --git a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs index 3ad0a4b04d..8b7d4e4872 100644 --- a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs +++ b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs @@ -15,7 +15,7 @@ namespace Content.Server.Atmos.Reactions var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; var location = holder as TileAtmosphere; - mixture.ReactionResults[GasReaction.Fire] = 0f; + mixture.ReactionResults[(byte)GasReaction.Fire] = 0f; var burnedFuel = 0f; var initialTrit = mixture.GetMoles(Gas.Tritium); @@ -45,7 +45,7 @@ namespace Content.Server.Atmos.Reactions // Conservation of mass is important. mixture.AdjustMoles(Gas.WaterVapor, burnedFuel); - mixture.ReactionResults[GasReaction.Fire] += burnedFuel; + mixture.ReactionResults[(byte)GasReaction.Fire] += burnedFuel; } energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise @@ -65,7 +65,7 @@ namespace Content.Server.Atmos.Reactions } } - return mixture.ReactionResults[GasReaction.Fire] != 0 ? ReactionResult.Reacting : ReactionResult.NoReaction; + return mixture.ReactionResults[(byte)GasReaction.Fire] != 0 ? ReactionResult.Reacting : ReactionResult.NoReaction; } } } diff --git a/Content.Shared/Atmos/GasMixture.cs b/Content.Shared/Atmos/GasMixture.cs index deca8faaed..612626d614 100644 --- a/Content.Shared/Atmos/GasMixture.cs +++ b/Content.Shared/Atmos/GasMixture.cs @@ -33,10 +33,9 @@ namespace Content.Shared.Atmos public bool Immutable { get; private set; } [ViewVariables] - public readonly Dictionary ReactionResults = new() + public readonly float[] ReactionResults = { - // We initialize the dictionary here. - { GasReaction.Fire, 0f } + 0f, }; [ViewVariables]