Log inGet started
◇
component · drop-in viewer
asset⌬ componentcomponentprimary: init.luau·originates fromworld 9d2cf424-f…

cf_ui

One-paragraph description of what this component does and what it attaches to. Mention any required sibling components (e.g. Model, Transform).

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

[name]

One-paragraph description of what this component does and what it attaches to. Mention any required sibling components (e.g. Model, Transform).

Public fields

  • exampleNumber: number — what it controls, units, valid range.
  • exampleString: string — what it controls.
  • exampleBool: boolean — what it controls.

Methods

  • :methodName(arg) — what it does and when to call it.

Lifecycle

  • awake() — same-frame attach hook. What initial state this component sets up.
  • start() — first-frame-after-awake hook. Cross-component setup that needs the other components on the entity to have finished awake.
  • update(dt) — per-frame, play mode only. What this component does each tick.
  • onDestroy() — cleanup performed on detach / entity despawn.

See man components for the full hook list (onEnable, fixedUpdate, onPropertyChanged, etc.) and the timing details.

Usage

entity(id).component.add("[name]", { exampleNumber = 1.0 })
entity(id).component.get("[name]"):methodName("foo")

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

Every screen COINFALL draws. One component owns the whole UI: the marquee menus, the seed and settings screens, the extras gallery, the pause overlay, the relic draft, and the in-play HUD. It reads the director's state through `cf_hub` and sends every decision back the same way, so the UI never reaches into the run directly. Geometry is expressed against `ui.screenSize()`, the one coordinate space the whole UI lives in. Numbers read off a screenshot are wrong by the capture's downscale factor.

ensureFonts( ) → void

label(text: string, size: number, color: string, extra: ?) → void

argtypedescription
textstring
sizenumber
colorstring
extra?

marquee(text: string, size: number, color: string) → void

Marquee type: the arcade face, set solid. Its letters already stand a pixel apart, so nothing is tracked out between them.

argtypedescription
textstring
sizenumber
colorstring

plate(children: ?, extra: ?) → void

argtypedescription
children?
extra?

menuRow(text: string, id: string, selected: boolean) → void

A menu row. The whole row is clickable, not just a nested button, and the selected row carries the marquee bulb.

argtypedescription
textstring
idstring
selectedboolean

led(text: string, size: number, color: string?) → void

A segmented LED readout: orange digits on a dead-black plate with a sunken bezel, the only clean thing in the building.

argtypedescription
textstring
sizenumber
colorstring?

row(children: ?, extra: ?) → void

argtypedescription
children?
extra?

col(children: ?, extra: ?) → void

argtypedescription
children?
extra?

settingRow(name: string, widget: ?) → void

argtypedescription
namestring
widget?

screenW( ) → number return ui

screenH( ) → number return ui

keyRow(text: string, id: string, color: string) → void

A keyboard-lit action. It reads its own selected state from the cursor, so a screen never has to track which of its rows is live -- the same list the keys walk is the list that lights up.

argtypedescription
textstring
idstring
colorstring

buildSeed( ) → void

buildSettings( ) → void

buildExtras( ) → void

buildPause( ) → void

buildDraft( ) → void

buildEnd( ) → void

buildWalk( ) → void

The WALK overlay: nothing but the prompt, and the subtitle when one is up.

buildSubtitle( ) → void

shellMenu( ) → void

The HUD. Bank and target top-centre as segmented LED, the debt clock beside them, vitality as coin pips bottom-left, corruption bleeding down the right edge, relic cooldowns bottom-right, coins in hand bottom-centre. The screens `cf_shell` has taken over are adapted here rather than rebuilt: this component still owns the state and the keyboard cursor, and hands `cf_shell` the values it draws. The rows `cf_shell` renders are in the same order as `MENU_ITEMS`, so the cursor that walks that list lights the right one.

shellHud( ) → void

shellIntro( ) → void

wanted(phase: string) → void

Which screens belong to which phase. Everything not listed is hidden.

argtypedescription
phasestring

pull( ) → void

sync( ) → void

awake( ) → void

start( ) → void

focusIds(phase: string) → void

CONTINUE is unpickable until a run exists, so the cursor steps over it rather than landing on a row that answers nothing. EVERY screen is driven from the keyboard. The machine this is pretending to be had no mouse, and the cabinet captures the pointer for looking around the hall, so a screen reachable only by clicking is a screen the player cannot leave. Each phase lists the callback ids it can move between, in order; the cursor walks that list and Enter sends the id straight to `onCallback`, the same handler a click would have reached.

argtypedescription
phasestring

screenKeys( ) → void

focusedId( ) → string

Which callback id the cursor is sitting on, so a screen can light its own selected row without duplicating the ordering.

tick(dt: ?) → void

argtypedescription
dt?

update(dt: ?) → void

argtypedescription
dt?

editorUpdate(dt: ?) → void

Edit mode draws the screens so the author sees them, and takes no input.

argtypedescription
dt?

onDestroy( ) → void

onCallback(callbackId: ?, data: ?) → void

argtypedescription
callbackId?
data?

screens( ) → void

Which screens are currently registered -- the data query that confirms the UI matches the phase without trusting a screenshot.

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

23items
▣
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
▣
module · born here
❒asset
# cf_lore <!-- 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.
▲ 0↑ born
▣
module · born here
❒asset
# 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.
▲ 0↑ born
▣
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
▣
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_ui.component

Problems

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

0problems
No problems reported. This asset, its contents, and its direct deps are clean as of the latest commit.
⌬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.