aboutsummaryrefslogtreecommitdiff
path: root/src/task.moon
diff options
context:
space:
mode:
authorAlex Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
committerAlexander M Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
commit3a975db66a3711f34e8b64bb27a8eaca79fdeca9 (patch)
treefcc12f8f9d638ff575c1963796de76b7628854b4 /src/task.moon
downloadggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.tar.gz
ggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.tar.bz2
ggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.zip
Initial commitHEADmaster
Diffstat (limited to 'src/task.moon')
-rw-r--r--src/task.moon25
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