From a03a35b6cfe6399ceaff86a1cc035f1131427955 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 8 Aug 2018 21:42:33 +0800 Subject: *update --- bin/EventMsgCenter/EventMsgCenter.lua | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 bin/EventMsgCenter/EventMsgCenter.lua (limited to 'bin/EventMsgCenter/EventMsgCenter.lua') diff --git a/bin/EventMsgCenter/EventMsgCenter.lua b/bin/EventMsgCenter/EventMsgCenter.lua new file mode 100644 index 0000000..7b944c2 --- /dev/null +++ b/bin/EventMsgCenter/EventMsgCenter.lua @@ -0,0 +1,55 @@ +local EventMsgCenter = {} + +-- +local _broadcast = {} + +EventMsgCenter.registerMsg = function(e, callback, first) + if _broadcast[e] == nil then + _broadcast[e] = {} + end + first = first or false + EventMsgCenter.unregisterMsg(e, callback) + if not first then + table.insert(_broadcast[e], callback) + else + table.insert(_broadcast[e], 1, callback) + end +end + +local removeElement = function(t, e) + for i, v in ipairs(t) do + if v == e then + table.remove(t, i) + break + end + end +end + +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() + _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 \ No newline at end of file -- cgit v1.1-26-g67d0