UNPKG

@jeremyckahn/farmhand

Version:
55 lines (45 loc) 1.55 kB
import { doesInventorySpaceRemain, getCowFertilizerItem, getCowFertilizerProductionRate, } from '../../utils/index.js' import { FERTILIZERS_PRODUCED } from '../../templates.js' import { addItemToInventory } from './addItemToInventory.js' /** * @param {farmhand.state} state * @returns {farmhand.state} */ export const processCowFertilizerProduction = state => { const cowInventory = [...state.cowInventory] const newDayNotifications = [...state.newDayNotifications] const { length: cowInventoryLength } = cowInventory const fertilizersProduced = {} for (let i = 0; i < cowInventoryLength; i++) { const cow = cowInventory[i] if ( // `cow.daysSinceProducingFertilizer || 0` is needed because legacy cows // did not define daysSinceProducingFertilizer. (cow.daysSinceProducingFertilizer || 0) > getCowFertilizerProductionRate(cow) ) { cowInventory[i] = { ...cow, daysSinceProducingFertilizer: 0 } const fertilizer = getCowFertilizerItem(cow) const { name } = fertilizer if (!doesInventorySpaceRemain(state)) { break } fertilizersProduced[name] = (fertilizersProduced[name] || 0) + 1 state = addItemToInventory(state, fertilizer) } } if (Object.keys(fertilizersProduced).length) { newDayNotifications.push({ message: FERTILIZERS_PRODUCED( '', /** @type {Record<string, number>} */ fertilizersProduced ), severity: 'success', }) } return { ...state, cowInventory, newDayNotifications } }