How idris-p/rush-hour works
Rush Hour is a browser-based London Underground speedrunning game. Players start a seeded or random five-round run (or tutorial), navigate from a generated start to a destination using map direction stubs and line changes, and finish with round results measuring time, moves, and changes. The graph captures the documented gameplay and map/search capabilities plus the sampled state, network, and SVG-rendering layers. Several UI and input details are only documented or visible through partial excerpts, so uncertain wiring is omitted.
Main entry points: main.ts Application entry · mapRenderer.ts Map renderer · runSession.ts Run session · AppController.ts Phase controller
Components 24
Run gameplay
- Phase controller
src/game/AppController.ts - Run session
src/game/runSession.ts - Seed and rounds
src/game/seed.ts - Round state
src/game/GameState.ts - Movement rules
src/game/movement.ts - Line selection
src/game/lineSelection.ts - Journey summary
src/game/journey.ts - Tutorial rules
src/game/tutorial.ts
Map experience
- Station search
src/ui/stationSearch.ts - Gameplay input
src/input/stubSelection.ts - Map pan and zoom
src/input/mapPanZoomController.ts - Pinch gesture
src/input/pinchZoom.ts
Network and rules
- Network assembly
src/data/network.ts - Network validation
src/data/validation.ts - Network data
src/data/types.ts
UI and rendering
- Application entry
src/main.ts - HUD and results
src/ui/hud.ts - Map renderer
src/rendering/mapRenderer.ts - Corridor layout
src/rendering/corridorLayout.ts - Line rendering
src/rendering/lineRenderer.ts - Station rendering
src/rendering/stationRenderer.ts
Other components
- Player
- Analytics service
- Speed insights
Connections 30
- Player → Application entry: starts and plays
- Application entry → Phase controller: changes phase
- Application entry → Run session: starts run
- Phase controller → Run session: advances rounds
- Run session → Seed and rounds: generates rounds
- Phase controller → Round state: creates round
- Application entry → Movement rules: attempts move
- Application entry → Tutorial rules: attempts tutorial move
- Application entry → Line selection: selects line
- Application entry → Map renderer: renders gameplay
- Application entry → HUD and results: updates interface
- HUD and results → Journey summary: summarizes journey
- HUD and results → Line selection: previews lines
- Player → Station search: searches stations
- Station search → Application entry: selects station
- Player → Gameplay input: chooses direction
- Gameplay input → Application entry: dispatches move
- Player → Map pan and zoom: pans or zooms
- Map pan and zoom → Map renderer: changes view
- Map pan and zoom → Pinch gesture: reads gesture
- Map renderer → Movement rules: reads station and direction
- Map renderer → Corridor layout: gets map geometry
- Map renderer → Line rendering: renders routes
- Map renderer → Station rendering: renders stations
- Network assembly → Network data: assembles
- Application entry → Network assembly: loads network
- Application entry → Network validation: validates network
- Run session → Network assembly: uses stations
- Analytics service → Application entry: reports usage
- Speed insights → Application entry: reports performance