- mrpgi-core: ureq/tiny_http/threads are native-only deps; the AI lane compiles to an always-off stub on wasm32 (deterministic parser stays). - World::from_memory + assets::cel_from_bytes — boot a game with no filesystem. - mrpgi GUI on wasm: embeds games/lost-fuse via include_dir, boots straight into Play (Tab still opens the editor; saving needs a disk, so web is play + paint-only for now). - web/: index.html shell + macroquad JS loader + build.sh producing a self-contained static web/dist (1.1 MB total, game included). - .cargo/config.toml: --allow-undefined for miniquad's JS imports. Verified in-browser: renders, typed commands reach the parser, click-to-walk works, zero console errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
41 lines
1.4 KiB
HTML
41 lines
1.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>MRPGI — Monster Robot Party Game Interpreter</title>
|
|
<meta name="description" content="A new-school reimagining of Sierra's AGI adventure engine. Play The DJ's Lost Fuse in your browser.">
|
|
<style>
|
|
html, body { margin: 0; padding: 0; height: 100%; background: #0b0d11; overflow: hidden; }
|
|
canvas {
|
|
position: absolute; inset: 0;
|
|
width: 100%; height: 100%;
|
|
image-rendering: pixelated;
|
|
background: #0b0d11;
|
|
}
|
|
#boot {
|
|
position: absolute; inset: 0; display: flex; flex-direction: column;
|
|
align-items: center; justify-content: center; gap: 12px;
|
|
color: #5fffd7; font-family: ui-monospace, Menlo, monospace; font-size: 14px;
|
|
pointer-events: none; transition: opacity .4s;
|
|
}
|
|
#boot b { font-size: 22px; letter-spacing: 2px; color: #ff87d7; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="boot"><b>MRPGI</b><span>booting the party…</span></div>
|
|
<canvas id="glcanvas" tabindex="1"></canvas>
|
|
<script src="mq_js_bundle.js"></script>
|
|
<script>
|
|
load("mrpgi.wasm");
|
|
// hide the boot splash once the engine is drawing frames
|
|
const t = setInterval(() => {
|
|
if (typeof wasm_exports !== "undefined" && wasm_exports) {
|
|
document.getElementById("boot").style.opacity = "0";
|
|
clearInterval(t);
|
|
}
|
|
}, 250);
|
|
</script>
|
|
</body>
|
|
</html>
|