Files
2026-08-14 15:03:43 +03:00

4.2 KiB
Raw Permalink Blame History

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 у браузері, як завжди в цьому проєкті.