Add controls mod by arcelmi
[MineClone/MineClone2.git] / mods / CORE / controls / init.lua
blobd2820eef0d301ea3836388023f37ce203a355894
1 controls = {}
2 controls.players = {}
4 controls.registered_on_press = {}
5 function controls.register_on_press(func)
6 controls.registered_on_press[#controls.registered_on_press+1] = func
7 end
9 controls.registered_on_release = {}
10 function controls.register_on_release(func)
11 controls.registered_on_release[#controls.registered_on_release+1] = func
12 end
14 controls.registered_on_hold = {}
15 function controls.register_on_hold(func)
16 controls.registered_on_hold[#controls.registered_on_hold+1]=func
17 end
19 minetest.register_on_joinplayer(function(player)
20 local name = player:get_player_name()
21 controls.players[name] = {
22 jump={false},
23 right={false},
24 left={false},
25 LMB={false},
26 RMB={false},
27 sneak={false},
28 aux1={false},
29 down={false},
30 up={false}
32 end)
34 minetest.register_on_leaveplayer(function(player)
35 local name = player:get_player_name()
36 controls.players[name] = nil
37 end)
39 minetest.register_globalstep(function(dtime)
40 for _, player in pairs(minetest.get_connected_players()) do
41 local player_name = player:get_player_name()
42 local player_controls = player:get_player_control()
43 for cname, cbool in pairs(player_controls) do
44 --Press a key
45 if cbool==true and controls.players[player_name][cname][1]==false then
46 for _, func in pairs(controls.registered_on_press) do
47 func(player, cname)
48 end
49 controls.players[player_name][cname] = {true, os.clock()}
50 elseif cbool==true and controls.players[player_name][cname][1]==true then
51 for _, func in pairs(controls.registered_on_hold) do
52 func(player, cname, os.clock()-controls.players[player_name][cname][2])
53 end
54 --Release a key
55 elseif cbool==false and controls.players[player_name][cname][1]==true then
56 for _, func in pairs(controls.registered_on_release) do
57 func(player, cname, os.clock()-controls.players[player_name][cname][2])
58 end
59 controls.players[player_name][cname] = {false}
60 end
61 end
62 end
63 end)