KitUI
The apothecary's field kit: every screen Nine Bells puts in front of a player, and the only place UI callbacks land.
KitUI
The apothecary's field kit: every screen Nine Bells puts in front of a player, and the only place UI callbacks land.
One entity carries this component — KitRoot, spawned by game.kit. It is a
component rather than a module because a ui callback id is delivered to
onCallback on a persistent owner, and a module has no lifecycle to own one.
The screens
| screen | layer | when |
|---|---|---|
kit_title | 60 | phase title |
kit_notes | 95 | opened from the title or the pause card |
kit_hud | 50 | phase play and paused |
kit_say | 58 | whenever a line is on screen, in any phase |
kit_toll | 62 | for two seconds after a bell |
kit_pause | 80 | phase paused |
kit_end | 70 | phase won / lost |
Everything is laid out for 1080 x 1440 — stacked down the tall axis, never side by side. The HUD keeps to a 400-point column at the top left and a belt across the bottom, so the middle of the frame — where the doctor is — stays clear.
What it reads
NB.state (read only), and these events: phase, bell, say,
patient.treated, infected.treated, hurt, tincture.
What it writes
NB.setPhase from the title screen and the pause card, and NB.emit("ui.click")
for every control a player touches. It owns no other blackboard field.
Sound
Interface sound is synthesised locally by ui.kitsound and played through this
entity's own Audio source, so a missing or failed audio provider cannot mute
the interface. The world's sound stays with the audio slice.
Callback ids
kit.begin, kit.notes.open, kit.notes.close, kit.pause.open,
kit.resume, kit.abandon, kit.restart.
Scoped to this part · feeds back into the world's score.