summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-02-12 19:02:00 -0600
committerthe lemons <citrons@mondecitronne.com>2022-02-12 19:02:00 -0600
commit58770608d21aa913efe16dd24747c55cafd1858a (patch)
tree09aa16bc7b746475136390013ea77257537f6116
parentc6fcff61d7611f947679c1733c3f3912cde5ba97 (diff)
event thingy
-rw-r--r--mods/vzxv/event.lua33
-rw-r--r--mods/vzxv/utils.lua2
2 files changed, 35 insertions, 0 deletions
diff --git a/mods/vzxv/event.lua b/mods/vzxv/event.lua
new file mode 100644
index 0000000..a7a0b7c
--- /dev/null
+++ b/mods/vzxv/event.lua
@@ -0,0 +1,33 @@
+
+vzxv.event = {}
+
+function vzxv.event.create()
+ local e = {}
+ setmetatable(e, vzxv.event)
+ return e
+end
+
+function vzxv.event:register(func)
+ self[func] = true
+end
+
+function vzxv.event:unregister(func)
+ self[func] = nil
+end
+
+function vzxv.event:trigger(...)
+ local v
+ for f in pairs(self) do
+ v = {f(...)}
+ end
+ return table.unpack(v)
+end
+
+-- iterate through all of the event handlers' results
+function vzxv.event:trigger_each(...)
+ local p = pairs(self)
+ return function()
+ local f = p()
+ if f then return f(...) end
+ end
+end
diff --git a/mods/vzxv/utils.lua b/mods/vzxv/utils.lua
index c9a376e..9067afe 100644
--- a/mods/vzxv/utils.lua
+++ b/mods/vzxv/utils.lua
@@ -1,4 +1,6 @@
+vzxv.include "event.lua"
+
function vzxv.mundane_block(name,visualname,tiles,settings)
settings = settings or {}
settings.description = visualname