miduo_client/Assets/ManagedResources/~Lua/events.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