diff options
| author | Alex Pickering <alex@cogarr.net> | 2026-02-01 13:14:32 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2026-02-01 13:14:32 -0600 |
| commit | 3a975db66a3711f34e8b64bb27a8eaca79fdeca9 (patch) | |
| tree | fcc12f8f9d638ff575c1963796de76b7628854b4 /src/task.moon | |
| download | ggj26-master.tar.gz ggj26-master.tar.bz2 ggj26-master.zip | |
Diffstat (limited to 'src/task.moon')
| -rw-r--r-- | src/task.moon | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/task.moon b/src/task.moon new file mode 100644 index 0000000..342255e --- /dev/null +++ b/src/task.moon @@ -0,0 +1,25 @@ +task = {} +tasks = {} + +task.add = (co) -> + tasks[co] = true + +task.pump = () -> + for task, _ in pairs tasks + if coroutine.status(task) ~= "dead" + succ, err = coroutine.resume(task) + if not succ + error(debug.traceback(task, err)) + else + tasks[task] = nil + +task.await = (co) -> + if tasks[co] + coroutine.yield! + +task.node = am.group! +task.node\action(() -> + task.pump! +) + +task |
