josh 537016b48f feat(02-02): render layer + Garden scene + scheduler integration
- src/render/garden/tile-coords.ts: GRID_LAYOUT (96px tiles + 16px gap, centered in 1024×768) + tileTopLeftCanvas / tileCenterCanvas / tileCenterToDom helpers (RESEARCH Pattern 4 + Assumption A5: handles Phaser.Scale.FIT scaling via canvas getBoundingClientRect)
- src/render/garden/tile-renderer.ts: drawTiles(scene) — 16 outlined rounded rectangles with hover state (D-06)
- src/render/garden/plant-renderer.ts: drawPlant(scene, idx, tile, stage) — primitive shapes per stage (sprout dot / mature stem / ready bloom) tinted by plant type (D-26); destroyPlant cleanup
- src/render/garden/ready-pulse.ts: applyReadyPulse alpha-cycle tween for ready stage (D-27)
- src/render/garden/index.ts + src/render/index.ts: barrels
- src/game/scenes/Garden.ts: Phaser Garden scene wires scheduler ↔ store ↔ render. update() loop drains commands → simulateOneTick → simAdapter.applyTilesAndUnlocks. appStore.subscribe drives reactive plant repaint (Pitfall 6 mitigation: subscribe, not read-once-in-create). pointerdown on empty tile emits 'tile-clicked-coords' for the React seed picker. BLOCKER 3 invariant: lastTickAt is read-through from store (NOT seeded with this.currentTick).
- src/game/main.ts: scene registry now [Boot, Garden]
- src/game/scenes/Boot.ts: create() transitions to Garden
- Lint clean; build clean; 153/153 tests pass (Task-1 sim/garden tests + all baseline)
2026-05-09 09:36:09 -04:00
2026-05-08 21:37:11 -04:00
S
Description
No description provided
1.4 MiB
Languages
TypeScript 91.2%
JavaScript 6.7%
Ink 1.8%
CSS 0.2%
HTML 0.1%