2025-05-10 18:37:31 +02:00

235 lines
6.6 KiB
JavaScript

const navBar = document.querySelector("nav")
const uiButtons = document.querySelector("footer>section.left")
const footer = document.querySelector("footer")
const leftSection = document.querySelector("section.left")
const playButton = document.querySelector("button[name='play']")
const audioPourcentageLabel = document.querySelector("label[for='audioVolume']")
const audio = new Audio()
function startAudio() {
audio.src = "./assets/audio/main_menu.mp3"
audio.loop = true
audio.play()
audio.onended = () => {
if (!audio.paused) {
audio.play()
}
}
updateVolume(audio.volume)
}
function muteAudio() {
audio.muted = true
}
function unmuteAudio() {
audio.muted = false
}
function showNavBar() {
footer.style.zIndex = "-1"
leftSection.style.zIndex = "-1"
navBar.removeAttribute("hidden")
for (const button of uiButtons.children) {
button.setAttribute("hidden", "")
}
}
function hideNavBar() {
footer.style.zIndex = "9"
leftSection.style.zIndex = "9"
navBar.setAttribute("hidden", "")
for (const button of uiButtons.children) {
button.removeAttribute("hidden")
}
}
function toggleAudio(element) {
if (element.getAttribute("state") == 0) {
system.call("audio::mute")
element.setAttribute("state", 1)
element.children[0].classList.replace("fa-music", "fa-music-slash")
} else {
system.call("audio::unmute")
element.setAttribute("state", 0)
element.children[0].classList.replace("fa-music-slash", "fa-music")
}
}
function toggleMusic(element) {
if (element.getAttribute("state") == 0) {
audio.pause()
element.setAttribute("state", 1)
element.children[0].classList.replace("fa-pause", "fa-play")
element.children[1].innerText = "Reprendre"
} else {
audio.play()
element.setAttribute("state", 0)
element.children[0].classList.replace("fa-play", "fa-pause")
element.children[1].innerText = "Pause"
}
}
function toggleMusicVolume(element) {
if (element.getAttribute("state") == 0) {
system.call("audio::mute")
element.setAttribute("state", 1)
element.children[0].classList.replace("fa-volume", "fa-volume-slash")
element.children[1].innerText = "Activer le son"
} else {
system.call("audio::unmute")
element.setAttribute("state", 0)
element.children[0].classList.replace("fa-volume-slash", "fa-volume")
element.children[1].innerText = "Couper le son"
}
}
function updateVolume(value) {
audio.volume = value / 100
audioPourcentageLabel.innerText = `${value}%`
}
function logout() {
system.call("auth::reset")
document.location.href = './login.html'
}
system.result("server::ping", pong => {
playersStatus.innerText = `${pong.players.online}/${pong.players.max}`
})
function handleOptionsChanges(key, value) {
system.call("game::optionSet", { key, value })
const span = document.querySelector(`span#current${key.replace(/./, c => c.toUpperCase())}`)
if (span) {
span.innerText = Math.floor(value)
}
}
function handleSettingsChanges(key, value) {
system.call("settings::set", { key, value })
const span = document.querySelector(`span#${key == "ram" ? "currentRam" : key}`)
if (span) {
span.innerText = key == "ram" ? Math.floor(value.max / 1024) + " G" : value
}
}
function setLoadingType(type) {
const loader = document.querySelector(".loader")
switch (type) {
case "continuous":
loader.children[0].children[0].classList.remove("progress")
loader.children[0].children[0].classList.add("loading")
break
case "progress":
loader.children[0].children[0].classList.remove("loading")
loader.children[0].children[0].classList.add("progress")
break
default:
break
}
}
function setLoadingProgress(pourcentage) {
const loader = document.querySelector(".loader")
const progress = loader.querySelector(".progress")
if (progress) {
progress.setAttribute("style", `width: ${pourcentage}%`)
}
}
function toggleLoadingBar() {
const loader = document.querySelector(".loader")
if (loader.hasAttribute("hidden")) {
loader.removeAttribute("hidden")
} else {
loader.setAttribute("hidden", "")
}
}
function showLoadingBar() {
const loader = document.querySelector(".loader")
if (loader.hasAttribute("hidden")) {
loader.removeAttribute("hidden")
}
}
function hideLoadingBar() {
const loader = document.querySelector(".loader")
if (!loader.hasAttribute("hidden")) {
loader.setAttribute("hidden", "")
}
}
system.result("game::parseOptions", options => {
gamma.checked = options.gamma == 1 ? true : false
renderClouds.checked = options.renderrenderClouds == false ? false : true
guiScale.value = options.guiScale
currentGuiScale.innerText = options.guiScale
graphicsMode.checked = options.graphicsMode == 0 ? true : false
renderDistance.value = options.renderDistance
currentRenderDistance.innerText = options.renderDistance
})
system.result("settings::read", settings => {
ram.value = settings.ram.max
currentRam.innerText = `${Math.floor(settings.ram.max / 1024)} G`
})
system.result("hardware::ramInformation", $ram => {
ram.setAttribute("max", $ram.avaibleRam)
maxRam.innerText = `${Math.floor($ram.avaibleRam / 1024)} G`
})
system.result("game::launch", info => {
if (info.disablePlayButton) {
playButton.removeAttribute("hidden")
hideLoadingBar()
} else {
playButton.setAttribute("hidden", "")
}
})
system.result("game::launched", info => {
muteAudio()
hideLoadingBar()
})
system.result("player::profile", playerProfile => {
console.log(playerProfile)
})
system.result("oculus::getdefaultshaderset", boolean => {
sildurs_shader.checked = boolean
})
system.result("progress::update", info => {
showLoadingBar()
setLoadingType(info.type)
if (info.type == "progress" && typeof info.pourcentage == "number") {
setLoadingProgress(info.pourcentage)
}
})
system.result("progress::hide", () => {
hideLoadingBar()
})
system.result("izitoast::error", info => {
iziToast.error(info)
})
system.result("progress::info", info => {
iziToast.error(info)
})
window.onload = () => {
system.call("hardware::ramInformation")
system.call("game::parseOptions")
system.call("server::ping")
system.call("player::profile")
system.call("settings::read")
system.call("oculus::getdefaultshaderset")
hideLoadingBar()
startAudio()
}