Files
ByteDiceWeb/global/globalScript.js
T

180 lines
3.6 KiB
JavaScript

const PAGES = {
null: -1,
SYNTHWAVE: 0,
}
let CURRENT_PAGE = PAGES.null
let isAnimating = true
let gridVisible = false
function randomFloat(min, max) {
return Math.random() * (max - min) + min;
}
function randomIntFrom0(max) {
return Math.floor(Math.random() * max)
}
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min) + min)
}
function clampNearest(n, mul) {
if(n > 0)
return Math.ceil(n / mul) * mul;
else if( n < 0)
return Math.floor(n / mul) * mul;
else
return 0;
}
function lerp(x, y, t) {
return x + t * (y - x)
}
function toggleGrid() {
if (gridVisible) {
document.getElementById("gridCanvas").remove()
gridVisible = false
return
}
let canvasEl = document.createElement("canvas")
canvasEl.id = "gridCanvas"
canvasEl.width = window.innerWidth
canvasEl.height = window.innerHeight
canvasEl.style.position = "absolute"
canvasEl.style.top = "0%"
canvasEl.style.left = "0%"
canvasEl.style.pointerEvents = "none"
let ctx = canvasEl.getContext("2d")
document.body.appendChild(canvasEl)
let repeatCountX = window.innerWidth / pxDensity
let repeatCountY = window.innerHeight / pxDensity
ctx.strokeStyle = "#ff0000"
ctx.beginPath()
for (x = 0; x < repeatCountX; x++) {
ctx.moveTo(x * pxDensity, 0)
ctx.lineTo(x * pxDensity, window.innerHeight)
}
for (y = 0; y < repeatCountY; y++) {
ctx.moveTo(0, y * pxDensity)
ctx.lineTo(window.innerWidth, y * pxDensity)
}
ctx.stroke()
gridVisible = true
}
function pauseAnimBtn(state) {
if (state == "auto") {
if (localStorage["isAnimating"] == "true") { localStorage["isAnimating"] = "false" }
else { localStorage["isAnimating"] = "true" }
state = localStorage["isAnimating"]
}
let pauseBtn = document.getElementById("animationToggle")
if (state == "true") {
isAnimating = true
pauseBtn.src = "/assets/icons/pauseAnimation_8x8.png"
}
else {
isAnimating = false
pauseBtn.src = "/assets/icons/playAnimation_8x8.png"
}
localStorage["isAnimating"] = state
}
document.addEventListener("DOMContentLoaded", async function() {
startLoadingScreen()
setLoadingProgress("Fetching tips...")
await loadTips()
newTip()
setLoadingProgress("Calculating pixel density...")
calcPixelDensity()
console.log("pxDensity: " + getComputedStyle(document.body).getPropertyValue("--pxDensity"))
if (densityWidth > densityHeight) { console.log("pxDensity Direction: Width, " + densityWidth) }
else { console.log("pxDensity Direction: Height, " + densityHeight) }
setLoadingProgress("adding navBar...")
await loadNavBarJson()
onLoadNavBar()
switch (CURRENT_PAGE) {
case (PAGES.SYNTHWAVE): loadingScreenSynthwave()
}
pauseAnimBtn(localStorage["isAnimating"] || "true")
if (showLoading != "true") {
removeLoadingScreen()
}
else {
setLoadingProgress("Cleaning up...")
}
}, false)
window.addEventListener("resize", function() {
calcPixelDensity()
switch (CURRENT_PAGE) {
case (PAGES.SYNTHWAVE): onResizeSynthwave()
}
if (gridVisible) {
toggleGrid()
toggleGrid()
}
})
let prevAnimationState = isAnimating
document.addEventListener("visibilitychange", function() {
if (document.hidden) {
prevAnimationState = isAnimating;
isAnimating = false;
}
else {
isAnimating = prevAnimationState;
}
});
/*
window.addEventListener("blur", function() {
if (document.visibilityState === "visible") {
prevAnimationState = isAnimating;
isAnimating = false;
}
});
*/
window.addEventListener("focus", function() {
if (!document.hidden) {
isAnimating = prevAnimationState;
}
});