hud
The screens the game wears while it is being played, as pure functions of a view table: the tide gauge, the yowe tally, the station ladder, the phrasebook, the encounter panel and the caption band. Nothing here reads world state or registers a screen — `screens.frontend` does bot…
screens.hud
The screens the game wears while it is being played, as pure functions of a
view table: the tide gauge, the yowe tally, the station ladder, the phrasebook,
the encounter panel and the caption band. Nothing here reads world state or
registers a screen — screens.frontend does both.
The geometry, and why it is these numbers
The frame is 1080 × 1440. The one thing that cannot be solved by stacking is a full-height meter and a full-width panel wanting the same pixels, so the layout is fixed rather than discovered:
| x 20 – 104 | the tide column, top to bottom, never covered by anything |
| x 124 – 1050 | everything else, in bands down the screen |
| y 34 – 130 | the yowe tally (left) and the station ladder (right) |
| y 610 – 1410 | the encounter panel, when a hernsew is speaking |
| foot | the phrasebook, when one is not |
The phrasebook moves into the encounter panel while a bird is being answered, because reading the new glyphs against the earned ones is the whole move the game asks for, and hiding the book at that moment would take the game away.
Every absolute box is placed by top plus an explicit height, never by
bottom: a bottom-anchored box whose height comes out of its own wrapped
content lands at the wrong y here, and the caption band and the phrasebook both
ran off the foot of the frame that way.
The encounter panel
Driven by tongue.book. It draws the call as glyphs and as the Lingster's
romanised transcription, the bird's own hint under it, the phrasebook to read
them against, and the answers as full-width stacked plates — three side by side
do not fit in 1080 and never will. After the answer it holds: the right option
lit, the wrong choice marked, and the literal word-for-word reading in place of
the hint, so a player who guessed can see why the right answer was right.
The caption band
H.caption(line, progress, placement) — low over gameplay, aboveEncounter
while a bird is being answered, overCard over a title or an ending, where the
card's own type owns the foot of the frame. The bar under the text is the line's
own progress: proof on screen that a voice is still speaking, whether or not a
clip was ever generated for it.
Scoped to this part · feeds back into the world's score.