2025-06-30 22:59:59 +00:00
|
|
|
import init, {ludus} from "./rudus.js";
|
2025-06-30 16:48:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
export function io (out) {
|
2025-06-30 22:59:59 +00:00
|
|
|
if (out.length > 0) postMessage(out)
|
2025-06-30 16:48:50 +00:00
|
|
|
return new Promise((resolve, _) => {
|
2025-06-30 22:59:59 +00:00
|
|
|
onmessage = (e) => {
|
2025-07-01 04:43:01 +00:00
|
|
|
// console.log("Worker: from Ludus:", e.data)
|
2025-06-30 22:59:59 +00:00
|
|
|
resolve(JSON.stringify(e.data))
|
|
|
|
}
|
2025-06-30 16:48:50 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2025-06-30 22:59:59 +00:00
|
|
|
let loaded_wasm = false
|
|
|
|
|
|
|
|
async function run(e) {
|
|
|
|
if (!loaded_wasm) {
|
|
|
|
await init()
|
2025-07-01 04:43:01 +00:00
|
|
|
console.log("Worker: Ludus has been initialized.")
|
2025-06-30 22:59:59 +00:00
|
|
|
loaded_wasm = true
|
|
|
|
}
|
|
|
|
let msgs = e.data
|
|
|
|
for (const msg of msgs) {
|
|
|
|
if (msg.verb === "run" && typeof msg.data === 'string') {
|
2025-07-01 04:43:01 +00:00
|
|
|
// console.log("running ludus!")
|
2025-06-30 22:59:59 +00:00
|
|
|
onmessage = () => {}
|
2025-07-01 04:43:01 +00:00
|
|
|
console.log("Worker: Beginning new Ludus run.")
|
|
|
|
await ludus(msg.data)
|
2025-06-30 22:59:59 +00:00
|
|
|
onmessage = run
|
|
|
|
} else {
|
2025-07-01 04:43:01 +00:00
|
|
|
console.log("Worker: Did not get valid startup message. Instead got:")
|
2025-06-30 22:59:59 +00:00
|
|
|
console.log(e.data)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onmessage = run
|
2025-06-30 16:48:50 +00:00
|
|
|
|
|
|
|
|