Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------------------------------------------------------------------------------------------------//
- // Create //
- //------------------------------------------------------------------------------------------------------//
- // Create a list of gamepad slots
- connectedGamepads = ds_list_create();
- // Set active gamepad
- global.ActiveGamepad = noone;
- // Setup input methods
- enum InputMethod
- {
- Gamepad,
- KeyboardMouse
- }
- // Set current input
- global.CurrentInput = InputMethod.KeyboardMouse;
- // Set deadzone and threshhold for Xbox gamepad
- xboxAxisDeadzone = 0.25;
- xboxButtonThreshhold = 0.1;
- // Set deadzone and threshhold for PS4 gamepad
- ps4AxisDeadzone = 0.2;
- ps4ButtonThreshhold = 0.1;
- //------------------------------------------------------------------------------------------------------//
- // Begin step //
- //------------------------------------------------------------------------------------------------------//
- /// @description InputSwitcher
- var _listSize = ds_list_size(connectedGamepads);
- if (_lsitSize != 0)
- {
- for (var i = 0; i < _listSize; i++)
- {
- var _slot = connectedGamepads[| i];
- var _leftStickV = gamepad_axis_value(_slot, gp_axislv) != 0;
- var _leftStickH = gamepad_axis_value(_slot, gp_axislh) != 0;
- var _rightStickV = gamepad_axis_value(_slot, gp_axisrv) != 0;
- var _rightStickH = gamepad_axis_value(_slot, gp_axisrh) != 0;
- for (var k = gp_face1; k < gp_axisrv; k++)
- {
- if (gamepad_button_check_pressed(_slot, k))
- {
- global.CurrentInput = InputMethod.Gamepad;
- set_active_gamepad(_slot);
- }
- }
- if (_leftStickV && _leftStickH) || (_rightStickV && _rightStickH)
- {
- global.CurrentInput = InputMethod.Gamepad;
- set_active_gamepad(_slot);
- }
- }
- if (global.CurrentInput != InputMethod.KeyboardMouse)
- {
- var _mouseKeyPressed = mouse_check_button_pressed(mb_any);
- var _keyboardKeyPressed = keyboard_check_pressed(vk_anykey);
- if (_mouseKeyPressed || _keyboardKeyPressed)
- {
- global.CurrentInput = InputMethod.KeyboardMouse;
- }
- }
- }
- //------------------------------------------------------------------------------------------------------//
- // Async-system //
- //------------------------------------------------------------------------------------------------------//
- /// @description GamepadConnectionHandler
- switch(async_load[? "event_type"])
- {
- case "gamepad discovered":
- var _gamepadSlot = async_load[? "pad_index"];
- if (gamepad_is_supported())
- {
- ds_list_add(connectedGamepads, _gamepadSlot);
- set_active_gamepad(_gamepadSlot);
- global.CurrentInput = InputMethod.Gamepad;
- }
- break;
- case "gamepad lost":
- var _gamepadSlot = async_load[? "pad_index"];
- var _gamepadListIndex = ds_list_find_index(connectedGamepads, _gamepadSlot);
- ds_list_delete(connectedGamepads, _gamepadListIndex);
- var _listSize = ds_list_size(connectedGamepads);
- if (_listSize == 0)
- {
- global.ActiveGamepad = noone;
- global.CurrentInput = InputMethod.KeyboardMouse;
- }
- else if (_gamepadSlot == global.ActiveGamepad)
- {
- global.ActiveGamepad = connectedGamepads[| 0];
- }
- break;
- }
- //------------------------------------------------------------------------------------------------------//
- // Clean Up //
- //------------------------------------------------------------------------------------------------------//
- ds_list_destroy(connectedGamepads);
- //------------------------------------------------------------------------------------------------------//
- // set_active_gamepad script //
- //------------------------------------------------------------------------------------------------------//
- // @param gamepadSlot
- var _gamepadSlot = argument0;
- global.ActiveGamepad = _gamepadSlot;
- if (_gamepadSlot >= 0 && _gamepadSlot <= 3) // Set dead zones for Xbox controller
- {
- gamepad_set_axis_deadzone(_gamepadSlot, xboxAxisDeadzone);
- gamepad_set_button_threshold(_gamepadSlot, xboxButtonThreshhold);
- }
- else // Set dead zones for Playstation controller
- {
- gamepad_set_axis_deadzone(_gamepadSlot, ps4AxisDeadzone);
- gamepad_set_button_threshold(_gamepadSlot, ps4ButtonThreshhold);
- }
Advertisement
Add Comment
Please, Sign In to add comment