aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guest.mjs69
-rw-r--r--player.mjs5
2 files changed, 72 insertions, 2 deletions
diff --git a/guest.mjs b/guest.mjs
new file mode 100644
index 0000000..ba9e8cc
--- /dev/null
+++ b/guest.mjs
@@ -0,0 +1,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;
+ }
+} \ No newline at end of file
diff --git a/player.mjs b/player.mjs
index a8d4cb7..594bb7b 100644
--- a/player.mjs
+++ b/player.mjs
@@ -1,3 +1,4 @@
+import { GuestManager } from "./guest.mjs";
import { shuffle, Manager } from "./utils.mjs";
class Player {
@@ -41,6 +42,8 @@ function parseLineToPlayer(data) {
}
export class PlayerManager extends Manager {
+ g = new GuestManager();
+
constructor() {
super("regular", []);
console.log("Loading player data.");
@@ -73,7 +76,6 @@ export class PlayerManager extends Manager {
console.log("Generated data for " + this.listData.length + " players");
this.store();
this.render();
- this.addBehaviour();
}
import(data) {
var lines = data.split("\n");
@@ -91,7 +93,6 @@ export class PlayerManager extends Manager {
this.listData = players;
this.store();
this.render();
- this.addBehaviour();
}
active(factor) {
factor = typeof factor !== "undefined" ? factor : 1;