FFGFlash

api/events

Sep 17th, 2021 (edited)
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.86 KB | None | 0 0
  1. function createHandler()
  2.   local Handler = {
  3.     Callbacks = {}
  4.   }
  5.  
  6.   function Handler:disconnectAll(evt)
  7.     if evt then
  8.       self.Callbacks[evt] = nil
  9.     else
  10.       self.Callbacks = {}
  11.     end
  12.   end
  13.  
  14.   function Handler:disconnect(conn)
  15.     table.remove(self.Callbacks[conn.Event], conn.Id)
  16.   end
  17.  
  18.   function Handler:connect(evt, callback)
  19.     self.Callbacks[evt] = self.Callbacks[evt] or {}
  20.     table.insert(self.Callbacks[evt], callback)
  21.     return {Event=evt,Id=#self.Callbacks[evt]}
  22.   end
  23.  
  24.   function Handler:emit(evt, ...)
  25.     os.queueEvent(evt, ...)
  26.   end
  27.  
  28.   function Handler.update()
  29.     local args = {os.pullEvent()}
  30.     local evt = table.remove(args, 1)
  31.     if not Handler.Callbacks[evt] then return end
  32.     for id,callback in ipairs(Handler.Callbacks[evt]) do
  33.       callback(table.unpack(args))
  34.     end
  35.   end
  36.  
  37.   return Handler
  38. end
  39.  
Add Comment
Please, Sign In to add comment