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 |