|
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> |
|---|
|
|
| apps/game/src/scenes/BootScene.ts |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| docs/engine/README.md |
|---|
| docs/engine/anim.md |
|---|
| docs/engine/assets-audio-save.md |
|---|
| docs/engine/core.md |
|---|
| docs/engine/maps.md |
|---|
| docs/engine/practices.md |
|---|
| docs/engine/render.md |
|---|
| packages/engine/src/anim/FrameAnimation.ts 100644 → 0 |
|---|
| packages/engine/src/anim/SpriteAnimator.ts |
|---|
| packages/engine/src/anim/__tests__/FrameAnimation.test.ts 100644 → 0 |
|---|
| packages/engine/src/anim/__tests__/SpriteAnimator.test.ts 0 → 100644 |
|---|
| packages/engine/src/anim/flash.ts |
|---|
| packages/engine/src/audio/AudioManager.ts |
|---|
| packages/engine/src/audio/Loops.ts 0 → 100644 |
|---|
| packages/engine/src/audio/Voices.ts 0 → 100644 |
|---|
| packages/engine/src/audio/__tests__/AudioManager.test.ts |
|---|
| packages/engine/src/audio/decode.ts 0 → 100644 |
|---|
| packages/engine/src/audio/types.ts 0 → 100644 |
|---|
| packages/engine/src/core/Engine.ts |
|---|
| packages/engine/src/core/FpsMeter.ts |
|---|
| packages/engine/src/core/__tests__/Engine.test.ts 0 → 100644 |
|---|
| packages/engine/src/core/__tests__/EventBus.test.ts 0 → 100644 |
|---|
| packages/engine/src/core/__tests__/FpsMeter.test.ts |
|---|
| packages/engine/src/core/__tests__/fade.test.ts 0 → 100644 |
|---|
| packages/engine/src/core/fade.ts 0 → 100644 |
|---|
| packages/engine/src/debug/DebugOverlay.ts |
|---|
| packages/engine/src/index.ts |
|---|
| packages/engine/src/input/InputManager.ts |
|---|
| packages/engine/src/map/IsometricTileMap.ts |
|---|
| packages/engine/src/map/__tests__/collision.test.ts |
|---|
| packages/engine/src/map/collision.ts |
|---|
| packages/engine/src/math/Vec2.ts |
|---|
| packages/engine/src/math/__tests__/iso.test.ts |
|---|
| packages/engine/src/math/__tests__/world.test.ts |
|---|
| packages/engine/src/math/iso.ts |
|---|
| packages/engine/src/render/Lighting.ts |
|---|
| packages/engine/src/render/__tests__/scale.test.ts 0 → 100644 |
|---|
| packages/engine/src/render/fx/FxFade.ts |
|---|
| packages/engine/src/render/fx/FxLayer.ts |
|---|
| packages/engine/src/render/fx/FxTrail.ts |
|---|
| packages/engine/src/render/fx/__tests__/FxLayer.test.ts |
|---|
| packages/engine/src/render/spriteFx.ts |
|---|
| packages/engine/src/scene/SceneManager.ts |
|---|
| packages/engine/src/scene/__tests__/SceneManager.test.ts 0 → 100644 |
|---|