|
v2 трек 12: сцены — SceneManager (стек, фейд out→in), меню поверх игры в демке
core/scene.ts — перенос схемы v1 без привязки к бэкенду: стек
push/pop/replace, переход фазами затухание → смена → проявление
(полный переход 2×duration), FadeOverlay {setAlpha} инъекцией;
параллельные переходы глотаются, enter новой сцены не ожидается,
render рисует весь стек. 10 юнит-тестов.
Демка: gameScene (tick+рендер) внизу стека, menuScene (DOM-панель,
мир под ней) сверху — старт в меню; Esc/мост gotoMenu — автосейв
в слот auto + меню, «Продолжить» грузит auto; мост sceneInfo/
gotoMenu/startGame. Гейт scenes.mjs — 11 проверок (фейд чёрный в
конце out, глотание параллельного перехода, продолжение с сейва).
Гейты демки входят в игру через startGame(false)+60 тиков (полный
переход). Уроки: CSS display:flex перебивает атрибут hidden
(#menu[hidden]{display:none}); полный переход = 48 тиков, не 24.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
|---|
|
|
| docs/plan.md |
|---|
| v2/CLAUDE.md |
|---|
| v2/apps/demo/index.html |
|---|
| v2/apps/demo/src/main.ts |
|---|
| v2/apps/demo/tools/checks/dialogue.mjs |
|---|
| v2/apps/demo/tools/checks/hero.mjs |
|---|
| v2/apps/demo/tools/checks/inventory.mjs |
|---|
| v2/apps/demo/tools/checks/physics.mjs |
|---|
| v2/apps/demo/tools/checks/render.mjs |
|---|
| v2/apps/demo/tools/checks/save.mjs |
|---|
| v2/apps/demo/tools/checks/scenes.mjs 0 → 100644 |
|---|
| v2/packages/engine/src/core/__tests__/scene.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/scene.ts 0 → 100644 |
|---|
| v2/packages/engine/src/index.ts |
|---|