pages
The five authored screens, each a pure function of a context table. Nothing here reads the board or writes anything: the `Screens` component gathers the context, calls a page, and registers what comes back.
game.ui.screens.pages
The five authored screens, each a pure function of a context table. Nothing here
reads the board or writes anything: the Screens component gathers the context,
calls a page, and registers what comes back.
local pages = require("game.ui.screens.pages")
pages.build("briefing", ctx) -- title | briefing | catalogue | codex | ending
| Page | What it is |
|---|---|
title | The device, the name in gold, the abbot's spoken line, and the way in. |
briefing | The room, the narrator's line printed word for word, the objective in a frame, and who is walking in with what they carry. |
catalogue | The seed catalogue between missions — the squad as stock in a nurseryman's list, with what the last room cost written against each name. |
codex | The herbarium, one specimen a page, paged with the arrows. Eight plates: five plants and three blight forms. |
ending | The end card, won or lost, with the roll of the order — who stood and who fell, and where. |
The context
{ run, mission, missionTitle, squad, voiced, index,
justPlayed, nextMission, report, outcome, reason,
spoken = { key, text } | nil }
spoken is the line the audio slice has a clip for. It is printed word for
word, so a muted player reads exactly what a listening one hears; the mark
beside it says SPOKEN or TEXT ONLY, and clicking it replays the line. When there
is no spoken, the abbot's own written briefing takes the drop cap instead —
the page never loses a line for want of a voice.
pages.CB is the map of callback ids every page fires. The Screens component
answers all of them.
The frame is 1080 x 1440. Every page is one tall column, and where a printed page would use two columns this uses two rows.
Scoped to this part · feeds back into the world's score.