From 500803db847b5176b27a393b472e58c56e3574c5 Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sun, 19 Jul 2026 10:53:40 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=B8=D1=80=D0=BF?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D0=B9=20=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=88?= =?UTF-8?q?=D0=B8=D1=85=D1=81=D1=8F=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=B8=D1=80=D0=BF=D0=B8?= =?UTF-8?q?=D1=87=D0=B5=D0=B9=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D0=B9=D0=BD=D0=B5=D1=80=D0=B0=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BC=D0=B5=D0=BD=D0=B5=20=D1=83=D1=80=D0=BE=D0=B2=D0=BD?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 10 ++++++---- src/view.js | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/main.js b/src/main.js index 2631997..65c0f5c 100644 --- a/src/main.js +++ b/src/main.js @@ -17,7 +17,7 @@ import { LEVELS } from './const/levels'; import { Game } from './game'; import { calculateCollision } from './lib/calculateCollision/calculateCollision'; import { calculateDirection } from './lib/calculateDirection/calculateDirection'; -import { createGameView, syncronizeViewsWithGame } from './view'; +import { createGameView, rebuildBrickViews, syncronizeViewsWithGame } from './view'; (async () => { // Create a new application @@ -42,17 +42,19 @@ import { createGameView, syncronizeViewsWithGame } from './view'; const game = new Game(LEVELS); const views = createGameView(game, container); + const currentLevel = game.currentLevel; container.on('pointermove', (event) => { const localPosition = container.toLocal(event.global); game.paddle.moveTo(localPosition.x, 0, CONTAINER_WIDTH); }); - console.log(game.paddle.x, game.paddle.y); - app.ticker.add((time) => { game.update(time.deltaTime); + + if (game.currentLevel !== currentLevel) { + rebuildBrickViews(views, game, container); + } syncronizeViewsWithGame(views, game); - console.log(game.paddle.x, game.paddle.y); }); })(); diff --git a/src/view.js b/src/view.js index 7fcb508..ab34c88 100644 --- a/src/view.js +++ b/src/view.js @@ -42,7 +42,7 @@ function createBrickView(brick) { /** * Создает визуальное отображение всех сущностей в игре с помощью Pixi.js и добавляет в контейнер * @param {Game} game экземпляр класса игра - * @param {Container} container контейнер Pixi.js + * @param {Container} container экземпляр класса контейнер Pixi.js */ export function createGameView(game, container) { try { @@ -97,3 +97,22 @@ export function syncronizeViewsWithGame(views, game) { console.error(err); } } + +/** + * Пересоздает отображения кирпичей под текущий уровень игры. + * @param {object} views объект с визуальными отображениями сущностей игры + * @param {Game} game экземпляр класса игра + * @param {Container} container экземпляр класса контейнер Pixi.js + */ +export function rebuildBrickViews(views, game, container) { + for (const brickView of views.bricks) { + container.removeChild(brickView); + brickView.destroy(); + } + + views.bricks = game.bricks.map((brick) => { + const brickView = createBrickView(brick); + container.addChild(brickView); + return brickView; + }); +}