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