From 6aa1c0b94e72063513eeea12c158aebc234e805b Mon Sep 17 00:00:00 2001 From: Karan Jayachandra Date: Thu, 13 Nov 2025 20:06:05 +0100 Subject: Added the changes to include guests --- guest.mjs | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ player.mjs | 5 +++-- 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 guest.mjs 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 ``; + } +} + +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; -- cgit v1.3.1