Сервисы сцены и правила игры
Храним партию в сервисе, а правила игры описываем отдельно.
В 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.