View difference between Paste ID: CGn8AsPe and UKPy4iiE
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