| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> |
| <title>Godot-groq-moa</title> |
| <style> |
| html, body, #canvas { |
| margin: 0; |
| padding: 0; |
| border: 0; |
| } |
| |
| body { |
| color: white; |
| background-color: black; |
| overflow: hidden; |
| touch-action: none; |
| } |
| |
| #canvas { |
| display: block; |
| } |
| |
| #canvas:focus { |
| outline: none; |
| } |
| |
| #status, #status-splash, #status-progress { |
| position: absolute; |
| left: 0; |
| right: 0; |
| } |
| |
| #status, #status-splash { |
| top: 0; |
| bottom: 0; |
| } |
| |
| #status { |
| background-color: #242424; |
| display: flex; |
| flex-direction: column; |
| justify-content: center; |
| align-items: center; |
| visibility: hidden; |
| } |
| |
| #status-splash { |
| max-height: 100%; |
| max-width: 100%; |
| margin: auto; |
| } |
| |
| #status-progress, #status-notice { |
| display: none; |
| } |
| |
| #status-progress { |
| bottom: 10%; |
| width: 50%; |
| margin: 0 auto; |
| } |
| |
| #status-notice { |
| background-color: #5b3943; |
| border-radius: 0.5rem; |
| border: 1px solid #9b3943; |
| color: #e0e0e0; |
| font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif; |
| line-height: 1.3; |
| margin: 0 2rem; |
| overflow: hidden; |
| padding: 1rem; |
| text-align: center; |
| z-index: 1; |
| } |
| </style> |
| <link id="-gd-engine-icon" rel="icon" type="image/png" href="Godot-simple-groq-api.icon.png" /> |
| <link rel="apple-touch-icon" href="Godot-simple-groq-api.apple-touch-icon.png"/> |
|
|
| </head> |
| <body> |
| <canvas id="canvas"> |
| Your browser does not support the canvas tag. |
| </canvas> |
|
|
| <noscript> |
| Your browser does not support JavaScript. |
| </noscript> |
|
|
| <div id="status"> |
| <img id="status-splash" src="Godot-simple-groq-api.png" alt=""> |
| <progress id="status-progress"></progress> |
| <div id="status-notice"></div> |
| </div> |
|
|
| <script src="Godot-simple-groq-api.js"></script> |
| <script> |
| const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"ensureCrossOriginIsolationHeaders":true,"executable":"Godot-simple-groq-api","experimentalVK":false,"fileSizes":{"Godot-simple-groq-api.pck":4365936,"Godot-simple-groq-api.wasm":35372023},"focusCanvas":true,"gdextensionLibs":[]}; |
| const GODOT_THREADS_ENABLED = false; |
| const engine = new Engine(GODOT_CONFIG); |
| |
| (function () { |
| const statusOverlay = document.getElementById('status'); |
| const statusProgress = document.getElementById('status-progress'); |
| const statusNotice = document.getElementById('status-notice'); |
| |
| let initializing = true; |
| let statusMode = ''; |
| |
| function setStatusMode(mode) { |
| if (statusMode === mode || !initializing) { |
| return; |
| } |
| if (mode === 'hidden') { |
| statusOverlay.remove(); |
| initializing = false; |
| return; |
| } |
| statusOverlay.style.visibility = 'visible'; |
| statusProgress.style.display = mode === 'progress' ? 'block' : 'none'; |
| statusNotice.style.display = mode === 'notice' ? 'block' : 'none'; |
| statusMode = mode; |
| } |
| |
| function setStatusNotice(text) { |
| while (statusNotice.lastChild) { |
| statusNotice.removeChild(statusNotice.lastChild); |
| } |
| const lines = text.split('\n'); |
| lines.forEach((line) => { |
| statusNotice.appendChild(document.createTextNode(line)); |
| statusNotice.appendChild(document.createElement('br')); |
| }); |
| } |
| |
| function displayFailureNotice(err) { |
| console.error(err); |
| if (err instanceof Error) { |
| setStatusNotice(err.message); |
| } else if (typeof err === 'string') { |
| setStatusNotice(err); |
| } else { |
| setStatusNotice('An unknown error occured'); |
| } |
| setStatusMode('notice'); |
| initializing = false; |
| } |
| |
| const missing = Engine.getMissingFeatures({ |
| threads: GODOT_THREADS_ENABLED, |
| }); |
| |
| if (missing.length !== 0) { |
| if (GODOT_CONFIG['serviceWorker'] && GODOT_CONFIG['ensureCrossOriginIsolationHeaders'] && 'serviceWorker' in navigator) { |
| |
| Promise.race([ |
| navigator.serviceWorker.getRegistration().then((registration) => { |
| if (registration != null) { |
| return Promise.reject(new Error('Service worker already exists.')); |
| } |
| return registration; |
| }).then(() => engine.installServiceWorker()), |
| |
| new Promise((resolve) => { |
| setTimeout(() => resolve(), 2000); |
| }), |
| ]).catch((err) => { |
| console.error('Error while registering service worker:', err); |
| }).then(() => { |
| window.location.reload(); |
| }); |
| } else { |
| |
| const missingMsg = 'Error\nThe following features required to run Godot projects on the Web are missing:\n'; |
| displayFailureNotice(missingMsg + missing.join('\n')); |
| } |
| } else { |
| setStatusMode('progress'); |
| engine.startGame({ |
| 'onProgress': function (current, total) { |
| if (current > 0 && total > 0) { |
| statusProgress.value = current; |
| statusProgress.max = total; |
| } else { |
| statusProgress.removeAttribute('value'); |
| statusProgress.removeAttribute('max'); |
| } |
| }, |
| }).then(() => { |
| setStatusMode('hidden'); |
| }, displayFailureNotice); |
| } |
| }()); |
| </script> |
| </body> |
| </html> |
|
|
|
|