@jeremyckahn/farmhand
Version:
A farming game
214 lines (197 loc) • 5.97 kB
text/typescript
import { cropFamily, cropType, grapeVariety } from '../../enums.js'
import { crop, cropVariety, fromSeed } from '../crop.js'
export const isGrape = (
item: farmhand.item | farmhand.cropVariety
): item is farmhand.grape => {
return 'cropFamily' in item && item.cropFamily === cropFamily.GRAPE
}
const grape = (
grapeProps: Partial<farmhand.grape> & {
imageId: string
variety: farmhand.grapeVariety
wineId: string
}
): farmhand.grape => {
return {
...grapeProps,
...cropVariety({
...grapeProps,
cropFamily: cropFamily.GRAPE as 'GRAPE',
}),
} as farmhand.grape
}
/**
* @property farmhand.module:items.grapeSeed
*/
export const grapeSeed: farmhand.item = crop({
cropType: cropType.GRAPE,
cropTimeline: [3, 4],
growsInto: [
'grape-chardonnay',
'grape-sauvignon-blanc',
// 'grape-pinot-blanc',
// 'grape-muscat',
// 'grape-riesling',
// 'grape-merlot',
'grape-cabernet-sauvignon',
// 'grape-syrah',
'grape-tempranillo',
'grape-nebbiolo',
],
id: 'grape-seed',
name: 'Grape Seed',
tier: 7,
})
export const grapeVarietyNameMap: Record<farmhand.grapeVariety, string> = {
[grapeVariety.CHARDONNAY]: 'Chardonnay',
[grapeVariety.SAUVIGNON_BLANC]: 'Sauvignon Blanc',
//[grapeVariety.PINOT_BLANC]: 'Pinot Blanc',
//[grapeVariety.MUSCAT]: 'Muscat',
//[grapeVariety.RIESLING]: 'Riesling',
//[grapeVariety.MERLOT]: 'Merlot',
[grapeVariety.CABERNET_SAUVIGNON]: 'Cabernet Sauvignon',
//[grapeVariety.SYRAH]: 'Syrah',
[grapeVariety.TEMPRANILLO]: 'Tempranillo',
[grapeVariety.NEBBIOLO]: 'Nebbiolo',
}
/**
* @type The number value represents a wine's
value relative to a baseline of 1. Must be an integer.
*/
export const wineVarietyValueMap: Record<farmhand.grapeVariety, number> = {
[grapeVariety.CHARDONNAY]: 1,
[grapeVariety.SAUVIGNON_BLANC]: 8,
//[grapeVariety.PINOT_BLANC]: 2,
//[grapeVariety.MUSCAT]: 4,
//[grapeVariety.RIESLING]: 7,
//[grapeVariety.MERLOT]: 6,
[grapeVariety.CABERNET_SAUVIGNON]: 3,
//[grapeVariety.SYRAH]: 9,
[grapeVariety.TEMPRANILLO]: 5,
[grapeVariety.NEBBIOLO]: 10,
}
/**
* @property farmhand.module:items.grapeChardonnay
*/
export const grapeChardonnay: farmhand.grape = grape({
...fromSeed(grapeSeed, {
variantIdx: grapeSeed.growsInto?.indexOf('grape-chardonnay'),
}),
name: 'Chardonnay Grape',
imageId: 'grape-green',
variety: grapeVariety.CHARDONNAY,
wineId: 'wine-chardonnay',
})
/**
* @property farmhand.module:items.grapeSauvignonBlanc
*/
export const grapeSauvignonBlanc: farmhand.grape = grape({
...fromSeed(grapeSeed, {
variantIdx: grapeSeed.growsInto?.indexOf('grape-sauvignon-blanc'),
}),
name: 'Sauvignon Blanc Grape',
imageId: 'grape-green',
variety: grapeVariety.SAUVIGNON_BLANC,
wineId: 'wine-sauvignon-blanc',
})
/**
* @property farmhand.module:items.grapePinotBlanc
*/
// export const grapePinotBlanc = grape({
// ...fromSeed(grapeSeed, { variantIdx: grapeSeed.growsInto?.indexOf('grape-pinot-blanc') }),
// name: 'Pinot Blanc Grape',
// imageId: 'grape-green',
// variety: grapeVariety.PINOT_BLANC,
// wineId: 'wine-pinot-blanc',
// })
/**
* @property farmhand.module:items.grapeMuscat
*/
// export const grapeMuscat = grape({
// ...fromSeed(grapeSeed, { variantIdx: grapeSeed.growsInto?.indexOf('grape-muscat') }),
// name: 'Muscat Grape',
// imageId: 'grape-green',
// variety: grapeVariety.MUSCAT,
// wineId: 'wine-muscat',
// })
/**
* @property farmhand.module:items.grapeRiesling
*/
// export const grapeRiesling = grape({
// ...fromSeed(grapeSeed, { variantIdx: grapeSeed.growsInto?.indexOf('grape-riesling') }),
// name: 'Riesling Grape',
// imageId: 'grape-green',
// variety: grapeVariety.RIESLING,
// wineId: 'wine-riesling',
// })
/**
* @property farmhand.module:items.grapeMerlot
*/
// export const grapeMerlot = grape({
// ...fromSeed(grapeSeed, { variantIdx: grapeSeed.growsInto?.indexOf('grape-merlot') }),
// name: 'Merlot Grape',
// imageId: 'grape-purple',
// variety: grapeVariety.MERLOT,
// wineId: 'wine-merlot',
// })
/**
* @property farmhand.module:items.grapeCabernetSauvignon
*/
export const grapeCabernetSauvignon: farmhand.grape = grape({
...fromSeed(grapeSeed, {
variantIdx: grapeSeed.growsInto?.indexOf('grape-cabernet-sauvignon'),
}),
name: 'Cabernet Sauvignon Grape',
imageId: 'grape-purple',
variety: grapeVariety.CABERNET_SAUVIGNON,
wineId: 'wine-cabernet-sauvignon',
})
/**
* @property farmhand.module:items.grapeSyrah
*/
// export const grapeSyrah = grape({
// ...fromSeed(grapeSeed, { variantIdx: grapeSeed.growsInto?.indexOf('grape-syrah') }),
// name: 'Syrah Grape',
// imageId: 'grape-purple',
// variety: grapeVariety.SYRAH,
// wineId: 'wine-syrah',
// })
/**
* @property farmhand.module:items.grapeTempranillo
*/
export const grapeTempranillo: farmhand.grape = grape({
...fromSeed(grapeSeed, {
variantIdx: grapeSeed.growsInto?.indexOf('grape-tempranillo'),
}),
name: 'Tempranillo Grape',
imageId: 'grape-purple',
variety: grapeVariety.TEMPRANILLO,
wineId: 'wine-tempranillo',
})
/**
* @property farmhand.module:items.grapeNebbiolo
*/
export const grapeNebbiolo: farmhand.grape = grape({
...fromSeed(grapeSeed, {
variantIdx: grapeSeed.growsInto?.indexOf('grape-nebbiolo'),
}),
name: 'Nebbiolo Grape',
imageId: 'grape-purple',
variety: grapeVariety.NEBBIOLO,
wineId: 'wine-nebbiolo',
})
export const grapeVarietyToGrapeItemMap: Record<
farmhand.grapeVariety,
farmhand.grape
> = {
[grapeVariety.CHARDONNAY]: grapeChardonnay,
[grapeVariety.SAUVIGNON_BLANC]: grapeSauvignonBlanc,
//[grapeVariety.PINOT_BLANC]: grapePinotBlanc,
//[grapeVariety.MUSCAT]: grapeMuscat,
//[grapeVariety.RIESLING]: grapeRiesling,
//[grapeVariety.MERLOT]: grapeMerlot,
[grapeVariety.CABERNET_SAUVIGNON]: grapeCabernetSauvignon,
//[grapeVariety.SYRAH]: grapeSyrah,
[grapeVariety.TEMPRANILLO]: grapeTempranillo,
[grapeVariety.NEBBIOLO]: grapeNebbiolo,
}