]> git.lizzy.rs Git - minetest-controls.git/commitdiff
Add files via upload
authorArcelmi <Arcelmi@users.noreply.github.com>
Thu, 14 Sep 2017 12:35:13 +0000 (14:35 +0200)
committerGitHub <noreply@github.com>
Thu, 14 Sep 2017 12:35:13 +0000 (14:35 +0200)
init.lua [new file with mode: 0644]
mod.conf [new file with mode: 0644]

diff --git a/init.lua b/init.lua
new file mode 100644 (file)
index 0000000..ba7416d
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,63 @@
+controls = {}
+controls.players = {}
+
+controls.registered_on_press = {}
+function controls.register_on_press(func)
+       controls.registered_on_press[#controls.registered_on_press+1] = func
+end
+
+controls.registered_on_release = {}
+function controls.register_on_release(func)
+       controls.registered_on_release[#controls.registered_on_release+1] = func
+end
+
+controls.registered_on_hold = {}
+function controls.register_on_hold(func)
+       controls.registered_on_hold[#controls.registered_on_hold+1]=func
+end
+
+minetest.register_on_joinplayer(function(player)
+       local name = player:get_player_name()
+       controls.players[name] = {
+               jump={false}, 
+               right={false}, 
+               left={false}, 
+               LMB={false}, 
+               RMB={false}, 
+               sneak={false}, 
+               aux1={false}, 
+               down={false}, 
+               up={false}
+       }
+end)
+
+minetest.register_on_leaveplayer(function(player)
+       local name = player:get_player_name()
+       controls.players[name] = nil
+end)
+
+minetest.register_globalstep(function(dtime)
+       for _, player in pairs(minetest.get_connected_players()) do
+               local player_name = player:get_player_name()
+               local player_controls = player:get_player_control()
+               for cname, cbool in pairs(player_controls) do
+                       --Press a key
+                       if cbool==true and controls.players[player_name][cname][1]==false then
+                               controls.players[player_name][cname] = {true, os.clock()}
+                               for _, func in pairs(controls.registered_on_press) do
+                                       func(player, cname)
+                               end
+                       elseif cbool==true and controls.players[player_name][cname][1]==true then
+                               for _, func in pairs(controls.registered_on_hold) do
+                                       func(player, cname, os.clock()-controls.players[player_name][cname][2])
+                               end
+                       --Release a key
+                       elseif cbool==false and controls.players[player_name][cname][1]==true then
+                               controls.players[player_name][cname] = {false}
+                               for _, func in pairs(controls.registered_on_release) do
+                                       func(player, cname)
+                               end
+                       end
+               end
+       end
+end)
diff --git a/mod.conf b/mod.conf
new file mode 100644 (file)
index 0000000..8fab3aa
--- /dev/null
+++ b/mod.conf
@@ -0,0 +1 @@
+name=controls