feat(perk): Добавлен бонус увеличивающий размер ракетки
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
import { PERK_FALL_SPEED, PERK_HEIGHT, PERK_WIDTH } from '../../config';
|
||||
import { PERK_FALL_SPEED, PERK_HEIGHT, PERK_TYPES, PERK_WIDTH } from '../../config';
|
||||
import { Perk } from '../../entities/perk/perk';
|
||||
|
||||
/**
|
||||
* Типы бонусов
|
||||
*/
|
||||
const DROPPABLE_PERKS = ['slow'];
|
||||
|
||||
/**
|
||||
* Создает случайный бонус в заданной точке
|
||||
* @param {number} x координата бонуса по оси X
|
||||
@@ -18,7 +13,7 @@ export function spawnRandomPerk(x, y) {
|
||||
throw new Error('Координаты бонуса должны являться числами');
|
||||
}
|
||||
|
||||
const type = DROPPABLE_PERKS[Math.floor(Math.random() * DROPPABLE_PERKS.length)];
|
||||
const type = PERK_TYPES[Math.floor(Math.random() * PERK_TYPES.length)];
|
||||
|
||||
return new Perk(x, y, PERK_WIDTH, PERK_HEIGHT, type, PERK_FALL_SPEED);
|
||||
} catch (err) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PERK_BALL_SPEED_DECREASE } from '../../config';
|
||||
import { CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config';
|
||||
import { Game } from '../../game';
|
||||
import { calculateCollision } from '../calculateCollision/calculateCollision';
|
||||
|
||||
@@ -49,6 +49,10 @@ export function updatePerks(game, containerHeight, deltaTime) {
|
||||
game.ball.increaseSpeed(-1 * PERK_BALL_SPEED_DECREASE);
|
||||
}
|
||||
break;
|
||||
case 'wide':
|
||||
paddle.width = PADDLE_WIDE_WIDTH;
|
||||
paddle.moveTo(paddle.x, 0, CONTAINER_WIDTH);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { PADDLE_WIDE_WIDTH } from '../../config';
|
||||
import { Perk } from '../../entities/perk/perk';
|
||||
import { Game } from '../../game';
|
||||
import { updatePerks } from './updatePerks';
|
||||
@@ -36,6 +37,17 @@ describe('updatePerks', () => {
|
||||
expect(game.ball.speed).toBeLessThan(speedBefore);
|
||||
});
|
||||
|
||||
it('Ловит бонус wide, расширяет ракетку до фиксированной ширины', () => {
|
||||
const game = new Game([[[1]]]);
|
||||
const { paddle } = game;
|
||||
game.perks.push(new Perk(paddle.x, paddle.y - 1, 10, 10, 'wide', 0));
|
||||
|
||||
updatePerks(game, 600, 1);
|
||||
|
||||
expect(game.perks).toHaveLength(0);
|
||||
expect(paddle.width).toBe(PADDLE_WIDE_WIDTH);
|
||||
});
|
||||
|
||||
it('Убирает бонус, улетевший за нижнюю границу', () => {
|
||||
const game = new Game([[[1]]]);
|
||||
game.perks.push(new Perk(0, 601, 10, 10, 'slow', 0));
|
||||
|
||||
Reference in New Issue
Block a user