UNPKG

slotify.js

Version:

A video slot game session framework for JavaScript

202 lines (201 loc) 7.69 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReelGameSessionConfig = void 0; var GameSessionConfig_1 = require("../../GameSessionConfig"); var ReelGameSessionConfig = /** @class */ (function (_super) { __extends(ReelGameSessionConfig, _super); function ReelGameSessionConfig(reelsNumber, reelsItemsNumber) { if (reelsNumber === void 0) { reelsNumber = 5; } if (reelsItemsNumber === void 0) { reelsItemsNumber = 3; } var _this = _super.call(this) || this; _this._availableItems = [ "A", "K", "Q", "J", "10", "9", "W", "S", ]; _this._wildItemId = "W"; _this._scatters = [ ["S", 3], ]; _this._wildsMultipliers = {}; var j = 2; for (var i = 1; i < reelsNumber; i++) { _this._wildsMultipliers[i] = j; j += 2; } _this._reelsNumber = reelsNumber; _this._reelsItemsNumber = reelsItemsNumber; _this._linesDirections = ReelGameSessionConfig.createLinesDirections(_this._reelsNumber, _this._reelsItemsNumber); _this._reelsItemsSequences = ReelGameSessionConfig.createReelsItemsSequences(_this._reelsNumber, _this._availableItems); _this._paytable = ReelGameSessionConfig.createPaytable(_this.availableBets, _this._availableItems, _this._reelsNumber, _this._wildItemId); return _this; } ReelGameSessionConfig.createLinesDirections = function (reelsNumber, reelsItemsNumber) { var r = {}; for (var i = 0; i < reelsItemsNumber; i++) { for (var j = 0; j < reelsNumber; j++) { if (!r[i]) { r[i] = []; } r[i].push(i); } } return r; }; ReelGameSessionConfig.createReelsItemsSequences = function (reelsNumber, availableItems) { var r = []; for (var i = 0; i < reelsNumber; i++) { r[i] = availableItems.reduce(function (ob) { return __spreadArrays(ob, availableItems); }, availableItems).sort(function () { return Math.random() - 0.5; }); } return r; }; ReelGameSessionConfig.createPaytable = function (availableBets, availableItems, reelsNumber, wildItemId) { var r = {}; for (var _i = 0, availableBets_1 = availableBets; _i < availableBets_1.length; _i++) { var bet = availableBets_1[_i]; r[bet] = {}; for (var _a = 0, availableItems_1 = availableItems; _a < availableItems_1.length; _a++) { var itemId = availableItems_1[_a]; if (itemId !== wildItemId) { r[bet][itemId] = {}; for (var k = 3; k <= reelsNumber; k++) { r[bet][itemId][k] = (k - 2) * bet; } } } } return r; }; Object.defineProperty(ReelGameSessionConfig.prototype, "linesDirections", { get: function () { return this._linesDirections; }, set: function (value) { this._linesDirections = value; }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "reelsItemsSequences", { get: function () { return this._reelsItemsSequences; }, set: function (value) { this._reelsItemsSequences = value; }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "reelsItemsNumber", { get: function () { return this._reelsItemsNumber; }, set: function (value) { this._reelsItemsNumber = value; this._linesDirections = ReelGameSessionConfig.createLinesDirections(this._reelsNumber, this._reelsItemsNumber); }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "reelsNumber", { get: function () { return this._reelsNumber; }, set: function (value) { this._reelsNumber = value; this._linesDirections = ReelGameSessionConfig.createLinesDirections(this._reelsNumber, this._reelsItemsNumber); }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "scatters", { get: function () { return this._scatters; }, set: function (value) { this._scatters = value; }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "wildItemId", { get: function () { return this._wildItemId; }, set: function (value) { this._wildItemId = value; }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "availableItems", { get: function () { return this._availableItems; }, set: function (value) { this._availableItems = value; this._reelsItemsSequences = ReelGameSessionConfig.createReelsItemsSequences(this._reelsNumber, this._availableItems); this._paytable = ReelGameSessionConfig.createPaytable(this.availableBets, this._availableItems, this._reelsNumber, this._wildItemId); }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "paytable", { get: function () { return this._paytable; }, set: function (value) { this._paytable = value; }, enumerable: false, configurable: true }); Object.defineProperty(ReelGameSessionConfig.prototype, "wildsMultipliers", { get: function () { return this._wildsMultipliers; }, set: function (value) { this._wildsMultipliers = value; }, enumerable: false, configurable: true }); ReelGameSessionConfig.prototype.isItemScatter = function (itemId) { return this._scatters && this._scatters.reduce(function (flag, entry) { if (!flag && itemId === entry[0]) { flag = true; } return flag; }, false); }; ReelGameSessionConfig.prototype.isItemWild = function (itemId) { return itemId === this._wildItemId; }; return ReelGameSessionConfig; }(GameSessionConfig_1.GameSessionConfig)); exports.ReelGameSessionConfig = ReelGameSessionConfig;