using Content.Shared._CP14.Knowledge; using Content.Shared._CP14.Knowledge.Prototypes; using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared._CP14.Workbench.Requirements; public sealed partial class KnowledgeRequired : CP14WorkbenchCraftRequirement { /// /// If the player does not have this knowledge, the recipe will not be displayed in the workbench. /// [DataField(required: true)] public ProtoId Knowledge; public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, EntityUid user) { var knowledgeSystem = entManager.System(); return knowledgeSystem.HasKnowledge(user, Knowledge); } public override void PostCraft(EntityManager entManager, HashSet placedEntities, EntityUid user) { var knowledgeSystem = entManager.System(); knowledgeSystem.TryUseKnowledge(user, Knowledge); } public override string GetRequirementTitle(IPrototypeManager protoManager) { return !protoManager.TryIndex(Knowledge, out var indexedKnowledge) ? "Error knowledge" : $"{Loc.GetString("cp14-knowledge")}: {Loc.GetString(indexedKnowledge.Name)}"; } public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager) { return null; } public override SpriteSpecifier GetRequirementTexture(IPrototypeManager protoManager) { return new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/students-cap.svg.192dpi.png")); } }