summaryrefslogtreecommitdiff
path: root/EventMsgCenter/EventMsgCenter.lua
diff options
context:
space:
mode:
Diffstat (limited to 'EventMsgCenter/EventMsgCenter.lua')
-rw-r--r--EventMsgCenter/EventMsgCenter.lua25
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