The look stops lying: the fallback never reports done, and the women's frame gets room to stand tall

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-30 16:16:54 +02:00
1 parent a38c804069
commit 7fb595ca22
3 files changed
+25 -7

No files matched your search

+14
View File
@@ -491,6 +491,20 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
`RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud
FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone.
## Session log: the look stops lying (2026-08-29, Oliver: "the man with a pink shirt")
After a reload with the women's tour picked, the live-player preview showed THE MAN from behind
in her kit colour — and the woman, when she did show, stood a head shorter. Two root causes:
- **drawLook's fallback satisfied the retry poll.** `n_idle1_f || p_idle1_f || p_idle1` drew
whichever loaded first and returned true — the caller's 200 ms poll stopped on the lie and the
stand-in stuck. It still draws the stand-in (better than a blank) but returns done only when
the WANTED frame drew.
- **The 96px canvas width-bound the contain fit.** Both front sheets are 224 tall, but hers is
127 wide against his 114 (she reaches further — the TOURS note), so contain on 96 shrank her
10% more than him. The three look canvases are 128 wide now; both bodies are height-bound and
stand equally tall.
## Session log: training pays a quarter, the bar wears its endpoints (2026-08-29, the batch's two discussions, both go)
- **THE TRAINING COURT PAYS A QUARTER.** Zero pay made it feel pointless in a meta game (his
+4 -4
View File
@@ -665,7 +665,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
where you can watch it land. Kit and skin rows are built in main.js from the tables. -->
<h3 id="s01">01 · PLAYER</h3>
<div id="who">
<canvas id="look" width="96" height="224"></canvas>
<canvas id="look" width="128" height="224"></canvas>
<div id="whoCtl">
<div id="tours"></div>
<u class="swlab">KIT<i id="kitName"></i></u>
@@ -707,7 +707,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
</div>
<h3>THE BODY</h3>
<div id="who2">
<canvas id="pLook" width="96" height="224"></canvas>
<canvas id="pLook" width="128" height="224"></canvas>
<div id="pCtl">
<div id="pTours"></div>
<u class="swlab">KIT<i id="pKitName"></i></u>
@@ -741,7 +741,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
<div id="card">
<div class="hdr"><button class="chev" id="cdBack">&lt;</button><h2 id="cdName">YOUR PLAYER</h2></div>
<div id="cdTop">
<canvas id="cdLook" width="96" height="224"></canvas>
<canvas id="cdLook" width="128" height="224"></canvas>
<div id="cdMeta">
<img id="cdBadge" alt="">
<u id="cdLeague"></u>
@@ -871,6 +871,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
</div>
</div>
</div>
<script type="module" src="src/main.js?v=335"></script>
<script type="module" src="src/main.js?v=336"></script>
</body>
</html>
+7 -3
View File
@@ -1778,9 +1778,13 @@ function PS(name) {
// off the back of a head was the best the art allowed while every player frame was a back view; the
// moment the front existed, Oliver asked for it here. It is the same kit, the same palette and the
// same tint pass, so the promise above still holds — only the side you are standing on changes.
// Returns false while the sprites are still loading, so the caller knows to come back.
// Returns false while the sprites are still loading, so the caller knows to come back — and
// "still loading" includes DRAWING A FALLBACK: the women's front frame arriving after the men's
// used to satisfy this with the wrong body (a man in her kit colour), and the caller's retry
// poll stopped on the lie. A stand-in is drawn (better than a blank) but never reported done.
export function drawLook(cv2, t, k, sk) {
const img = SPR['n_idle1' + (t.sfx || '')] || SPR['p_idle1' + (t.sfx || '')] || SPR.p_idle1;
const want = SPR['n_idle1' + (t.sfx || '')];
const img = want || SPR['p_idle1' + (t.sfx || '')] || SPR.p_idle1;
if (!img) return false;
const out = tinted('look' + (t.sfx || ''), img, k, sk, t.kit, TINT.kit);
const g = cv2.getContext('2d');
@@ -1789,7 +1793,7 @@ export function drawLook(cv2, t, k, sk) {
const s = Math.min(cv2.width / out.width, cv2.height / out.height);
const w = Math.round(out.width * s), h = Math.round(out.height * s);
g.drawImage(out, Math.round((cv2.width - w) / 2), cv2.height - h, w, h);
return true;
return !!want;
}
// BOUNCE_IDLE.dx/apex are measured off the DRAWN PALM (see config), so a tour whose player reaches