|
feat(engine): презентация диалогов — mood/tags/textKey, typewriter, клавиатурный выбор
- DialogueNode/Choice: mood, tags, textKey (+speakerKey у узла); view получает mood/tags, текст резолвится hooks.resolve (fallback — ключ, inline-текст первичен). Узел с одним textKey — реплика. - ui/reveal.ts: чистый revealText(full, elapsedMs, cps) — тесты в node. - DialogueBox v2: typewriter (update/skipReveal/revealing), moodColors, клавиатурный курсор выбора (ListCursor: moveCursor/activate/cursorIndex), высота панели растёт от контента. - Игра: DialogueSystem.advance — сначала догнать печать, при выборе активировать курсор; up/down листают варианты; typewriter 40 cps + moodColors в LocationScene. - Тесты: revealText, mood/tags в view, textKey/speakerKey; доки ui-and-dialogue.md. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/systems/DialogueSystem.ts |
|---|
| docs/engine/ui-and-dialogue.md |
|---|
| packages/engine/src/dialogue/DialogueRunner.ts |
|---|
| packages/engine/src/dialogue/__tests__/DialogueRunner.test.ts |
|---|
| packages/engine/src/index.ts |
|---|
| packages/engine/src/ui/DialogueBox.ts |
|---|
| packages/engine/src/ui/__tests__/reveal.test.ts 0 → 100644 |
|---|
| packages/engine/src/ui/reveal.ts 0 → 100644 |
|---|