using Content.Shared.Containers.ItemSlots; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations; namespace Content.Shared.CartridgeLoader; [RegisterComponent, NetworkedComponent] public sealed class CartridgeLoaderComponent : Component { public const string CartridgeSlotId = "Cartridge-Slot"; [DataField("cartridgeSlot")] public ItemSlot CartridgeSlot = new(); /// /// List of programs that come preinstalled with this cartridge loader /// [DataField("preinstalled")] public List PreinstalledPrograms = new(); /// /// The currently running program that has its ui showing /// [ViewVariables(VVAccess.ReadWrite)] public EntityUid? ActiveProgram = default; /// /// The list of programs running in the background, listening to certain events /// [ViewVariables] public readonly List BackgroundPrograms = new(); /// /// The list of program entities that are spawned into the cartridge loaders program container /// [DataField("installedCartridges")] public List InstalledPrograms = new(); /// /// The maximum amount of programs that can be installed on the cartridge loader entity /// [DataField("diskSpace")] public int DiskSpace = 5; [DataField("uiKey", readOnly: true, required: true, customTypeSerializer: typeof(EnumSerializer))] public Enum UiKey = default!; }