aboutsummaryrefslogtreecommitdiff
path: root/player.mjs
diff options
context:
space:
mode:
authorKaran Jayachandra <karan.jayachandra@nxp.com>2025-11-12 14:18:36 +0100
committerKaran Jayachandra <karan.jayachandra@nxp.com>2025-11-12 14:18:36 +0100
commit3a4a0f6f2bf9aff14c00c6acee637319d7458bbb (patch)
tree8f136ad7fcaad95d7b3028138ed092a07ed10162 /player.mjs
parentca3e550fb59af89a2ddc0e1e0e59a3025edbece7 (diff)
Memory added
Diffstat (limited to 'player.mjs')
-rw-r--r--player.mjs84
1 files changed, 65 insertions, 19 deletions
diff --git a/player.mjs b/player.mjs
index da94e42..5d8f16a 100644
--- a/player.mjs
+++ b/player.mjs
@@ -1,4 +1,6 @@
-export class Player {
+import { Manager } from "./utils.mjs";
+
+class Player {
constructor(id, name, level, status, totalPlayed) {
this.id = id;
this.name = name;
@@ -15,7 +17,7 @@ export class Player {
console.log(this.name + " has a level of " + this.level + " and is currently " + status);
}
render() {
- let type = this.status ? `class="button is-medium is-success"` : 'class="button is-medium is-danger"';
+ let type = this.status ? `class="button is-success"` : 'class="button is-danger"';
return `<button id=${"regular_" + this.id} ${type}>${this.name}</button>`;
}
}
@@ -29,14 +31,6 @@ function randomStatus() {
return Math.random() < 0.5;
}
-export function generatePlayers() {
- let players = [];
- for (let i = 0; i < 71; i++) {
- players.push(new Player(i, "Player " + i, randomLevel(), randomStatus(), 0));
- }
- return players;
-}
-
function parseLineToPlayer(data) {
var info = data.split(",");
var id = Number(info[0].trim());
@@ -45,14 +39,66 @@ function parseLineToPlayer(data) {
return new Player(id, name, level, true, 0);
}
-export function csvToPlayers(csv) {
- var lines = csv.split("\n");
- var players = [];
- for (var i = 1; i < lines.length; i++) {
- if(lines[i] == undefined || lines[i].trim() == "") {continue;}
- players.push(parseLineToPlayer(lines[i]));
+export class PlayerManager extends Manager {
+ constructor() {
+ super("regular", []);
+ console.log("Loading player data.");
+ let data = JSON.parse(localStorage.getItem(this.description));
+ if (data === null || data.length === 0) {
+ console.log("Player data unavailable: " + data);
+ this.generate();
+ return;
+ }
+ for (let i = 0; i < data.length; i++) {
+ var id = Number(data[i].id);
+ var name = data[i].name;
+ var level = data[i].level;
+ var status = data[i].status;
+ var totalPlayed = data[i].totalPlayed;
+ this.listData.push(new Player(id, name, level, status, totalPlayed));
+ }
+ console.log("Loaded " + this.listData.length + " players.");
+ this.render();
}
- console.log("Loaded " + players.length + " Players");
- for (var i=0; i<players.length; i++) {players[i].print();}
- return players;
+ generate() {
+ console.log("Generating player data.");
+ let maxPlayerCount = 71;
+ for (let i = 0; i < maxPlayerCount; i++) {
+ let p = new Player(i, "Player " + i, randomLevel(), randomStatus(), 0);
+ this.listData.push(p);
+ }
+ console.log("Generated data for " + this.listData.length + " players");
+ this.store();
+ this.render();
+ }
+ import(data) {
+ var lines = data.split("\n");
+ var players = [];
+ for (var i = 1; i < lines.length; i++) {
+ if(lines[i] == undefined || lines[i].trim() == "") {continue;}
+ players.push(parseLineToPlayer(lines[i]));
+ }
+ console.log("Loaded " + players.length + " Players");
+ for (var i=0; i<players.length; i++) {players[i].print();}
+ this.listData = players;
+ this.store();
+ this.render();
+ }
+}
+
+// Try to add this functionality inside the class to call after constructor
+export function addLoadBehaviour(p) {
+ const f = document.querySelector("#player-load input[type=file]");
+ f.addEventListener("change", () => {
+ const file = f.files[0];
+ let importData;
+ console.log("Loading data from "+ file.name);
+ const reader = new FileReader();
+ reader.onload = function(e) {
+ importData = reader.result;
+ p.import(importData);
+ };
+ reader.readAsText(file);
+ })
+
} \ No newline at end of file