UNPKG

pokie

Version:

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

139 lines 4.7 kB
"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