38 lines
752 B
Lua
38 lines
752 B
Lua
--[[
|
|
Utilities for managing the on_tick event, periodically invoking
|
|
handlers.
|
|
]]
|
|
|
|
local event = require "lualib.event"
|
|
|
|
local M = {}
|
|
|
|
local on_tick_handlers = {}
|
|
local function on_tick_meta_handler(e)
|
|
for handler, interval in pairs(on_tick_handlers) do
|
|
if e.tick % interval == 0 then
|
|
handler(e)
|
|
end
|
|
end
|
|
end
|
|
|
|
function M.register(f, interval)
|
|
if not interval then
|
|
interval = 12
|
|
end
|
|
if interval < 0 then
|
|
error("invalid interval")
|
|
end
|
|
on_tick_handlers[f] = interval
|
|
event.register(defines.events.on_tick, on_tick_meta_handler)
|
|
end
|
|
|
|
function M.unregister(f)
|
|
on_tick_handlers[f] = nil
|
|
if not next(on_tick_handlers) then
|
|
event.unregister(defines.events.on_tick, on_tick_meta_handler)
|
|
end
|
|
end
|
|
|
|
return M
|