Сервис и правила игры06 / 13

Сервисы сцены и правила игры

Храним партию в сервисе, а правила игры описываем отдельно.

В Block Puzzle сервис Gameplay хранит поле, доступные фигуры, очки и состояние партии.

Сервис объединяет несколько операций. Фрагмент метода place из BlockPuzzleGameplayService.ts:

const placedCells = session.board.place(shape, request.anchor);
session.slots.use(request.slotId);
const completedLines = session.board.findCompletedLines();
const clearedCells = session.board.collectCells(completedLines);
const boardBeforeClear = session.board.snapshot();
session.board.clear(clearedCells);
const boardAfterClear = session.board.snapshot();

До этого сервис проверяет наличие фигуры и board.canPlace. После — рассчитывает очки, пополняет слоты и отправляет события представлению.

GameplayServiceСостояние партии и порядок операций
BlockPuzzleBoardКлетки, допустимость размещения и линии
BlockPuzzleSlotsКакие фигуры доступны и какие использованы
BlockPuzzleScoreRulesЧисло очков за размещение и очистку
КомпонентыОтображение результата и эффекты
Каждый объект отвечает за свою часть одного хода.

previewPlacement проверяет, поместится ли фигура. Поле меняется только при вызове place.

Источники ↗

Block Puzzle · BlockPuzzleGameplayService.ts↗Сессия, preview и применение хода.Block Puzzle · BlockPuzzleBoard.ts↗Правила поля без зависимости от PixiJS.