30 lines
1018 B
C#
30 lines
1018 B
C#
using UnityEngine;
|
|
|
|
[CreateAssetMenu(
|
|
fileName = "ItemProcessingRecipe",
|
|
menuName = "FORT-BO/Workstations/Item Processing Recipe")]
|
|
public sealed class ItemProcessingRecipe : ScriptableObject
|
|
{
|
|
[SerializeField] private string recipeId;
|
|
[SerializeField] private ItemDefinition inputItem;
|
|
[SerializeField] private ItemDefinition outputItem;
|
|
[SerializeField, Min(0.05f)] private float processingDuration = 3f;
|
|
|
|
public string RecipeId => recipeId;
|
|
public ItemDefinition InputItem => inputItem;
|
|
public ItemDefinition OutputItem => outputItem;
|
|
public float ProcessingDuration => processingDuration;
|
|
|
|
public bool Accepts(NetworkItem item)
|
|
{
|
|
if (item == null || item.Definition == null || inputItem == null)
|
|
return false;
|
|
|
|
return item.Definition == inputItem ||
|
|
(!string.IsNullOrEmpty(inputItem.ItemId) && item.ItemId == inputItem.ItemId);
|
|
}
|
|
|
|
private void OnValidate() =>
|
|
recipeId = recipeId?.Trim().ToLowerInvariant();
|
|
}
|