UNPKG

pokie

Version:

A server-side video slot game logic framework for JavaScript and TypeScript.

58 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VideoSlotSessionSerializer = void 0; const pokie_1 = require("pokie"); class VideoSlotSessionSerializer { constructor(baseSerializer = new pokie_1.GameSessionSerializer()) { this.baseSerializer = baseSerializer; } getInitialData(session) { const availableSymbols = session.getAvailableSymbols(); const reelsNumber = session.getReelsNumber(); const reelsSymbolsNumber = session.getReelsSymbolsNumber(); const paytable = session.getPaytable().toMap(); const linesDefinitions = {}; session .getLinesDefinitions() .getLinesIds() .forEach((lineId) => { linesDefinitions[lineId] = session.getLinesDefinitions().getLineDefinition(lineId); }); return Object.assign(Object.assign(Object.assign({}, this.baseSerializer.getInitialData(session)), this.getRoundData(session)), { availableSymbols, reelsNumber, reelsSymbolsNumber, paytable, linesDefinitions }); } getRoundData(session) { const symbolsCombination = session.getSymbolsCombination(); const winningLines = session.getWinningLines(); const winningScatters = session.getWinningScatters(); const r = Object.assign(Object.assign({}, this.baseSerializer.getRoundData(session)), { reelsSymbols: symbolsCombination.toMatrix() }); if (Object.keys(winningLines).length > 0) { r.winningLines = Object.values(winningLines).reduce((acc, line) => { return Object.assign(Object.assign({}, acc), { [line.getLineId()]: { definition: line.getDefinition(), pattern: line.getPattern(), symbolId: line.getSymbolId(), lineId: line.getLineId(), symbolsPositions: line.getSymbolsPositions(), wildSymbolsPositions: line.getWildSymbolsPositions(), winAmount: line.getWinAmount(), } }); }, {}); } if (Object.keys(winningScatters).length > 0) { r.winningScatters = Object.values(winningScatters).reduce((acc, scatter) => { return Object.assign(Object.assign({}, acc), { [scatter.getSymbolId()]: { symbolId: scatter.getSymbolId(), symbolsPositions: scatter.getSymbolsPositions(), winAmount: scatter.getWinAmount(), } }); }, {}); } return r; } } exports.VideoSlotSessionSerializer = VideoSlotSessionSerializer; //# sourceMappingURL=VideoSlotSessionSerializer.js.map