| 2026-09-07 |
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>
root
committed
11 hours ago
|
feat(engine): диалоговые эффекты do[] + onEffect и результат onFinish
...
- DialogueEffectOp (giveItem/takeItem/sound/toast/custom) — эффекты как
данные в графе; движок только эмитит через onEffect(op, at), исполнение
— EffectSink игры. Никаких Inventory в движке.
- DialogueHooks { world, resolve } третьим аргументом конструктора +
setHooks (заменяет параметр world из D1).
- DialogueResult { lastNodeId, path, picks }: путь показанных узлов и
выборы игрока; onFinish(graph, result), result читается и после конца.
- Порядок эффектов: setFlags → clearFlags → setVars → do[].
- Тесты: порядок onEffect у узла/выбора, unknown kind не падает,
path/result/перезапуск; доки ui-and-dialogue.md + practices.md.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
11 hours ago
|
feat(engine): условия диалогов v2 — whenVars/hasItem + чистый evalConditions
...
- DialogueWorld { hasItem } — предикаты мира (сумка) инъекцией; без world
hasItem-условия ложны.
- DialogueConditions: whenVars (несколько переменных, AND) и hasItem;
легаси-whenVar не тронут.
- evalConditions/hasConditions — чистые функции для квест-стадий, dry-run
и валидатора; рантайм делегирует проверку им.
- Тесты: AND по переменным, hasItem с/без world, evalConditions на чистом
GameState; доки ui-and-dialogue.md + practices.md.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
12 hours ago
|
| 2026-09-05 |
engine: Tween+easing, fade-переходы, ресайз, IsoDepthLayer, GameState, RNG, StateMachine, DialogueRunner, Settings, атласы, PixelText+VT323, UI-кит, частицы, геймпад, тач-джойстик, аудио-шины, формат карт+Tiled
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|