using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Medical.Cryogenics; [RegisterComponent, NetworkedComponent] public sealed partial class CryoPodComponent : Component { /// /// Specifies the name of the atmospherics port to draw gas from. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("port")] public string PortName { get; set; } = "port"; /// /// Specifies the name of the atmospherics port to draw gas from. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("solutionContainerName")] public string SolutionContainerName { get; set; } = "beakerSlot"; /// /// How often (seconds) are chemicals transferred from the beaker to the body? /// [ViewVariables(VVAccess.ReadWrite)] [DataField("beakerTransferTime")] public float BeakerTransferTime = 1f; [ViewVariables(VVAccess.ReadWrite)] [DataField("nextInjectionTime", customTypeSerializer:typeof(TimeOffsetSerializer))] public TimeSpan? NextInjectionTime; /// /// How many units to transfer per tick from the beaker to the mob? /// [ViewVariables(VVAccess.ReadWrite)] [DataField("beakerTransferAmount")] public float BeakerTransferAmount = 1f; /// /// Delay applied when inserting a mob in the pod. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("entryDelay")] public float EntryDelay = 2f; /// /// Delay applied when trying to pry open a locked pod. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("pryDelay")] public float PryDelay = 5f; /// /// Container for mobs inserted in the pod. /// [ViewVariables] public ContainerSlot BodyContainer = default!; /// /// If true, the eject verb will not work on the pod and the user must use a crowbar to pry the pod open. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("locked")] public bool Locked { get; set; } /// /// Causes the pod to be locked without being fixable by messing with wires. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("permaLocked")] public bool PermaLocked { get; set; } [Serializable, NetSerializable] public enum CryoPodVisuals : byte { ContainsEntity, IsOn } }