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