diff --git a/pkg/ludus.js b/pkg/ludus.js index 003d187..29195fb 100644 --- a/pkg/ludus.js +++ b/pkg/ludus.js @@ -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 = new Worker(worker_url, {type: "module"}) @@ -13,6 +13,18 @@ let ready = false let io_interval_id = null 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 async function handle_messages (e) { @@ -44,8 +56,8 @@ async function handle_messages (e) { // TODO: do more than report these case "Console": { let new_lines = msg.data.join("\n"); - console.log("Main: ludus says => ", new_lines) ludus_console = ludus_console + new_lines + console.log("Main: ludus says => ", new_lines) break } case "Commands": { @@ -96,13 +108,8 @@ export function run (source) { if (running || ready) { 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}]) - outbox = [] + reset_ludus() start_io_polling() }