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:
parent
c60dbbb3ae
commit
ab0a9ef065
4 changed files with 120 additions and 107 deletions
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue