Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
talk:leaky_ring_js_docs [2025/06/17 23:36] – GlitchyZorua | talk:leaky_ring_js_docs [2025/06/21 21:11] (current) – removed GlitchyZorua | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | ||
- | // Flood Web Ring and Flood Toy! | ||
- | // Super Object! | ||
- | let flood = {}; | ||
- | |||
- | // Settings | ||
- | flood.serverURL = " | ||
- | // | ||
- | flood.ringPage = " | ||
- | flood.ringTarget = " | ||
- | flood.texture = " | ||
- | flood.textureWidth = 314; | ||
- | flood.textureHeight = 98; | ||
- | flood.drainSound = " | ||
- | flood.drainTooSoonSound = " | ||
- | flood.updateSpeed = 5000; // Please do not lower! | ||
- | flood.renderSpeed = 70; | ||
- | flood.maxLevel = 100; // Server - Do not Edit. | ||
- | flood.bilgeDelay = 10000; // Server - Do not Edit. | ||
- | flood.changeStep = 0.1; | ||
- | flood.includeInfo = false; // Returns a list of all sites who are flooded. | ||
- | flood.disableInFrames = false; // Stop the script running in frames | ||
- | flood.disableMessages = false; // Hides the info message. | ||
- | |||
- | flood.msg = {}; | ||
- | flood.msg.info = "&# | ||
- | flood.msg.rising = "The water level is rising..."; | ||
- | flood.msg.falling = "The water level is falling..."; | ||
- | flood.msg.toosoon = "Its too soon to bilge again!"; | ||
- | flood.msg.one = "This page has a harmless leak."; | ||
- | flood.msg.two = "It looks like the page has a bad leak!"; | ||
- | flood.msg.three = " | ||
- | flood.msg.four = "Oh my, there' | ||
- | flood.msg.five = "The page is deep under water!"; | ||
- | flood.msg.six = "This page is totaly submerged!"; | ||
- | |||
- | // Active vars, do not edit! | ||
- | flood.updateLoop = undefined; | ||
- | flood.renderLoop = undefined; | ||
- | flood.lastBilge = 0; | ||
- | flood.logicLevel = 0; | ||
- | |||
- | </ | ||
- | flood.level = 0; | ||
- | flood.info = undefined; | ||
- | |||
- | // HTML references! | ||
- | flood.html = {}; | ||
- | flood.html.flood = undefined; | ||
- | flood.html.menu = undefined; | ||
- | flood.html.message = undefined; | ||
- | |||
- | flood.audio = {}; | ||
- | flood.audio.flush = undefined; | ||
- | flood.audio.clunk = undefined; | ||
- | |||
- | // Setup event! | ||
- | window.addEventListener(" | ||
- | if (flood.disableInFrames && window !== window.parent) { | ||
- | updateFloodLevel(false, | ||
- | flood.updateLoop = setInterval(updateFloodLevel, | ||
- | console.log(" | ||
- | return; | ||
- | } | ||
- | |||
- | document.body.insertAdjacentHTML( | ||
- | " | ||
- | ` | ||
- | <svg id=" | ||
- | < | ||
- | <path id=" | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | <g class=" | ||
- | <use xlink: | ||
- | <use xlink: | ||
- | <use xlink: | ||
- | </ | ||
- | </ | ||
- | |||
- | <div id=" | ||
- | <span id=" | ||
- | <a href=" | ||
- | </ | ||
- | ); | ||
- | |||
- | flood.html.flood = document.getElementById(" | ||
- | flood.html.menu = document.getElementById(" | ||
- | flood.html.message = document.getElementById(" | ||
- | |||
- | flood.audio.flush = new Audio(flood.drainSound); | ||
- | flood.audio.clunk = new Audio(flood.drainTooSoonSound); | ||
- | |||
- | if (flood.disableMessages) { | ||
- | flood.html.message.style.display = " | ||
- | } | ||
- | |||
- | await updateFloodLevel(false, | ||
- | flood.updateLoop = setInterval(updateFloodLevel, | ||
- | flood.renderLoop = setInterval(renderWater, | ||
- | // Make the flood visible now that its working | ||
- | flood.html.flood.style.display = " | ||
- | flood.html.menu.style.display = " | ||
- | |||
- | flood.html.flood.addEventListener(" | ||
- | doBilge(); | ||
- | }); | ||
- | }); | ||
- | |||
- | // Issue a bilge request! | ||
- | function doBilge() { | ||
- | if (Date.now() - flood.lastBilge < flood.bilgeDelay) { | ||
- | // Its too soon to bilge again! | ||
- | flood.audio.clunk.currentTime = 0; | ||
- | flood.audio.clunk.play(); | ||
- | flood.html.message.innerHTML = flood.msg.toosoon + ` - Flood Percentage: ${flood.level}%`; | ||
- | return; | ||
- | } | ||
- | flood.lastBilge = Date.now(); | ||
- | updateFloodLevel(true, | ||
- | flood.audio.flush.currentTime = 0; | ||
- | flood.audio.flush.play(); | ||
- | } | ||
- | |||
- | // Communicate with the flood server! | ||
- | async function updateFloodLevel(doBilge = false, doQuickUpdate = false) { | ||
- | let path = window.location.pathname; | ||
- | fetch(flood.serverURL + "/ | ||
- | .then(function (response) { | ||
- | return response.json(); | ||
- | }) | ||
- | .then(function (jsonResponse) { | ||
- | flood.levelCache = flood.level; | ||
- | flood.level = jsonResponse.level; | ||
- | flood.info = jsonResponse.info; | ||
- | if (doQuickUpdate) { | ||
- | flood.html.flood.style.top = flood.maxLevel - flood.level + " | ||
- | } | ||
- | }); | ||
- | } | ||
- | |||
- | // Update the visuals | ||
- | function renderWater() { | ||
- | // const floodOz = (flood.level / 100) * flood.maxLevel | ||
- | const floodlevelMessage = ` - Flood Percentage: ${flood.level}%`; | ||
- | if (flood.logicLevel == flood.level) { | ||
- | return; // Save the processing time, nothing to do! | ||
- | } | ||
- | let renderLevel = Number(flood.html.flood.style.top.replace(" | ||
- | flood.logicLevel = flood.maxLevel - renderLevel; | ||
- | if (flood.level > flood.logicLevel) { | ||
- | flood.html.flood.style.top = renderLevel - flood.changeStep + " | ||
- | flood.html.message.innerHTML = flood.msg.rising+floodlevelMessage; | ||
- | } else if (flood.level < flood.logicLevel) { | ||
- | flood.html.flood.style.top = renderLevel + flood.changeStep + " | ||
- | flood.html.message.innerHTML = flood.msg.falling+floodlevelMessage; | ||
- | } else { | ||
- | if (flood.level > 90) { | ||
- | flood.html.message.innerHTML = flood.msg.six+floodlevelMessage | ||
- | } else if (flood.level > 70) { | ||
- | flood.html.message.innerHTML = flood.msg.five+floodlevelMessage | ||
- | } else if (flood.level > 50) { | ||
- | flood.html.message.innerHTML = flood.msg.four+floodlevelMessage | ||
- | } else if (flood.level > 30) { | ||
- | flood.html.message.innerHTML = flood.msg.three+floodlevelMessage | ||
- | } else if (flood.level > 10) { | ||
- | flood.html.message.innerHTML = flood.msg.two+floodlevelMessage | ||
- | } else { | ||
- | flood.html.message.innerHTML = flood.msg.one+floodlevelMessage | ||
- | } | ||
- | } | ||
- | } |