Guest User

Untitled

a guest
Jan 27th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.01 KB | None | 0 0
  1. function parallelRun(...)
  2.     local fs = {...}
  3.     local cos = {}
  4.     local filter = {}
  5.     for k,v in ipairs(fs) do
  6.         table.insert(cos, coruotine.create(v))
  7.     end
  8.     computer.pushSignal("initco")
  9.     local sl = 0
  10.     while true do
  11.         local ev = {computer.pullSignal(sl ~= or sl and nil)}
  12.         sl = 0
  13.         for i, v in ipairs(cos) do
  14.             if filter[v] == nil or filter[v] == ev[1] then
  15.                 if coroutine.status(v) == "dead" then error("co dead") end
  16.                 filter[v] = select(coroutine.resume(v), 2)
  17.                 if type(filter[v][1]) == "number" then
  18.                     if sl == 0 or filter[v][1] < sl then
  19.                         sl = filter[v][1] filter[v] = nil
  20.                     end
  21.                 end
  22.             end
  23.         end
  24.     end
  25. end
  26.  
  27. local evTable = {}
  28. function evListen()
  29.     while true do
  30.         local ev = {coroutine.yield(0.05)}
  31.         if evTable[ev[1]] then
  32.             for k, v in pairs(evtable[ev][1]) do
  33.                 v(table.unpack(ev))
  34.             end
  35.         end
  36.     end
  37. end
  38.  
  39. function listen(ev, cb) do
  40.     if evTable[ev] == nil then
  41.         evTable[ev] = {}
  42.     end
  43.     table.insert(evTable[ev], cb)
  44. end
  45.  
  46. parallelRun(yourMainFunction, evListen)
Advertisement
Add Comment
Please, Sign In to add comment