using Content.Shared.Stacks; using Content.Shared.Tag; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Construction.Components; [RegisterComponent, NetworkedComponent] public sealed partial class MachineBoardComponent : Component { /// /// The stacks needed to construct this machine /// [DataField] public Dictionary, int> StackRequirements = new(); /// /// Entities needed to construct this machine, discriminated by tag. /// [DataField] public Dictionary, GenericPartInfo> TagRequirements = new(); /// /// Entities needed to construct this machine, discriminated by component. /// [DataField] public Dictionary ComponentRequirements = new(); /// /// The machine that's constructed when this machine board is completed. /// [DataField(required: true)] public EntProtoId Prototype; } [DataDefinition, Serializable] public partial struct GenericPartInfo { [DataField(required: true)] public int Amount; [DataField(required: true)] public EntProtoId DefaultPrototype; [DataField] public LocId? ExamineName; }