--- a/index.html +++ b/index.html @@ -6,6 +6,7 @@ Sillage + @@ -26,6 +27,6 @@
- + --- a/src/sim/stations.ts +++ b/src/sim/stations.ts @@ -1,7 +1,5 @@ -import roussesConfig from '../stations/rousses.config.json'; import type { RestoDef } from './restos'; -import { ROUSSES_RESTOS } from './restos-rousses'; -import { DEFAULT_CONFIG, parseConfig, type StationConfig } from './stationConfig'; +import type { StationConfig } from './stationConfig'; import type { TrackDef } from './track'; /** A ski area baked by scripts/bake-station.mjs (metres, x east, z south; see that script for the encodings). */ @@ -46,22 +44,8 @@ restos: RestoDef[]; } -export const STATIONS: Station[] = [ - { - id: 'rousses', trackId: 'free', name: 'Les Rousses', area: 'Jura · Dôle-Tuffes', steep: 2.3, h0: 1160, - start: 'Jouvenceaux', summit: 'Dappes', summitName: 'La Dôle', seed: 4242, km: 36, lifts: 22, alt: [1120, 1677], far: 40000, haze: 50, - load: () => import('./rousses-data').then((d) => d.ROUSSES), - config: parseConfig(roussesConfig, DEFAULT_CONFIG), - restos: ROUSSES_RESTOS, - }, - { - id: 'avoriaz', trackId: 'free-avoriaz', name: 'Avoriaz', area: 'Portes du Soleil · from Morzine to the Swiss Wall', steep: 1, h0: 0, - start: 'Super-Morzine', summit: 'Mossettes', summitName: 'Les Mossettes', seed: 7474, km: 87, lifts: 37, alt: [960, 2466], far: 70000, haze: 120, - load: () => import('./avoriaz-data').then((d) => d.AVORIAZ), - config: DEFAULT_CONFIG, - restos: [], - }, -]; +/** None here: the free-ride ski areas (real map data) are not part of this build, only the generated runs. */ +export const STATIONS: Station[] = []; export const stationOfTrack = (trackId: string): Station | undefined => STATIONS.find((s) => s.trackId === trackId); --- a/src/ui/menus.ts +++ b/src/ui/menus.ts @@ -62,7 +62,6 @@

Sillage

Carve your line.

-
@@ -70,7 +69,6 @@ ${isTouch() && innerHeight > innerWidth ? '
↻ Turn your phone sideways for a wider view
' : ''} `); this.on('[data-go="select"]', () => this.select()); - this.on('[data-go="free"]', () => this.stations()); this.on('[data-go="locker"]', () => this.locker()); this.on('[data-go="settings"]', () => this.settings(() => this.main())); } @@ -144,7 +142,6 @@
- --- a/src/net/online.ts +++ b/src/net/online.ts @@ -1,7 +1,7 @@ import type { SkierColors } from '../render/skierModel'; /** The portail.io server (Render) relays the free ride's skiers, one channel per station (server/games/sillage.js there). */ -export const PORTAL_URL = 'https://portail-io.onrender.com'; +export const PORTAL_URL = ''; /** What each skier sends ~15 times a second: x, y, z, heading, vx, vy, vz, edge, skid, flags (FLAG.*). */ export type WireState = number[]; @@ -38,9 +38,9 @@ constructor(readonly station: string, readonly name: string, readonly look: SkierColors) {} /** Connects (socket.io loaded on demand: solo players never download it). */ - async start(url = PORTAL_URL): Promise { - const { io } = await import('socket.io-client'); - this.attach(io(url, { transports: ['websocket'], reconnectionDelayMax: 10000, timeout: 60000 }) as unknown as Wire); + async start(_url = PORTAL_URL): Promise { + // Not part of this build: the online free ride is off, nothing connects anywhere. + this.status = 'offline'; } attach(wire: Wire): void {