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(); } }