# RCWeb Geometry Dash Control App

The **RCWeb Geometry Dash Control App** (`app/geometry-dash-c`) is the single-button remote for the Geometry Dash inspired runner. It exists purely to claim the shared runner and send jump inputs into the viewer app.

## What it does

- **One input only**: The phone UI is reduced to one oversized jump button so the interaction stays faithful to Geometry Dash style timing.
- **Fast room linking**: When opened through the QR code, it joins the current RCWeb room and requests control of the main-screen runner.
- **Live run feedback**: Score, best score, and alive/crashed state are pushed back from the main viewer so the phone can mirror the run state.
- **Takeover friendly**: If another device claims the runner, the current controller is released and can reconnect with a single tap.

## How it works

- First input sends `rc.sendFunctionCall("geometry-dash", "geometryDash.joinAndJump", rc.client)` to both claim the runner and fire the opening jump.
- Follow-up taps send `geometryDash.jump` to the main app, which remains authoritative over all physics and collisions.
- The controller exposes public callbacks (`onAssignedRunner`, `onScoreUpdate`, `onStateUpdate`, `onReleased`) so the viewer app can keep the phone UI synchronized.
- Haptics and short Web Audio tones provide immediate feedback without relying on external media assets.
