2021-02-25 08:58:35 +01:00
|
|
|
class Player {
|
|
|
|
name = '';
|
|
|
|
raw = {};
|
|
|
|
|
|
|
|
constructor(data) {
|
|
|
|
if (typeof data === 'string') {
|
|
|
|
this.name = data;
|
|
|
|
} else {
|
|
|
|
const {name, ...raw} = data;
|
|
|
|
if (name) this.name = name;
|
|
|
|
if (raw) this.raw = raw;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class Players extends Array {
|
|
|
|
setNum(num) {
|
|
|
|
// If the server specified some ridiculous number of players (billions), we don't want to
|
|
|
|
// run out of ram allocating these objects.
|
|
|
|
num = Math.min(num, 10000);
|
|
|
|
|
2021-12-09 22:25:38 +01:00
|
|
|
while(this.length < num) {
|
2021-02-25 08:58:35 +01:00
|
|
|
this.push({});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
push(data) {
|
|
|
|
super.push(new Player(data));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class Results {
|
|
|
|
name = '';
|
|
|
|
map = '';
|
|
|
|
password = false;
|
|
|
|
|
|
|
|
raw = {};
|
|
|
|
|
|
|
|
maxplayers = 0;
|
|
|
|
players = new Players();
|
|
|
|
bots = new Players();
|
|
|
|
|
2021-12-09 22:41:12 +01:00
|
|
|
set players(val) {
|
|
|
|
if (typeof val === 'number') {
|
|
|
|
this.players.setNum(val);
|
|
|
|
} else if (Array.isArray(val)) {
|
|
|
|
this.players = val;
|
|
|
|
}
|
2021-02-25 08:58:35 +01:00
|
|
|
}
|
2021-12-09 22:41:12 +01:00
|
|
|
set bots(val) {
|
|
|
|
if (typeof val === 'number') {
|
|
|
|
this.bots.setNum(val);
|
|
|
|
} else if (Array.isArray(val)) {
|
|
|
|
this.bots = val;
|
|
|
|
}
|
2021-02-25 08:58:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Results;
|