The league has its court: the tournament setup shows the home venue, not a choice
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d4780de76d
commit
041827c4dc
3 files changed
+24
-4
No files matched your search
@@ -504,6 +504,13 @@ Two more from Oliver's screenshots:
|
|||||||
grey; the band's top rung wears the red border, it is the final. Every other mode keeps the
|
grey; the band's top rung wears the red border, it is the final. Every other mode keeps the
|
||||||
player block (main.buildLeaguePanel).
|
player block (main.buildLeaguePanel).
|
||||||
- **The ribbon grew** (13px type, taller band), per his call.
|
- **The ribbon grew** (13px type, taller band), per his call.
|
||||||
|
- **The court section stops pretending on the league modes** (his catch: "eine Liga hat einen
|
||||||
|
festen Court — eigentlich sollte gar keine Courtauswahl da sein" — right; start() had forced
|
||||||
|
the venue all along while the list still offered a pick). On zombie/cup the section reads
|
||||||
|
"02 · HOME COURT · SET BY YOUR LEAGUE" and shows exactly one ringed row, the league's court;
|
||||||
|
the click handler refuses there. One authoritative loop in syncSetup paints on/lock/display for
|
||||||
|
both faces — the first cut had the league filter ABOVE the generic repaint, which promptly
|
||||||
|
undid it.
|
||||||
|
|
||||||
## Session log: THE LEAGUES — the polish round: the ribbon, the glow, the count-up (2026-08-29, same day, STAGING ONLY)
|
## Session log: THE LEAGUES — the polish round: the ribbon, the glow, the count-up (2026-08-29, same day, STAGING ONLY)
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -352,6 +352,8 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
|
|||||||
.lgFoe.un i { color: var(--dim); }
|
.lgFoe.un i { color: var(--dim); }
|
||||||
/* the band's top rung is the final — it wears the door's own red */
|
/* the band's top rung is the final — it wears the door's own red */
|
||||||
.lgFoe.fin { border-color: var(--red); }
|
.lgFoe.fin { border-color: var(--red); }
|
||||||
|
/* league modes: the venue is the league's own and not a choice — one row, no tap */
|
||||||
|
#courtList.fixed .court { cursor: default; }
|
||||||
/* the WAY-UP RIBBON, horizontal (Oliver's call after two diagonal cuts — a rotated pixel font
|
/* the WAY-UP RIBBON, horizontal (Oliver's call after two diagonal cuts — a rotated pixel font
|
||||||
was the one anti-aliased thing in the menu): a red band running in from OVER the left border,
|
was the one anti-aliased thing in the menu): a red band running in from OVER the left border,
|
||||||
dissolving rightward through a real PIXEL FADE — an inline-SVG mask of 6px cells thresholded
|
dissolving rightward through a real PIXEL FADE — an inline-SVG mask of 6px cells thresholded
|
||||||
@@ -721,7 +723,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
|
|||||||
</div>
|
</div>
|
||||||
<div id="lgFoes"></div>
|
<div id="lgFoes"></div>
|
||||||
</div>
|
</div>
|
||||||
<h3>02 · COURT</h3>
|
<h3 id="s02">02 · COURT</h3>
|
||||||
<div id="courtList"></div>
|
<div id="courtList"></div>
|
||||||
<div class="foot">
|
<div class="foot">
|
||||||
<p id="sSum"></p>
|
<p id="sSum"></p>
|
||||||
@@ -918,6 +920,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="module" src="src/main.js?v=323"></script>
|
<script type="module" src="src/main.js?v=324"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+13
-2
@@ -342,11 +342,21 @@ function syncSetup() {
|
|||||||
document.getElementById('s01').textContent = leagueMode ? '01 · YOUR LEAGUE' : '01 · PLAYER';
|
document.getElementById('s01').textContent = leagueMode ? '01 · YOUR LEAGUE' : '01 · PLAYER';
|
||||||
if (leagueMode) buildLeaguePanel();
|
if (leagueMode) buildLeaguePanel();
|
||||||
if (!courtUnlocked(picked)) picked = leagueOf(profile.prof.lg).court;
|
if (!courtUnlocked(picked)) picked = leagueOf(profile.prof.lg).court;
|
||||||
|
// ...and the COURT section stops pretending to be a choice on the league modes (Oliver: a
|
||||||
|
// league HAS its court — start() has forced it all along): only the league's own row shows,
|
||||||
|
// ringed, as the venue. Every other mode gets the full pickable list. This runs AFTER the
|
||||||
|
// generic repaint below would, so it has the last word on .on/.lock.
|
||||||
|
const homeCourt = leagueOf(profile.prof.lg).court;
|
||||||
|
document.getElementById('s02').innerHTML = leagueMode
|
||||||
|
? '02 · HOME COURT<span>SET BY YOUR LEAGUE</span>' : '02 · COURT';
|
||||||
|
courtList.classList.toggle('fixed', leagueMode);
|
||||||
for (const el of courtList.children) {
|
for (const el of courtList.children) {
|
||||||
const c = COURTS.find(x => x.id === el.dataset.id), l = courtLeague(el.dataset.id);
|
const c = COURTS.find(x => x.id === el.dataset.id), l = courtLeague(el.dataset.id);
|
||||||
const open = courtUnlocked(el.dataset.id);
|
const open = courtUnlocked(el.dataset.id);
|
||||||
el.classList.toggle('lock', !open);
|
el.classList.toggle('lock', !open && !leagueMode);
|
||||||
el.classList.toggle('on', open && el.dataset.id === picked);
|
el.classList.toggle('on', leagueMode ? el.dataset.id === homeCourt
|
||||||
|
: open && el.dataset.id === picked);
|
||||||
|
el.style.display = leagueMode && el.dataset.id !== homeCourt ? 'none' : '';
|
||||||
// the sub line carries the lock and names the price — the tile stays visible, as a goal should
|
// the sub line carries the lock and names the price — the tile stays visible, as a goal should
|
||||||
el.querySelector('i').textContent = open ? c.sub : 'LOCKED — REACH ' + l.name;
|
el.querySelector('i').textContent = open ? c.sub : 'LOCKED — REACH ' + l.name;
|
||||||
}
|
}
|
||||||
@@ -430,6 +440,7 @@ for (const c of COURTS) {
|
|||||||
// Tapping a tile SELECTS it and nothing more. It used to start the match on the spot, which gave
|
// Tapping a tile SELECTS it and nothing more. It used to start the match on the spot, which gave
|
||||||
// you no way to look at the three of them and no way back out of the screen.
|
// you no way to look at the three of them and no way back out of the screen.
|
||||||
b.addEventListener('click', () => {
|
b.addEventListener('click', () => {
|
||||||
|
if (pickedMode === 'zombie' || pickedMode === 'cup') return; // the league picks the venue
|
||||||
if (!courtUnlocked(c.id)) return; // locked: the row itself says which league opens it
|
if (!courtUnlocked(c.id)) return; // locked: the row itself says which league opens it
|
||||||
picked = c.id;
|
picked = c.id;
|
||||||
for (const el of courtList.children) el.classList.toggle('on', el === b);
|
for (const el of courtList.children) el.classList.toggle('on', el === b);
|
||||||
|
|||||||
Reference in new issue
Block a user