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>
1 parent d51bcea commit ba04f032bafc86f2339394ea40f24aac2e352dfe
@root root authored 2 hours ago
Showing 9 changed files
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/DialogueSystem.ts
View
docs/engine/ui-and-dialogue.md
View
packages/engine/src/dialogue/DialogueRunner.ts
View
packages/engine/src/dialogue/__tests__/DialogueRunner.test.ts
View
packages/engine/src/index.ts
View
packages/engine/src/ui/DialogueBox.ts
View
packages/engine/src/ui/__tests__/reveal.test.ts 0 → 100644
View
packages/engine/src/ui/reveal.ts 0 → 100644