Beginning input manager implementation

master
Marco 2020-04-14 12:13:10 +02:00
parent 4d961d21f5
commit a072ae4690
2 changed files with 68 additions and 0 deletions

View File

@ -3,6 +3,7 @@ arena_lib.arenas = {}
arena_lib.mod_name = minetest.get_current_modname()
dofile(minetest.get_modpath(arena_lib.mod_name) .. "/arena_lib/debug_utilities.lua")
dofile(minetest.get_modpath(arena_lib.mod_name) .. "/arena_lib/input_manager.lua")
dofile(minetest.get_modpath(arena_lib.mod_name) .. "/arena_lib/items.lua")
dofile(minetest.get_modpath(arena_lib.mod_name) .. "/arena_lib/player_manager.lua")
dofile(minetest.get_modpath(arena_lib.mod_name) .. "/arena_lib/signs.lua")
@ -561,6 +562,12 @@ end
function arena_lib.get_players_in_game()
return players_in_game
end
function arena_lib.get_arenaID_by_player(p_name)
return players_in_game[p_name]
end

61
input_manager.lua Normal file
View File

@ -0,0 +1,61 @@
local players_jumping = {} --KEY: player, VALUE: boolean
--Hopefully waiting on https://github.com/minetest/minetest/issues/9626, in the meanwhile..
minetest.register_globalstep(function(dtime)
for pl_name, id in pairs(arena_lib.get_players_in_game()) do
local pl = minetest.get_player_by_name(pl_name)
if pl:get_player_control().aux1 then
arena_lib.on_AUX1_pressed(pl)
end
-- L'handler del salto non è perfetto ed è stata aperta una issue qui: https://github.com/minetest/minetest/issues/9631
-- preferisco tenerlo disattivato al momento piuttosto che computare cose inutili
--[[
if pl:get_player_control().jump and pl:get_hp() > 0 and not players_jumping[pl_name] then
local pos = pl:get_pos()
local pos_feet = {x = pos.x, y = pos.y-0.501, z = pos.z}
local drawtype = minetest.registered_nodes[minetest.get_node(pos_feet).name]["drawtype"]
if drawtype ~= "normal" and drawtype ~= "glasslike" and drawtype ~= "nodebox" then return end
players_jumping[pl_name] = true
arena_lib.on_jump(pl)
minetest.after(0.2, function()
players_jumping[pl_name] = false
end)
end]]
end
end)
function arena_lib.on_AUX1_pressed(pl)
--Override me
end
function arena_lib.on_jump(player)
--Override me
end
function arena_lib.register_player_inputs(p_name)
players_jumping[p_name] = false
end
--[[function arena_lib.is_player_jumping(p_name)
if players_jumping[p_name] then return true
else return false
end
end]]