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);
    }
예제 #2
0
 /// <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));
 }