| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Add Input abstraction between ebiten and simulation update | Martin Kagamino Lehoux | 2026-05-07 |
| | | | | | | | | | | Introduces Input snapshot struct collected once per tick via CollectInput, and UpdateSimulation(Input) as the ebiten-free simulation entrypoint. Integration tests now drive the game through simulated inputs rather than direct method calls. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | ||
| * | Add viewport/camera system with pan, zoom, and world-space cursor conversion | Martin Kagamino Lehoux | 2026-05-07 |
| | | | | | | | | | | | | | | | | | - New camera.go: Camera struct with arrow-key pan, scroll-wheel zoom toward cursor, middle-mouse drag, exponential velocity decay, and world-bounds clamping - Layout() now returns screen dimensions (960x640) instead of world size so the camera GeoM transform drives all rendering - All world entities, halos, text, path lines and spawn target converted via camera transform in draw.go; banners remain in screen space - selection.go: separate startScreen field so the drag-select box draws in screen space while selection logic stays in world space - Banner heights and font sizes scaled down to fit the 640px logical screen - Three new integration tests: ScreenToWorld round-trip, bounds clamping, zoom-toward-cursor stability Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | ||
| * | fix: prevent entities from overlapping when arriving at the same cell | Martin Kagamino Lehoux | 2026-03-01 |
| | | | | | | | | | | | | Update UpdateMoveSystem to maintain the moveMap as entities move within a tick. When an entity snaps to a grid cell: - Block the new cell in the moveMap immediately - Unblock the old cell Before snapping, check if the target cell was already claimed by another entity earlier in the same tick. If so, repath instead of overlapping. | ||
| * | First integration test | Martin Kagamino Lehoux | 2026-01-15 |
