aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-01-22 11:17:41 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-03-13 23:56:05 +0100
commit2c19d51409ca903021e0b508e5bc15299c4e51dc (patch)
tree8df932580abc289160aadbc40487099fd033c7d8 /builtin
parentd7bc346981e189851e490f2417ed015a38bca79b (diff)
downloadminetest-2c19d51409ca903021e0b508e5bc15299c4e51dc.tar.gz
minetest-2c19d51409ca903021e0b508e5bc15299c4e51dc.tar.bz2
minetest-2c19d51409ca903021e0b508e5bc15299c4e51dc.zip
[CSM] sound_play & sound_stop support + client_lua_api doc (#5096)
* squashed: CSM: Implement register_globalstep * Re-use fatal error mechanism from server to disconnect client on CSM error * Little client functions cleanups * squashed: CSM: add core.after function * core.after is shared code between client & server * ModApiUtil get_us_time feature enabled for client
Diffstat (limited to 'builtin')
-rw-r--r--builtin/client/init.lua3
-rw-r--r--builtin/client/preview.lua15
-rw-r--r--builtin/client/register.lua1
-rw-r--r--builtin/common/after.lua43
-rw-r--r--builtin/game/init.lua1
-rw-r--r--builtin/game/misc.lua44
6 files changed, 60 insertions, 47 deletions
diff --git a/builtin/client/init.lua b/builtin/client/init.lua
index 4797ac4b6..dd218aab6 100644
--- a/builtin/client/init.lua
+++ b/builtin/client/init.lua
@@ -4,9 +4,10 @@ local clientpath = scriptpath.."client"..DIR_DELIM
local commonpath = scriptpath.."common"..DIR_DELIM
dofile(clientpath .. "register.lua")
+dofile(commonpath .. "after.lua")
+dofile(commonpath .. "chatcommands.lua")
dofile(clientpath .. "preview.lua")
core.register_on_death(function()
core.display_chat_message("You died.")
end)
-
diff --git a/builtin/client/preview.lua b/builtin/client/preview.lua
index c421791f5..22e8bb97f 100644
--- a/builtin/client/preview.lua
+++ b/builtin/client/preview.lua
@@ -1,6 +1,6 @@
-- This is an example function to ensure it's working properly, should be removed before merge
core.register_on_shutdown(function()
- print("shutdown client")
+ print("[PREVIEW] shutdown client")
end)
-- This is an example function to ensure it's working properly, should be removed before merge
@@ -15,17 +15,28 @@ core.register_on_sending_chat_messages(function(message)
return false
end)
+-- This is an example function to ensure it's working properly, should be removed before merge
core.register_on_hp_modification(function(hp)
print("[PREVIEW] HP modified " .. hp)
end)
+-- This is an example function to ensure it's working properly, should be removed before merge
core.register_on_damage_taken(function(hp)
print("[PREVIEW] Damage taken " .. hp)
end)
-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_globalstep(function(dtime)
+ -- print("[PREVIEW] globalstep " .. dtime)
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
core.register_chatcommand("dump", {
func = function(name, param)
return true, dump(_G)
end,
-}) \ No newline at end of file
+})
+
+core.after(2, function()
+ print("After 2")
+end)
diff --git a/builtin/client/register.lua b/builtin/client/register.lua
index ddaf4f424..8b60c1222 100644
--- a/builtin/client/register.lua
+++ b/builtin/client/register.lua
@@ -55,6 +55,7 @@ local function make_registration()
return t, registerfunc
end
+core.registered_globalsteps, core.register_globalstep = make_registration()
core.registered_on_shutdown, core.register_on_shutdown = make_registration()
core.registered_on_receiving_chat_messages, core.register_on_receiving_chat_messages = make_registration()
core.registered_on_sending_chat_messages, core.register_on_sending_chat_messages = make_registration()
diff --git a/builtin/common/after.lua b/builtin/common/after.lua
new file mode 100644
index 000000000..30a9c7bad
--- /dev/null
+++ b/builtin/common/after.lua
@@ -0,0 +1,43 @@
+local jobs = {}
+local time = 0.0
+local last = core.get_us_time() / 1000000
+
+core.register_globalstep(function(dtime)
+ local new = core.get_us_time() / 1000000
+ if new > last then
+ time = time + (new - last)
+ else
+ -- Overflow, we may lose a little bit of time here but
+ -- only 1 tick max, potentially running timers slightly
+ -- too early.
+ time = time + new
+ end
+ last = new
+
+ if #jobs < 1 then
+ return
+ end
+
+ -- Iterate backwards so that we miss any new timers added by
+ -- a timer callback, and so that we don't skip the next timer
+ -- in the list if we remove one.
+ for i = #jobs, 1, -1 do
+ local job = jobs[i]
+ if time >= job.expire then
+ core.set_last_run_mod(job.mod_origin)
+ job.func(unpack(job.arg))
+ table.remove(jobs, i)
+ end
+ end
+end)
+
+function core.after(after, func, ...)
+ assert(tonumber(after) and type(func) == "function",
+ "Invalid core.after invocation")
+ jobs[#jobs + 1] = {
+ func = func,
+ expire = time + after,
+ arg = {...},
+ mod_origin = core.get_last_run_mod()
+ }
+end
diff --git a/builtin/game/init.lua b/builtin/game/init.lua
index 793d9fe2b..3e192a30a 100644
--- a/builtin/game/init.lua
+++ b/builtin/game/init.lua
@@ -17,6 +17,7 @@ if core.setting_getbool("profiler.load") then
profiler = dofile(scriptpath.."profiler"..DIR_DELIM.."init.lua")
end
+dofile(commonpath .. "after.lua")
dofile(gamepath.."item_entity.lua")
dofile(gamepath.."deprecated.lua")
dofile(gamepath.."misc.lua")
diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua
index 3419c1980..25376c180 100644
--- a/builtin/game/misc.lua
+++ b/builtin/game/misc.lua
@@ -4,50 +4,6 @@
-- Misc. API functions
--
-local jobs = {}
-local time = 0.0
-local last = core.get_us_time() / 1000000
-
-core.register_globalstep(function(dtime)
- local new = core.get_us_time() / 1000000
- if new > last then
- time = time + (new - last)
- else
- -- Overflow, we may lose a little bit of time here but
- -- only 1 tick max, potentially running timers slightly
- -- too early.
- time = time + new
- end
- last = new
-
- if #jobs < 1 then
- return
- end
-
- -- Iterate backwards so that we miss any new timers added by
- -- a timer callback, and so that we don't skip the next timer
- -- in the list if we remove one.
- for i = #jobs, 1, -1 do
- local job = jobs[i]
- if time >= job.expire then
- core.set_last_run_mod(job.mod_origin)
- job.func(unpack(job.arg))
- table.remove(jobs, i)
- end
- end
-end)
-
-function core.after(after, func, ...)
- assert(tonumber(after) and type(func) == "function",
- "Invalid core.after invocation")
- jobs[#jobs + 1] = {
- func = func,
- expire = time + after,
- arg = {...},
- mod_origin = core.get_last_run_mod()
- }
-end
-
function core.check_player_privs(name, ...)
local arg_type = type(name)
if (arg_type == "userdata" or arg_type == "table") and