Files
crystall-punk-14/Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs
Ed b3eed32588 Workbench Refactor (#826)
* Workbench refactor

* fixes

* update all recipes protos

* scrap resprite

* scrap melting

* scrap weapon drop

* demiplane loot update

* weapon parts melting

* fix

* boilerplate

* material localization
2025-01-31 14:47:51 +03:00

49 lines
1.7 KiB
C#

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
{
/// <summary>
/// If the player does not have this knowledge, the recipe will not be displayed in the workbench.
/// </summary>
[DataField(required: true)]
public ProtoId<CP14KnowledgePrototype> Knowledge;
public override bool CheckRequirement(EntityManager entManager,
IPrototypeManager protoManager,
HashSet<EntityUid> placedEntities,
EntityUid user)
{
var knowledgeSystem = entManager.System<SharedCP14KnowledgeSystem>();
return knowledgeSystem.HasKnowledge(user, Knowledge);
}
public override void PostCraft(EntityManager entManager, HashSet<EntityUid> placedEntities, EntityUid user)
{
var knowledgeSystem = entManager.System<SharedCP14KnowledgeSystem>();
knowledgeSystem.UseKnowledge(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("/Textures/Interface/students-cap.svg.192dpi.png"));
}
}