Fix and extend minetest.after(time, func, param)

This commit is contained in:
Perttu Ahola 2012-03-27 08:17:42 +03:00
parent 37b64ff616
commit fa24e6b995
2 changed files with 15 additions and 14 deletions

@ -802,21 +802,21 @@ minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make
minetest.timers_to_add = {}
minetest.timers = {}
minetest.register_globalstep(function(dtime)
for indes, timer in ipairs(minetest.timers_to_add) do
table.insert(minetest.timers, timer)
end
minetest.timers_to_add = {}
for index, timer in ipairs(minetest.timers) do
timer.time = timer.time - dtime
if timer.time <= 0 then
timer.func()
minetest.timers[index] = nil
end
end
for _, timer in ipairs(minetest.timers_to_add) do
table.insert(minetest.timers, timer)
end
minetest.timers_to_add = {}
for index, timer in ipairs(minetest.timers) do
timer.time = timer.time - dtime
if timer.time <= 0 then
timer.func(timer.param)
table.remove(minetest.timers,index)
end
end
end)
function minetest.after(time, func)
table.insert(minetest.timers_to_add, {time=time, func=func})
function minetest.after(time, func, param)
table.insert(minetest.timers_to_add, {time=time, func=func, param=param})
end
--

@ -467,8 +467,9 @@ minetest.sound_play(spec, parameters) -> handle
^ parameters = sound parameter table
minetest.sound_stop(handle)
minetest.after(time, func)
minetest.after(time, func, param)
^ Call function after time seconds
^ param is optional; to pass multiple parameters, pass a table.
Global objects:
minetest.env - environment reference