FFGFlash

api/events.lua

Sep 28th, 2021 (edited)
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.76 KB | None | 0 0
  1. local api = { LoadOrder = 100 }
  2. function api.Build()
  3.   return function()
  4.     local handler = { Events = {} }
  5.     handler.__index = handler
  6.     function handler:__call() local a = { os.pullEvent() } local e = table.remove(a, 1) if not self.Events[e] then return end for i,c in ipairs(self.Events[e]) do c(table.unpack(a)) end end
  7.     function handler:emit(e,...) os.queueEvent(e,...) end
  8.     function handler:disconnect(c) table.remove(self.Events[c.Event],c.Id) end
  9.     function handler:connect(e,c) self.Events[e]=self.Events[e] or {} table.insert(self.Events[e],c) return {Event=e,Id=#self.Events[e]} end
  10.     function handler:disconnectAll(e) if e then self.Events[e] = nil else self.Events = {} end end
  11.     return setmetatable(handler, handler)
  12.   end
  13. end
  14. return api
Add Comment
Please, Sign In to add comment