THE SEASON, phases 1-4: the front door is the fixture, and the club remembers

The tournament is the canonical path, so the game finally says so. The splash's
primary button names the next cup fixture and enters the draw; the poster wall
moved one tap down and deals three named rooms (the season, the training, out of
competition) with the cup at the top. Two profile fields remember every attempt
— rounds ever reached per league, and the body that put you out — so a lost cup
is a line on the board instead of a null event, and the training court offers
that body first, marked. The promotion names what waits in the new league.

Overlays consolidated in the same pass: three modal drawers became one box with
a masthead, hairline-separated rows and a real footer button (any tap still
dismisses), and the run-end summary wears the same box — headline, xp, mark, and
the fixture with ENTER THE DRAW beside PLAY AGAIN. The cup's own exit is a
ceremony now: OUT IN THE QUARTER-FINAL, your best standing beside it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-31 11:14:25 +02:00
1 parent 063b01d2a5
commit 5c7521f867
10 files changed
+603 -204

No files matched your search

+14
View File
@@ -74,12 +74,26 @@ def clean_profile(payload):
return None
p = payload['p']
word = lambda k, n=12: re.sub(r'[^a-z0-9_]', '', str(p.get(k, '')))[:n]
# THE CUP RECORD (THE SEASON): league -> rounds ever reached. Re-derived key by key like every
# other field — five small ints, nothing else survives the trip.
cups = {}
raw = p.get('cups')
if isinstance(raw, dict):
for lg in range(1, 6):
try:
v = int(raw.get(str(lg), raw.get(lg, 0)))
except (TypeError, ValueError):
v = 0
if v > 0:
cups[str(lg)] = min(9, v)
try:
out = {'v': 1,
'xp': max(0, min(int(p.get('xp', 0)), 1_000_000_000)),
'lg': max(1, min(int(p.get('lg', 1)), 5)),
'ch': 1 if p.get('ch') else 0,
'setup': 1 if p.get('setup') else 0,
'cups': cups,
'out': max(0, min(int(p.get('out', 0)), 99)),
'n': re.sub(r'[^A-Z0-9 ._-]', '', str(p.get('n', '')).upper()).strip()[:NAME_MAX],
'tour': word('tour'), 'kit': word('kit'), 'skin': word('skin')}
except (TypeError, ValueError):