UNPKG

@jeremyckahn/farmhand

Version:
39 lines (31 loc) 999 B
import { inventorySpaceRemaining } from '../../utils/inventorySpaceRemaining.js' /** * Only adds as many items as there is room in the inventory for unless * allowInventoryOverage is true. */ export const addItemToInventory = ( state: farmhand.state, item: farmhand.item, howMany: number = 1, allowInventoryOverage: boolean = false ): farmhand.state => { const { id } = item const inventory = [...state.inventory] const numberOfItemsToAdd = allowInventoryOverage ? howMany : Math.min(howMany, inventorySpaceRemaining(state)) if (numberOfItemsToAdd === 0) { return state } const currentItemSlot = inventory.findIndex(({ id: itemId }) => id === itemId) if (~currentItemSlot) { const currentItem = inventory[currentItemSlot] inventory[currentItemSlot] = { ...currentItem, quantity: currentItem.quantity + numberOfItemsToAdd, } } else { inventory.push({ id, quantity: numberOfItemsToAdd }) } return { ...state, inventory } }