cf_shell
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->
cf_shell
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->TODO: describe this module.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2COINFALL's front-of-house screens, built as styled widget trees: the attract/main menu the cabinet sits on when nobody is playing. The screen is a MACHINE, not a list of words on black. It is framed as the glass of a cabinet — a lit marquee plate above, a recessed well holding the menu, a brass bezel around it, and a service strip along the bottom — so the menu reads as part of the arcade the game takes place in.
label(text: string, style: ?) → void
| arg | type | description |
|---|---|---|
| text | string | |
| style | ? |
loop(map: ?, dur: number, easing: string?, extra: ?) → void
An infinite idle loop. `map` is keyframe stops keyed by CSS offsets.
| arg | type | description |
|---|---|---|
| map | ? | |
| dur | number | |
| easing | string? | |
| extra | ? |
boot(from: ?, dur: number, delay: number) → void
A one-shot entrance. Held backwards through `delay`, so staggering the delay across sections makes them power on in sequence rather than at once.
| arg | type | description |
|---|---|---|
| from | ? | |
| dur | number | |
| delay | number |
marqueeBreath( ) → void
The marquee's glow breathes, the way a tube that has been on for years does.
bezel(children: ?, extra: ?) → void
A brass bezel wrapping content, as the cabinet's glass surround does.
| arg | type | description |
|---|---|---|
| children | ? | |
| extra | ? |
rivets(count: number) → void
A row of rivets. Real cabinet panels are bolted on, and the bolts are most of what makes a flat rectangle read as fabricated metal.
| arg | type | description |
|---|---|---|
| count | number |
plate(title: string, right: string?) → void
An engraved header plate: the stamped title strip across a panel's top.
| arg | type | description |
|---|---|---|
| title | string | |
| right | string? |
instructionCard(children: ?) → void
The printed instruction strip that sits under a cabinet's glass: cream card stock, a hairline rule, small hard-set type. This is what the controls screen is, rather than a list of keys on a void.
| arg | type | description |
|---|---|---|
| children | ? |
marquee( ) → void
The lit header plate. Brass, bevelled by an inset highlight over a gradient, carrying the title and the year.
menuRow(index: number, text: string, id: string, selected: boolean) → void
One menu row. A brass gutter on the left, the index, the label. The selected row is lit and carries a pulsing caret; the rest respond to the pointer.
| arg | type | description |
|---|---|---|
| index | number | |
| text | string | |
| id | string | |
| selected | boolean |
statusPanel(stats: ?) → void
The right-hand readout: what this cabinet remembers about the player. Density here is what stops the screen reading as five words on a void.
| arg | type | description |
|---|---|---|
| stats | ? |
statRow(name: string, value: string, tone: string) → void
| arg | type | description |
|---|---|---|
| name | string | |
| value | string | |
| tone | string |
buildMenu(opts: ?) → void
Build the attract/main-menu tree. `opts.selected` is the highlighted row index, `opts.stats` the cabinet log, `opts.canContinue` whether a run exists.
| arg | type | description |
|---|---|---|
| opts | ? |
anchor(style: ?, children: ?) → void
Anchored absolutely rather than laid out in flow: the corruption meter grows during a run, and in a flow column that growth pushes the vitality lamps off the fold exactly when a player most needs to see them.
| arg | type | description |
|---|---|---|
| style | ? | |
| children | ? |
readout(text: string, size: number, tone: string, caption: string?) → void
A readout housed in a recessed brass surround, the way a real machine's counters are: bezel, inner shadow, glowing digits.
| arg | type | description |
|---|---|---|
| text | string | |
| size | number | |
| tone | string | |
| caption | string? |
lamp(lit: boolean, index: number) → void
A vitality lamp. Lit ones burn; a spent one is a dark bulb still in its socket.
| arg | type | description |
|---|---|---|
| lit | boolean | |
| index | number |
buildHud(st: ?) → void
Build the in-play HUD. `st` carries the run's live values.
| arg | type | description |
|---|---|---|
| st | ? |
keycap(text: string, wide: boolean?) → void
A keycap, drawn as the moulded plastic it is rather than as text in a box.
| arg | type | description |
|---|---|---|
| text | string | |
| wide | boolean? |
controlLine(keys: { string }, what: string, wide: boolean?) → void
One line of the instruction card: the keys on the left, what they do on the right, separated by a leader rule the way a printed card does it.
| arg | type | description |
|---|---|---|
| keys | { string } | |
| what | string | |
| wide | boolean? |
buildControls( ) → void
The controls screen, built as the printed card under a cabinet's glass.
relicCard(r: ?, index: number, selected: boolean) → void
A relic, presented as a prize behind glass: a velvet-lined niche, the object's glyph, its name engraved beneath, its price on a tag.
| arg | type | description |
|---|---|---|
| r | ? | |
| index | number | |
| selected | boolean |
buildRelics(opts: ?) → void
The relic case. `opts.relics` is the list, `opts.selected` the index under the cursor, `opts.rot` how much the player can spend.
| arg | type | description |
|---|---|---|
| opts | ? |
showControls( ) → void
Register and show the controls card.
showRelics(opts: ?) → void
Register and show the relic case.
| arg | type | description |
|---|---|---|
| opts | ? |
showHud(st: ?) → void
Register and show the HUD.
| arg | type | description |
|---|---|---|
| st | ? |
showMenu(opts: ?) → void
Register and show the menu. Returns the screen name.
| arg | type | description |
|---|---|---|
| opts | ? |
tractorStrip(rows: number) → void
The tractor-feed strip down each edge of continuous paper: the perforated margin with its sprocket holes. It is most of what makes a cream rectangle read as a printout rather than as a box with text in it.
| arg | type | description |
|---|---|---|
| rows | number |
printedLine(entry: ?, index: number) → void
One printed line. `tone` picks how it sits on the page: a heading, a ruled entry with its leader dots, or the flat body of the sheet.
| arg | type | description |
|---|---|---|
| entry | ? | |
| index | number |
buildIntro(st: ?) → void
Build the opening document. `st.lines` are the lines already printed, `st.partial` the one still coming off the head, `st.done` whether the sheet is finished.
| arg | type | description |
|---|---|---|
| st | ? |
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.