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