1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Moved gamepad to input and serverNotofications cleanup

This commit is contained in:
ferferga 2020-02-05 14:13:28 +01:00
parent c60dbbb3ae
commit ab0a9ef065
4 changed files with 120 additions and 107 deletions

View file

@ -255,96 +255,92 @@ require(['apphost'], function (appHost) {
// Get the latest gamepad state. // Get the latest gamepad state.
var gamepads; var gamepads;
gamepads = navigator.getGamepads(); gamepads = navigator.getGamepads();
gamepads = gamepads || [];
var i; var i;
var j; var j;
var len; var len;
for (i = 0, len = gamepads.length; i < len; i++) { for (i = 0, len = gamepads.length; i < len; i++) {
var gamepad = gamepads[i]; var gamepad = gamepads[i];
if (gamepad) { // Iterate through the axes
// Iterate through the axes var axes = gamepad.axes;
var axes = gamepad.axes; var leftStickX = axes[0];
var leftStickX = axes[0]; var leftStickY = axes[1];
var leftStickY = axes[1]; if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right
if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right _ButtonPressedState.setleftThumbstickRight(true);
_ButtonPressedState.setleftThumbstickRight(true); } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left
} else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left _ButtonPressedState.setleftThumbstickLeft(true);
_ButtonPressedState.setleftThumbstickLeft(true); } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up
} else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up _ButtonPressedState.setleftThumbstickUp(true);
_ButtonPressedState.setleftThumbstickUp(true); } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down
} else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down _ButtonPressedState.setleftThumbstickDown(true);
_ButtonPressedState.setleftThumbstickDown(true); } else {
} else { _ButtonPressedState.setleftThumbstickLeft(false);
_ButtonPressedState.setleftThumbstickLeft(false); _ButtonPressedState.setleftThumbstickRight(false);
_ButtonPressedState.setleftThumbstickRight(false); _ButtonPressedState.setleftThumbstickUp(false);
_ButtonPressedState.setleftThumbstickUp(false); _ButtonPressedState.setleftThumbstickDown(false);
_ButtonPressedState.setleftThumbstickDown(false); }
} // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed.
// Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. var buttons = gamepad.buttons;
var buttons = gamepad.buttons; for (j = 0, len = buttons.length; j < len; j++) {
for (j = 0, len = buttons.length; j < len; j++) { if (ProcessedButtons.indexOf(j) !== -1) {
if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) {
switch (j) {
if (buttons[j].pressed) { case _GAMEPAD_DPAD_UP_BUTTON_INDEX:
switch (j) { _ButtonPressedState.setdPadUp(true);
case _GAMEPAD_DPAD_UP_BUTTON_INDEX: break;
_ButtonPressedState.setdPadUp(true); case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX:
break; _ButtonPressedState.setdPadDown(true);
case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: break;
_ButtonPressedState.setdPadDown(true); case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX:
break; _ButtonPressedState.setdPadLeft(true);
case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: break;
_ButtonPressedState.setdPadLeft(true); case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX:
break; _ButtonPressedState.setdPadRight(true);
case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: break;
_ButtonPressedState.setdPadRight(true); case _GAMEPAD_A_BUTTON_INDEX:
break; _ButtonPressedState.setgamepadA(true);
case _GAMEPAD_A_BUTTON_INDEX: break;
_ButtonPressedState.setgamepadA(true); case _GAMEPAD_B_BUTTON_INDEX:
break; _ButtonPressedState.setgamepadB(true);
case _GAMEPAD_B_BUTTON_INDEX: break;
_ButtonPressedState.setgamepadB(true); default:
break; // No-op
default: break;
// No-op }
break; } else {
} switch (j) {
} else { case _GAMEPAD_DPAD_UP_BUTTON_INDEX:
switch (j) { if (_ButtonPressedState.getdPadUp()) {
case _GAMEPAD_DPAD_UP_BUTTON_INDEX: _ButtonPressedState.setdPadUp(false);
if (_ButtonPressedState.getdPadUp()) { }
_ButtonPressedState.setdPadUp(false); break;
} case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX:
break; if (_ButtonPressedState.getdPadDown()) {
case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: _ButtonPressedState.setdPadDown(false);
if (_ButtonPressedState.getdPadDown()) { }
_ButtonPressedState.setdPadDown(false); break;
} case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX:
break; if (_ButtonPressedState.getdPadLeft()) {
case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: _ButtonPressedState.setdPadLeft(false);
if (_ButtonPressedState.getdPadLeft()) { }
_ButtonPressedState.setdPadLeft(false); break;
} case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX:
break; if (_ButtonPressedState.getdPadRight()) {
case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: _ButtonPressedState.setdPadRight(false);
if (_ButtonPressedState.getdPadRight()) { }
_ButtonPressedState.setdPadRight(false); break;
} case _GAMEPAD_A_BUTTON_INDEX:
break; if (_ButtonPressedState.getgamepadA()) {
case _GAMEPAD_A_BUTTON_INDEX: _ButtonPressedState.setgamepadA(false);
if (_ButtonPressedState.getgamepadA()) { }
_ButtonPressedState.setgamepadA(false); break;
} case _GAMEPAD_B_BUTTON_INDEX:
break; if (_ButtonPressedState.getgamepadB()) {
case _GAMEPAD_B_BUTTON_INDEX: _ButtonPressedState.setgamepadB(false);
if (_ButtonPressedState.getgamepadB()) { }
_ButtonPressedState.setgamepadB(false); break;
} default:
break; // No-op
default: break;
// No-op
break;
}
} }
} }
} }

View file

@ -126,6 +126,45 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager)
}); });
} }
function isGamepadConnected() {
var gamepads = navigator.getGamepads();
var i, len;
for (i = 0, len = gamepads.length; i < len; i++) {
var gamepad = gamepads[i];
if (gamepad) {
console.log(gamepad);
return true;
}
}
return false;
}
function attachGamepad(e) {
if (isGamepadConnected()) {
require(["components/input/gamepadtokey"]);
console.log("Gamepad connected! Attaching gamepadtokey.js script");
}
}
function dettachGamepad(e) {
if (!isGamepadConnected()) {
delete require.cache[require(["components/input/gamepadtokey"])];
console.log("Gamepad disconnected! No other gamepads are connected, dettaching gamepadtokey.js");
} else {
console.log("Gamepad disconnected! There are gamepads still connected.");
}
}
if (isGamepadConnected()) {
console.log("Gamepad connected! Attaching gamepadtokey.js script");
} else {
console.log("No gamepad connected to this device");
}
// No need to check for gamepads manually at load time, the eventhandler will be fired at load time as well
window.addEventListener("gamepaddisconnected", dettachGamepad);
window.addEventListener("gamepadconnected", attachGamepad);
require(["components/input/mouseManager"]);
return { return {
enable: enable, enable: enable,
getKeyName: getKeyName getKeyName: getKeyName

View file

@ -191,36 +191,14 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]);
} }
} }
function bindEvents(apiClient) { function bindEvents(apiClient) {
events.off(apiClient, "message", onMessageReceived); events.off(apiClient, "message", onMessageReceived);
events.on(apiClient, "message", onMessageReceived); events.on(apiClient, "message", onMessageReceived);
} }
function attachgamepad(e) {
if (navigator.getGamepads.length > 0) {
require(["components/serverNotifications/gamepadtokey"]);
console.log("Gamepad connected! Attaching gamepadtokey.js script");
}
}
function dettachgamepad(e) {
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) {
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"]);
return serverNotifications; return serverNotifications;
}); });