public ReactionResult React(GasMixture mixture, IGasMixtureHolder holder) { var result = ReactionResult.NoReaction; foreach (var effect in _effects) { result |= effect.React(mixture, holder); } return(result); }
public ReactionResult React(GasMixture mixture, IGasMixtureHolder holder, GridTileLookupSystem gridLookup) { var result = ReactionResult.NoReaction; foreach (var effect in _effects) { result |= effect.React(mixture, holder, gridLookup); } return(result); }
public ReactionResult React(GasMixture mixture, IGasMixtureHolder holder) { var reaction = ReactionResult.NoReaction; var temperature = mixture.Temperature; var energy = GetThermalEnergy(mixture); foreach (var prototype in GasReactions) { if (energy < prototype.MinimumEnergyRequirement || temperature < prototype.MinimumTemperatureRequirement || temperature > prototype.MaximumTemperatureRequirement) { continue; } var doReaction = true; for (var i = 0; i < prototype.MinimumRequirements.Length; i++) { if (i > Atmospherics.TotalNumberOfGases) { throw new IndexOutOfRangeException("Reaction Gas Minimum Requirements Array Prototype exceeds total number of gases!"); } var req = prototype.MinimumRequirements[i]; if (!(mixture.GetMoles(i) < req)) { continue; } doReaction = false; break; } if (!doReaction) { continue; } reaction = prototype.React(mixture, holder, this); if (reaction.HasFlag(ReactionResult.StopReactions)) { break; } } return(reaction); }