feat(perk): Добавлен бонус clone который добавляет 2 дополнительных мяча

This commit is contained in:
Ilia Mashkov
2026-07-19 17:47:01 +03:00
parent a734600390
commit b72583290d
6 changed files with 94 additions and 100 deletions
+10 -3
View File
@@ -1,4 +1,5 @@
import { CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config';
import { BALL_SPLIT_ANGLE, CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config';
import { clone } from '../../entities/ball/clone/clone';
import { Game } from '../../game';
import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision';
@@ -45,8 +46,10 @@ export function updatePerks(game, containerHeight, deltaTime) {
if (isCollided) {
switch (perk.type) {
case 'slow':
if (game.ball.speed - PERK_BALL_SPEED_DECREASE > 0) {
game.ball.increaseSpeed(-1 * PERK_BALL_SPEED_DECREASE);
for (const ball of game.balls) {
if (ball.speed - PERK_BALL_SPEED_DECREASE > 0) {
ball.increaseSpeed(-1 * PERK_BALL_SPEED_DECREASE);
}
}
break;
case 'wide':
@@ -56,6 +59,10 @@ export function updatePerks(game, containerHeight, deltaTime) {
case 'life':
game.livesAmount += 1;
break;
case 'clone':
// Основной мяч делится на два клона, разлетающихся под углом
game.balls.push(clone(game.ball, BALL_SPLIT_ANGLE), clone(game.ball, -BALL_SPLIT_ANGLE));
break;
default:
break;
}