|
All checks were successful
Build / build (push) Successful in 1m32s
Implement comprehensive controller remapping UI that allows users to customize VR controller button and stick mappings with per-axis granularity and inversion controls. Configuration persists to localStorage and applies on level start. ## Features - Full-page controller remapping UI at #/controls - Per-axis stick mapping (4 dropdowns: leftX, leftY, rightX, rightY) - Individual axis inversion toggles (8 total invert options) - Button remapping (6 buttons: trigger, A, B, X, Y, squeeze) - Available actions: yaw, pitch, roll, forward thrust, camera, status screen - Configuration validation with warnings for duplicates/missing controls - Preview/test functionality to review current mapping - Reset to default option - localStorage persistence with backward compatibility ## Implementation - ControllerMappingConfig singleton manages configuration and validation - ControlsScreen handles UI logic and form manipulation - ControllerInput applies mapping by translating raw input to actions - Actions mapped back to virtual stick positions for ShipPhysics - No changes needed to ShipPhysics - receives correctly mapped values ## User Flow 1. Navigate to Controls via header menu 2. Select action for each stick axis (yaw/pitch/roll/forward/none) 3. Toggle invert checkboxes as needed 4. Assign button actions (fire/camera/status/none) 5. Save configuration 6. Changes apply when starting new level ## Technical Details - Storage key: 'space-game-controller-mapping' - Raw stick values stored, mapping applied in getInputState() - Supports future actions without code changes - Validation ensures critical controls (fire, forward) are mapped 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| docs | ||
| public | ||
| scripts | ||
| server | ||
| src | ||
| themes/default | ||
| .gitignore | ||
| ANALYTICS_IMPLEMENTATION.md | ||
| CLAUDE.md | ||
| CONTROLLER_THRUST.md | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||