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")