diff --git a/docs/plan.md b/docs/plan.md index 20d502c..fd95296 100644 --- a/docs/plan.md +++ b/docs/plan.md @@ -29,6 +29,10 @@ | 10 | Освещение: ambient multiply + аддитивные источники (движок L1, игра L2, контент L3) | ✅ сделано (2026-09-07); точки расширения: day/night через `setAmbient`-лерп, динамические источники `addLight/removeLight`, импульсы переосвещения — позже | | 10b | Освещение II: импульсы (`pulseLight`/`pulseAmbient`), день/ночь, виньетка (`setVignette`, низкий hp/накат), тёмные ауры зон (`upsertDarkSpot`), гало: 4 ступени + дизер-кольцо | ✅ сделано (2026-09-07): движок L1 + игра L2 (хуки боя, `scene:damagePlayer`) + контент L3 (ночь лугов/Звенца/прудов, свет колокольчиков, окна) | | 10c | Время суток: `GameClock` (1 с = 1 игровая минута, старт 8:00), кривая `dayNightFactor` в движке, `GameLighting` по депу `timeHours` (`lerpAmbient`-микс, `whenNight`-источники, лампа по фактору), сейв `clock` (v4), миграция state v3 (−`evening`), мост `s.time`/`scene:setTime`/инвариант `time-bounded`, сценарий `checks/time.mjs` | ✅ сделано (2026-09-07); дальше — предмет «часы» в инвентаре | +| 11 | Катсцены v2: шаг `until` (ожидание события, timeout), tween `applyEase`, шаг `moveView` (движение вьюх/актёров), `skip()` раннера, диалог и катсцена в одном тике, актёры-ходоки (`CutsceneActors`) | ✅ сделано (2026-09-07): f398d83, 7478d90, К3 | +| 12 | UI: скролл списков (`ListScroll` + `MenuList.visibleRows`, hover→курсор, value-слот кнопки), инвентарь/настройки на скролле | ✅ сделано (2026-09-07): движок + eb1596b (игра) | +| 13 | Зум камеры: `Camera.setZoom/zoomTo`, шаг `cameraZoom`, интеграция в игре (клики/culling/свет/мост), debug-клавиша Z, чек `zoom.mjs` | ✅ сделано (2026-09-07): 878355c, 8730614 | +| 14 | Акт 2 (контент): карты Ржавая роща/Старый разъезд, Клинт + размещения NPC по флагу, квест резонатора, Старая Машина и финальная катсцена | 🚧 в работе | Отложено: **IsoLayout как параметр игры** — `DEFAULT_ISO` в `math/iso.ts` остаётся единственной точкой входа; прокидывание конфига игры через ~15 мест движка не даёт