guns4d-cd2025/touch_support.lua
2024-03-29 22:42:51 -07:00

50 lines
1.8 KiB
Lua

minetest.register_chatcommand(Guns4d.config.enable_touchscreen_command_name, {
description = "toggle wether the user is using a mobile device so controls can be adjusted for an optimal mobile experience",
func = function(caller, arg)
local handler = Guns4d.players[caller]
if handler and handler.control_handler then
handler.control_handler:toggle_touchscreen_mode()
minetest.chat_send_player(caller, "mobile mode "..((handler.control_handler.touchscreen and "enabled") or "disabled"))
if handler.control_handler.touchscreen then
minetest.chat_send_player(caller, "shift+tap to aim, shift+hold to switch fire modes, tap to fire, hold to fire full auto (when wielding a full auto weapon)")
end
end
end
})
Guns4d.default_touch_controls = {}
local touch = Guns4d.default_touch_controls
local pc = Guns4d.default_controls
--aiming
touch.aim = table.copy(pc.aim)
touch.aim.conditions = {"RMB", "sneak"}
--switching firemode
touch.firemode = table.copy(pc.firemode)
touch.firemode.conditions = {"LMB", "sneak"}
touch.firemode.func = function(active, interrupted, data, busy_list, gun, handler)
if active then
gun:cycle_firemodes()
end
end
--reloading
touch.reload = table.copy(pc.reload)
touch.reload.mode = "toggle"
--firing semi
touch.on_secondary_use = function(itemstack, handler, pointed_thing)
if not handler.control_handler.player_pressed.sneak then
pc.on_use(itemstack, handler, pointed_thing)
end
end
--full auto
touch.auto = table.copy(pc.auto)
touch.auto.conditions = {"LMB"}
touch.auto.func = function(active, interrupted, data, busy_list, gun, handler)
if (not handler.control_handler.player_pressed.sneak) and gun.properties.firemodes[gun.current_firemode] == "auto" then
gun:attempt_fire()
end
end