using Godot; public class CraftNode : ProgramNode { public Item selectedItem; public int amount; public CraftNode() { DisplayText = "Craft"; TooltipText = "Crafts the selected item the selected amount of times by consuming the required ingredients from the shared inventory."; } public override NodeResult Execute(Robot robot, double delta) { if (selectedItem == null) { lastExecutionMessage = "No Item selected"; return NodeResult.FAILURE; } if (amount <= 0) { lastExecutionMessage = "Amount has to be at least 1"; return NodeResult.FAILURE; } if (!GameData.inventory.CanCraft(selectedItem.data.Inputs, amount)) { lastExecutionMessage = "Not enough items to craft this"; return NodeResult.FAILURE; } switch (selectedItem.Craft(amount, delta)) { case CraftingResult.FAILED: lastExecutionMessage = "Not enough space to add item to inventory"; return NodeResult.FAILURE; case CraftingResult.FINISHED: return NodeResult.SUCCESS; } return NodeResult.RUNNING; } public override ProgramNode Duplicate() { CraftNode duplicate = new CraftNode() { selectedItem = selectedItem, amount = amount }; return duplicate; } public override string Save() { return $"Name: {DisplayText}, Item: {(selectedItem == null ? "Empty" : selectedItem.data.Id)}, Amount: {amount}"; } }