▣
module · drop-in viewer
screens
local Screens = require("ui.screens") ui.registerScreen("st_title", Screens.title(state), 20)
by·posted 1mo ago
What it does
ui.screens — every screen, as a pure function of state
local Screens = require("ui.screens")
ui.registerScreen("st_title", Screens.title(state), 20)
Nothing here touches the engine, the bus or the clock. A screen is a widget tree computed from a plain table, which is what makes it something you can render and look at without playing the game.
| builder | what it draws |
|---|---|
Screens.title(st) | the masthead, the three-duel roster, the menu |
Screens.howto(st) | the lanes, the four judgements, the calibration card |
Screens.calibrationCard(c) | the card on its own, if a screen wants it |
Screens.hud(st) | the in-duel band (bottom 230 px) |
Screens.line(st) | the spoken-line plate |
Screens.pause(st) | the pause overlay |
Screens.results(st) | BREAK / HOLD / FALL and the numbers |
Screens.credits(st) | the roll |
The state table
{
stageIndex, cleared, -- campaign
calibrated, calib, -- { running, taps, taken, applied, spread }
results, -- { outcome, stageId, score, maxCombo,
-- accuracy, meanOffset, judgeCounts }
flash, -- { id, offset, age } the judgement flash
line, -- { speaker, text, color, voiced, bottom }
}
outcome is "break_", "hold" or "fall".
Laid out for 1080 x 1440 portrait. One column, stacked down; nothing assumes horizontal room.
Discussion
Scoped to this part · feeds back into the world's score.
Sign in to post.sign in
No comments yet. Be the first.