Gamepad API works in Chrome

This commit is contained in:
Nathan Kunicki 2016-03-07 18:41:07 -06:00
parent 5336f0d4bf
commit 11c6cc9cb8
3 changed files with 47 additions and 14 deletions

View File

@ -191,6 +191,7 @@ var leftPaddleUpCondition = function (paddle, delta) {
if (!axisMoved) {
if (paddle._game.inputs.keyboard.isPressed(KeyConsts.CHAR_Q)) {
this.top -= 0.5 * delta;
}
}
@ -218,6 +219,7 @@ var leftPaddleDownCondition = function (paddle, delta) {
if (!axisMoved) {
if (paddle._game.inputs.keyboard.isPressed(KeyConsts.CHAR_A)) {
this.top += 0.5 * delta;
}
}
@ -229,7 +231,7 @@ var rightPaddleUpCondition = function (paddle, delta) {
let gamepadInput = paddle._game.inputs.gamepad;
let gamepadConnected = (gamepadInput.numGamepads >= 1),
let gamepadConnected = (gamepadInput.numGamepads >= 1 && gamepadInput.getGamepadById(0).numAxis >= 6),
axisMoved = false;
if (gamepadConnected) {
@ -245,6 +247,7 @@ var rightPaddleUpCondition = function (paddle, delta) {
if (!axisMoved) {
if (paddle._game.inputs.keyboard.isPressed(KeyConsts.CHAR_O)) {
this.top -= 0.5 * delta;
}
}
@ -272,6 +275,7 @@ var rightPaddleDownCondition = function (paddle, delta) {
if (!axisMoved) {
if (paddle._game.inputs.keyboard.isPressed(KeyConsts.CHAR_L)) {
this.top += 0.5 * delta;
}
}

View File

@ -160,7 +160,6 @@ class Game extends Entity {
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback) {
console.log("THIS");
window.setTimeout(callback, 1000 / self.desiredFps);
});

View File

@ -48,19 +48,49 @@ class GamepadInput {
self._gamepadState = {};
self.gamepadIds = [];
window.addEventListener("gamepadconnected", (event) => {
self._gamepadState[event.gamepad.index] = new Gamepad(event.gamepad);
self.gamepadIds.push(event.gamepad.index);
console.log("Connected");
console.log(event.gamepad);
console.log(event.gamepad.buttons[0]);
});
if (!('ongamepadconnected' in window)) {
window.addEventListener("gamepaddisconnected", (event) => {
delete self._gamepadState[event.gamepad.index];
self.gamepadIds.splice(self.gamepadIds.indexOf(event.gamepad.index));
console.log("Disconnected");
});
let pollGamepads = function () {
let gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads : []);
for (var i = 0; i < gamepads.length; i++) {
let gamepad = gamepads[i];
if (gamepad) {
if (self.gamepadIds.indexOf(gamepad.index) < 0) {
self._gamepadState[gamepad.index] = new Gamepad(gamepad);
self.gamepadIds.push(gamepad.index);
console.log(`Gamepad ${gamepad.index} connected`);
}
}
}
};
let interval = setInterval(pollGamepads, 5);
} else {
window.addEventListener("gamepadconnected", (event) => {
self._gamepadState[event.gamepad.index] = new Gamepad(event.gamepad);
self.gamepadIds.push(event.gamepad.index);
console.log(`Gamepad ${event.gamepad.index} connected`);
});
window.addEventListener("gamepaddisconnected", (event) => {
delete self._gamepadState[event.gamepad.index];
self.gamepadIds.splice(self.gamepadIds.indexOf(event.gamepad.index));
console.log(`Gamepad ${event.gamepad.index} connected`);
});
}
}