pokie
Version:
A server-side video slot game logic framework for JavaScript and TypeScript.
58 lines • 2.79 kB
JavaScript
;
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