using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Fluids; /// /// For entities that can clean up puddles /// [RegisterComponent, NetworkedComponent] public sealed class AbsorbentComponent : Component { // TODO: Predicted solutions my beloved. public float Progress; public const string SolutionName = "absorbed"; [DataField("pickupAmount")] public FixedPoint2 PickupAmount = FixedPoint2.New(10); /// /// When using this tool on an empty floor tile, leave this much reagent as a new puddle. /// [DataField("residueAmount")] public FixedPoint2 ResidueAmount = FixedPoint2.New(10); // Should be higher than MopLowerLimit /// /// To leave behind a wet floor, this tool will be unable to take from puddles with a volume less than this /// amount. This limit is ignored if the target puddle does not evaporate. /// [DataField("lowerLimit")] public FixedPoint2 LowerLimit = FixedPoint2.New(5); [DataField("pickupSound")] public SoundSpecifier PickupSound = new SoundPathSpecifier("/Audio/Effects/Fluids/slosh.ogg"); [DataField("transferSound")] public SoundSpecifier TransferSound = new SoundPathSpecifier("/Audio/Effects/Fluids/watersplash.ogg"); /// /// Quantity of reagent that this mop can pick up per second. Determines the length of the do-after. /// [DataField("speed")] public float Speed = 10; /// /// How many entities can this tool interact with at once? /// [DataField("maxEntities")] public int MaxInteractingEntities = 1; /// /// What entities is this tool interacting with right now? /// [ViewVariables] public HashSet InteractingEntities = new(); }