Добавлен , опубликован
Исходники
Язык:
lua
Система, которая предоставляет удобную работу с таймерами. Предназначена для интеграции с внешним таймером, а также для тестирования и эмуляции кода, зависящего от событий времени. Преимущества по сравнению с другими реализациями - детерминированный порядок выполнения на большинстве устройств. Основано на двоичной куче с модификацией. Рассчитывалось на работу с ~ 300_000 таймерами.
Быстрый старт
local Time = TimeSystem()
local Timer = TimerSystem(Time)
Timer.after(2, function() print('2 seconds have passed') end)
Timer.every(1, 5, function() print('periodic') end)
Time.start() -- запустить время (для консоли)
[[ output
periodic
periodic
2 seconds have passed
periodic
periodic
periodic
]]
API
local Time = TimeSystem()
local Timer = TimerSystem(Time)
Timer.new() --> timer

-- @param delay - float
-- @param fucntion - fucntion
-- @param arguments - table, optional
Timer.after(delay, fucntion, arguments) --> timer -- запустить через время

-- ...
-- @param count - uint
Timer.every(delay, count, function, arguments) --> timer -- запустить несколько раз
local timer = Timer.new()
timer:after(delay, fucntion, arguments) -- запустить через время
timer:every(delay, count, function, arguments) -- запустить несколько раз
timer:pause()
timer:remained() --> float - time
Больше примеров
local unit = {x = 0, y = 0}
Timer.after(3, function(timer, arg)
	arg.x, arg.y = 1, -1
	print(unit.x, unit.y)
end, unit)
--> 1, -1


local tick = 0
Timer.every(1, 10, function(timer)
	tick = tick + 1
	print(tick)
	if tick > 5 then
		timer:pause()
	end
end)
--> 1, 2, 3, 4, 5, 6
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
27
2 года назад
0
в варике это работает?
3
17
2 года назад
3
в варике это работает?
Да, конечно
0
27
2 года назад
Отредактирован MpW
0
есть ли какое то преимущество по сравнению с обычным игровым таймером?

как узнать какой таймер истек? и надо ли его чистить?

будут ли записи: тек время, сколько прошло (пройденное), сколько осталось? я помню че то такое делал. только там от начала игры запускал таймер. И из него вынимал данные.
2
17
2 года назад
2
есть ли какое то преимущество по сравнению с обычным игровым таймером?
Эти таймеры напрямую не зависят от каких-либо конкретных таймеров или конкретного игрового движка. Тут есть только одна зависимость от модуля TimeSystem, через который осуществляются вызовы. Будут работать и в консоли.
как узнать какой таймер истек?
Когда таймер истекает, то он вызывает функцию, которая была в него передана, и первым аргументом передает сам себя.
и надо ли его чистить?
Нет, он соберется сборщиком мусора.
будут ли записи: тек время, сколько прошло (пройденное), сколько осталось?
Позже
0
27
2 года назад
Отредактирован MpW
0
можно еще получить тек время от момента начала игры?
2
17
2 года назад
2
можно еще получить тек время от момента начала игры?
local Time = TimeSystem()
Time.time --> real
2
32
2 года назад
2
Vlod, очень интересно, надо попробовать вместе этим багом, будет приколько если он не проявится
0
27
2 года назад
Отредактирован MpW
0
Vlod, очень интересно, надо попробовать вместе этим багом, будет приколько если он не проявится
проверь есть ли замедление
Чтобы оставить комментарий, пожалуйста, войдите на сайт.