using Content.Shared.Storage.Components; using Content.Shared.Tag; using Content.Shared.Tools; using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Server.Mech.Components; /// /// A component used to create a mech chassis /// after the correct parts have been placed inside /// of it. /// /// /// The actual visualization of the parts being inserted is /// done via /// [RegisterComponent] public sealed partial class MechAssemblyComponent : Component { /// /// The parts needed to be placed within the assembly, /// stored as a tag and a bool tracking whether or not /// they're present. /// [DataField("requiredParts", required: true, customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] public Dictionary RequiredParts = new(); /// /// The prototype spawned when the assembly is finished /// [DataField("finishedPrototype", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] public string FinishedPrototype = default!; /// /// The container that stores all of the parts when /// they're being assembled. /// [ViewVariables] public Container PartsContainer = default!; /// /// The quality of tool needed to remove all the parts /// from the parts container. /// [DataField("qualityNeeded", customTypeSerializer: typeof(PrototypeIdSerializer))] public string QualityNeeded = "Prying"; }