Files
sky_phone-sky-systems/sky_phone/source/client/focus.lua
T
Leon.Schmidt fbb304c23c FIX - block all phone input groups
Disable control groups 0, 1, and 2 while the phone cursor owns focus so movement, combat, camera, and mapped actions such as hands-up cannot leak through. Update the focus contract test to verify every group.
2026-08-16 18:17:12 +02:00

52 lines
1.9 KiB
Lua

SkyPhoneFocus = {}
local blocked_phone_controls = { 19, 24, 140, 141, 142, 257, 263, 264 }
local blocked_phone_look_controls = { 1, 2, 3, 4, 5, 6 }
local focused_control_groups = { 0, 1, 2 }
function SkyPhoneFocus.ApplyFocusedControls()
for _, group in ipairs(focused_control_groups) do
DisableAllControlActions(group)
end
DisablePlayerFiring(PlayerId(), true)
end
function SkyPhoneFocus.ApplyGameInputControls(block_look)
for _, control in ipairs(blocked_phone_controls) do
DisableControlAction(0, control, true)
end
if block_look then
for _, control in ipairs(blocked_phone_look_controls) do
DisableControlAction(0, control, true)
end
end
DisablePlayerFiring(PlayerId(), true)
end
function SkyPhoneFocus.Resolve(state)
if state.activity_suspended then
return { block_game = false, cursor = false, focused = false, game_input = false, keep_input = false }
end
if state.call_focus then
return { block_game = true, cursor = true, focused = true, game_input = false, keep_input = false }
end
if state.camera_active and not state.camera_nui_focused then
return { block_game = false, block_look = false, cursor = false, focused = true, game_input = true, keep_input = true }
end
local game_input = state.is_open and state.allow_movement and not state.camera_active
local focused = state.is_open
or state.notification_focus
or state.payphone_focus
or state.sim_picker_open
or (state.camera_active and state.camera_nui_focused)
local cursor = focused and not (game_input and state.cursor_disabled)
return {
block_game = cursor,
block_look = game_input and not state.cursor_disabled,
cursor = cursor,
focused = focused,
game_input = game_input,
keep_input = game_input,
}
end