public bool UpdateCraftingProcess(float efficiency, BuildingInventoryController inventory) { if (!isEnabled) { return(false); } if (!isCrafting) { for (int i = 0; i < outputItems.Length; i++) { if (!inventory.CheckAddItem(outputItems[i], outputItemAmounts[i], true)) { return(false); } } for (int i = 0; i < inputItems.Length; i++) { if (!inventory.CheckTakeItem(inputItems[i], inputItemAmounts[i], false)) { return(false); } } for (int i = 0; i < inputItems.Length; i++) { inventory.TryTakeItem(inputItems[i], inputItemAmounts[i], false); } isCrafting = true; } if (isCrafting) { curCraftingProgress += efficiency; if (curCraftingProgress >= craftingProgressTickReq) { for (int i = 0; i < outputItems.Length; i++) { inventory.TryAddItem(outputItems[i], outputItemAmounts[i], true); } isCrafting = false; curCraftingProgress = 0; return(false); } return(true); } return(false); }
/// <summary> /// Try to insert an item to the buildings input slots /// Only works if the item type matches and there is enough space /// </summary> /// <param name="item"></param> /// <returns></returns> public bool TryInsertItemToBuilding(Item item) { return(invController.TryAddItem(item, 1, false)); }