UNPKG

pokie

Version:

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

127 lines 4.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VideoSlotConfig = void 0; const pokie_1 = require("pokie"); class VideoSlotConfig { constructor(baseConfig = new pokie_1.GameSessionConfig()) { this.baseConfig = baseConfig; this.reelsNumber = 5; this.reelsSymbolsNumber = 3; this.availableSymbols = ["A", "K", "Q", "J", "10", "9", "W", "S"]; this.wilds = ["W"]; this.paytable = new pokie_1.Paytable(this.getAvailableBets(), this.availableSymbols.filter((symbol) => !this.isSymbolWild(symbol)), this.wilds, this.reelsNumber); this.scatters = ["S"]; this.linesDefinitions = new pokie_1.HorizontalLines(this.reelsNumber, this.reelsSymbolsNumber); this.linesPatterns = new pokie_1.LeftToRightLinesPatterns(this.reelsNumber); this.reelsSymbolsSequences = this.createReelsSymbolsSequences(); } getPaytable() { return this.paytable; } setPaytable(paytable) { this.paytable = paytable; } getWildSymbols() { return this.wilds; } setWildSymbols(value) { this.wilds = value; } getScatterSymbols() { return this.scatters.slice(); } setScatterSymbols(value) { this.scatters = value.slice(); this.reelsSymbolsSequences = this.createReelsSymbolsSequences(); } getLinesDefinitions() { return this.linesDefinitions; } getLinesPatterns() { return this.linesPatterns; } setLinesDefinitions(linesDefinitions) { this.linesDefinitions = linesDefinitions; } setLinesPatterns(linesPatterns) { this.linesPatterns = linesPatterns; } getReelsSymbolsNumber() { return this.reelsSymbolsNumber; } setReelsSymbolsNumber(reelsSymbolsNumber) { this.reelsSymbolsNumber = reelsSymbolsNumber; this.linesDefinitions = new pokie_1.HorizontalLines(this.reelsNumber, this.reelsSymbolsNumber); } getReelsNumber() { return this.reelsNumber; } setReelsNumber(reelsNumber) { this.reelsNumber = reelsNumber; this.linesDefinitions = new pokie_1.HorizontalLines(this.reelsNumber, this.reelsSymbolsNumber); this.linesPatterns = new pokie_1.LeftToRightLinesPatterns(this.reelsNumber); } getAvailableSymbols() { return this.availableSymbols.slice(); } setAvailableSymbols(availableSymbols) { this.availableSymbols = availableSymbols.slice(); this.paytable = new pokie_1.Paytable(this.getAvailableBets(), this.availableSymbols.filter((symbol) => !this.isSymbolWild(symbol)), this.wilds, this.reelsNumber); this.reelsSymbolsSequences = this.createReelsSymbolsSequences(); } getSymbolsSequences() { return this.reelsSymbolsSequences; } setSymbolsSequences(reelsSymbolsSequences) { this.reelsSymbolsSequences = reelsSymbolsSequences; } isSymbolWild(symbolId) { return this.wilds.includes(symbolId); } isSymbolScatter(symbolId) { return this.scatters.some((s) => s === symbolId); } setAvailableBets(availableBets) { this.baseConfig.setAvailableBets(availableBets.slice()); } getAvailableBets() { return this.baseConfig.getAvailableBets().slice(); } isBetAvailable(bet) { return this.baseConfig.isBetAvailable(bet); } setCreditsAmount(creditsAmount) { this.baseConfig.setCreditsAmount(creditsAmount); } getCreditsAmount() { return this.baseConfig.getCreditsAmount(); } setBet(bet) { this.baseConfig.setBet(bet); } getBet() { return this.baseConfig.getBet(); } createReelsSymbolsSequences() { const r = []; for (let i = 0; i < this.reelsNumber; i++) { const reel = new pokie_1.SymbolsSequence(); const availableSymbols = this.availableSymbols.filter((symbolId) => { return !this.isSymbolScatter(symbolId) && !this.isSymbolWild(symbolId); }); reel.fromNumberOfEachSymbol(availableSymbols, 15); this.wilds.forEach((wild) => reel.addSymbol(wild, 5)); this.scatters.forEach((scatter) => reel.addSymbol(scatter, 3)); reel.shuffle(); while (reel .getSymbolsStacksIndexes() .some((stack) => this.scatters.some((scatter) => scatter === reel.getSymbol(stack.index)))) { reel.shuffle(); } r.push(reel); } return r; } } exports.VideoSlotConfig = VideoSlotConfig; //# sourceMappingURL=VideoSlotConfig.js.map