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