235 lines
6.6 KiB
JavaScript
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()
|
|
} |