Skip to content

Commit 7201c7d

Browse files
1
1 parent 811ad10 commit 7201c7d

5 files changed

Lines changed: 620 additions & 0 deletions

File tree

blastronaut/favicon.png

3.23 KB
Loading

blastronaut/index.html

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
<!DOCTYPE html>
2+
<html xmlns='http://www.w3.org/1999/xhtml' lang='' xml:lang=''>
3+
<head>
4+
<meta charset='utf-8' />
5+
<meta name='viewport' content='width=device-width, user-scalable=no' />
6+
<link id='-gd-engine-icon' rel='icon' type='image/png' href='favicon.png' />
7+
<title>Blastronaut</title>
8+
9+
10+
</head>
11+
<body>
12+
<canvas id='canvas'>
13+
HTML5 canvas appears to be unsupported in the current browser.<br />
14+
Please try updating or use a different browser.
15+
</canvas>
16+
<div id='status'>
17+
<div id='status-progress' style='display: none;' oncontextmenu='event.preventDefault();'><div id ='status-progress-inner'></div></div>
18+
<div id='status-indeterminate' style='display: none;' oncontextmenu='event.preventDefault();'>
19+
<div></div>
20+
<div></div>
21+
<div></div>
22+
<div></div>
23+
<div></div>
24+
<div></div>
25+
<div></div>
26+
<div></div>
27+
</div>
28+
<div id='status-notice' class='godot' style='display: none;'></div>
29+
</div>
30+
31+
<script type='text/javascript' src='index.js'></script>
32+
<script type='text/javascript'>//<![CDATA[
33+
34+
var engine = new Engine;
35+
var setStatusMode;
36+
var setStatusNotice;
37+
38+
(function() {
39+
40+
const EXECUTABLE_NAME = 'index';
41+
const MAIN_PACK = 'index.pck';
42+
const INDETERMINATE_STATUS_STEP_MS = 100;
43+
44+
var canvas = document.getElementById('canvas');
45+
var statusProgress = document.getElementById('status-progress');
46+
var statusProgressInner = document.getElementById('status-progress-inner');
47+
var statusIndeterminate = document.getElementById('status-indeterminate');
48+
var statusNotice = document.getElementById('status-notice');
49+
50+
var initializing = true;
51+
var statusMode = 'hidden';
52+
53+
var animationCallbacks = [];
54+
function animate(time) {
55+
animationCallbacks.forEach(callback => callback(time));
56+
requestAnimationFrame(animate);
57+
}
58+
requestAnimationFrame(animate);
59+
60+
function adjustCanvasDimensions() {
61+
var scale = window.devicePixelRatio || 1;
62+
var width = window.innerWidth;
63+
var height = window.innerHeight;
64+
canvas.width = width * scale;
65+
canvas.height = height * scale;
66+
canvas.style.width = width + "px";
67+
canvas.style.height = height + "px";
68+
}
69+
animationCallbacks.push(adjustCanvasDimensions);
70+
adjustCanvasDimensions();
71+
72+
setStatusMode = function setStatusMode(mode) {
73+
74+
if (statusMode === mode || !initializing)
75+
return;
76+
[statusProgress, statusIndeterminate, statusNotice].forEach(elem => {
77+
elem.style.display = 'none';
78+
});
79+
animationCallbacks = animationCallbacks.filter(function(value) {
80+
return (value != animateStatusIndeterminate);
81+
});
82+
switch (mode) {
83+
case 'progress':
84+
statusProgress.style.display = 'block';
85+
break;
86+
case 'indeterminate':
87+
statusIndeterminate.style.display = 'block';
88+
animationCallbacks.push(animateStatusIndeterminate);
89+
break;
90+
case 'notice':
91+
statusNotice.style.display = 'block';
92+
break;
93+
case 'hidden':
94+
break;
95+
default:
96+
throw new Error('Invalid status mode');
97+
}
98+
statusMode = mode;
99+
}
100+
101+
function animateStatusIndeterminate(ms) {
102+
103+
var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8);
104+
if (statusIndeterminate.children[i].style.borderTopColor == '') {
105+
Array.prototype.slice.call(statusIndeterminate.children).forEach(child => {
106+
child.style.borderTopColor = '';
107+
});
108+
statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf';
109+
}
110+
}
111+
112+
setStatusNotice = function setStatusNotice(text) {
113+
114+
while (statusNotice.lastChild) {
115+
statusNotice.removeChild(statusNotice.lastChild);
116+
}
117+
var lines = text.split('\n');
118+
lines.forEach((line) => {
119+
statusNotice.appendChild(document.createTextNode(line));
120+
statusNotice.appendChild(document.createElement('br'));
121+
});
122+
};
123+
124+
engine.setProgressFunc((current, total) => {
125+
126+
if (total > 0) {
127+
statusProgressInner.style.width = current/total * 100 + '%';
128+
setStatusMode('progress');
129+
if (current === total) {
130+
// wait for progress bar animation
131+
setTimeout(() => {
132+
setStatusMode('indeterminate');
133+
}, 500);
134+
}
135+
} else {
136+
setStatusMode('indeterminate');
137+
}
138+
});
139+
140+
function displayFailureNotice(err) {
141+
var msg = err.message || err;
142+
console.error(msg);
143+
setStatusNotice(msg);
144+
setStatusMode('notice');
145+
initializing = false;
146+
};
147+
148+
if (!Engine.isWebGLAvailable()) {
149+
displayFailureNotice('WebGL not available');
150+
} else {
151+
setStatusMode('indeterminate');
152+
engine.setCanvas(canvas);
153+
engine.startGame(EXECUTABLE_NAME, MAIN_PACK).then(() => {
154+
setStatusMode('hidden');
155+
initializing = false;
156+
}, displayFailureNotice);
157+
}
158+
})();
159+
//]]></script>
160+
</body>
161+
</html>
162+

blastronaut/index.js

Lines changed: 458 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

blastronaut/index.pck

6.1 MB
Binary file not shown.

blastronaut/index.wasm

13.5 MB
Binary file not shown.

0 commit comments

Comments
 (0)