forked from sirDonovan/Cassius
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tournaments.js
48 lines (42 loc) · 1.1 KB
/
tournaments.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Tournaments
* Cassius - https://github.com/sirDonovan/Cassius
*
* This file contains the tournaments manager
*
* @license MIT license
*/
'use strict';
const Tournament = require('./room-tournament').Tournament;
class Tournaments {
constructor() {
/**@type {{[k: string]: NodeJS.Timer}} */
this.tournamentTimers = {};
this.defaultCap = Config.defaultTournamentCap || 64;
this.maxCap = 128;
}
/**
* @param {Room} room
* @param {Format} format
* @param {string} generator
* @return {Tournament}
*/
createTournament(room, format, generator) {
return new Tournament(room, format, generator);
}
/**
* @param {Room} room
* @param {number} time
* @param {string} [formatid]
* @param {number} [cap]
*/
setTournamentTimer(room, time, formatid, cap) {
if (room.id in this.tournamentTimers) clearTimeout(this.tournamentTimers[room.id]);
if (!cap) cap = this.defaultCap;
this.tournamentTimers[room.id] = setTimeout(() => {
room.say("/tour new " + formatid + ", elimination, " + cap);
delete this.tournamentTimers[room.id];
}, time);
}
}
module.exports = new Tournaments();