diff options
-rw-r--r-- | data/recipes/default.ts | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/data/recipes/default.ts b/data/recipes/default.ts index 4efdb16a..f0a9ef6b 100644 --- a/data/recipes/default.ts +++ b/data/recipes/default.ts @@ -18,7 +18,7 @@ //? Is is a good idea? Probably not. -interface Recipe { +export interface Recipe { tile?: string, inputs: (string | null)[], outputs: (string | null)[], @@ -28,8 +28,8 @@ interface Recipe { warn?: boolean } -const all_items = new Set<string>() -function auto_trash() { +export const all_items = new Set<string>() +export function auto_trash() { for (const ifull of all_items) { let [i, ic] = get_container(ifull) if (i == "plate") continue @@ -46,7 +46,7 @@ function auto_trash() { } } -function out(r: Recipe) { +export function out(r: Recipe) { r.inputs.forEach(i => i ? all_items.add(i) : void 0) r.outputs.forEach(i => i ? all_items.add(i) : void 0) r.inputs = r.inputs.filter(e => e) @@ -54,39 +54,39 @@ function out(r: Recipe) { console.log(`- ${JSON.stringify(r).replaceAll("\"active\"", "!active").replaceAll("\"passive\"", "!passive").replaceAll("\"instant\"", "!instant")}`); } -function cut(from: string, to?: string, to2?: string) { +export function cut(from: string, to?: string, to2?: string) { out({ action: "active", duration: 2, tile: "cuttingboard", inputs: [from], outputs: [to ?? ("sliced-" + from), to2 ?? null] }) } -function cook(from: string, to?: string) { +export function cook(from: string, to?: string) { const i = from.endsWith("-pot") ? from : from + "-pot" const o = (to ?? ("cooked-" + from)) + "-pot" if (!from.endsWith("-pot")) out({ action: "instant", inputs: ["pot", from], outputs: [i] }) out({ action: "passive", duration: 20, revert_duration: 40, tile: "stove", inputs: [i], outputs: [o] }) out({ action: "passive", duration: 5, revert_duration: 10, tile: "stove", inputs: [o], outputs: ["burned-pot"], warn: true }) } -function process(from: string, to?: string) { +export function process(from: string, to?: string) { const i = from + "-foodprocessor" const o = (to ?? (from + "-juice")) + "-foodprocessor" out({ action: "instant", inputs: ["foodprocessor", from], outputs: [i] }) out({ action: "active", duration: 3, inputs: [i], outputs: [o] }) } -function bake(from: string, to?: string) { +export function bake(from: string, to?: string) { const o = (to ?? ("cooked-" + from)) out({ action: "passive", duration: 25, tile: "oven", inputs: [from], outputs: [o] }) out({ action: "passive", duration: 15, revert_duration: 20, tile: "oven", inputs: [o], outputs: ["burned"], warn: true }) } -function crate(item: string) { +export function crate(item: string) { out({ action: "instant", tile: item + "-crate", inputs: [], outputs: [item], }) } -function get_container(ifull: string): [string, string | null] { +export function get_container(ifull: string): [string, string | null] { const iparts = ifull.split("-") const ic = iparts.pop() if (ic && iparts.length && ["pot", "plate", "foodprocessor"].includes(ic)) return [iparts.join("-"), ic] return [ifull, null] } -function combine(container: string, ...inputs: string[]) { +export function combine(container: string, ...inputs: string[]) { const open = inputs.map(ifull => { const [i, ic] = get_container(ifull) out({ action: "instant", inputs: [container, ifull], outputs: [i + "-" + container, ic] }) @@ -117,27 +117,29 @@ function combine(container: string, ...inputs: string[]) { } } -out({ action: "active", duration: 2, tile: "sink", inputs: ["dirty-plate"], outputs: ["plate"] }) +if (import.meta.main) { + out({ action: "active", duration: 2, tile: "sink", inputs: ["dirty-plate"], outputs: ["plate"] }) -crate("tomato") -crate("raw-steak") -crate("flour") -crate("leek") + crate("tomato") + crate("raw-steak") + crate("flour") + crate("leek") -cut("tomato") + cut("tomato") -cook("raw-steak", "steak") + cook("raw-steak", "steak") -process("flour", "dough") -out({ action: "instant", inputs: ["dough-foodprocessor"], outputs: ["foodprocessor", "dough"] }) -bake("dough", "bread") -cut("bread", "bread-slice", "bread-slice") + process("flour", "dough") + out({ action: "instant", inputs: ["dough-foodprocessor"], outputs: ["foodprocessor", "dough"] }) + bake("dough", "bread") + cut("bread", "bread-slice", "bread-slice") -process("tomato") -combine("pot", "leek", "tomato-juice-foodprocessor") -cook("leek-tomato-juice-pot", "tomato-soup") -out({ action: "instant", inputs: ["tomato-soup-pot", "plate"], outputs: ["pot", "tomato-soup-plate"] }) + process("tomato") + combine("pot", "leek", "tomato-juice-foodprocessor") + cook("leek-tomato-juice-pot", "tomato-soup") + out({ action: "instant", inputs: ["tomato-soup-pot", "plate"], outputs: ["pot", "tomato-soup-plate"] }) -combine("plate", "steak-pot", "sliced-tomato", "bread-slice") + combine("plate", "steak-pot", "sliced-tomato", "bread-slice") -auto_trash() + auto_trash() +} |