|
fix: утечки жизненного цикла (сцена, ввод, карта) + read-only тест карт
Игра: - LocationScene: подписки EventBus снимаются в exit() (off из on); DialogueSystem.destroy(); worldAudio.setLayers([]) в exit (лупы амбиент-слоёв раньше звучали поверх следующей сцены); guard гонки roomtone (сцена вышла до резолва промиса — луп гасится); в exit добавлены moteLabel и chargeRing (в worldRoot — не вычищался). - SaveSlotsScene: имена областей из areaOf() (интерьеры показывались как «луга»). Движок: - InputManager: contextmenu-слушатель снимается в dispose(). - IsometricTileMap: плейсхолдер-графика ячейки хранится в CellSprites и уничтожается при перерисовке (раньше накапливалась на setTile). Тесты карт: fresh/round-trip read-only в npm test; запись файлов — только при RUN_MAPS_GEN=1 (npm run maps) — обычный прогон больше не мутирует рабочее дерево. agent:check: дублирующая проба maps удалена, invariants — через сценарий checks/agent-invariants.mjs (был инлайн- дубль, разошедшийся с ним). Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| CLAUDE.md |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/scenes/SaveSlotsScene.ts |
|---|
| apps/game/src/systems/DialogueSystem.ts |
|---|
| apps/game/tools/agent.mjs |
|---|
| apps/game/tools/maps/gen.test.ts |
|---|
| package.json |
|---|
| packages/engine/src/input/InputManager.ts |
|---|
| packages/engine/src/map/IsometricTileMap.ts |
|---|