pokie
Version:
A server-side video slot game logic framework for JavaScript and TypeScript.
139 lines • 4.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.VideoSlotWithFreeGamesSession = void 0;
const pokie_1 = require("pokie");
class VideoSlotWithFreeGamesSession {
constructor(config = new pokie_1.VideoSlotWithFreeGamesConfig(), combinationsGenerator = new pokie_1.SymbolsCombinationsGenerator(config), winCalculator = new pokie_1.VideoSlotWinCalculator(config), baseSession = new pokie_1.VideoSlotSession(config, combinationsGenerator, winCalculator)) {
this.freeGamesNum = 0;
this.freeGamesSum = 0;
this.freeBank = 0;
this.baseSession = baseSession;
this.config = config;
}
getWonFreeGamesNumber() {
let rv = 0;
const wonScatters = this.getWinningScatters();
for (const scatterModel of Object.values(wonScatters)) {
const freeGamesForScatters = this.config.getFreeGamesForScatters(scatterModel.getSymbolId(), scatterModel.getSymbolsPositions().length);
if (freeGamesForScatters > 0) {
rv += freeGamesForScatters;
}
}
return rv;
}
getFreeGamesNum() {
return this.freeGamesNum;
}
setFreeGamesNum(value) {
this.freeGamesNum = value;
}
getFreeGamesSum() {
return this.freeGamesSum;
}
setFreeGamesSum(value) {
this.freeGamesSum = value;
}
getFreeGamesBank() {
return this.freeBank;
}
setFreeGamesBank(value) {
this.freeBank = value;
}
getPaytable() {
return this.config.getPaytable();
}
getSymbolsCombination() {
return this.baseSession.getSymbolsCombination();
}
getWinningLines() {
return this.baseSession.getWinningLines();
}
getWinningScatters() {
return this.baseSession.getWinningScatters();
}
getSymbolsSequences() {
return this.baseSession.getSymbolsSequences();
}
getReelsSymbolsNumber() {
return this.baseSession.getReelsSymbolsNumber();
}
getReelsNumber() {
return this.baseSession.getReelsNumber();
}
getAvailableSymbols() {
return this.baseSession.getAvailableSymbols();
}
getCreditsAmount() {
return this.baseSession.getCreditsAmount();
}
setCreditsAmount(creditsAmount) {
this.baseSession.setCreditsAmount(creditsAmount);
}
getWinAmount() {
return this.baseSession.getWinAmount();
}
getAvailableBets() {
return this.baseSession.getAvailableBets();
}
getBet() {
return this.baseSession.getBet();
}
setBet(bet) {
this.baseSession.setBet(bet);
}
canPlayNextGame() {
return this.baseSession.canPlayNextGame();
}
play() {
if (this.getFreeGamesNum() === this.getFreeGamesSum()) {
this.setFreeGamesBank(0);
this.setFreeGamesNum(0);
this.setFreeGamesSum(0);
}
const creditsBeforePlay = this.getCreditsAmount();
this.baseSession.play();
if (this.getFreeGamesSum() > 0 && this.getFreeGamesNum() < this.getFreeGamesSum()) {
this.setFreeGamesNum(this.getFreeGamesNum() + 1);
this.setFreeGamesBank(this.getFreeGamesBank() + this.getWinAmount());
this.setCreditsAmount(creditsBeforePlay);
}
const wonFreeGames = this.getWonFreeGamesNumber();
if (wonFreeGames > 0) {
this.setFreeGamesSum(this.getFreeGamesSum() + wonFreeGames);
}
else {
if (this.getFreeGamesSum() > 0 && this.getFreeGamesNum() === this.getFreeGamesSum()) {
this.setCreditsAmount(this.getCreditsAmount() + this.getFreeGamesBank());
}
}
}
getFreeGamesForScatters(symbolId, numberOfSymbols) {
return this.config.getFreeGamesForScatters(symbolId, numberOfSymbols);
}
isSymbolWild(symbolId) {
return this.baseSession.isSymbolWild(symbolId);
}
isSymbolScatter(symbolId) {
return this.baseSession.isSymbolScatter(symbolId);
}
getWildSymbols() {
return this.baseSession.getWildSymbols();
}
getScatterSymbols() {
return this.baseSession.getScatterSymbols();
}
getLinesDefinitions() {
return this.baseSession.getLinesDefinitions();
}
getLinesPatterns() {
return this.baseSession.getLinesPatterns();
}
getLinesWinning() {
return this.baseSession.getLinesWinning();
}
getScattersWinning() {
return this.baseSession.getScattersWinning();
}
}
exports.VideoSlotWithFreeGamesSession = VideoSlotWithFreeGamesSession;
//# sourceMappingURL=VideoSlotWithFreeGamesSession.js.map