44 lines
		
	
	
		
			990 B
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			44 lines
		
	
	
		
			990 B
		
	
	
	
		
			Lua
		
	
--[[
 | 
						|
Auth:Chiuan
 | 
						|
like Unity Brocast Event System in lua.
 | 
						|
]]
 | 
						|
 | 
						|
local EventLib = require "eventlib"
 | 
						|
 | 
						|
local Event = {}
 | 
						|
local events = {}
 | 
						|
 | 
						|
function Event.AddListener(event,handler)
 | 
						|
	if not event or type(event) ~= "string" then
 | 
						|
		error("event parameter in addlistener function has to be string, " .. type(event) .. " not right.")
 | 
						|
	end
 | 
						|
	if not handler or type(handler) ~= "function" then
 | 
						|
		error("handler parameter in addlistener function has to be function, " .. type(handler) .. " not right")
 | 
						|
	end
 | 
						|
 | 
						|
	if not events[event] then
 | 
						|
		--create the Event with name
 | 
						|
		events[event] = EventLib:new(event)
 | 
						|
	end
 | 
						|
 | 
						|
	--conn this handler
 | 
						|
	events[event]:connect(handler)
 | 
						|
end
 | 
						|
 | 
						|
function Event.Brocast(event,...)
 | 
						|
	if not events[event] then
 | 
						|
		error("brocast " .. event .. " has no event.")
 | 
						|
	else
 | 
						|
		events[event]:fire(...)
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function Event.RemoveListener(event,handler)
 | 
						|
	if not events[event] then
 | 
						|
		error("remove " .. event .. " has no event.")
 | 
						|
	else
 | 
						|
		events[event]:disconnect(handler)
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
return Event |