SHOW:
|
|
- or go back to the newest paste.
| 1 | local events={}
| |
| 2 | ||
| 3 | function add(name) | |
| 4 | if events[name]==nil then | |
| 5 | events[name]={
| |
| 6 | } | |
| 7 | else | |
| 8 | return false,"This event already exists." | |
| 9 | end | |
| 10 | end | |
| 11 | ||
| 12 | function addHandler(event,func) | |
| 13 | if events[event]==nil then | |
| 14 | events[event]={}
| |
| 15 | -- return true,"Event did not yet exist, event was added" | |
| 16 | end | |
| 17 | events[event][#events[event]+1]={
| |
| 18 | ["func"]=func, | |
| 19 | } | |
| 20 | end | |
| 21 | ||
| 22 | function removeHandler(event,func) | |
| 23 | if events[event]==nil then | |
| 24 | return false,"There is no such event" | |
| 25 | end | |
| 26 | for id,data in pairs(events[event]) do | |
| 27 | if data.func==func then | |
| 28 | events[event][id]=nil | |
| 29 | return true,"Event handler succesfully removed" | |
| 30 | end | |
| 31 | end | |
| 32 | return false,("No handlers for that function")
| |
| 33 | end | |
| 34 | ||
| 35 | function remove(event) | |
| 36 | if events[event]==nil then | |
| 37 | return false,"No such event exists." | |
| 38 | end | |
| 39 | events[evenf]=nil | |
| 40 | return true,"Event (and it's handlers) succesfully removed" | |
| 41 | end | |
| 42 | ||
| 43 | function trigger(event, ... ) | |
| 44 | if events[event]==nil then | |
| 45 | return false,"No such event exists" | |
| 46 | end | |
| 47 | for id, data in pairs(events[event]) do | |
| 48 | data.func(...) | |
| 49 | end | |
| 50 | end | |
| 51 | ||
| 52 | local computerCraft={
| |
| 53 | "char","key","key_up","paste","timer","alarm","task_complete","redstone","terminate","disk","disk_eject","peripheral","peripheral_detach","rednet_message","modem_message","http_success","http_failure","mouse_click","mouse_up","mouse_scroll","mouse_drag","monitor_touch","monitor_resize","term_resize","turtle_inventory" | |
| 54 | } | |
| 55 | ||
| 56 | function setupComputercraftEvents() | |
| 57 | for _,event in ipairs(computerCraft) do | |
| 58 | add(event) | |
| 59 | end | |
| 60 | end | |
| 61 | setupComputercraftEvents() | |
| 62 | ||
| 63 | function handleCCEvents(timeOut) | |
| 64 | if timeOut~=nil then | |
| 65 | os.startTimer(timeOut) | |
| 66 | end | |
| 67 | local event,a1,a2,a3,a4,a5=os.pullEvent() | |
| 68 | trigger(event,a1,a2,a3,a4,a5) | |
| 69 | end |