51 lines
4.2 KiB
Markdown
51 lines
4.2 KiB
Markdown
# Day 9-10: рефактор і чистка (2026-08-13)
|
||
|
||
Бриф прямо просив "думай як розробник, що передає код іншому" — без
|
||
зміни логіки/поведінки гри, лише структура/дублювання/коментарі.
|
||
Погоджений план (`EnterPlanMode`/`ExitPlanMode`) виконаний фазами, кожна
|
||
верифікована окремим `npx vite build`:
|
||
|
||
- **Мертвий код прибрано**: `PayZoneC.getTargetWorldPosition()` (0
|
||
викликів), увесь `PhysicsC.PhysicsObjPair`/`pair`-поле/
|
||
`disablePhysicsPair()` (клас був повністю нежиттєздатним — єдине
|
||
місце, що присвоювало `pair`, саме закомічене); 2 прототипні
|
||
`console.log` (`PayZoneC`, `ResourceC`). `SparkleFxC`'s `console.debug`
|
||
на виснаження пулу — свідомо залишений (реальна діагностика
|
||
деградованого режиму, не сміттєвий лог).
|
||
- **4 нові утиліти в `src/utils/`** — прибрали дублювання, знайдене між
|
||
файлами (не новий functionality, лише перенесення існуючої формули
|
||
без зміни):
|
||
- `perspectiveScale.ts` — camera-distance-ratio компенсація, була
|
||
незалежно написана і в `ResourceC` (`toTarget`), і в `PayZoneC`
|
||
(`playDepositFlight`).
|
||
- `screenWorldProjection.ts` — world<->screen NDC-математика, була в
|
||
`HudC` (screen->world, unproject) і `HealthBarC` (world->screen,
|
||
project) — обидва незалежно читали `canvasRect`.
|
||
- `tweenChain.ts` — той самий "TweenC.add() обидві ланки окремо"
|
||
гочтя й бойлерплейт, дослівно повторений у `BreakablePropC` і
|
||
`SparkleFxC`.
|
||
- `flashOverlayMaterial.ts` — адитивний флеш-матеріал (клон + white
|
||
additive overlay), дослівно повторений у `BreakablePropC` і
|
||
`ResourceC`, разом з дубльованою константою `FLASH_COLOR`.
|
||
- **Коментарі підчищені** у всіх 16 контролерах, `beforeResourcesLoadedCb.ts`
|
||
і всіх 3 CSS-файлах — прибрана вся хронологія/цитати чату/"Day N"
|
||
посилання, лишились тільки короткі WHY-нотатки на дійсно неочевидні
|
||
речі (усі гочті з цього файлу — TweenC-чейн, glTF dot-stripping,
|
||
nipplejs force-переповнення, atan2/conic-gradient зсув, MeshBasicMaterial
|
||
білий-тінт-no-op — лишились, просто по одному разу в коді, не по
|
||
два-три). Додана одна нова коротка нота в `ui.css` — `.bannerButton`
|
||
реально мертвий у білді (purgecss-квірк), раніше це знав тільки цей
|
||
файл.
|
||
- **Свідомо НЕ зроблено**: домен-розбиття `src/controllers/` на
|
||
підпапки (gameplay/vfx/ui/core) — розглянуто і відхилено: жодної
|
||
зовнішньої конвенції під це нема (SDK сам плаский), `resources/` —
|
||
єдиний прецедент підпапок в проєкті, і той групує по типу ассету, не
|
||
по домену. Переїзд 16 файлів заради нуля функціональної вигоди —
|
||
саме "overengineering", проти якого прямо просив бриф.
|
||
- Два CSS-пункти з попереднього Day 8 аудиту (rem/% замість vh,
|
||
відсутній landscape-медіазапит у `health-bar.css`) — **свідомо не
|
||
торкались**, за проханням користувача відкласти.
|
||
|
||
Перевірено виключно `npx vite build` після кожної фази (усі 883 модулі,
|
||
без помилок) — жодного self-testing у браузері, як завжди в цьому проєкті.
|