diff options
Diffstat (limited to 'EventMsgCenter/EventMsgCenter.lua')
-rw-r--r-- | EventMsgCenter/EventMsgCenter.lua | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/EventMsgCenter/EventMsgCenter.lua b/EventMsgCenter/EventMsgCenter.lua index 43e859b..7b944c2 100644 --- a/EventMsgCenter/EventMsgCenter.lua +++ b/EventMsgCenter/EventMsgCenter.lua @@ -1,13 +1,14 @@ +local EventMsgCenter = {} + -- <event, {callbacks}> local _broadcast = {} -local EventMsgCenter = {} EventMsgCenter.registerMsg = function(e, callback, first) if _broadcast[e] == nil then _broadcast[e] = {} end first = first or false - EventMsgCenter.unRegisterMsg(e, callback) + EventMsgCenter.unregisterMsg(e, callback) if not first then table.insert(_broadcast[e], callback) else @@ -15,21 +16,27 @@ EventMsgCenter.registerMsg = function(e, callback, first) end end -EventMsgCenter.unRegisterMsg = function(e, callback) - if _broadcast[e] == nil or callback == nil then - return +local removeElement = function(t, e) + for i, v in ipairs(t) do + if v == e then + table.remove(t, i) + break + end end - table.remove(_broadcast[e], callback) end -EventMsgCenter.unRegisterAllMsgByEvent = function(e) - if _broadcast[e] == nil then +EventMsgCenter.unregisterMsg = function(e, callback) + if _broadcast[e] == nil or callback == nil then return end + removeElement(_broadcast[e], callback) +end + +EventMsgCenter.unregisterAllMsgByEvent = function(e) _broadcast[e] = nil end -EventMsgCenter.unRegisterAllMsg = function() +EventMsgCenter.unregisterAllMsg = function() _broadcast = {} end |