slotify.js
Version:
A video slot game session framework for JavaScript
105 lines (104 loc) • 3.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReelGameSessionReelsController = void 0;
var ReelGameSessionReelsController = /** @class */ (function () {
function ReelGameSessionReelsController(conf) {
this._reelsNumber = conf.reelsNumber;
this._reelsItemsNumber = conf.reelsItemsNumber;
this._reelsSequences = conf.reelsItemsSequences;
}
ReelGameSessionReelsController.createItemsSequences = function (reelsNumber, availableItems, countsOfItems) {
var rv;
var i;
var reelId;
rv = [];
for (i = 0; i < reelsNumber; i++) {
reelId = i;
if (typeof countsOfItems === "number") {
rv[reelId] = this.createItemsSequence(availableItems, countsOfItems);
}
else {
rv[reelId] = this.createItemsSequence(availableItems, (countsOfItems && countsOfItems.hasOwnProperty(reelId) ? countsOfItems[reelId] : undefined));
}
}
return rv;
};
ReelGameSessionReelsController.createItemsSequence = function (availableItems, countsOfItems) {
var _a;
var i;
var itemId;
var rv;
rv = [];
for (var _i = 0, availableItems_1 = availableItems; _i < availableItems_1.length; _i++) {
itemId = availableItems_1[_i];
var countIoItems = void 0;
if (typeof countsOfItems === "number") {
countIoItems = countsOfItems;
}
else {
countIoItems = countsOfItems && countsOfItems.hasOwnProperty(itemId) ? countsOfItems[itemId] : 1;
}
for (i = 0; i < countIoItems; i++) {
rv.push(itemId);
}
}
for (i = rv.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
_a = [rv[j], rv[i]], rv[i] = _a[0], rv[j] = _a[1];
}
return rv;
};
ReelGameSessionReelsController.transposeMatrix = function (source) {
var r;
var i;
var j;
r = [];
for (i = 0; i < source.length; i++) {
for (j = 0; j < source[i].length; j++) {
if (r[j] === undefined) {
r[j] = [];
}
r[j][i] = source[i][j];
}
}
return r;
};
ReelGameSessionReelsController.prototype.getRandomItemsCombination = function () {
var i;
var rv;
rv = [];
for (i = 0; i < this._reelsNumber; i++) {
rv[i] = this.getRandomReelItems(i);
}
return rv;
};
ReelGameSessionReelsController.prototype.getRandomReelItems = function (reelId) {
var rv;
var i;
var placeOnSequence;
var sequence;
var item;
rv = [];
sequence = this._reelsSequences[reelId];
placeOnSequence = Math.floor(Math.random() * sequence.length);
for (i = placeOnSequence; i < placeOnSequence + this._reelsItemsNumber; i++) {
if (i > sequence.length - 1) {
item = sequence[i - sequence.length];
}
else {
item = sequence[i];
}
rv.push(item);
}
return rv;
};
ReelGameSessionReelsController.prototype.getRandomItem = function (reelId) {
var item;
var sequence;
sequence = this._reelsSequences[reelId];
item = sequence[Math.floor(Math.random() * sequence.length)];
return item;
};
return ReelGameSessionReelsController;
}());
exports.ReelGameSessionReelsController = ReelGameSessionReelsController;