UNPKG

@jeremyckahn/farmhand

Version:
129 lines (110 loc) 2.76 kB
import { cropType, recipeType } from '../enums.js' import * as recipes from './recipes.js' import upgrades from './upgrades.js' import baseItemsMap from './items-map.js' import { grapeSeed } from './crops/index.js' const { ASPARAGUS, CARROT, CORN, GARLIC, GRAPE, JALAPENO, OLIVE, ONION, PEA, POTATO, PUMPKIN, SOYBEAN, SPINACH, SUNFLOWER, STRAWBERRY, SUGARCANE, SWEET_POTATO, TOMATO, WATERMELON, WHEAT, WEED, } = cropType export const recipeCategories: Record< string, Record<string, farmhand.recipe> > = { [recipeType.KITCHEN]: {}, [recipeType.FORGE]: {}, [recipeType.FERMENTATION]: {}, [recipeType.RECYCLING]: {}, [recipeType.WINE]: {}, } export const recipesMap: Record<string, farmhand.recipe> = {} for (const recipeId of Object.keys(recipes)) { const recipe = ((recipes as unknown) as Record<string, farmhand.recipe>)[ recipeId ] recipeCategories[recipe.recipeType][recipe.id] = recipe recipesMap[recipe.id] = recipe } export const upgradesMap: Record<string, farmhand.upgradesMetadatum> = {} for (let toolType of Object.keys(upgrades)) { for (let upgrade of Object.values( ((upgrades as unknown) as Record< string, Record<string, farmhand.upgradesMetadatum> >)[toolType] )) { upgradesMap[upgrade.id] = upgrade } } export const itemsMap: Record<string, farmhand.item> = { ...baseItemsMap, ...recipesMap, ...upgradesMap, } export const fermentableItemsMap: Record< string, farmhand.item > = Object.fromEntries( Object.entries(itemsMap).filter(([itemId]) => { const item = itemsMap[itemId] return 'daysToFerment' in item }) ) export const cropItemIdToSeedItemMap: Record< string, farmhand.seedItem > = Object.entries(baseItemsMap).reduce<Record<string, farmhand.seedItem>>( (acc, [itemId, item]) => { const { growsInto } = item as { growsInto?: string | string[] } if (growsInto) { const variants = Array.isArray(growsInto) ? growsInto : [growsInto] for (const variantId of variants) { acc[variantId] = baseItemsMap[itemId] as farmhand.seedItem } } return acc }, {} ) export const cropTypeToIdMap: Record<string, string | Array<string>> = { [ASPARAGUS]: 'asparagus', [CARROT]: 'carrot', [CORN]: 'corn', [GARLIC]: 'garlic', [GRAPE]: grapeSeed.growsInto as string | string[], [JALAPENO]: 'jalapeno', [OLIVE]: 'olive', [ONION]: 'onion', [PEA]: 'pea', [POTATO]: 'potato', [PUMPKIN]: 'pumpkin', [SOYBEAN]: 'soybean', [SPINACH]: 'spinach', [STRAWBERRY]: 'strawberry', [SUGARCANE]: 'sugarcane', [SUNFLOWER]: 'sunflower', [SWEET_POTATO]: 'sweet-potato', [TOMATO]: 'tomato', [WATERMELON]: 'watermelon', [WHEAT]: 'wheat', [WEED]: 'weed', }