<feed xmlns='http://www.w3.org/2005/Atom'>
<title>go_age_of_empire/selection, 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-05-07T08:38:10Z</updated>
<entry>
<title>Fix selection rectangle stroke width for screen-space rendering</title>
<updated>2026-05-07T08:38:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-05-07T08:38:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=2dc0e353fdd2752348b5bb7da17c76ddf30466f5'/>
<id>urn:sha1:2dc0e353fdd2752348b5bb7da17c76ddf30466f5</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</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>
<entry>
<title>Selection is now Selectable</title>
<updated>2026-02-17T07:00:18Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-02-17T07:00:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=8da30c8dd8cc0860768ff0e54f0d092ac94013fa'/>
<id>urn:sha1:8da30c8dd8cc0860768ff0e54f0d092ac94013fa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: transition to struct-of-arrays ECS architecture</title>
<updated>2026-01-15T21:05:46Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-01-15T21:05:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=13626410c4d6db7fdc15ded5ee7865fcdbf0b88a'/>
<id>urn:sha1:13626410c4d6db7fdc15ded5ee7865fcdbf0b88a</id>
<content type='text'>
- Replace individual Entity structs with centralized component slices in Game struct (SoA layout).
- Implement bitmask-based component lookup (CM_Position, CM_Move, etc.).
- Convert logic from object-oriented Update() methods to standalone Systems (UpdateMoveSystem, UpdateGatherSystem, UpdateSpawnSystem).
- Update rendering, selection, and input handling to iterate over component arrays.
</content>
</entry>
<entry>
<title>Unify selection code and unselect</title>
<updated>2025-09-25T21:00:15Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-09-25T21:00:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=7e94ae0184b94f247c16a775b4d6b0172e8b3027'/>
<id>urn:sha1:7e94ae0184b94f247c16a775b4d6b0172e8b3027</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve selection code</title>
<updated>2025-09-25T20:15:45Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-09-25T20:15:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=bd750fa2605eecd14ab821f630a7c1b51c48c982'/>
<id>urn:sha1:bd750fa2605eecd14ab821f630a7c1b51c48c982</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: ECS bounds</title>
<updated>2025-07-25T10:20:07Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-25T10:20:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=34455230043d42e4324fc27483688a856851d65d'/>
<id>urn:sha1:34455230043d42e4324fc27483688a856851d65d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Draw spawn target</title>
<updated>2025-07-25T10:03:32Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-25T10:03:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=a4db8814ccb2fc255bd909d8fa827ba23896322f'/>
<id>urn:sha1:a4db8814ccb2fc255bd909d8fa827ba23896322f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Selection with priority</title>
<updated>2025-07-25T09:41:19Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-25T09:41:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=563b9ee704a14322ed4805896c4f8ca3fa5df03a'/>
<id>urn:sha1:563b9ee704a14322ed4805896c4f8ca3fa5df03a</id>
<content type='text'>
</content>
</entry>
</feed>
