UNPKG

pokie

Version:

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

71 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Paytable = void 0; class Paytable { constructor(availableBets, availableSymbols, wildSymbols, reelsNumber) { this.paytableMap = Paytable.createDefaultPaytableMap(availableBets, availableSymbols, wildSymbols, reelsNumber); } static createDefaultPaytableMap(availableBets, availableSymbols, wildSymbols, reelsNumber) { const paytableMap = {}; for (const bet of availableBets) { paytableMap[bet] = {}; if (availableSymbols) { for (const symbolId of availableSymbols) { if (!(wildSymbols === null || wildSymbols === void 0 ? void 0 : wildSymbols.some((wildSymbolId) => symbolId === wildSymbolId))) { paytableMap[bet][symbolId] = {}; if (reelsNumber !== undefined) { for (let k = 3; k <= reelsNumber; k++) { paytableMap[bet][symbolId][k] = (k - 2) * bet; } } } } } } return paytableMap; } getWinAmountForSymbol(symbolId, numberOfSymbols, bet) { let rv = 0; if (this.paytableMap[bet] && this.paytableMap[bet][symbolId] && this.paytableMap[bet][symbolId][numberOfSymbols]) { rv = this.paytableMap[bet][symbolId][numberOfSymbols]; } return rv; } getAvailableBets() { return Object.keys(this.paytableMap).map((key) => parseInt(key, 10)); } getNumbersOfSymbolsForBet(bet, symbolId) { return Object.keys(this.paytableMap[bet][symbolId]).map((num) => parseInt(num, 10)); } toMap() { return JSON.parse(JSON.stringify(this.paytableMap)); } getAvailableSymbolsForBet(bet) { return Object.keys(this.paytableMap[bet]); } setPayoutForSymbol(symbolId, times, betMultiplier, bet) { if (bet !== undefined) { this.paytableMap[bet][symbolId][times] = betMultiplier * bet; } else { Object.keys(this.paytableMap).forEach((bet) => { const intBet = parseInt(bet, 10); if (!this.paytableMap[bet]) { this.paytableMap[bet] = {}; } if (!this.paytableMap[bet][symbolId]) { this.paytableMap[bet][symbolId] = {}; } this.paytableMap[bet][symbolId][times] = betMultiplier * intBet; }); } } fromMap(map) { this.paytableMap = JSON.parse(JSON.stringify(map)); return this; } } exports.Paytable = Paytable; //# sourceMappingURL=Paytable.js.map