Choice and input looks
Lives in: themes/<pack>.json, plus layout / story fields
How choice buttons and the name-entry field look. Story choices and input flow: Choices and memory. Layout defaults: Choice and character layout.
Choice packs
A pack is a JSON file under themes/. The name is the file stem: "style": "choice_button" → themes/choice_button.json.
Two common roles:
| Role | How you point at it | What’s inside |
|---|---|---|
| Button look | layout.choices.style, node choices.style, or sticky choice_style | Textures / flat colours / fonts for stacked text buttons |
| Group compose | choices.source / container.source / item.source | Layout + item chrome for free / sprite / overlay menus |
"style" / "source" merge rules: Reusing settings. Locale overlays: themes/<name>_<locale>.json.
Button pack (usual ADV)
{
"min_width": 220,
"padding_left": 18,
"padding_right": 18,
"padding_top": 4,
"padding_bottom": 6,
"normal_texture": "sprites/button-normal.png",
"hover_texture": "sprites/button-hover.png",
"pressed_texture": "sprites/button-down.png",
"texture_9slice": [6, 6, 6, 6],
"font_color": "#3a2a1a",
"font_hover_color": "#6b4420"
}
Flat colour keys (normal_bg, borders, …) work when textures are omitted or empty. Optional click_sfx / hover_sfx override default UI sounds for button choices.
Choice packs do not restyle screen/menu buttons (those use theme buttons) or the dialogue panel plate.
Sticky choice look
{ "type": "choice_style", "style": "choice_plain" }
Stays until you change it. Separate from theme_style mood profiles — Theme and the dialogue box.
Text input packs
Optional pack for story name-entry / text fields. No pack required — omit style and the field uses dialogue colours and flat fills.
| Piece | Keys (examples) |
|---|---|
| Field | field_font_color, field_normal_bg / textures, padding, nine-slice |
| Confirm button | Same family as choice/nav packs (normal_texture, font_color, …) |
Precedence: moment input.style → sticky input_style → layout.text_input.style → defaults.
theme_style does not restyle input chrome (same rule as choice packs).
Usually you need
| Want | Do |
|---|---|
| Default stacked choices | "style": "choice_plain" (or your pack) in layout.choices |
| Different look this scene | Sticky choice_style or node choices.style |
| Custom name field | A text-input pack + layout.text_input.style |
Next
Free choices · Title, pause and settings screens · Choice packs · Text input packs