(function () {
const { search, pathname } = window.location;
const urlParams = new URLSearchParams(search);
const gameSubpath = urlParams.get("game");
const origin = localStorage.getItem("instance");
const cdn = localStorage.getItem("cdn");
const instance = origin.replace(location.origin, "");
if (!origin || !cdn) {
window.location.href = `../?onload=window.location.href='${pathname}${search}'`;
}
if (gameSubpath && origin) {
fetch("./json/games.json")
.then((res) => res.json())
.then((games) => {
const game = games.find((g) => g.root === gameSubpath);
if (game) {
const { name, root, img, file } = game;
document.title = `Play ${name} | 3kh0`;
window.history.pushState({}, "", `${origin}games/${gameSubpath}`);
document.querySelector("#game").textContent = name;
document.querySelector(".loader").innerHTML = `
`;
document.querySelector("#startgame").classList.remove("hidden");
const startGameHandler = (e) => {
document.body.innerHTML = `
`;
};
document.querySelector("#startgame").addEventListener("click", startGameHandler);
} else {
console.error(`The game "${gameSubpath}" was not found.`);
}
})
.catch((e) => {
console.error(e);
});
} else {
console.error("Could not load game");
if (!origin) {
console.error("The origin of the instance could not be found");
}
if (!gameSubpath) {
console.error("The game was not provided");
}
}
if (window.top === window.self) {
window.location.href = document.referrer || "../";
}
function getColorValues(hexcolor) {
const r = parseInt(hexcolor.substr(1, 2), 16);
const g = parseInt(hexcolor.substr(3, 2), 16);
const b = parseInt(hexcolor.substr(5, 2), 16);
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
return {
contrast: yiq >= 128 ? "#1c1c1c" : "white",
text: yiq >= 128 ? "white" : "black"
};
}
const theme = localStorage.getItem("theme");
if (!theme) {
document.body.setAttribute("theme", "default");
} else if (theme !== "custom") {
document.body.setAttribute("theme", theme);
} else if (theme === "custom") {
const customTheme = localStorage.getItem("theme_color");
document.body.setAttribute("theme", "custom");
const { contrast, text } = getColorValues(customTheme);
document.body.style = `--theme: ${customTheme}; --background: ${contrast}; --text: ${text}; --text-secondary: ${text};`;
if (location.pathname.includes("/settings")) {
document.querySelector("#theme_color").value = customTheme;
}
}
})();