Add minetest.after(time, func)

This commit is contained in:
Perttu Ahola 2012-03-27 00:37:31 +03:00
parent a2fd8d1db1
commit 37b64ff616
3 changed files with 35 additions and 28 deletions

@ -795,6 +795,30 @@ minetest.registered_on_newplayers, minetest.register_on_newplayer = make_registr
minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registration() minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registration()
minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration() minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration()
--
-- Misc. API functions
--
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
end)
function minetest.after(time, func)
table.insert(minetest.timers_to_add, {time=time, func=func})
end
-- --
-- Set random seed -- Set random seed
-- --

@ -425,6 +425,12 @@ minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname"
minetest.get_worldpath(modname) -> eg. "/home/user/.minetest/world" minetest.get_worldpath(modname) -> eg. "/home/user/.minetest/world"
^ Useful for storing custom data ^ Useful for storing custom data
minetest.debug(line)
^ Goes to dstream
minetest.log(line)
minetest.log(loglevel, line)
^ loglevel one of "error", "action", "info", "verbose"
minetest.register_entity(name, prototype table) minetest.register_entity(name, prototype table)
minetest.register_abm(abm definition) minetest.register_abm(abm definition)
minetest.register_node(name, node definition) minetest.register_node(name, node definition)
@ -461,11 +467,8 @@ minetest.sound_play(spec, parameters) -> handle
^ parameters = sound parameter table ^ parameters = sound parameter table
minetest.sound_stop(handle) minetest.sound_stop(handle)
minetest.debug(line) minetest.after(time, func)
^ Goes to dstream ^ Call function after time seconds
minetest.log(line)
minetest.log(loglevel, line)
^ loglevel one of "error", "action", "info", "verbose"
Global objects: Global objects:
minetest.env - environment reference minetest.env - environment reference

@ -6,38 +6,18 @@
experimental = {} experimental = {}
timers_to_add = {}
timers = {}
minetest.register_globalstep(function(dtime)
for indes, timer in ipairs(timers_to_add) do
table.insert(timers, timer)
end
timers_to_add = {}
for index, timer in ipairs(timers) do
timer.time = timer.time - dtime
if timer.time <= 0 then
timer.func()
timers[index] = nil
end
end
end)
after = function(time, func)
table.insert(timers_to_add, {time=time, func=func})
end
--[[ --[[
stepsound = -1 stepsound = -1
function test_sound() function test_sound()
print("test_sound") print("test_sound")
stepsound = minetest.sound_play("default_grass_footstep", {gain=1.0}) stepsound = minetest.sound_play("default_grass_footstep", {gain=1.0})
after(2.0, test_sound) minetest.after(2.0, test_sound)
--after(0.1, test_sound_stop) --minetest.after(0.1, test_sound_stop)
end end
function test_sound_stop() function test_sound_stop()
print("test_sound_stop") print("test_sound_stop")
minetest.sound_stop(stepsound) minetest.sound_stop(stepsound)
after(2.0, test_sound) minetest.after(2.0, test_sound)
end end
test_sound() test_sound()
--]] --]]