using Content.Server.Body.Systems; using Content.Shared.FixedPoint; namespace Content.Server.Body.Components { [RegisterComponent, Access(typeof(StomachSystem))] public sealed class StomachComponent : Component { public float AccumulatedFrameTime; /// /// How fast should this component update, in seconds? /// [DataField("updateInterval")] public float UpdateInterval = 1.0f; /// /// What solution should this stomach push reagents into, on the body? /// [DataField("bodySolutionName")] public string BodySolutionName = BloodstreamComponent.DefaultChemicalsSolutionName; /// /// Initial internal solution storage volume /// [DataField("maxVolume")] public FixedPoint2 InitialMaxVolume { get; private set; } = FixedPoint2.New(50); /// /// Time in seconds between reagents being ingested and them being /// transferred to /// [DataField("digestionDelay")] public float DigestionDelay = 20; /// /// Used to track how long each reagent has been in the stomach /// [ViewVariables] public readonly List ReagentDeltas = new(); /// /// Used to track quantity changes when ingesting & digesting reagents /// public sealed class ReagentDelta { public readonly string ReagentId; public readonly FixedPoint2 Quantity; public float Lifetime { get; private set; } public ReagentDelta(string reagentId, FixedPoint2 quantity) { ReagentId = reagentId; Quantity = quantity; Lifetime = 0.0f; } public void Increment(float delta) => Lifetime += delta; } } }