Adding betting feedback using the flood/timer mechanism from currency checks.
This commit is contained in:
parent
631feab417
commit
e4ab6185da
@ -121,6 +121,10 @@ function Currency(irc, db, options) {
|
||||
__self.bets_viewers = [];
|
||||
__self.bets_payout = false;
|
||||
__self.bets_total = 0;
|
||||
__self.bets_flood = [];
|
||||
__self.bets_response = null;
|
||||
__self.bets_response_timer = 3000;
|
||||
__self.bets_response_reset = true;
|
||||
}
|
||||
|
||||
//-------- Methods ---------
|
||||
@ -1358,6 +1362,30 @@ Currency.prototype.bets = function(status, data) {
|
||||
Currency.prototype.collect_bets = function (caller, bet, amount) {
|
||||
var __self = this, has_bet = false;
|
||||
|
||||
function do_work() {
|
||||
var multi_response = [];
|
||||
for (var i = 0; i < __self.bets_board.length; i++) {
|
||||
multi_response.push([]);
|
||||
}
|
||||
|
||||
if (__self.bets_flood.length > 0) {// send flood requests
|
||||
var bet;
|
||||
// setup bet response
|
||||
for (var i = 0; i < __self.bets_flood.length; i++) {
|
||||
bet = __self.bets_viewers[__self.bets_flood[i]];
|
||||
multi_response[bet.bet].push(bet.viewer + ' (' + bet.amount + ')');
|
||||
}
|
||||
for (var i = 0; i < __self.bets_board.length; i++) {
|
||||
if (multi_response[i].length > 0) {
|
||||
__self.irc.emit('message', {message:'New bets for ' + __self.bets_board[i].name + ': ' + multi_response[i].join(', '), timer: 1});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// clear flood requests
|
||||
__self.bets_flood = [];
|
||||
}
|
||||
|
||||
// Bound amount by positive currency
|
||||
__self.query_coins(caller, function (rows) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
@ -1367,17 +1395,20 @@ Currency.prototype.collect_bets = function (caller, bet, amount) {
|
||||
for (var i = 0; i < __self.bets_viewers.length; i++) {
|
||||
if (__self.bets_viewers[i].viewer === caller) {
|
||||
has_bet = true;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].num -= 1;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].total -= __self.bets_viewers[i].amount;
|
||||
__self.bets_viewers[i].bet = bet.idx;
|
||||
__self.bets_viewers[i].amount = amount;
|
||||
if (amount >= 1) {
|
||||
__self.bets_board[__self.bets_viewers[i].bet].num -= 1;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].total -= __self.bets_viewers[i].amount;
|
||||
__self.bets_viewers[i].bet = bet.idx;
|
||||
__self.bets_viewers[i].amount = amount;
|
||||
__self.bets_board[bet.idx].num += 1;
|
||||
__self.bets_board[bet.idx].total += amount;
|
||||
} else {
|
||||
__self.bets_board[__self.bets_viewers[i].bet].num -= 1;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].total -= __self.bets_viewers[i].amount;
|
||||
__self.bets_viewers.splice(i, 1);
|
||||
// add flood users to array
|
||||
if (__self.bets_flood.indexOf(i) < 0) {
|
||||
__self.bets_flood.push(i);
|
||||
}
|
||||
// remove from flood if nullified bet
|
||||
} else if (__self.bets_flood.indexOf(i) > 0) {
|
||||
__self.bets_flood.splice(__self.bets_flood.indexOf(i), 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1386,15 +1417,29 @@ Currency.prototype.collect_bets = function (caller, bet, amount) {
|
||||
__self.bets_viewers.push({viewer: caller, bet: bet.idx, amount: amount});
|
||||
__self.bets_board[bet.idx].num += 1;
|
||||
__self.bets_board[bet.idx].total += amount;
|
||||
__self.bets_flood.push(__self.bets_viewers.length - 1);
|
||||
}
|
||||
} else {
|
||||
if (amount >= 1 && amount !== 0) {
|
||||
__self.bets_viewers.push({viewer: caller, bet: bet.idx, amount: amount});
|
||||
__self.bets_board[bet.idx].num += 1;
|
||||
__self.bets_board[bet.idx].total += amount;
|
||||
__self.bets_flood.push(__self.bets_viewers.length - 1);
|
||||
}
|
||||
}
|
||||
console.log(__self.bets_viewers);
|
||||
|
||||
// check if flood has a set amount of requests and output
|
||||
// if not, set the output timer
|
||||
if (__self.bets_flood.length === __self.max_requests) {
|
||||
do_work();
|
||||
} else {
|
||||
if (__self.bets_response_reset) {
|
||||
__self.bets_response = setTimeout(function () {do_work();}, __self.bets_response_timer);
|
||||
} else {
|
||||
setTimeout(function () {do_work();}, __self.bets_response_timer);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@ -1410,14 +1455,16 @@ Currency.prototype.bets_deduct_bets = function () {
|
||||
__self.bets_total = 0;
|
||||
// Remove the points and add them to an escrow
|
||||
for (var i = 0; i < __self.bets_viewers.length; i++) {
|
||||
sql = '';
|
||||
sql += 'UPDATE viewers ';
|
||||
sql += 'SET points = points - ' + __self.bets_viewers[i].amount + ' ';
|
||||
sql += 'WHERE user = \'' + __self.bets_viewers[i].viewer + '\'';
|
||||
__self.db.execute(sql, function() {});
|
||||
__self.bets_board[__self.bets_viewers[i].bet].num += 1;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].total += __self.bets_viewers[i].amount;
|
||||
__self.bets_total += __self.bets_viewers[i].amount;
|
||||
if (__self.bets_viewers[i].amount > 0) {
|
||||
sql = '';
|
||||
sql += 'UPDATE viewers ';
|
||||
sql += 'SET points = points - ' + __self.bets_viewers[i].amount + ' ';
|
||||
sql += 'WHERE user = \'' + __self.bets_viewers[i].viewer + '\'';
|
||||
__self.db.execute(sql, function() {});
|
||||
__self.bets_board[__self.bets_viewers[i].bet].num += 1;
|
||||
__self.bets_board[__self.bets_viewers[i].bet].total += __self.bets_viewers[i].amount;
|
||||
__self.bets_total += __self.bets_viewers[i].amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user