c1_lua/lua/app/module/base_module.lua
2023-04-11 21:58:05 +08:00

87 lines
2.1 KiB
Lua

local BaseModule = class("BaseModule")
function BaseModule:scheduleGlobal(func, inter)
local sid = SchedulerManager:scheduleGlobal(func, inter)
if self._schedulerIds == nil then
self._schedulerIds = {}
end
table.insert(self._schedulerIds, sid)
return sid
end
function BaseModule:resumeScheduleGlobal(sid)
SchedulerManager:resume(sid)
end
function BaseModule:pauseScheduleGlobal(sid)
SchedulerManager:pause(sid)
end
function BaseModule:performWithDelayGlobal(func, delay)
local sid = SchedulerManager:performWithDelayGlobal(func, delay)
if self._schedulerIds == nil then
self._schedulerIds = {}
end
table.insert(self._schedulerIds, sid)
return sid
end
function BaseModule:unscheduleGlobal(sid)
if self._schedulerIds == nil then
return
end
for k, v in ipairs(self._schedulerIds) do
if v == sid then
table.remove(self._schedulerIds, k)
break
end
end
SchedulerManager:unscheduleGlobal(sid)
end
function BaseModule:addEventListener(key, func, priority)
local tag = EventManager:addEventListener(key, func, priority)
self._baseEventListeners = self._baseEventListeners or {}
self._baseEventListeners[key] = tag
end
function BaseModule:removeEventListener(key)
if self._baseEventListeners and self._baseEventListeners[key] then
EventManager:removeEventListener(key, self._baseEventListeners[key])
self._baseEventListeners[key] = nil
end
end
function BaseModule:unscheduleAll()
if self._schedulerIds == nil then
return
end
for i = 1, #self._schedulerIds do
SchedulerManager:unscheduleGlobal(table.remove(self._schedulerIds))
end
end
function BaseModule:removeAllEventListeners()
if self._baseEventListeners == nil then
return
end
for key, tag in pairs(self._baseEventListeners) do
EventManager:removeEventListener(key, tag)
self._baseEventListeners[key] = nil
end
end
-- 各个模块的manager按各自需求来重写clear即可
function BaseModule:clear()
end
function BaseModule:_clear()
self:unscheduleAll()
self._schedulerIds = nil
self:removeAllEventListeners()
self._baseEventListeners = nil
self:clear()
end
return BaseModule