diff --git a/docs/demo.md b/docs/demo.md index 175fde7..35033fd 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -17,6 +17,7 @@ | VirtualJoystick | тач в локациях (включается при первом касании) | готово | | IsometricTileMap + A* | карты локаций, движение кнопками (мост: scene:walk) | готово | | mapFormat (JSON+RLE) | карты — файлы `assets/maps/*.map`, генерация `npm run maps` | готово | +| renderMinimap (чистый рендер карты → RGBA) | предмет «Карта окрестностей» (Ирвин даёт с квестом): оверлей `MapScene` — схема области с палитрой тайлов, маркеры переходов/NPC, мигающий герой | готово | | Tiled-импорт | не задействован (дока + тест есть) | резерв | | EventBus | `combat:hurt/attack/playerHit`, `quest:flower` | готово | | GameState (флаги/вары) | прогресс квеста, hp/kills/motes/deaths; сериализация в сейвы | готово | @@ -88,7 +89,7 @@ - `data/` — контент: `locations.ts` (определения локаций), `map.ts` (генераторы), `dialogues.ts` (графы), `npcs.ts`, `enemies.ts`, `quests.ts` (журнал/сумка); - `scenes/` — BootScene → MenuScene (+ SettingsScene, SaveSlotsScene) → - LocationScene (+ InventoryScene); + LocationScene (+ InventoryScene, MapScene); - `systems/` — PlayerController (путь + прямое движение), DialogueSystem, `combat/` (CombatWorld, EnemyBrain, PlayerCombat, CombatViews, HealthBar, stats). - Инструменты: `apps/game/tools/pixelart` (PNG-атласы), `apps/game/tools/audio` (WAV-генератор), @@ -116,6 +117,9 @@ - `map/IsometricTileMap.setTile` — изменение тайла с перерисовкой ячейки. - `map/pathfinding.findPathToNeighbor` — путь к краю занятого/непроходимого тайла (гейтинг взаимодействий по дистанции в демо). +- `map/minimap.ts` — `renderMinimap`: чистый рендер `TileMapData` в RGBA-картинку + «вид сверху» (палитра — параметр, маркеры, cell 2–3 px, без Pixi); текстуру + делает игра (`MapScene`). - `cutscene/CutsceneRunner.ts` — view-агностичный раннер шагов (`call/cameraMove/burst/wait/setFlag`), шаг с `seconds: 0` — параллельный; сцена ставит геймплей на паузу по `active`. diff --git a/docs/plan.md b/docs/plan.md index c1e4f57..0cb5a6f 100644 --- a/docs/plan.md +++ b/docs/plan.md @@ -35,6 +35,7 @@ | 14 | Акт 2 (контент): карты Ржавая роща/Старый разъезд, Клинт + размещения NPC по флагу, квест резонатора, Старая Машина и финальная катсцена | ✅ сделано (2026-09-08): A1 fa38ee7 (карты/переходы); A2 58a8164 (Клинт, `NPC_PLACEMENTS`); A3 6068646 (квест резонатора, чек `resonator.mjs`); A4 ccc3ab3 (правильный звон, чек `final.mjs`, docs) | | 15 | Уход от кликов: фикс радиуса взаимодействия (евклидова линейка вместо проекционной), ходьба WASD/стик/джойстик, взаимодействие кнопкой действия E/A в радиусе, подпись `[E]`, удаление клик-роутинга (`InteractRouting.ts`), мост `scene:walk`/`scene:approach` + переписывание чеков и смоуков | ✅ сделано (2026-09-08): C1 fde88b6, C2 50cfc15, C3, C4; тач-кнопки действий — позже (джойстик даёт только движение) | | 16 | Переделка по фидбеку после игры: свет заново («тьма с прорезями»), ветер лугов, квестовая ясность (HUD-трекер, тосты, направления, журнал), баги UI (флип side-анимации, подложка диалога, переносы шрифтов) | ✅ сделано (2026-09-08): L1 920d0b0 (движок: RT-карта силы тьмы, erase-прорези, dirty-bake, day fast-path), L2 93491b7 (солнечный день, `duskColor` золотого часа, тюнинг радиусов/арт), L3 64e5ce8 (ветер: воздушная полоса 250–1800 Гц вместо «прибоя»), L4 64efcf5 (`questTracker` в HUD, тост «Тон (N/3)», направления в квестах/диалогах, журнал активных задач, фикс вталкивания врагов в стены), L5 8490bf9 (флип side-анимации, панель диалога сразу полной высоты, wordWrap имён/кнопок/тостов) | +| 17 | Второй раунд фидбека: баг мотов/сейвы/маркер NPC, свет +25% и фонарь, замах+след боя, деревья (варианты+качание+пепел), фасады домов, пепельная трава и читаемые зоны наката, амбиент день/ночь, миникарта (движок + предмет + оверлей) | ✅ сделано (2026-09-08): B1 (моты/автосейв на переходах и закрытии вкладки/маркер), B2 (лампа 2.0/1.0, спрайт фонаря, центр внизу), B3 (сектор замаха + дуга-след, `conePath` в движке), B4 7f14fb0 (3 вида крон × 2 кадра качания, осыпание пепла), B5 7ae42cf (3 фасада домов, явная расстановка в Звенце), B6 1a906e0 (трава сквозь пепел, плотнее летающий пепел, тёплый DARK_SPOT_TINT), B7 19ce175 (ночные лупы областей + ashflow, кроссфейд по `dayNightFactor`, positions-слои зон), B8 ef8d9b7+8516872 (`renderMinimap` в движке, предмет `map_scroll` у Ирвина, оверлей `MapScene`) | Отложено: **IsoLayout как параметр игры** — `DEFAULT_ISO` в `math/iso.ts` остаётся единственной точкой входа; прокидывание конфига игры через ~15 мест движка не даёт