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;
}