function handleButtonClick(button) {
if (button.textContent === "Disconnect") {
gamepadSimulator.disconnect();
button.textContent = "Connect";
} else {
gamepadSimulator.connect();
button.textContent = "Disconnect";
}
}
/*****/
const gamepads = {};
function readValues() {
const cgs = navigator.getGamepads();
const indexes = Object.keys(gamepads);
for (let x = 0; x < indexes.length; x++) {
const buttons = cgs[indexes[x]].buttons;
const axes = cgs[indexes[x]].axes;
for (let y = 0; y < buttons.length; y++) {
if (buttons[y].pressed) {
console.log(`button ${y} pressed.`);
document.querySelector("#events")
.insertAdjacentHTML('afterbegin', `
Button ${y} pressed.
`);
}
}
for (let y = 0; y < axes.length; y++) {
if (axes[y] != 0) {
const axe = Math.floor(y / 2);
const dir = y % 2;
let move = "up"
if (dir === 0 && axes[y] == 1) {
move = "right";
} else if (dir === 0 && axes[y] == -1) {
move = "left";
} else if (dir === 1 && axes[y] == 1) {
move = "down";
}
console.log(`axe ${axe} moved ${move}.`);
document.querySelector("#events")
.insertAdjacentHTML('afterbegin', `Axe ${axe} moved ${move}.
`);
}
}
}
if (indexes.length > 0) {
window.requestAnimationFrame(readValues);
}
}
window.addEventListener("gamepadconnected", function(e) {
console.log(`Gamepad connected: ${e.gamepad.id}`);
document.querySelector("#events")
.insertAdjacentHTML('afterbegin', 'Gamepad connected.
');
gamepads[e.gamepad.index] = true;
readValues();
});
window.addEventListener("gamepaddisconnected", function(e) {
console.log(`Gamepad disconnected: ${e.gamepad.id}`);
document.querySelector("#events")
.insertAdjacentHTML('afterbegin', 'Gamepad disconnected.
');
delete gamepads[e.gamepad.index];
});
gamepadSimulator.create();