diff --git a/src/packages/guide/src/components/climate-sim/ClimateSimDisplay.tsx b/src/packages/guide/src/components/climate-sim/ClimateSimDisplay.tsx index ae1f5f0e..a99a138f 100644 --- a/src/packages/guide/src/components/climate-sim/ClimateSimDisplay.tsx +++ b/src/packages/guide/src/components/climate-sim/ClimateSimDisplay.tsx @@ -10,7 +10,7 @@ import { CANVAS_W, CANVAS_H, DEFAULT_SCENARIO_TURNS, EXTEND_TURNS, FRAME_MS, DEFAULT_BUFFER_SECONDS, } from '@magic-civ/engine-ts' -import { useSimulationWorker } from '@/hooks/useSimulationWorker' +import type { UseSimulationWorkerResult } from '../../types/simulation' import { HexGLRenderer } from './HexGLRenderer' import { LayerPanel, ENVIRONMENT_DEFAULT_MASK, LIFE_DEFAULT_MASK } from './LayerPanel' import type { SimCategory } from './LayerPanel' @@ -93,9 +93,10 @@ function frameAsSnapshot(frame: FramePayload, stats?: { avg_moisture: number; to interface ClimateSimDisplayProps { easterEggs?: Record + simulation: UseSimulationWorkerResult } -export function ClimateSimDisplay({ easterEggs }: ClimateSimDisplayProps): ReactElement { +export function ClimateSimDisplay({ easterEggs, simulation }: ClimateSimDisplayProps): ReactElement { const [searchParams, setSearchParams] = useSearchParams() // ── URL state ────────────────────────────────────────────────────────── @@ -183,7 +184,7 @@ export function ClimateSimDisplay({ easterEggs }: ClimateSimDisplayProps): React return () => document.removeEventListener('mousedown', onDown) }, [planetOpen]) - // ── worker hook ──────────────────────────────────────────────────────── + // ── simulation (provided by consumer) ────────────────────────────────── const { scenarios: workerScenarios, currentFrame, @@ -195,7 +196,7 @@ export function ClimateSimDisplay({ easterEggs }: ClimateSimDisplayProps): React requestFrame, cancelScenario, triggerEvent, - } = useSimulationWorker() + } = simulation // ── kick off simulation when worker is ready or scenario changes ────── // NOTE: workerScenarios is intentionally NOT in this dep array — it updates on every