refactor: Переименована функция calculateCollision для лучшей семантики
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@
|
|||||||
* @param {number} secondObject.bottom - Max Y координата второго объекта
|
* @param {number} secondObject.bottom - Max Y координата второго объекта
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
export function calculateCollision(firstObject, secondObject) {
|
export function calculateAABBCollision(firstObject, secondObject) {
|
||||||
try {
|
try {
|
||||||
const coordinates = [
|
const coordinates = [
|
||||||
firstObject.left,
|
firstObject.left,
|
||||||
+9
-9
@@ -1,6 +1,6 @@
|
|||||||
import { calculateCollision } from './calculateCollision';
|
import { calculateAABBCollision } from './calculateAABBCollision';
|
||||||
|
|
||||||
describe('calculateCollision', () => {
|
describe('calculateAABBCollision', () => {
|
||||||
it('Корректно обрабатывает невозможные кейсы (левая координата больше правой)', () => {
|
it('Корректно обрабатывает невозможные кейсы (левая координата больше правой)', () => {
|
||||||
const firstObject = {
|
const firstObject = {
|
||||||
left: 0,
|
left: 0,
|
||||||
@@ -16,7 +16,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 10,
|
bottom: 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBeNull();
|
expect(calculateAABBCollision(firstObject, secondObject)).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает неверный формат данных', () => {
|
it('Корректно обрабатывает неверный формат данных', () => {
|
||||||
@@ -34,7 +34,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 10,
|
bottom: 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBeNull();
|
expect(calculateAABBCollision(firstObject, secondObject)).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает отсутствие пересечения по X', () => {
|
it('Корректно обрабатывает отсутствие пересечения по X', () => {
|
||||||
@@ -52,7 +52,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 10,
|
bottom: 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBe(false);
|
expect(calculateAABBCollision(firstObject, secondObject)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает отсутствие пересечения по Y', () => {
|
it('Корректно обрабатывает отсутствие пересечения по Y', () => {
|
||||||
@@ -70,7 +70,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 30,
|
bottom: 30,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBe(false);
|
expect(calculateAABBCollision(firstObject, secondObject)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает отсутствие пересечения по X и Y', () => {
|
it('Корректно обрабатывает отсутствие пересечения по X и Y', () => {
|
||||||
@@ -88,7 +88,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 30,
|
bottom: 30,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBe(false);
|
expect(calculateAABBCollision(firstObject, secondObject)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает пересечение', () => {
|
it('Корректно обрабатывает пересечение', () => {
|
||||||
@@ -106,7 +106,7 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 30,
|
bottom: 30,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBe(true);
|
expect(calculateAABBCollision(firstObject, secondObject)).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Корректно обрабатывает вхождение', () => {
|
it('Корректно обрабатывает вхождение', () => {
|
||||||
@@ -124,6 +124,6 @@ describe('calculateCollision', () => {
|
|||||||
bottom: 15,
|
bottom: 15,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(calculateCollision(firstObject, secondObject)).toBe(true);
|
expect(calculateAABBCollision(firstObject, secondObject)).toBe(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { calculateCollision } from '../calculateCollision/calculateCollision';
|
import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Вычисляет направление наибольшего пересечения по осям и возвращает tuple множителей для изменения координат
|
* Вычисляет направление наибольшего пересечения по осям и возвращает tuple множителей для изменения координат
|
||||||
@@ -17,7 +17,7 @@ import { calculateCollision } from '../calculateCollision/calculateCollision';
|
|||||||
export function calculateDirection(firstObject, secondObject) {
|
export function calculateDirection(firstObject, secondObject) {
|
||||||
try {
|
try {
|
||||||
// Запускаем для проверки формата аргументов
|
// Запускаем для проверки формата аргументов
|
||||||
const isCollided = calculateCollision(firstObject, secondObject);
|
const isCollided = calculateAABBCollision(firstObject, secondObject);
|
||||||
|
|
||||||
if (isCollided === null) {
|
if (isCollided === null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
PERK_WIDTH,
|
PERK_WIDTH,
|
||||||
} from '../../config';
|
} from '../../config';
|
||||||
import { Game } from '../../game';
|
import { Game } from '../../game';
|
||||||
import { calculateCollision } from '../calculateCollision/calculateCollision';
|
import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision';
|
||||||
import { calculateDirection } from '../calculateDirection/calculateDirection';
|
import { calculateDirection } from '../calculateDirection/calculateDirection';
|
||||||
import { processReflection } from '../processReflection/processReflection';
|
import { processReflection } from '../processReflection/processReflection';
|
||||||
import { spawnRandomPerk } from '../spawnRandomPerk/spawnRandomPerk';
|
import { spawnRandomPerk } from '../spawnRandomPerk/spawnRandomPerk';
|
||||||
@@ -91,7 +91,7 @@ export function tick(game, containerWidth, containerHeight, deltaTime) {
|
|||||||
const ballObject = { left: ballLeft, right: ballRight, top: ballTop, bottom: ballBottom };
|
const ballObject = { left: ballLeft, right: ballRight, top: ballTop, bottom: ballBottom };
|
||||||
const brickObject = { left: brickLeft, right: brickRight, top: brickTop, bottom: brickBottom };
|
const brickObject = { left: brickLeft, right: brickRight, top: brickTop, bottom: brickBottom };
|
||||||
|
|
||||||
const isCollided = calculateCollision(ballObject, brickObject);
|
const isCollided = calculateAABBCollision(ballObject, brickObject);
|
||||||
|
|
||||||
if (isCollided) {
|
if (isCollided) {
|
||||||
const directions = calculateDirection(ballObject, brickObject);
|
const directions = calculateDirection(ballObject, brickObject);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config';
|
import { CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config';
|
||||||
import { Game } from '../../game';
|
import { Game } from '../../game';
|
||||||
import { calculateCollision } from '../calculateCollision/calculateCollision';
|
import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обновляет состояние бонусов, меняет положение, проверяет столкновение с ракеткой и выход за границу поля
|
* Обновляет состояние бонусов, меняет положение, проверяет столкновение с ракеткой и выход за границу поля
|
||||||
@@ -40,7 +40,7 @@ export function updatePerks(game, containerHeight, deltaTime) {
|
|||||||
bottom: paddle.y + paddle.height,
|
bottom: paddle.y + paddle.height,
|
||||||
};
|
};
|
||||||
|
|
||||||
const isCollided = calculateCollision(perkObject, paddleObject);
|
const isCollided = calculateAABBCollision(perkObject, paddleObject);
|
||||||
|
|
||||||
if (isCollided) {
|
if (isCollided) {
|
||||||
switch (perk.type) {
|
switch (perk.type) {
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ import {
|
|||||||
} from './config';
|
} from './config';
|
||||||
import { LEVELS } from './const/levels';
|
import { LEVELS } from './const/levels';
|
||||||
import { Game } from './game';
|
import { Game } from './game';
|
||||||
import { calculateCollision } from './lib/calculateCollision/calculateCollision';
|
|
||||||
import { calculateDirection } from './lib/calculateDirection/calculateDirection';
|
|
||||||
import { createGameView, managePerkViewsLifetime, rebuildBrickViews, syncronizeViewsWithGame } from './view';
|
import { createGameView, managePerkViewsLifetime, rebuildBrickViews, syncronizeViewsWithGame } from './view';
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user