Court ${this.id + 1}
${type}
class Switch {
constructor(id, status) {
this.id = id;
this.status = typeof status !== "undefined" ? status : false;
this.description = this.constructor.name;
this.name = this.description + " " + (id + 1);
}
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 ? `` : `class="outline secondary"`;
let id = this.description + "_" + this.id;
return ``;
}
}
export class Court extends Switch {
constructor(id, status) {
super(id, status);
}
}
export class Regular extends Switch {
constructor(id, status, level, games, firstName, lastName) {
super(id, status);
this.level = typeof level !== "undefined" ? level : 1;
this.games = typeof games !== "undefined" ? games : 0;
this.firstName =
typeof firstName !== "undefined" ? firstName : this.description;
this.lastName = typeof lastName !== "undefined" ? lastName : this.id + 1;
this.name = this.firstName + " " + this.lastName;
}
}
const guestCategories = {
0: { description: "Beginner", level: 1 },
1: { description: "Novice", level: 3 },
2: { description: "Intermediate", level: 6 },
};
export class Guest extends Switch {
maxCount = 6;
categoryCount = 3;
constructor(id, status, games) {
super(id, status);
const categoryId = Math.floor(id / this.maxCount) || 0;
this.level = guestCategories[categoryId].level;
this.games = typeof games !== "undefined" ? games : 0;
const guestNumber = (id % this.maxCount) + 1;
this.firstName = guestCategories[categoryId].description;
this.lastName = guestNumber;
this.name = this.firstName + " " + this.lastName;
}
}
function renderPlayerName(player) {
return `${player.firstName} ${player.lastName}`;
}
export class Team {
constructor(playerOne, playerTwo) {
this.playerOne = playerOne;
this.playerTwo = playerTwo;
}
print() {
console.log("Team consists of:");
this.playerOne.print();
this.playerTwo.print();
}
render() {
const p1 = renderPlayerName(this.playerOne);
const p2 = renderPlayerName(this.playerTwo);
return p1 + `
` + p2;
}
}
export class Game extends Switch {
constructor(id, status, teamOne, teamTwo) {
super(id, status);
this.teamOne = teamOne;
this.teamTwo = teamTwo;
}
print() {
const teamOne =
this.teamOne.playerOne.firstName +
" and " +
this.teamOne.playerTwo.firstName;
const teamTwo =
this.teamTwo.playerOne.firstName +
" and " +
this.teamTwo.playerTwo.firstName;
console.log(
"Game " + this.id + ": " + teamOne + " is playing against " + teamTwo
);
}
render() {
const blockedState = this.teamOne.playerOne.firstName === "RESERVED";
const playerState = this.teamOne.render() + "