five-on-it / apps/client/src/ui/MainMenu
apps/client/src/ui/MainMenu
The main menu, over the burning car (renderer/menu-scene.ts): a title screen ("press any key to accept liability"), then a list (Play online, Play local in the desktop app, Community levels, Galleries, Settings, Controls, Create (the platform's model making a game from a brief, ?create), Admin for an admin of the platform the page signed in to, and Quit in the desktop app) and its screens. Play online lists the levels that ship with their pictures and plays them on the page's game server, or on the one a platform names (online.ts): asked first what it is (/info), its cities wait greyed out until it answers with this game's protocol, and the platform's address is set right there (once it answers, the city's Missions open its curated game's page, every mission with a Play of its own, and Play together its Quick play and public lobbies, ?together); a platform for the game's owners (its /info) says so, with "Sign in through Steam" until the page is signed in and "Get it on Steam". In the desktop app "Sign in through Steam" signs in with the app's Steam ticket, or without Steam running opens Steam's page in a window of the app's (MenuSteam.window); once it has on this device, the app signs in again by itself with its ticket as soon as the platform answers (MenuSteam.ticket); a refusal says why, with "Get it on Steam". Play local hosts a city on the desktop app's own server (the bridge's host, which friends on the network join at the addresses shown) or joins a friend's by the address they read out. Then the four galleries, the Settings screen (SettingsPanel) and the keys (KeysList). The keys move the selection (up and down, W and S), choose (Enter, Space, E) and go back (Esc, Backspace), but in an address field, which has them; the mouse points and clicks. Every move makes a quiet tick, a choice two notes up, going back two notes down (onSound). Coming back from a game (way), the menu opens on its way to play's screen.
The look borrows a tactical briefing's (letterbox bars, thin rules, a status line of readouts, a selection that steps rather than glows) and keeps the game's deadpan: the readouts are about a rental car on fire.