slotify.js
Version:
A video slot game session framework for JavaScript
127 lines (126 loc) • 5.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReelGameWithFreeGamesSession = void 0;
var ReelGameSession_1 = require("./ReelGameSession");
var ReelGameWithFreeGamesSession = /** @class */ (function () {
function ReelGameWithFreeGamesSession(config, reelsController, winningCalculator) {
this._freeGamesNum = 0;
this._freeGamesSum = 0;
this._freeBank = 0;
this._config = config;
this._reelsController = reelsController;
this._winningCalculator = winningCalculator;
this._adaptee = new ReelGameSession_1.ReelGameSession(this._config, reelsController, winningCalculator);
}
ReelGameWithFreeGamesSession.prototype.getReelsItems = function () {
return this._adaptee.getReelsItems();
};
ReelGameWithFreeGamesSession.prototype.getWinningLines = function () {
return this._winningCalculator.getWinningLines();
};
ReelGameWithFreeGamesSession.prototype.getWinningScatters = function () {
return this._winningCalculator.getWinningScatters();
};
ReelGameWithFreeGamesSession.prototype.getPaytable = function () {
return this._config.paytable[this.getBet()];
};
ReelGameWithFreeGamesSession.prototype.getReelsItemsSequences = function () {
return this._config.reelsItemsSequences;
};
ReelGameWithFreeGamesSession.prototype.getReelsItemsNumber = function () {
return this._config.reelsItemsNumber;
};
ReelGameWithFreeGamesSession.prototype.getReelsNumber = function () {
return this._config.reelsNumber;
};
ReelGameWithFreeGamesSession.prototype.canPlayNextGame = function () {
return this._adaptee.canPlayNextGame();
};
ReelGameWithFreeGamesSession.prototype.getAvailableBets = function () {
return this._config.availableBets;
};
ReelGameWithFreeGamesSession.prototype.getBet = function () {
return this._adaptee.getBet();
};
ReelGameWithFreeGamesSession.prototype.getCreditsAmount = function () {
return this._adaptee.getCreditsAmount();
};
ReelGameWithFreeGamesSession.prototype.setCreditsAmount = function (value) {
this._adaptee.setCreditsAmount(value);
};
ReelGameWithFreeGamesSession.prototype.getWinningAmount = function () {
return this._adaptee.getWinningAmount();
};
ReelGameWithFreeGamesSession.prototype.isBetAvailable = function (bet) {
return this._adaptee.isBetAvailable(bet);
};
ReelGameWithFreeGamesSession.prototype.play = function () {
var creditsBeforePlay;
var wonFreeGames;
if (this._freeGamesNum === this._freeGamesSum) {
this._freeBank = 0;
this._freeGamesNum = 0;
this._freeGamesSum = 0;
}
creditsBeforePlay = this.getCreditsAmount();
this._adaptee.play();
if (this._freeGamesSum > 0 && this._freeGamesNum < this._freeGamesSum) {
this._freeGamesNum++;
this._freeBank += this.getWinningAmount();
this.setCreditsAmount(creditsBeforePlay);
}
wonFreeGames = this.getWonFreeGamesNumber();
if (wonFreeGames) {
this._freeGamesSum += wonFreeGames;
}
else {
if (this._freeGamesSum > 0 && this._freeGamesNum === this._freeGamesSum) {
this.setCreditsAmount(this.getCreditsAmount() + this._freeBank);
}
}
};
ReelGameWithFreeGamesSession.prototype.getWonFreeGamesNumber = function () {
var rv;
var scatterId;
var scatterTimes;
var wonScatters;
rv = 0;
if (this._config.freeGamesForScatters) {
wonScatters = this.getWinningScatters();
for (var _i = 0, _a = Object.values(wonScatters); _i < _a.length; _i++) {
var scatter = _a[_i];
scatterId = scatter.itemId;
scatterTimes = scatter.itemsPositions.length;
if (this._config.freeGamesForScatters.hasOwnProperty(scatterId)) {
if (this._config.freeGamesForScatters[scatterId].hasOwnProperty(scatterTimes.toString())) {
rv = this._config.freeGamesForScatters[scatterId][scatterTimes];
}
}
}
}
return rv;
};
ReelGameWithFreeGamesSession.prototype.setBet = function (bet) {
this._adaptee.setBet(bet);
};
ReelGameWithFreeGamesSession.prototype.getFreeGameBank = function () {
return this._freeBank;
};
ReelGameWithFreeGamesSession.prototype.getFreeGameNum = function () {
return this._freeGamesNum;
};
ReelGameWithFreeGamesSession.prototype.getFreeGameSum = function () {
return this._freeGamesSum;
};
ReelGameWithFreeGamesSession.prototype.setFreeGameBank = function (value) {
this._freeBank = value;
};
ReelGameWithFreeGamesSession.prototype.setFreeGameNum = function (value) {
this._freeGamesNum = value;
};
ReelGameWithFreeGamesSession.prototype.setFreeGameSum = function (value) {
this._freeGamesSum = value;
};
return ReelGameWithFreeGamesSession;
}());
exports.ReelGameWithFreeGamesSession = ReelGameWithFreeGamesSession;