@jeremyckahn/farmhand
Version:
A farming game
121 lines (104 loc) • 2.41 kB
JavaScript
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,
SWEET_POTATO,
TOMATO,
WATERMELON,
WHEAT,
WEED,
} = cropType
export const recipeCategories = {
[]: {},
[]: {},
[]: {},
[]: {},
[]: {},
}
export const recipesMap = {}
for (const recipeId of Object.keys(recipes)) {
const recipe = recipes[recipeId]
recipeCategories[recipe.recipeType][recipe.id] = recipe
recipesMap[recipe.id] = recipe
}
export const upgradesMap = {}
for (let toolType of Object.keys(upgrades)) {
for (let upgrade of Object.values(upgrades[toolType])) {
upgradesMap[upgrade.id] = upgrade
}
}
/**
* @type {Object.<string, farmhand.item>}
*/
export const itemsMap = {
...baseItemsMap,
...recipesMap,
...upgradesMap,
}
/**
* @type {Object.<string, farmhand.item>}
*/
export const fermentableItemsMap = Object.fromEntries(
Object.entries(itemsMap).filter(([itemId]) => {
const item = itemsMap[itemId]
return 'daysToFerment' in item
})
)
/**
* @type {Object.<string, farmhand.seedItem>}
*/
export const cropItemIdToSeedItemMap = Object.entries(baseItemsMap).reduce(
(acc, [itemId, item]) => {
const { growsInto } = item
if (growsInto) {
const variants = Array.isArray(growsInto) ? growsInto : [growsInto]
for (const variantId of variants) {
acc[variantId] = baseItemsMap[itemId]
}
}
return acc
},
{}
)
/**
* @type {Object.<string, string|Array.<string>>}
*/
export const cropTypeToIdMap = {
[]: 'asparagus',
[]: 'carrot',
[]: 'corn',
[]: 'garlic',
[]: /** @type {string | string[]} */ (grapeSeed.growsInto),
[]: 'jalapeno',
[]: 'olive',
[]: 'onion',
[]: 'pea',
[]: 'potato',
[]: 'pumpkin',
[]: 'soybean',
[]: 'spinach',
[]: 'strawberry',
[]: 'sunflower',
[]: 'sweet-potato',
[]: 'tomato',
[]: 'watermelon',
[]: 'wheat',
[]: 'weed',
}