Pin the canvas height to what is actually visible, and three fixes
Viewport, again — the homescreen app was the case that broke it. Watching for a signal cannot work there: launched standalone, iOS resolves the CSS viewport once against a provisional box and never re-resolves it, so no resize, no layout change, nothing for a ResizeObserver to observe. Only a rotation forced the issue. So the CSS box is now a proposal: visualViewport says what is really visible and the height gets pinned in px to match, re-read on every fit — plus a short settle salvo after launch, since that launch announces nothing. - The countdown skipped the transition, where overT is parked at 9999 to hold the point flow. It read as RESUMING IN 9999 after the first game you ever win. - Countdown moved off the HUD line into the open, at a readable size. - A returned shot is a glancing blow now, not a mirror. Reversing the incoming line sent every parry straight back up it — into the thrower — so a boss handed you a free wound per volley. Contact across the racket face sets the angle: dead centre still goes back at him, which is a placement you earn. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e8116c6abb
commit
9a4d921706
4 files changed
+44
-15
No files matched your search
@@ -84,6 +84,12 @@ export const TUNE = {
|
||||
parryArm: 3.4, // m — an incoming shot this close makes the next tap a SWING instead of a serve
|
||||
parryReach: 1.7, // m — how far off the racket a return still connects (normal volley reach is 1.82)
|
||||
parryWindow: 0.2, // s the return window stays open after the tap
|
||||
// A return is a GLANCING blow: contact off the middle of the racket face throws it that many
|
||||
// degrees off straight up-court. Returns used to mirror the incoming line — straight back at the
|
||||
// thrower — so a boss handed you a free wound with every volley. Meeting it dead centre still
|
||||
// sends it back at him; that is now a placement you earn by moving your feet.
|
||||
parryDeflect: 55, // ° of deflection at the edge of the reach
|
||||
parryJitter: 8, // ° of scatter on top — a bat-away is never surgical
|
||||
// ---- chapter bosses: one every bossEvery games, escalating. The racket zombie is demoted to an
|
||||
// occasional opponent (racketEvery) so the boss is the only thing that reads as a wall.
|
||||
bossEvery: 10, // games between chapter bosses
|
||||
|
||||
Reference in new issue
Block a user