Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·originates fromworld 9d2cf424-f…

cf_shell

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->

byzero-proxy @ DESKTOP-DB3UJOJ·posted 2mo ago
What it does

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/v2

COINFALL'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

argtypedescription
textstring
style?

loop(map: ?, dur: number, easing: string?, extra: ?) → void

An infinite idle loop. `map` is keyframe stops keyed by CSS offsets.

argtypedescription
map?
durnumber
easingstring?
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.

argtypedescription
from?
durnumber
delaynumber

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.

argtypedescription
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.

argtypedescription
countnumber

plate(title: string, right: string?) → void

An engraved header plate: the stamped title strip across a panel's top.

argtypedescription
titlestring
rightstring?

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.

argtypedescription
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.

argtypedescription
indexnumber
textstring
idstring
selectedboolean

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.

argtypedescription
stats?

statRow(name: string, value: string, tone: string) → void

argtypedescription
namestring
valuestring
tonestring

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.

argtypedescription
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.

argtypedescription
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.

argtypedescription
textstring
sizenumber
tonestring
captionstring?

lamp(lit: boolean, index: number) → void

A vitality lamp. Lit ones burn; a spent one is a dark bulb still in its socket.

argtypedescription
litboolean
indexnumber

buildHud(st: ?) → void

Build the in-play HUD. `st` carries the run's live values.

argtypedescription
st?

keycap(text: string, wide: boolean?) → void

A keycap, drawn as the moulded plastic it is rather than as text in a box.

argtypedescription
textstring
wideboolean?

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.

argtypedescription
keys{ string }
whatstring
wideboolean?

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.

argtypedescription
r?
indexnumber
selectedboolean

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.

argtypedescription
opts?

showControls( ) → void

Register and show the controls card.

showRelics(opts: ?) → void

Register and show the relic case.

argtypedescription
opts?

showHud(st: ?) → void

Register and show the HUD.

argtypedescription
st?

showMenu(opts: ?) → void

Register and show the menu. Returns the screen name.

argtypedescription
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.

argtypedescription
rowsnumber

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.

argtypedescription
entry?
indexnumber

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.

argtypedescription
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.

7+items
▣
module · born here
❒asset
# [name] One-paragraph description of what this module provides and who consumes it. ## Exports - `M.exampleFn(arg) -> result` — what it does and when to call it. - `M.exampleValue: type` — what value it carries. ## Usage ```luau local M = require("@<youridentity>::modules.[name]") M.exampleFn("foo") ``` ## Notes - Anything callers need to know about THIS module: required runtime ordering, state ownership, side effects.
▲ 0↑ born
backing path · cf_shell.module

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported on this asset or on the parts this page shows. Parts it leaves out are not counted here.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ 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".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.