/// If you only want the volume of a single reagent, use <see cref="GetReagentQuantity"/>
/// </summary>
[Pure]
- public FixedPoint2 GetTotalPrototypeQuantity(params string[] prototypes)
+ public FixedPoint2 GetTotalPrototypeQuantity(params ProtoId<ReagentPrototype>[] prototypes)
{
var total = FixedPoint2.Zero;
foreach (var (reagent, quantity) in Contents)
return total;
}
- public FixedPoint2 GetTotalPrototypeQuantity(string id)
+ public FixedPoint2 GetTotalPrototypeQuantity(ProtoId<ReagentPrototype> id)
{
var total = FixedPoint2.Zero;
foreach (var (reagent, quantity) in Contents)
/// <summary>
/// Splits a solution with only the specified reagent prototypes.
/// </summary>
- public Solution SplitSolutionWithOnly(FixedPoint2 toTake, params string[] includedPrototypes)
+ public Solution SplitSolutionWithOnly(FixedPoint2 toTake, params ProtoId<ReagentPrototype>[] includedPrototypes)
{
// First remove the non-included prototypes
List<ReagentQuantity> excluded = new();
ValidateSolution();
}
- public Color GetColorWithout(IPrototypeManager? protoMan, params string[] without)
+ public Color GetColorWithout(IPrototypeManager? protoMan, params ProtoId<ReagentPrototype>[] without)
{
if (Volume == FixedPoint2.Zero)
{
return GetColorWithout(protoMan);
}
- public Color GetColorWithOnly(IPrototypeManager? protoMan, params string[] included)
+ public Color GetColorWithOnly(IPrototypeManager? protoMan, params ProtoId<ReagentPrototype>[] included)
{
if (Volume == FixedPoint2.Zero)
{
args.PushMarkup(Loc.GetString(entity.Comp.LocPhysicalQuality,
("color", colorHex),
("desc", primary.LocalizedPhysicalDescription),
- ("chemCount", solution.Contents.Count) ));
+ ("chemCount", solution.Contents.Count)));
// Push the recognizable reagents
public bool EnsureSolution(
Entity<MetaDataComponent?> entity,
string name,
- [NotNullWhen(true)]out Solution? solution,
+ [NotNullWhen(true)] out Solution? solution,
FixedPoint2 maxVol = default)
{
return EnsureSolution(entity, name, maxVol, null, out _, out solution);
Entity<MetaDataComponent?> entity,
string name,
out bool existed,
- [NotNullWhen(true)]out Solution? solution,
+ [NotNullWhen(true)] out Solution? solution,
FixedPoint2 maxVol = default)
{
return EnsureSolution(entity, name, maxVol, null, out existed, out solution);
}
else
{
- dissolvedSol.RemoveReagent(reagent,amtChange);
+ dissolvedSol.RemoveReagent(reagent, amtChange);
}
UpdateChemicals(dissolvedSolution);
}
public FixedPoint2 GetReagentQuantityFromConcentration(Entity<SolutionComponent> dissolvedSolution,
- FixedPoint2 volume,float concentration)
+ FixedPoint2 volume, float concentration)
{
var dissolvedSol = dissolvedSolution.Comp.Solution;
if (volume == 0
if (effect.EntityEffectGuidebookText(prototype, entSys) is not { } description)
return null;
- var quantity = metabolism == null ? 0f : (double) (effect.MinScale * metabolism);
+ var quantity = metabolism == null ? 0f : (double)(effect.MinScale * metabolism);
return Loc.GetString(
"guidebook-reagent-effect-description",
using System.Linq;
using Content.Shared.Chemistry.Components;
using Content.Shared.FixedPoint;
+using Robust.Shared.Prototypes;
using Content.Shared.Fluids.Components;
+using Content.Shared.Chemistry.Reagent;
namespace Content.Shared.Fluids;
}
- public string[] GetEvaporatingReagents(Solution solution)
+ public ProtoId<ReagentPrototype>[] GetEvaporatingReagents(Solution solution)
{
- List<string> evaporatingReagents = [];
+ List<ProtoId<ReagentPrototype>> evaporatingReagents = [];
foreach (var solProto in solution.GetReagentPrototypes(_prototypeManager).Keys)
{
if (solProto.EvaporationSpeed > FixedPoint2.Zero)
return evaporatingReagents.ToArray();
}
- public string[] GetAbsorbentReagents(Solution solution)
+ public ProtoId<ReagentPrototype>[] GetAbsorbentReagents(Solution solution)
{
- List<string> absorbentReagents = [];
- foreach (var solProto in solution.GetReagentPrototypes(_prototypeManager).Keys)
+ var absorbentReagents = new List<ProtoId<ReagentPrototype>>();
+ foreach (ReagentPrototype solProto in solution.GetReagentPrototypes(_prototypeManager).Keys)
{
if (solProto.Absorbent)
absorbentReagents.Add(solProto.ID);
/// Gets a mapping of evaporating speed of the reagents within a solution.
/// The speed at which a solution evaporates is the average of the speed of all evaporating reagents in it.
/// </summary>
- public Dictionary<string, FixedPoint2> GetEvaporationSpeeds(Solution solution)
+ public Dictionary<ProtoId<ReagentPrototype>, FixedPoint2> GetEvaporationSpeeds(Solution solution)
{
- Dictionary<string, FixedPoint2> evaporatingSpeeds = [];
+ Dictionary<ProtoId<ReagentPrototype>, FixedPoint2> evaporatingSpeeds = [];
foreach (var solProto in solution.GetReagentPrototypes(_prototypeManager).Keys)
{
if (solProto.EvaporationSpeed > FixedPoint2.Zero)
[Dependency] private readonly StepTriggerSystem _stepTrigger = default!;
[Dependency] private readonly TileFrictionController _tile = default!;
- private string[] _standoutReagents = [];
+ private ProtoId<ReagentPrototype>[] _standoutReagents = [];
/// <summary>
/// The lowest threshold to be considered for puddle sprite states as well as slipperiness of a puddle.