screens
Every full screen the cabinet puts up: `attract` `title` `select` `howto` `pause` `continues` `win` `ending`. `Screens.build(S)` routes on the view state's `screen`.
emberline.ui.screens
Every full screen the cabinet puts up: attract title select howto
pause continues win ending. Screens.build(S) routes on the view
state's screen.
The roster copy here is DISPLAY data - names, roles, the move list, the
one-line read on each fighter. Screens.info(id) merges it with whatever
Bus.registry.fighters published, so real tuning drives the stat bars the
moment the roster slice lands and the screen is finished before it does.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2emberline.ui.screens — every full screen the cabinet puts up. attract title select howto pause continue win ending One function per screen, all returning a tree against the 1280x720 logical canvas. `Screens.build(S)` picks the one the service's view state names. The roster copy here is DISPLAY data — names, roles, the move list, the one-line character read. The numbers a fighter actually plays by come from `Bus.registry.fighters` when the roster slice has landed; the fallbacks below only exist so the select screen is a finished screen before it does.
info(id: string) → any
Display data for a fighter: whatever the roster slice published, with the cabinet's own copy filling every hole.
| arg | type | description |
|---|---|---|
| id | string |
corners( ) → void
skylineBed(top: number, height: number, dim: number) → any
| arg | type | description |
|---|---|---|
| top | number | |
| height | number | |
| dim | number |
footerHints(items: { { string } }) → any
| arg | type | description |
|---|---|---|
| items | { { string } } |
menu(items: { string }, index: number, top: number, width: number, prefix: string) → any
| arg | type | description |
|---|---|---|
| items | { string } | |
| index | number | |
| top | number | |
| width | number | |
| prefix | string |
attract(S: any) → any
The staging slice owns the attract film. The cabinet only offers the way out of it, bottom-right, the way a real one does.
| arg | type | description |
|---|---|---|
| S | any |
title(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
rosterCard(id: string, selected: boolean, index: number) → any
| arg | type | description |
|---|---|---|
| id | string | |
| selected | boolean | |
| index | number |
specialRow(sp: any) → any
| arg | type | description |
|---|---|---|
| sp | any |
select(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
column(title: string, rows: { any }, width: number?) → any
| arg | type | description |
|---|---|---|
| title | string | |
| rows | { any } | |
| width | number? |
motionRow(kind: string, name: string, note: string, ramp: { string }) → any
One special: the motion rose, its name, and the notation written out in prose that WRAPS, so a long input never pushes the column off the canvas.
| arg | type | description |
|---|---|---|
| kind | string | |
| name | string | |
| note | string | |
| ramp | { string } |
matchCard(title: string, body: string) → any
| arg | type | description |
|---|---|---|
| title | string | |
| body | string |
keyRow(caps: { string }, label: string) → any
| arg | type | description |
|---|---|---|
| caps | { string } | |
| label | string |
howto(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
pause(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
continueScreen(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
win(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
ending(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
build(S: any) → any
| arg | type | description |
|---|---|---|
| S | any |
names( ) → void
Special = { name: string, motion: string, note: string }Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing up to 3 levels deep. Open a part to see what it holds further down.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.