using System.Threading.Tasks; using Content.Server.Stack; using Content.Shared.Construction; using Content.Shared.Construction.Prototypes; using Content.Shared.Interaction; using Content.Shared.Tag; using Robust.Shared.Containers; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Server.Construction.Components { [RegisterComponent] public sealed class MachineFrameComponent : Component { public const string PartContainerName = "machine_parts"; public const string BoardContainerName = "machine_board"; [ViewVariables] public bool HasBoard => BoardContainer?.ContainedEntities.Count != 0; [DataField("progress", customTypeSerializer: typeof(PrototypeIdDictionarySerializer)), ViewVariables] public readonly Dictionary Progress = new(); [ViewVariables] public readonly Dictionary MaterialProgress = new(); [ViewVariables] public readonly Dictionary ComponentProgress = new(); [ViewVariables] public readonly Dictionary TagProgress = new(); [DataField("requirements", customTypeSerializer: typeof(PrototypeIdDictionarySerializer)),ViewVariables] public Dictionary Requirements = new(); [ViewVariables] public Dictionary MaterialRequirements = new(); [ViewVariables] public Dictionary ComponentRequirements = new(); [ViewVariables] public Dictionary TagRequirements = new(); [ViewVariables] public Container BoardContainer = default!; [ViewVariables] public Container PartContainer = default!; } [DataDefinition] public sealed class MachineDeconstructedEvent : EntityEventArgs { } }