#nullable enable using System; using System.Collections.Generic; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Shared.Research { [NetSerializable, Serializable, Prototype("technology")] public class TechnologyPrototype : IPrototype { /// /// The ID of this technology prototype. /// [ViewVariables] [field: DataField("id", required: true)] public string ID { get; } = default!; /// /// The name this technology will have on user interfaces. /// [ViewVariables] [field: DataField("name")] public string Name { get; } = string.Empty; /// /// An icon that represent this technology. /// [field: DataField("icon")] public SpriteSpecifier Icon { get; } = SpriteSpecifier.Invalid; /// /// A short description of the technology. /// [ViewVariables] [field: DataField("description")] public string Description { get; } = string.Empty; /// /// The required research points to unlock this technology. /// [ViewVariables] [field: DataField("requiredPoints")] public int RequiredPoints { get; } /// /// A list of technology IDs required to unlock this technology. /// [ViewVariables] [field: DataField("requiredTechnologies")] public List RequiredTechnologies { get; } = new(); /// /// A list of recipe IDs this technology unlocks. /// [ViewVariables] [field: DataField("unlockedRecipes")] public List UnlockedRecipes { get; } = new(); } }