refactor(engine): глубокий рефакторинг К2 — расшивка аудио, FadeState, контракт fx, Engine.destroy
Расшивка переростков:
- AudioManager (479→279) → AudioManager (фасад) + Voices (полифония sfx,
  pan в полёте в шине голоса) + Loops (слоты музыки/амбиента, кроссфейд)
  + decode.ts (BufferCache с in-flight дедупом) + types.ts;
  load() → register()
- IsometricTileMap: проходимость делегирует новому StaticGrid
  (map/collision.ts) — единый источник blocked/пропы/тени; headless-потребители
  берут через gridOf(data), setTile виден сразу
- core/fade.ts (FadeState): вместо ручных fadeLeft/fadeTotal в Lighting
  (ambient+виньетка) и SceneManager; повторный to() в середине фейда
  стартует от текущего значения — без прыжка

Контракт fx-эффектов: cancel() = остановить + вернуть базовое + погасить
свою вьюху (FxFade без keep теперь гасит, FxTrail получил cancel,
SpriteFlash.cancel через TintFlash.finish); конец жизни — destroyed
везде. FxLayer: один реестр тикающихся (items), flashes — только индекс
перезапуска.

Прочее:
- Engine.destroy() — полная зачистка (exit сцены, fx/tweens/events,
  ввод, FPS-метр, app.destroy) для HMR; stop() — только цикл
- FpsMeter считает всегда, отдаёт геттером fps; DebugOverlay принимает
  FpsMeter и перерисовывает Text не чаще 0,5 с
- Lighting: кэши текстур на инстансе (модульный переживал destroy
  рендерера), чинен двойной destroy darkFree/darkLayer
- InputManager: DOM-обработчики и инъекции идут через общие примитивы
  press/release (клавиши, указатель)
- SpriteAnimator: xorshift → math/rng.createRng (единый ГПСЧ)
- Мёртвый код: FrameAnimation (файл+экспорт+тест), vec2(), pxToUnits,
  screenToIsoExact, pushOutOfWalls

Тесты: +fade, +SceneManager (стек/фазы/глотание), +EventBus, +Engine
(stepTicks, мок pixi.js), +SpriteAnimator, +computeScale. Доки движка
обновлены в том же коммите (core.md: FadeState/Engine.destroy;
render.md: контракт fx, кэш Lighting; anim.md/maps.md/README.md — без
FrameAnimation; practices.md: тест ядра без WebGL, поле-метод).

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 9d5088c commit 3fcecc2eef1aef0a716e3a5829c2279b347b45ea
@root root authored 2 hours ago
Showing 46 changed files
View
apps/game/src/scenes/BootScene.ts
View
apps/game/src/scenes/LocationScene.ts
View
docs/engine/README.md
View
docs/engine/anim.md
View
docs/engine/assets-audio-save.md
View
docs/engine/core.md
View
docs/engine/maps.md
View
docs/engine/practices.md
View
docs/engine/render.md
View
packages/engine/src/anim/FrameAnimation.ts 100644 → 0
View
packages/engine/src/anim/SpriteAnimator.ts
View
packages/engine/src/anim/__tests__/FrameAnimation.test.ts 100644 → 0
View
packages/engine/src/anim/__tests__/SpriteAnimator.test.ts 0 → 100644
View
packages/engine/src/anim/flash.ts
View
packages/engine/src/audio/AudioManager.ts
View
packages/engine/src/audio/Loops.ts 0 → 100644
View
packages/engine/src/audio/Voices.ts 0 → 100644
View
packages/engine/src/audio/__tests__/AudioManager.test.ts
View
packages/engine/src/audio/decode.ts 0 → 100644
View
packages/engine/src/audio/types.ts 0 → 100644
View
packages/engine/src/core/Engine.ts
View
packages/engine/src/core/FpsMeter.ts
View
packages/engine/src/core/__tests__/Engine.test.ts 0 → 100644
View
packages/engine/src/core/__tests__/EventBus.test.ts 0 → 100644
View
packages/engine/src/core/__tests__/FpsMeter.test.ts
View
packages/engine/src/core/__tests__/fade.test.ts 0 → 100644
View
packages/engine/src/core/fade.ts 0 → 100644
View
packages/engine/src/debug/DebugOverlay.ts
View
packages/engine/src/index.ts
View
packages/engine/src/input/InputManager.ts
View
packages/engine/src/map/IsometricTileMap.ts
View
packages/engine/src/map/__tests__/collision.test.ts
View
packages/engine/src/map/collision.ts
View
packages/engine/src/math/Vec2.ts
View
packages/engine/src/math/__tests__/iso.test.ts
View
packages/engine/src/math/__tests__/world.test.ts
View
packages/engine/src/math/iso.ts
View
packages/engine/src/render/Lighting.ts
View
packages/engine/src/render/__tests__/scale.test.ts 0 → 100644
View
packages/engine/src/render/fx/FxFade.ts
View
packages/engine/src/render/fx/FxLayer.ts
View
packages/engine/src/render/fx/FxTrail.ts
View
packages/engine/src/render/fx/__tests__/FxLayer.test.ts
View
packages/engine/src/render/spriteFx.ts
View
packages/engine/src/scene/SceneManager.ts
View
packages/engine/src/scene/__tests__/SceneManager.test.ts 0 → 100644