feat: add landing-style start screen with four start modes

Phase 3 of turning the game into the company landing page.

- Replace the Iran-map briefing with a brand start screen over the
  orbiting 3D factory: logo, tagline and four ways in.
- Real world: safety notice, then GPS; if location is denied or
  missing, a friendly dialog offers offline play instead.
- Offline: start at Park Mellat beside the family car with the route
  to the factory, where the first purchase mission is.
- About Us: start in the factory yard. Products: start at the machine
  samples with the showroom open.
- Contact, address with map links, FAQ, careers, gallery and social
  links open in a sheet (bottom sheet on phones) from company config.
- Restart replays the chosen mode. Layout scrolls on short screens and
  respects safe areas.
- Add tests for the start screen, map links and theme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 08:39:22 +03:30
co-authored by Claude Opus 5.5
parent 611960511e
commit d9ae8a45da
28 changed files with 838 additions and 261 deletions
+15
View File
@@ -0,0 +1,15 @@
// Ways into the game from the start screen.
// - real: GPS places the player at their real position (falls back to offline on failure).
// - offline: starts at Park Mellat with the family car; the first goal is the factory.
// - about: starts in the factory yard to get to know the company.
// - products: starts at the machine samples in the factory with the showroom open.
export const START_MODES = ['real', 'offline', 'about', 'products'];
export const DEFAULT_START_MODE = 'about';
// Where the player and the family car stand relative to the Park Mellat machine (local metres:
// x along the machine front, z away from it), so the park gate and the machine are in view.
export const PARK_PLAYER_OFFSET = { x: -2, z: 6 };
export const PARK_CAR_OFFSET = { x: 3.5, z: 8 };
// Index of the showroom sample the Products mode starts at (the middle one of three).
export const PRODUCTS_SAMPLE = 1;