From efb61512fb79885ae59821ea4f8432a1e7f98d3a Mon Sep 17 00:00:00 2001 From: wsor4035 <24964441+wsor4035@users.noreply.github.com> Date: Sun, 3 Dec 2023 15:13:16 -0500 Subject: [PATCH] initial event loop and callback testing --- init.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/init.lua b/init.lua index baa64bf..08ecfb3 100644 --- a/init.lua +++ b/init.lua @@ -25,6 +25,7 @@ function controls.register_on_release(callback) table.insert(controls.registered_on_release, callback) end +--set up key store on join minetest.register_on_joinplayer(function(player, _) local pname = player:get_player_name() local controls_names = player:get_player_control() @@ -36,6 +37,30 @@ minetest.register_on_joinplayer(function(player, _) end end) +--discard when leaving +minetest.register_on_leaveplayer(function(player, _) + local pname = player:get_player_name() + controls.players[pname] = nil +end) + +--event loop +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local pname = player:get_player_name() + local pcontrols = player:get_player_control() + + if not controls.players[pname] then break end --safety check + + for key, key_status in pairs(pcontrols) do + if(key_status) then --yes, this is a hold or press event, intial testing + for _, callback in pairs(controls.registered_on_press) do + callback(player, key) + end + end + end + end +end) + --tests if(controls.testsmode) then dofile(controls.modpath .. "/test.lua")