Utility and polishing + bag fixes

This commit is contained in:
Oleksandr Vlasiuk
2026-08-14 15:03:43 +03:00
parent 250f4a0d2c
commit 1f72420da0
45 changed files with 2542 additions and 1618 deletions
+50
View File
@@ -0,0 +1,50 @@
# 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 у браузері, як завжди в цьому проєкті.