using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Content.Shared.Lathe.Prototypes;
using Content.Shared.Materials;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
using Robust.Shared.Utility;
namespace Content.Shared.Research.Prototypes
{
[NetSerializable, Serializable, Prototype]
public sealed partial class LatheRecipePrototype : IPrototype, IInheritingPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
///
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer))]
public string[]? Parents { get; private set; }
///
[NeverPushInheritance]
[AbstractDataField]
public bool Abstract { get; private set; }
///
/// Name displayed in the lathe GUI.
///
[DataField]
public LocId? Name;
///
/// Short description displayed in the lathe GUI.
///
[DataField]
public LocId? Description;
///
/// The prototype name of the resulting entity when the recipe is printed.
///
[DataField]
public EntProtoId? Result;
[DataField]
public Dictionary, FixedPoint2>? ResultReagents;
///
/// An entity whose sprite is displayed in the ui in place of the actual recipe result.
///
[DataField]
public SpriteSpecifier? Icon;
[DataField("completetime")]
public TimeSpan CompleteTime = TimeSpan.FromSeconds(5);
///
/// The materials required to produce this recipe.
/// Takes a material ID as string.
///
[DataField]
public Dictionary, int> Materials = new();
[DataField]
public bool ApplyMaterialDiscount = true;
///
/// List of categories used for visually sorting lathe recipes in the UI.
///
[DataField]
public List> Categories = new();
}
}