scheduler.lua
37383940414243444546474849505152
end
-------------------------------
Periodic = Class(function(self, fn, period, limit, ...)
self.fn = fn
self.period = period
self.limit = limit
self.list = nil
self.onfinish = nil
self.arg = {...}
end)
function Periodic:Cancel()
self.limit = 0
if self.list then
self.list[self] = nil
37383940414243444546474849505152535455565758
end
-------------------------------
Periodic = Class(function(self, fn, period, limit, id, ...)
self.fn = fn
self.id = id
self.period = period
self.limit = limit
self.list = nil
self.onfinish = nil
if ... then
self.arg = {...}
end
end)
function Periodic:Cancel()
self.limit = 0
if self.list then
self.list[self] = nil
535455565758596061
end
if self.onfinish then
self.onfinish(false)
end
end
function Periodic:__tostring()
59606162636465666768697071727374
end
if self.onfinish then
if self.arg then
self.onfinish(self, false, unpack(self.arg))
else
self.onfinish(self, false)
end
self.onfinish = nil
end
self.fn = nil
self.arg = nil
end
function Periodic:__tostring()
153154155156157158159
local already_dead = k.limit and k.limit == 0
if not already_dead and k.fn then
k.fn(unpack(k.arg))
end
if k.limit then
166167168169170171172173174175176
local already_dead = k.limit and k.limit == 0
if not already_dead and k.fn then
if k.arg then
k.fn(unpack(k.arg))
else
k.fn()
end
end
if k.limit then
166167168169170171172
k.list = list
else
if k.onfinish and not already_dead then
k.onfinish(true)
end
end
end
183184185186187188189190191192193194
k.list = list
else
if k.onfinish and not already_dead then
if k.arg then
k.onfinish(k, true, unpack(k.arg))
else
k.onfinish(k, true)
end
k.onfinish = nil
end
end
end
243244245246247248249250
end
end
function Scheduler:ExecuteInTime(timefromnow, fn, ...)
return self:ExecutePeriodic(timefromnow, fn, 1, nil, ...)
end
function Scheduler:GetListForTimeFromNow(dt)
265266267268269270271272
end
end
function Scheduler:ExecuteInTime(timefromnow, fn, id, ...)
return self:ExecutePeriodic(timefromnow, fn, 1, nil, id, ...)
end
function Scheduler:GetListForTimeFromNow(dt)
262263264265266267268269270
return list
end
function Scheduler:ExecutePeriodic(period, fn, limit, initialdelay, ...)
local periodic = Periodic(fn, period, limit, ...)
local list = self:GetListForTimeFromNow(initialdelay or period)
list[periodic] = true
periodic.list = list
284285286287288289290291
return list
end
function Scheduler:ExecutePeriodic(period, fn, limit, initialdelay, id, ...)
local periodic = Periodic(fn, period, limit, id, ...)
local list = self:GetListForTimeFromNow(initialdelay or period)
list[periodic] = true
periodic.list = list