2023-08-12 17:39:58 -04:00
|
|
|
|
using Robust.Shared.Containers;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Content.Shared.Construction.Components;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// This is used for construction which requires a set of
|
|
|
|
|
|
/// entities with specific tags to be inserted into another entity.
|
|
|
|
|
|
/// todo: in a pr that isn't 6k loc, combine this with MechAssemblyComponent
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[RegisterComponent]
|
2023-08-22 18:14:33 -07:00
|
|
|
|
public sealed partial class PartAssemblyComponent : Component
|
2023-08-12 17:39:58 -04:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// A dictionary of a set of parts to a list of tags for each assembly.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[DataField("parts", required: true)]
|
|
|
|
|
|
public Dictionary<string, List<string>> Parts = new();
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The entry in <see cref="Parts"/> that is currently being worked on.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[DataField("currentAssembly")]
|
|
|
|
|
|
public string? CurrentAssembly;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The container where the parts are stored
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[DataField("containerId")]
|
|
|
|
|
|
public string ContainerId = "part-container";
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The container that stores all of the parts when
|
|
|
|
|
|
/// they're being assembled.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[ViewVariables]
|
|
|
|
|
|
public Container PartsContainer = default!;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Event raised when a valid part is inserted into the part assembly.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public sealed class PartAssemblyPartInsertedEvent
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|