From 048f9ebdeeeda0c52817c15d9edd21b0ed2eb6ad Mon Sep 17 00:00:00 2001 From: aevgarik Date: Sun, 24 May 2026 08:17:36 +0300 Subject: [PATCH] Symmetric 5-bumper fixed center layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3 → 5 fixed bumpers: 2 верхних (AI side) + 1 центр + 2 нижних (player side). Раскладка зеркальна относительно centerY и vertical centerline. - Все source = 'fixed_last_touch' (defensive scoring v3.10 без изменений) - Type остаётся standard - Зона y ∈ 560..720 при centerY=640 — не пересекается с AI setup (y≤300), player setup (y≥980), флипперами (y=100, 1180) или touch zones (y≥1060) Co-Authored-By: Claude Opus 4.7 --- src/scenes/MatchScene.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/scenes/MatchScene.ts b/src/scenes/MatchScene.ts index dbbc4ca..473592e 100644 --- a/src/scenes/MatchScene.ts +++ b/src/scenes/MatchScene.ts @@ -117,13 +117,18 @@ export class MatchScene extends Phaser.Scene { { onHit: (_f, ballBody) => this.handleFlipperHit('ai', ballBody) }, ); - // === Fixed bumpers (3 в центральной зоне, симметрично) === + // === Fixed bumpers (5, симметрично относительно центра по обеим осям) === // source = 'fixed_last_touch' → очки last-touch'еру (см. v3.10). + // Раскладка: 2 верхних + 1 центр + 2 нижних, зеркал относительно centerY. + // Зона y ∈ {centerY-80, centerY, centerY+80} = 560..720 при centerY=640. + // Не пересекается с AI setup (y≤300), player setup (y≥980), флипперами или touch zones. const cy = g.centerY; const fixedPositions: Array<[number, number]> = [ [GAME_WIDTH * 0.25, cy - 80], [GAME_WIDTH * 0.75, cy - 80], - [GAME_WIDTH * 0.5, cy + 80], + [GAME_WIDTH * 0.5, cy], + [GAME_WIDTH * 0.25, cy + 80], + [GAME_WIDTH * 0.75, cy + 80], ]; for (const [fx, fy] of fixedPositions) { this.fixedBumpers.push(