-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16 from SnowdenWintermute/bevy-integration
Bevy integration
- Loading branch information
Showing
311 changed files
with
14,364 additions
and
4,660 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,233 @@ | ||
<!DOCTYPE html><html><head> | ||
<!DOCTYPE html><html class="h-screen w-screen"><head> | ||
<meta charset="utf-8"> | ||
<title>Roguelike Racing</title> | ||
<link rel="stylesheet" href="/output-ceff4cd1899f628.css"> | ||
<title>Speed Dungeon</title> | ||
<link rel="stylesheet" href="/output-5c3e64f0da7e057c.css" integrity="sha384-W1CLEp+2PC7+IbZBAN0GBGgz2jJeEf6tZwCjqzhAz3RsQZoKdvDIJrI78t/f+be3"> | ||
<link rel="stylesheet" href="/scrollbar-8aed7f8b0959eaae.css" integrity="sha384-4iHo6BnYdQ2oksClpcUiRDdAkVLKM7cY5AH/AgDoNghr10TBnAxTS/QkUlWWEJgE"> | ||
|
||
|
||
<link rel="icon" type="image/x-icon" href="./public/favicon.ico"> | ||
<base href="/"> | ||
|
||
<link rel="preload" href="/roguelike-racing-client-d7064d3e279a973c_bg.wasm" as="fetch" type="application/wasm" crossorigin=""> | ||
<link rel="modulepreload" href="/roguelike-racing-client-d7064d3e279a973c.js"></head> | ||
<body> | ||
|
||
<script type="module">import init from '/roguelike-racing-client-d7064d3e279a973c.js';init('/roguelike-racing-client-d7064d3e279a973c_bg.wasm');</script><script>(function () { | ||
var protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; | ||
var url = protocol + '//' + window.location.host + '/_trunk/ws'; | ||
var poll_interval = 5000; | ||
var reload_upon_connect = () => { | ||
window.setTimeout( | ||
() => { | ||
// when we successfully reconnect, we'll force a | ||
// reload (since we presumably lost connection to | ||
// trunk due to it being killed, so it will have | ||
// rebuilt on restart) | ||
var ws = new WebSocket(url); | ||
ws.onopen = () => window.location.reload(); | ||
ws.onclose = reload_upon_connect; | ||
}, | ||
poll_interval); | ||
}; | ||
|
||
var ws = new WebSocket(url); | ||
ws.onmessage = (ev) => { | ||
const msg = JSON.parse(ev.data); | ||
if (msg.reload) { | ||
<link rel="preload" href="/roguelike-racing-client-7e9e609f96953ae6_bg.wasm" crossorigin="anonymous" integrity="sha384-JCtn8jT2OjcufETyqK1UOhQy08cyS5blOHnELXKy1k8bhnixsCbr9C3FWd+6RGvj" as="fetch" type="application/wasm"> | ||
<link rel="modulepreload" href="/9e10eb7cb8d5fd08-initializer.mjs" crossorigin="anonymous" integrity="sha384-90hoFGtjwuGt1EEG2O/HLxp6+Sm/SfTW7Pw673Zua3jAg7EVaD/r+JaUr2f3TA39"> | ||
<link rel="modulepreload" href="/roguelike-racing-client-7e9e609f96953ae6.js" crossorigin="anonymous" integrity="sha384-YsI/iT5Ot+f7PWmb5OLK1BhVHpviwJvCA6dVBcQH3Nld662yiC/xvKoO3zSEOxOn"></head> | ||
|
||
<body class="bg-slate-800 h-screen w-screen"> | ||
<div id="yew" class="absolute z-10 pointer-events-none"></div> | ||
<canvas id="bevy" class="!w-screen !h-screen"></canvas> | ||
<!-- loading indicator --> | ||
<div id="loading-indicator" class="absolute z-20 top-1/2 left-1/2 text-lg text-zinc-300 bg-slate-800 border border-slate-400 p-2 transition-opacity duration-1000 -translate-x-1/2 -translate-y-1/2 pointer-events-auto"></div> | ||
<div id="tailwind-class-creator" class="opacity-0 bg-slate-700"> | ||
|
||
<script type="module"> | ||
async function __trunkInitializer(source, initializer) { | ||
if (initializer === undefined) { | ||
return await init(source); | ||
} | ||
|
||
return await __trunkInitWithProgress(source, initializer); | ||
} | ||
|
||
async function __trunkInitWithProgress(source, initializer) { | ||
|
||
const { | ||
onStart, onProgress, onComplete, onSuccess, onFailure | ||
} = initializer; | ||
|
||
onStart?.(); | ||
|
||
const response = fetch(source) | ||
.then((response) => { | ||
const reader = response.body.getReader(); | ||
const headers = response.headers; | ||
const status = response.status; | ||
const statusText = response.statusText; | ||
|
||
const total = +response.headers.get("Content-Length"); | ||
let current = 0; | ||
|
||
const stream = new ReadableStream({ | ||
start(controller) { | ||
function push() { | ||
reader.read().then(({done, value}) => { | ||
if (done) { | ||
onProgress?.({current: total, total}); | ||
controller.close(); | ||
return; | ||
} | ||
|
||
current += value.byteLength; | ||
onProgress?.({current, total}); | ||
controller.enqueue(value); | ||
push(); | ||
}); | ||
} | ||
|
||
push(); | ||
}, | ||
}); | ||
|
||
return { | ||
stream, init: { | ||
headers, status, statusText | ||
} | ||
}; | ||
}) | ||
.then(({stream, init}) => | ||
new Response(stream, init), | ||
); | ||
|
||
return init(response) | ||
.then((value) => { | ||
onComplete?.(); | ||
onSuccess?.(value); | ||
return value; | ||
}, (reason) => { | ||
onComplete?.(); | ||
onFailure?.(reason); | ||
return reason; | ||
}); | ||
} | ||
|
||
|
||
import init, * as bindings from '/roguelike-racing-client-7e9e609f96953ae6.js'; | ||
import initializer from '/9e10eb7cb8d5fd08-initializer.mjs'; | ||
|
||
await __trunkInitializer('/roguelike-racing-client-7e9e609f96953ae6_bg.wasm', initializer()); | ||
|
||
|
||
window.wasmBindings = bindings; | ||
|
||
</script> | ||
|
||
|
||
</div><script>"use strict"; | ||
|
||
(function () { | ||
|
||
const address = '{{__TRUNK_ADDRESS__}}'; | ||
const base = '{{__TRUNK_WS_BASE__}}'; | ||
let protocol = ''; | ||
protocol = | ||
protocol | ||
? protocol | ||
: window.location.protocol === 'https:' | ||
? 'wss' | ||
: 'ws'; | ||
const url = protocol + '://' + address + base + '.well-known/trunk/ws'; | ||
|
||
class Overlay { | ||
constructor() { | ||
// create an overlay | ||
this._overlay = document.createElement("div"); | ||
const style = this._overlay.style; | ||
style.height = "100vh"; | ||
style.width = "100vw"; | ||
style.position = "fixed"; | ||
style.top = "0"; | ||
style.left = "0"; | ||
style.backgroundColor = "rgba(222, 222, 222, 0.5)"; | ||
style.fontFamily = "sans-serif"; | ||
// not sure that's the right approach | ||
style.zIndex = "1000000"; | ||
style.backdropFilter = "blur(1rem)"; | ||
|
||
const container = document.createElement("div"); | ||
// center it | ||
container.style.position = "absolute"; | ||
container.style.top = "30%"; | ||
container.style.left = "15%"; | ||
container.style.maxWidth = "85%"; | ||
|
||
this._title = document.createElement("div"); | ||
this._title.innerText = "Build failure"; | ||
this._title.style.paddingBottom = "2rem"; | ||
this._title.style.fontSize = "2.5rem"; | ||
|
||
this._message = document.createElement("div"); | ||
this._message.style.whiteSpace = "pre-wrap"; | ||
|
||
const icon= document.createElement("div"); | ||
icon.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="#dc3545" viewBox="0 0 16 16"><path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/></svg>'; | ||
this._title.prepend(icon); | ||
|
||
container.append(this._title, this._message); | ||
this._overlay.append(container); | ||
|
||
this._inject(); | ||
window.setInterval(() => { | ||
this._inject(); | ||
}, 250); | ||
} | ||
|
||
set reason(reason) { | ||
this._message.textContent = reason; | ||
} | ||
|
||
_inject() { | ||
if (!this._overlay.isConnected) { | ||
// prepend it | ||
document.body?.prepend(this._overlay); | ||
} | ||
} | ||
|
||
} | ||
|
||
class Client { | ||
constructor(url) { | ||
this.url = url; | ||
this.poll_interval = 5000; | ||
this._overlay = null; | ||
} | ||
|
||
start() { | ||
const ws = new WebSocket(this.url); | ||
ws.onmessage = (ev) => { | ||
const msg = JSON.parse(ev.data); | ||
switch (msg.type) { | ||
case "reload": | ||
this.reload(); | ||
break; | ||
case "buildFailure": | ||
this.buildFailure(msg.data) | ||
break; | ||
} | ||
}; | ||
ws.onclose = this.onclose; | ||
} | ||
|
||
onclose() { | ||
window.setTimeout( | ||
() => { | ||
// when we successfully reconnect, we'll force a | ||
// reload (since we presumably lost connection to | ||
// trunk due to it being killed, so it will have | ||
// rebuilt on restart) | ||
const ws = new WebSocket(this.url); | ||
ws.onopen = () => window.location.reload(); | ||
ws.onclose = this.onclose; | ||
}, | ||
this.poll_interval); | ||
} | ||
|
||
reload() { | ||
window.location.reload(); | ||
} | ||
}; | ||
ws.onclose = reload_upon_connect; | ||
|
||
buildFailure({reason}) { | ||
// also log the console | ||
console.error("Build failed:", reason); | ||
|
||
console.debug("Overlay", this._overlay); | ||
|
||
if (!this._overlay) { | ||
this._overlay = new Overlay(); | ||
} | ||
this._overlay.reason = reason; | ||
} | ||
} | ||
|
||
new Client(url).start(); | ||
|
||
})() | ||
</script></body></html> |
Oops, something went wrong.