controls/init.lua

42 lines
1.2 KiB
Lua
Raw Normal View History

2023-12-03 20:44:29 +01:00
controls = {
--util values
2023-12-03 20:44:29 +01:00
modpath = minetest.get_modpath("controls"),
testsmode = minetest.settings:get_bool("controls_enable_tests", false),
--location to store callbacks
registered_on_press = {},
registered_on_hold = {},
registered_on_release = {},
2023-12-03 21:03:02 +01:00
--store player control data
players = {},
2023-12-03 20:44:29 +01:00
}
--api functions
function controls.register_on_press(callback)
table.insert(controls.registered_on_press, callback)
2023-12-03 20:44:29 +01:00
end
function controls.register_on_hold(callback)
table.insert(controls.registered_on_hold, callback)
2023-12-03 20:44:29 +01:00
end
function controls.register_on_release(callback)
table.insert(controls.registered_on_release, callback)
2023-12-03 20:44:29 +01:00
end
2023-12-03 21:03:02 +01:00
minetest.register_on_joinplayer(function(player, _)
local pname = player:get_player_name()
local controls_names = player:get_player_control()
--note: could hardcode this, but this is more future proof in case minetest adds more controls
controls.players[pname] = {}
for key, _ in pairs(controls_names) do
controls.players[pname][key] = {false} --in theory its false when they join, but hard coding just in case
end
end)
--tests
2023-12-03 20:44:29 +01:00
if(controls.testsmode) then
dofile(controls.modpath .. "/test.lua")
end