import { useState, useMemo } from "react"; import type { Recipe } from "../../../scripts/factorio-dump/helpers/recipes.helper"; import { calculateOptimalBatch, generateAdvancedClock } from "../../engine/factorioEngine"; const ADVANCED_CIRCUIT_RECIPE: Recipe = { name: "advanced-circuit", category: "electronics", subgroup:"", energy_required: 6, // Red chips take 6 seconds base ingredients: [ { itemId: "electronic-circuit", amount: 2, type: "item" }, { itemId: "plastic-bar", amount: 2, type: "item" }, { itemId: "copper-cable", amount: 4, type: "item" }, ], results: [ { type: "item", name: "advanced-circuit", amount: 1 } ], }; export default function WizardTest() { const [productivityBonus, setProductivityBonus] = useState(1.75); // +175% const [actualSpeed, setActualSpeed] = useState(10.0); // Fast endgame machine const [stackSize, setStackSize] = useState(16); const result = useMemo(() => { try { const batch = calculateOptimalBatch( ADVANCED_CIRCUIT_RECIPE, productivityBonus, actualSpeed, stackSize ); const clockData = generateAdvancedClock(batch, stackSize); return { batch, clockData }; } catch (err) { return { error: (err as Error).message }; } }, [productivityBonus, actualSpeed, stackSize]); return (

Factorio Clock Engine Sandbox

setProductivityBonus(Number(e.target.value))} style={{ padding: 4 }} />
setActualSpeed(Number(e.target.value))} style={{ padding: 4 }} />
setStackSize(Number(e.target.value))} style={{ padding: 4 }} />

1. Batch Math Result

            {JSON.stringify(result.batch, null, 2)}
          

2. Generated Timeline Blocks

            {JSON.stringify(result.clockData, null, 2)}
          
); }