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>
This commit is contained in:
metalgearsloth
2025-02-09 13:13:47 +11:00
committed by GitHub
parent 01cbe31872
commit ba1fd6c5f3
4 changed files with 10 additions and 11 deletions

View File

@@ -178,7 +178,7 @@ namespace Content.Server.Atmos.EntitySystems
if (tile.Hotspot.Bypassing) 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; tile.Hotspot.Temperature = tile.Air.Temperature;
} }
else else
@@ -187,7 +187,7 @@ namespace Content.Server.Atmos.EntitySystems
affected.Temperature = tile.Hotspot.Temperature; affected.Temperature = tile.Hotspot.Temperature;
React(affected, tile); React(affected, tile);
tile.Hotspot.Temperature = affected.Temperature; 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); Merge(tile.Air, affected);
} }

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Atmos.Reactions
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature; var temperature = mixture.Temperature;
var location = holder as TileAtmosphere; var location = holder as TileAtmosphere;
mixture.ReactionResults[GasReaction.Fire] = 0; mixture.ReactionResults[(byte)GasReaction.Fire] = 0;
// More plasma released at higher temperatures. // More plasma released at higher temperatures.
var temperatureScale = 0f; var temperatureScale = 0f;
@@ -60,7 +60,7 @@ namespace Content.Server.Atmos.Reactions
energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate; energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate;
energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise 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;
} }
} }
} }

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Atmos.Reactions
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature; var temperature = mixture.Temperature;
var location = holder as TileAtmosphere; var location = holder as TileAtmosphere;
mixture.ReactionResults[GasReaction.Fire] = 0f; mixture.ReactionResults[(byte)GasReaction.Fire] = 0f;
var burnedFuel = 0f; var burnedFuel = 0f;
var initialTrit = mixture.GetMoles(Gas.Tritium); var initialTrit = mixture.GetMoles(Gas.Tritium);
@@ -45,7 +45,7 @@ namespace Content.Server.Atmos.Reactions
// Conservation of mass is important. // Conservation of mass is important.
mixture.AdjustMoles(Gas.WaterVapor, burnedFuel); 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 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;
} }
} }
} }

View File

@@ -33,10 +33,9 @@ namespace Content.Shared.Atmos
public bool Immutable { get; private set; } public bool Immutable { get; private set; }
[ViewVariables] [ViewVariables]
public readonly Dictionary<GasReaction, float> ReactionResults = new() public readonly float[] ReactionResults =
{ {
// We initialize the dictionary here. 0f,
{ GasReaction.Fire, 0f }
}; };
[ViewVariables] [ViewVariables]