2025-01-31 14:47:51 +03:00
/ *
* This file is sublicensed under MIT License
* https : //github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
* /
2025-03-27 17:20:20 +03:00
using Content.Shared._CP14.Workbench.Prototypes ;
2025-01-31 14:47:51 +03:00
using JetBrains.Annotations ;
using Robust.Shared.Prototypes ;
using Robust.Shared.Utility ;
namespace Content.Shared._CP14.Workbench ;
[ImplicitDataDefinitionForInheritors]
[MeansImplicitUse]
public abstract partial class CP14WorkbenchCraftRequirement
{
2025-03-27 17:20:20 +03:00
/// <summary>
/// If true, failure to fulfill this condition will hide recipes from the possible craft workbench menu
/// </summary>
public abstract bool HideRecipe { get ; set ; }
2025-01-31 14:47:51 +03:00
/// <summary>
/// Here a check is made that the recipe as a whole can be fulfilled at the current moment. Do not add anything that affects gameplay here, and only perform checks here.
/// </summary>
/// <returns></returns>
public abstract bool CheckRequirement ( EntityManager entManager ,
IPrototypeManager protoManager ,
HashSet < EntityUid > placedEntities ,
2025-05-14 12:43:43 +03:00
EntityUid user ) ;
2025-01-31 14:47:51 +03:00
/// <summary>
/// An event that is triggered after crafting. This is the place to put important things like removing items, spending stacks or other things.
/// </summary>
public abstract void PostCraft ( EntityManager entManager ,
2025-04-09 15:54:38 +03:00
IPrototypeManager protoManager ,
2025-01-31 14:47:51 +03:00
HashSet < EntityUid > placedEntities ,
EntityUid user ) ;
/// <summary>
/// This text will be displayed in the description of the craft recipe. Write something like ‘ Wooden planks: х 10’ here
/// </summary>
public abstract string GetRequirementTitle ( IPrototypeManager protoManager ) ;
/// <summary>
/// You can specify an icon generated from an entity. It will support layering, colour changes and other layer options. Return null to disable.
/// </summary>
public abstract EntityPrototype ? GetRequirementEntityView ( IPrototypeManager protoManager ) ;
/// <summary>
/// You can specify the texture directly. Return null to disable.
/// </summary>
public abstract SpriteSpecifier ? GetRequirementTexture ( IPrototypeManager protoManager ) ;
}