diff options
Diffstat (limited to 'EventMsgCenter/EventMsgCenter.lua')
-rw-r--r-- | EventMsgCenter/EventMsgCenter.lua | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/EventMsgCenter/EventMsgCenter.lua b/EventMsgCenter/EventMsgCenter.lua index ffb784d..8ca7a5b 100644 --- a/EventMsgCenter/EventMsgCenter.lua +++ b/EventMsgCenter/EventMsgCenter.lua @@ -2,11 +2,16 @@ local _broadcast = {} local EventMsgCenter = {} -EventMsgCenter.registerMsg = function(e, callback) +EventMsgCenter.registerMsg = function(e, callback, first) if _broadcast[e] == nil then _broadcast[e] = {} + end + first = first or false + if not first then + table.insert(_broadcast[e], callback) + else + table.insert(_broadcast[e], 1, callback) end - table.insert(_broadcast[e], callback) end EventMsgCenter.unRegisterMsg = function(e, callback) @@ -20,15 +25,23 @@ EventMsgCenter.unRegisterAllMsgByEvent = function(e) if _broadcast[e] == nil then return end - + _broadcast[e] = nil end EventMsgCenter.unRegisterAllMsg = function() - + _broadcast = {} end EventMsgCenter.sendMsg = function(e, ...) - + local callbacks = _broadcast[e] + if callbacks == nil then + return + end + for _, f in ipairs(callbacks) do + if f ~= nil then + f(...) + end + end end return EventMsgCenter |