49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { getStation } from './craftingStations';
|
|
import { DefaultItems, Items, formatItemsArray, getDefaultItem } from './items';
|
|
|
|
export interface DefaultRecipe {
|
|
id: number,
|
|
station: string,
|
|
inputs: Items[],
|
|
requirements: Items[],
|
|
outputs: Items[]
|
|
}
|
|
export type Recipe = DefaultRecipe
|
|
|
|
export const defaultRecipes: DefaultRecipe[] = [
|
|
{
|
|
id: -1,
|
|
station: 'forage',
|
|
inputs: [],
|
|
requirements: [],
|
|
outputs: [
|
|
{ item: getDefaultItem(DefaultItems.PEBBLE), quantity: 2 }
|
|
]
|
|
},
|
|
{
|
|
id: -2,
|
|
station: 'workbench',
|
|
inputs: [
|
|
{ item: getDefaultItem(DefaultItems.PEBBLE), quantity: 2 }
|
|
],
|
|
requirements: [],
|
|
outputs: [
|
|
{ item: getDefaultItem(DefaultItems.WORKBENCH), quantity: 1 }
|
|
]
|
|
}
|
|
];
|
|
|
|
export function getDefaultRecipe(id: number): DefaultRecipe | undefined {
|
|
return defaultRecipes.find(recipe => recipe.id === id);
|
|
}
|
|
export function getRecipe(id: number): Recipe | undefined {
|
|
return getDefaultRecipe(id); // currently just a stub
|
|
}
|
|
|
|
const defaultFormatRecipe = (inputs: Items[], requirements: Items[], outputs: Items[], disableBold = false) =>
|
|
`${formatItemsArray(inputs, disableBold)}${requirements.length === 0 ? '' : ` w/ ${formatItemsArray(requirements, disableBold)}`} => ${formatItemsArray(outputs, disableBold)}`;
|
|
|
|
export function formatRecipe(recipe: DefaultRecipe, disableBold = false) {
|
|
const station = getStation(recipe.station);
|
|
return (station?.formatRecipe || defaultFormatRecipe)(recipe.inputs, recipe.requirements, recipe.outputs, disableBold);
|
|
} |