The band became one axis: fitted plates, and cards that travel

Every transient message — milestone card, RESUMING clock, one-line flash — now
centres its ink on CARD_MID and only one is ever up. Three shared pieces do all
of it: inkSpan measures, plate() sizes the fill to what it holds, slideDraw
swipes it in from the left and off to the right with a four-ghost smear sampled
back along its own easing curve.

- weapon card is icon + name + count, one centred row, no prose
- plain cards centre as a block instead of hanging off the band's top edge
- the clock left the net for the band; it takes over when a card or flash clears
- band moved up 20px into the flash's old row, which it can now that they never
  draw together
- hold times +0.8s: the swipe eats ~0.55s that the old numbers didn't budget for

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-09 12:55:04 +02:00
1 parent 8658a93dc7
commit f352612de3
3 files changed
+144 -52

No files matched your search

+4 -6
View File
@@ -630,12 +630,10 @@ export function deliverTin() {
if (wasPlain) G.weapon = 0;
sendBoy(); voice('new_balls', 0.6);
aside('ump_new_balls_dark', 2.0); // "...and a new opponent, apparently."
// THE PRIZE GETS ITS OWN CARD, with the tin's own icon on it — the announcement AND the whole
// explanation. The first-sight weapon MODAL is gone (with popBarrel's): the testteam never read
// them, and a popup that freezes a live court mid-run costs runs. The card carries the one desc
// line that matters and does not want a tap: you have just won a point, not been asked a question.
G.card = { title: WEAPONS[id].label, sub1: 'DELIVERED TO THE RACK',
sub2: (WEAPONS[id].desc && WEAPONS[id].desc[0]) || '',
// THE PRIZE GETS ITS OWN CARD: the tin's picture, its name, and how many. Nothing else — the
// first-sight MODAL is gone (a popup that freezes a live court mid-run costs runs) and so is the
// prose that replaced it. You have just won a point; you want to know what landed and how much.
G.card = { title: WEAPONS[id].label, sub1: '×' + WEAPONS[id].tin,
icon: WEAPONS[id].icon, color: UI.warm, t: TUNE.tinCardT };
}