portraits
The five emotion frames each character shows while they are speaking, and their registration with `Game.registerPortrait`.
portraits
The five emotion frames each character shows while they are speaking, and their
registration with Game.registerPortrait.
Portraits.spec(id) builds the images shape — one texture per Game.EMOTION,
each value a texture asset identity (cast.portraits.hozuki_warm) that draws
when handed to an image widget's src. spec.paths carries the same frames
as VFS paths, and an emotion whose frame is missing falls back to neutral
rather than leaving a nil to draw.
Portraits.register() registers all three and reports how many frames each is
missing, so a gap shows up in the boot log instead of mid-conversation.
The frames themselves live in ../portraits/, baked from each character's own
body: the pose, the light and the colour of the air change per emotion while the
face stays the same face.
Scoped to this part · feeds back into the world's score.