Streamline mobile menus and refresh splash logo

This commit is contained in:
wuwi committed 2026-09-07 13:26:17 +02:00
1 parent a399e4929c
commit a09856f8c9
6 files changed
+569 -483

No files matched your search

+3 -32
View File
@@ -833,7 +833,7 @@ export const MODES = [
{ id: 'classic', name: 'CLASSIC TENNIS', sub: 'REAL TENNIS · BEST OF THREE SETS', art: 'mode_classic' },
// THE CLIMB (2026-08-29): the arcade is the survival marathon through the WHOLE earned ladder,
// bottom up — its length grows with the career; the cup stays the league fixture. See beats.
{ id: 'zombie', name: 'ARCADE', sub: 'THE WHOLE CLUB, BOTTOM UP · BLOOD ONLY', art: 'mode_arcade' },
{ id: 'zombie', name: 'THE CLIMB', sub: 'THE WHOLE CLUB, BOTTOM UP · BLOOD ONLY', art: 'mode_arcade' },
// `tag` is the poster's corner chip (main.banner): the cup is THE WAY UP — winning your
// league's tournament is the one route to promotion, and the picker should say so standing.
{ id: 'cup', name: 'THE TOURNAMENT', sub: 'YOUR LEAGUE\'S ROUNDS · WIN IT TO RISE', art: 'mode_cup',
@@ -846,37 +846,8 @@ export const MODES = [
{ id: 'gore', name: 'SPLATTER GORE', sub: 'NO WARM-UP · SURVIVE THE DEAD CLUB', art: 'mode_gore' },
];
// THE SETUP SCREEN'S TOP ROW (Oliver's two-step menu, 2026-08-14): three posters, and picking one
// opens its own second step — classic deals the difficulty chips, zombie tennis deals its two
// sub-mode cards (arcade / the cup), gore just IS gore. A row either points at a run mode in MODES
// (`mode`) or carries its own card and the MODES ids it fans out to (`kids`).
// THE ROOMS, NOT A SHELF (2026-08-31, THE SEASON). The wall used to deal five posters as equals
// with the career hidden two taps inside ZOMBIE TENNIS, so nothing on screen said what any of them
// was FOR — Oliver: "alles ist irgendwie beliebig". Three named groups answer that before a single
// caption is read: one path up, a room to practise in, and a room where nothing counts. A `group`
// row is a heading (main.buildTops), not a poster.
//
// The cup left the ZOMBIE TENNIS pocket for the top of the wall — it is the canonical path, and a
// canonical path does not live behind a fan-out. Its two former siblings (the climb, the training
// court) stand on their own in the training group, which also cost the second step its only other
// job: CLASSIC's difficulty chips are all that still fan out.
// THE TEXT REDUCTION (2026-08-31, design handoff): a room is ONE WORD and the posters carry only
// their names. The straps went with the sentences — a shelf that has to explain itself is a shelf
// nobody reads. `layout` is how the room deals its posters: the fixture is a HERO with the one
// call on the screen, the training pair stands side by side, the casual three stack shorter.
export const MENU = [
{ group: 'SEASON', layout: 'hero' },
{ mode: 'cup' },
{ group: 'TRAINING', layout: 'pair' },
{ mode: 'zombie' },
{ mode: 'train' },
{ group: 'CASUAL', layout: 'stack' },
{ mode: 'gore' },
{ mode: 'classic', diffs: true },
// NETPLAY (prototype): a poster with no run mode of its own — its second step is HOST / JOIN,
// and either chip starts classic tennis against the other phone (beats.startNetVs + src/net.js)
{ name: 'VS A FRIEND', sub: 'LIVE 1V1 · REAL TENNIS · TWO PHONES', art: 'mode_vs', net: true },
];
// Additional solo modes. The splash owns the league fixture, Gore and Vs a Friend.
export const MENU = [{ mode: 'zombie' }, { mode: 'train' }, { mode: 'classic' }];
// CLASSIC's difficulty. The first cut scaled only flub/quality-cap/speed and Oliver felt NOTHING —
// the quality distributions overlapped (0.45 floor either way), ±12% speed never binds because the