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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
import { Manager } from "./utils.mjs";
export class Guest {
constructor(id, name, level, status, totalPlayed) {
this.id = id;
this.status = typeof status !== "undefined" ? status : false;
this.name = name;
this.level = typeof level !== "undefined" ? level : 1;
this.totalPlayed = typeof totalPlayed !== "undefined" ? status : 0;
}
toggle() {
this.status = !this.status;
this.print();
}
print() {
let status = this.status ? "active" : "inactive";
console.log(this.name + " is currently " + status);
}
render() {
let color = this.status ? "is-success" : "is-danger";
let type = `class="button is-medium ${color}"`;
return `<button id=${"regular_" + this.id} ${type}>${this.name}</button>`;
}
}
export class GuestManager extends Manager {
constructor() {
super("guest", []);
console.log("Loading guest data.");
let data = JSON.parse(localStorage.getItem(this.description));
if (data === null || data.length === 0) {
console.log("Guest data unavailable: " + data);
this.generate();
return;
}
for (let i = 0; i < data.length; i++) {
let id = Number(data[i].id);
let name = data[i].name;
let level = data[i].level;
let status = data[i].status;
let totalPlayed = data[i].totalPlayed;
this.listData.push(new Player(id, name, level, status, totalPlayed));
}
console.log("Loaded " + this.listData.length + " players.");
this.render();
}
generate() {
console.log("Generating guest data.");
let maxPlayerCount = 12;
for (let i = 0; i < maxPlayerCount; i++) {
let level = i < 3 ? 1 : ( i < 6 ? 3 : 7);
let p = new Player(i, "Player " + i, level, false, 0);
this.listData.push(p);
}
console.log("Generated data for " + this.listData.length + " guest");
this.store();
this.render();
}
active(factor) {
factor = typeof factor !== "undefined" ? factor : 1;
let data = super.active();
console.log("Normalize skill by a factor of " + factor + ".");
let players = data.map(function (p) {
p.skill = Math.ceil(p.skill / factor);
return p;
});
return players;
}
}
|