Load gamepadtokey.js only when is necessary

This commit is contained in:
ferferga 2020-01-29 15:08:17 +01:00
parent af75183d2a
commit c60dbbb3ae
2 changed files with 15 additions and 19 deletions

View File

@ -254,11 +254,7 @@ require(['apphost'], function (appHost) {
function runInputLoop() { function runInputLoop() {
// Get the latest gamepad state. // Get the latest gamepad state.
var gamepads; var gamepads;
if (navigator.getGamepads) { gamepads = navigator.getGamepads();
gamepads = navigator.getGamepads();
} else if (navigator.webkitGetGamepads) {
gamepads = navigator.webkitGetGamepads();
}
gamepads = gamepads || []; gamepads = gamepads || [];
var i; var i;
var j; var j;

View File

@ -197,30 +197,30 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
events.on(apiClient, "message", onMessageReceived); events.on(apiClient, "message", onMessageReceived);
} }
function enableNativeGamepadKeyMapping() { function attachgamepad(e) {
if (window.navigator && "string" == typeof window.navigator.gamepadInputEmulation) { if (navigator.getGamepads.length > 0) {
window.navigator.gamepadInputEmulation = "keyboard"; require(["components/serverNotifications/gamepadtokey"]);
return true; console.log("Gamepad connected! Attaching gamepadtokey.js script");
} }
return false;
} }
function isGamepadSupported() { function dettachgamepad(e) {
return "ongamepadconnected" in window || navigator.getGamepads || navigator.webkitGetGamepads; delete require.cache[require(["components/serverNotifications/gamepadtokey"])];
console.log("Gamepad disconnected! Dettaching gamepadtokey.js");
} }
connectionManager.getApiClients().forEach(bindEvents); connectionManager.getApiClients().forEach(bindEvents);
events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) {
bindEvents(newApiClient); bindEvents(newApiClient);
}); });
if (navigator.getGamepads()[0] != null) {
if (!enableNativeGamepadKeyMapping() && isGamepadSupported()) {
require(["components/serverNotifications/gamepadtokey"]); require(["components/serverNotifications/gamepadtokey"]);
console.log("Gamepad connected! Attaching gamepadtokey.js script");
window.addEventListener("gamepaddisconnected", dettachgamepad);
} else {
window.addEventListener("gamepadconnected", attachgamepad);
console.log("No gamepad connected to this device");
} }
// require(["components/serverNotifications/mouseManager"]);
require(["components/serverNotifications/mouseManager"]);
return serverNotifications; return serverNotifications;
}); });