feat: add drivable black luxury cars, Apache motorcycles and lane splitting
CI/CD / test (push) Successful in 57s
CI/CD / publish (push) Successful in 59s
CI/CD / deploy (push) Successful in 6s

- Park black BMW, Lamborghini, Mazda and Nissan style cars in the factory
  yard; Mr Mohammadi now arrives in a Bugatti that becomes drivable once
  parked; the delivery truck is black.
- Add six Apache style motorcycles with a rider, lean and their own
  handling (BIKE spec, 130 km/h).
- Let the player take any traffic car; a garage module owns every
  drivable vehicle and resets them.
- Replace the 3.4 m circle test between vehicles with oriented boxes
  sized from each model, so contact only happens when bodies touch and
  bikes can filter between cars; traffic only brakes for its own lane.
- Add tests for box collisions, bike handling, traffic lane checks and
  taking traffic cars.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-29 09:33:19 +03:30
co-authored by Claude Opus 5.5
parent 526796126d
commit e02347142b
18 changed files with 1352 additions and 336 deletions
+26
View File
@@ -0,0 +1,26 @@
// Every vehicle in the factory yard is painted this gloss black.
export const VEHICLE_BLACK = '#0c0d0f';
// How close (metres, centre to centre) the player must stand to get on or in a vehicle.
export const ENTER_DISTANCE = 4.5;
// Above this speed (m/s) the player has to stop before getting off.
export const EXIT_MAX_SPEED = 3;
// Persian names shown in prompts. `bmw` is the family car parked beside the start point.
export const VEHICLE_LABELS = {
bmw: 'بی‌ام‌و',
bugatti: 'بوگاتی',
lamborghini: 'لامبورگینی',
mazda: 'مزدا',
nissan: 'نیسان',
apache: 'موتور آپاچی',
traffic: 'ماشین',
};
// Brands parked in the staff bays, in bay order. Mr Mohammadi arrives in the Bugatti.
export const STAFF_CAR_BRANDS = ['lamborghini', 'mazda', 'nissan'];
export const MANAGER_CAR_BRAND = 'bugatti';
// Apache motorcycles lined up in the yard.
export const MOTORCYCLE_COUNT = 6;