using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Materials; using Content.Shared.Temperature.Components; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Components; /// /// Holds the composition of an entity made from reagents and its reagent temperature. /// If the entity is used to represent a collection of reagents inside of a container such as a beaker, syringe, bloodstream, food, or similar the entity is tracked by a on the container and has a tracking which container it's in. /// /// /// Once reagents and materials have been merged this component should be depricated in favor of using a combination of and . May require minor reworks to both. /// [RegisterComponent, NetworkedComponent] public sealed partial class SolutionComponent : Component { public const string DefaultSolutionId = "solution"; /// /// The name of this solution. This value should *never* change once the solution is initialized. /// [DataField] [Access(typeof(SharedSolutionContainerSystem))] public string Id = DefaultSolutionId; /// /// The reagents the entity is composed of and their temperature. /// [DataField, AlwaysPushInheritance] public Solution Solution = new(); } /// /// We manually network the component state as it raises one less event and therefore is better performance wise. /// [Serializable, NetSerializable] public sealed class SolutionComponentState(string id, Solution solution) : ComponentState { public string Id = id; public Solution Solution = solution; }