// SPDX-FileCopyrightText: 2024 deltanedas <39013340+deltanedas@users.noreply.github.com> // SPDX-FileCopyrightText: 2024 deltanedas <@deltanedas:kde.org> // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> // // SPDX-License-Identifier: AGPL-3.0-or-later using Content.Shared._Shitmed.Autodoc.Systems; using Content.Shared.DeviceLinking; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared._Shitmed.Autodoc.Components; /// /// God component for autodoc. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedAutodocSystem))] [AutoGenerateComponentState] public sealed partial class AutodocComponent : Component { [DataField] public ProtoId OperatingTablePort = "OperatingTableReceiver"; /// /// The linked operating table. /// Autodocs require a linked operating table to be used. /// [DataField, AutoNetworkedField] public EntityUid? OperatingTable; [DataField, AutoNetworkedField] public List Programs = new(); /// /// Requires that the patient be asleep for forced vulnerability. /// Can be disabled to operate on awake patients. /// [DataField, AutoNetworkedField] public bool RequireSleeping = true; /// /// The hand to hold surgery-specific items in (organs etc). /// After an operation this gets put back into storage. /// [DataField] public string ItemSlot = "surgery_specific"; /// /// How long to wait between processing program steps while active. /// [DataField] public TimeSpan UpdateDelay = TimeSpan.FromSeconds(0.5); /// /// The maximum number of programs this autodoc can have. /// [DataField] public int MaxPrograms = 16; /// /// How long a program title is allowed to be. /// public int MaxProgramTitleLength = 20; /// /// The maximum number of steps a program can have. /// [DataField] public int MaxProgramSteps = 16; } [Serializable, NetSerializable] public enum AutodocWireStatus : byte { PowerIndicator, SafetyIndicator }