cards
Every screen *First Light: Henter of the Glew* puts BETWEEN the player and the hill.
cards
Every screen First Light: Henter of the Glew puts BETWEEN the player and the hill.
local C = require("game.ui.cards")
ui.registerScreen("fl_card", C.title(vm, L, opts), 1000)
| Builder | Card | Rows |
|---|---|---|
C.title(vm, L, opts) | the crest, the name, the tagline, the best night | to_hill, to_howto |
C.howto(vm, L, opts) | glew, the hent, hoggies, the light-line, the tiers, and every way to play | to_hill, to_title |
C.pause(vm, L, opts) | where the round stands: lantern, time left, best | resume, again, to_title |
C.ending(vm, L, opts) | the stamp, the count, the word, the tiers | again, to_title |
Every builder is pure: it takes the view model, the live game.ui.theme
layout, and opts — which row holds the focus, what the connected pad's
buttons are called, and the prompt strip to print — and returns a tree.
Nothing here registers, shows, or writes game state; game.ui.Screens does all
of that.
The three families, in the card itself
A row is at least L.touch points tall and carries its own onClick, so a
pointer click, a finger tap and a pad's confirm on the lit row all land on
the same node. Exactly one row wears the focus ring — an amber left bar, a
lit border and a coloured glow — which is the controller's cursor. The how-to
card prints the keyboard, controller and touch bindings side by side, and every
card's footer names the keys, the pad buttons and the tap for what it offers.
Shape
L.compact (a screen with more width than height) lays the how-to card's three
rules ACROSS instead of down, and L.dense tightens the vertical rhythm, so the
same card fits a 3:4 phone, a 16:9 laptop and a phone held sideways without
clipping or shrinking the type below reading size.
Scoped to this part · feeds back into the world's score.