Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Untitled</title>
<style>
* {
margin:0;
padding:0;
border:0;
box-sizing:border-box;
}
html {
height:100%;
}
body {
height:100%;
background:#2f1f1f;
display:flex;
flex-flow:column;
padding:2em;
}
main {
flex:1 1 auto;
text-align:center;
padding-bottom:2em;
}
canvas {
height:100%;
box-shadow:0 0 0.4em #1f0f0f;
overflow:hidden;
}
textarea {
flex:0 0 auto;
display:block;
width:100%;
resize:none;
background:#1f0f0f;
color:#af9898;
box-shadow:0 0 0.4em #1f0f0f;
}
</style>
</head>
<body>
<main>
<progress value="0" max="100"></progress>
<canvas id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
</main>
<textarea rows="8"></textarea>
<script>
var progressElement = document.getElementsByTagName('progress')[0];
var canvasElement = document.getElementById('canvas');
var textareaElement = document.getElementsByTagName('textarea')[0];
var Module = {
preRun: [],
postRun: [],
print: (function() {
if(textareaElement) {
textareaElement.value = ''; // clear browser cache
}
return function(text) {
if(arguments.length > 1) {
text = Array.prototype.slice.call(arguments).join(' ');
}
console.log(text);
if(textareaElement) {
textareaElement.value += text + '\n';
textareaElement.scrollTop = textareaElement.scrollHeight; // focus on bottom
}
};
})(),
printErr: function(text) {
if(arguments.length > 1) {
text = Array.prototype.slice.call(arguments).join(' ');
}
console.error(text);
},
canvas: (function() {
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvasElement.addEventListener(
"webglcontextlost",
function(e) {
alert('WebGL context lost. You will need to reload the page.');
e.preventDefault();
},
false);
return canvasElement;
})(),
setStatus: function(text) {
if(!Module.setStatus.last) {
Module.setStatus.last = {
time: Date.now(),
text: ''
};
}
text = text.trim();
if(text.length <= 0 || text === Module.setStatus.last.text) {
return;
}
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
var now = Date.now();
if(m && now - Module.setStatus.last.time < 30) {
// if this is a progress update, skip it if too soon
return;
}
Module.setStatus.last.time = now;
Module.setStatus.last.text = text;
if(m) {
text = m[1];
progressElement.value = parseInt(m[2]) * 100;
progressElement.max = parseInt(m[4]) * 100;
progressElement.hidden = false;
} else {
progressElement.value = null;
progressElement.max = null;
progressElement.hidden = true;
Module.print(text);
}
},
totalDependencies: 0,
monitorRunDependencies: function(left) {
this.totalDependencies = Math.max(this.totalDependencies, left);
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
}
};
Module.setStatus('Downloading...');
window.onerror = function(event) {
// TODO: do not warn on ok events like simulating an infinite loop or exitStatus
Module.setStatus('Exception thrown, see JavaScript console');
Module.setStatus = function(text) {
if(text) {
Module.printErr('[post-exception status] ' + text);
}
};
};
function audio_enable_fix() {
try {
if(Module.SDL2
&& Module.SDL2.audioContext
&& Module.SDL2.audioContext.resume) {
if(Module.SDL2.audioContext.state == 'suspended') {
Module.SDL2.audioContext.resume();
}
if(Module.SDL2.audioContext.state == 'running') {
document.removeEventListener('keydown', audio_enable_fix);
document.removeEventListener('click', audio_enable_fix);
}
}
} catch(e) {
Module.printErr(e.toString());
}
}
document.addEventListener('keydown', audio_enable_fix);
document.addEventListener('click', audio_enable_fix);
</script>
{{{ SCRIPT }}}
</body>
</html>