forked from Simnation/Main
70 lines
2.6 KiB
JavaScript
70 lines
2.6 KiB
JavaScript
window.addEventListener("message", (event) => {
|
|
switch (event.data.action) {
|
|
case "open":
|
|
open(event.data);
|
|
break;
|
|
case "close":
|
|
close();
|
|
break;
|
|
case "setup":
|
|
setup(event.data);
|
|
break;
|
|
}
|
|
});
|
|
|
|
const open = (data) => {
|
|
const scoreboard = document.querySelector(".scoreboard-block");
|
|
scoreboard.style.display = "block";
|
|
const totalPlayers = document.getElementById("total-players");
|
|
if (totalPlayers) {
|
|
totalPlayers.innerHTML = `<p>${data.players} of ${data.maxPlayers}</p>`;
|
|
}
|
|
Object.entries(data.requiredCops).forEach(([category, info]) => {
|
|
const beam = document.querySelector(`.scoreboard-info [data-type="${category}"]`);
|
|
if (!beam) return;
|
|
const status = beam.querySelector(".info-beam-status");
|
|
if (!status) return;
|
|
if (info.busy) {
|
|
status.innerHTML = "⏳";
|
|
} else if (data.currentCops >= info.minimumPolice) {
|
|
status.innerHTML = "✅";
|
|
} else {
|
|
status.innerHTML = "❌";
|
|
}
|
|
});
|
|
};
|
|
|
|
const close = () => {
|
|
const scoreboard = document.querySelector(".scoreboard-block");
|
|
scoreboard.style.display = "none";
|
|
};
|
|
|
|
const setup = (data) => {
|
|
const scoreboardInfo = document.querySelector(".scoreboard-info");
|
|
if (!scoreboardInfo) return;
|
|
scoreboardInfo.innerHTML = "";
|
|
Object.entries(data.items).forEach(([index, value]) => {
|
|
const beamElement = document.createElement("div");
|
|
beamElement.className = "scoreboard-info-beam";
|
|
beamElement.setAttribute("data-type", index);
|
|
const titleElement = document.createElement("div");
|
|
titleElement.className = "info-beam-title";
|
|
titleElement.innerHTML = `<p>${value}</p>`;
|
|
const statusElement = document.createElement("div");
|
|
statusElement.className = "info-beam-status";
|
|
beamElement.appendChild(titleElement);
|
|
beamElement.appendChild(statusElement);
|
|
scoreboardInfo.appendChild(beamElement);
|
|
});
|
|
const playersBeam = document.createElement("div");
|
|
playersBeam.className = "scoreboard-info-beam";
|
|
const playersTitle = document.createElement("div");
|
|
playersTitle.className = "info-beam-title";
|
|
playersTitle.innerHTML = "<p>Total Players</p>";
|
|
const playersStatus = document.createElement("div");
|
|
playersStatus.className = "info-beam-status";
|
|
playersStatus.id = "total-players";
|
|
playersBeam.appendChild(playersTitle);
|
|
playersBeam.appendChild(playersStatus);
|
|
scoreboardInfo.appendChild(playersBeam);
|
|
};
|