GameSurface Layering
This repo intentionally separates the generic game surface from the current staged mission fixture.
Layer 1: Generic Game Surface
The RG40XXV client in ports/game-surface/ should stay
reusable for any 36-tile graph correspondence.
It owns:
- 640x480 rendering, map overlays, unit sprites, and window assets
- cursor movement, unit selection, tile menus, unit menus, pause menu, and exit flow
- generic nested menus for tile, unit, node, output, routing, and review/correction flows
- polling
/stateand/nodes - invoking movement/review actions through the HTTP API
It should not hard-code keyboard-mission task meaning into visible UI labels. Mission-specific language should come from the server response and appear only as node names, output summaries, or review text.