import { Manager } from "./utils.mjs"; export class Guest { maxGuestCount = 12; categoryCount = 3; categories = { 0: { description: "Beginner", level: 1 }, 1: { description: "Novice", level: 3 }, 2: { description: "Intermediate", level: 6 }, }; constructor(id, status, totalPlayed) { this.id = id; this.status = typeof status !== "undefined" ? status : false; const categoryId = Math.floor(id / (12 / this.categoryCount)); const guestIdentifier = (id % (12 / this.categoryCount)) + 1; this.name = this.categories[categoryId].description + " " + guestIdentifier; this.level = this.categories[categoryId].level; 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 status = data[i].status; let totalPlayed = data[i].totalPlayed; this.listData.push(new Guest(id, status, totalPlayed)); } console.log("Loaded " + this.listData.length + " players."); this.render(); } generate() { console.log("Generating guest data."); for (let i = 0; i < new Guest(0, false).maxGuestCount; i++) { let p = new Guest(i, 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; } }