Files
pinball-duel/src
aevgarik a0ed17d814 Post-codex-review-4: flipper geometry fix + HUD repositioning
Critical bug (codex #1 High): концы нижних флипперов скрещивались В gap'е
(left.x=401, right.x=319 — оба в 306..414, причём X-shape) и торчали НИЖЕ
линии ворот (y=1275 vs playerGoalY=1260). Это блокировало корректный
gameplay — флипперы стояли крестом в створе.

Дополнительно: AI флипперы имели НЕВЕРНУЮ ориентацию (формула +180°
вместо y-flip) — concы торчали ВЛЕВО-ВНИЗ от pivot, наружу от AI ворот.
AI просто не отбивал мячи геометрически правильно.

Fixes:
- src/game/flipperGeometry.ts: pure utility — computeFlipperAngleDeg
  (sign × ownerSign × baseAngle = правильный y-flip между player/AI)
  + computeFlipperEnd (вычисление end position).
- src/game/Flipper.ts: использует утилиту; удалено +180 для AI.
- src/scenes/MatchScene.ts: pivot offset 100px по x (за gap edge) и
  80px по y (над goal line). Применено для всех 4 флипперов
  (player+AI × left+right).

HUD (codex #2 Medium): BP перенесён с y=GAME_HEIGHT-60 (= в зоне
флипперов/BOOST overlay) на y=145 (под таймером). Управление и HUD
теперь визуально разнесены.

Tests: добавлен src/game/flipperGeometry.test.ts — 13 проверок
(угол-симметрия player/AI, инвариант «end НЕ в gap И НЕ за линией»,
swing direction, regression-test для бывшего X-скрещивания). Итого
29/29 тестов зелёные.

codex #3 (npm audit) — без изменений, документирован в KNOWN_ISSUES.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 04:29:11 +03:00
..