This commit is contained in:
Scott Richmond 2025-07-04 15:57:16 -04:00
parent ed6976fe35
commit d52faeff41

View File

@ -1,4 +1,4 @@
if (window) window.ludus = {run, kill, flush_stdout, stdout, p5, svg, flush_commands, commands, result, input, is_running, key_down, key_up, is_starting_up} if (window) window.ludus = {run, kill, flush_stdout, stdout, p5, svg, flush_commands, commands, result, flush_result, input, is_running, key_down, key_up, is_starting_up}
const worker_url = new URL("worker.js", import.meta.url) const worker_url = new URL("worker.js", import.meta.url)
const worker = new Worker(worker_url, {type: "module"}) const worker = new Worker(worker_url, {type: "module"})
@ -13,6 +13,18 @@ let ready = false
let io_interval_id = null let io_interval_id = null
let keys_down = new Set(); let keys_down = new Set();
function reset_ludus () {
outbox = []
ludus_console = ""
ludus_commands = []
ludus_result = null
code = null
running = false
ready = false
io_interval_id = null
keys_down = new Set()
}
worker.onmessage = handle_messages worker.onmessage = handle_messages
async function handle_messages (e) { async function handle_messages (e) {
@ -44,8 +56,8 @@ async function handle_messages (e) {
// TODO: do more than report these // TODO: do more than report these
case "Console": { case "Console": {
let new_lines = msg.data.join("\n"); let new_lines = msg.data.join("\n");
console.log("Main: ludus says => ", new_lines)
ludus_console = ludus_console + new_lines ludus_console = ludus_console + new_lines
console.log("Main: ludus says => ", new_lines)
break break
} }
case "Commands": { case "Commands": {
@ -96,13 +108,8 @@ export function run (source) {
if (running || ready) { if (running || ready) {
return "TODO: handle this? should not be running" return "TODO: handle this? should not be running"
} }
running = true
ready = false
result = null
keys_down = new Set()
code = source
worker.postMessage([{verb: "Run", data: source}]) worker.postMessage([{verb: "Run", data: source}])
outbox = [] reset_ludus()
start_io_polling() start_io_polling()
} }