<feed xmlns='http://www.w3.org/2005/Atom'>
<title>go_age_of_empire/camera.go, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kagamino.dev/go_age_of_empire/atom?h=main</id>
<link rel='self' href='https://git.kagamino.dev/go_age_of_empire/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/'/>
<updated>2026-06-06T18:59:12Z</updated>
<entry>
<title>Add examples catalog with subcommand dispatch</title>
<updated>2026-06-06T18:59:12Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-06-06T18:59:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=d9a54f1319cc9dcc2861cecc9edfde14cf039c5b'/>
<id>urn:sha1:d9a54f1319cc9dcc2861cecc9edfde14cf039c5b</id>
<content type='text'>
- Extract game engine from package main to engine/ library package
- Create examples/ package with registry, Entry type, and BuilderDeps
- Register default world as an example (moved from main())
- Add combat example: two teams of units facing each other
- Rewrite main.go as thin dispatch: go run . example [name]
- Update README with examples catalog one-liner
</content>
</entry>
<entry>
<title>Add viewport/camera system with pan, zoom, and world-space cursor conversion</title>
<updated>2026-05-07T08:31:42Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-05-07T08:31:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=b2ca89d8193d98aa21e9637257c3e7a7216b9bd8'/>
<id>urn:sha1:b2ca89d8193d98aa21e9637257c3e7a7216b9bd8</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
