blob: e8ff80b925b0b3e410c8dcfeb8f10a61af504aa7 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head><title>ds3 replay test</title></head>
<body>
<script>
let buttonMappings;
let scriptReady = false;
let gamepadDisconnected = false;
let requestId;
let gamepadIndex = -1;
let buttonHistory = [];
window.addEventListener("gamepadconnected", function(e) {
gamepadIndex = e.gamepad.index;
requestId = window.requestAnimationFrame(queryGamepad) ;
});
window.addEventListener("gamepaddisconnected", function(e) {
gamepadDisconnected = true;
window.cancelAnimationFrame(requestId);
console.log(gamepadDisconnected);
});
function queryGamepad(timestamp) {
pressedButtons =
navigator.getGamepads()[gamepadIndex].buttons
.map((v, i) =>
{
return {
name: buttonMappings[i],
pressed: v.pressed,
touched: v.touched
};
})
.filter(b => b.pressed || b.touched)
.map(b => b.name);
if (pressedButtons.length > 0) {
buttonHistory.push(pressedButtons[0]);
}
requestId = window.requestAnimationFrame(queryGamepad);
}
function pressedButton(buttons) {
let button = buttons.filter(v => v.pressed).map((v, i) =>
buttonMappings[i]);
if (button.length === 0) {
return -1;
}
return button[0];
}
function setMappings(mappings) {
buttonMappings = mappings;
return true;
}
function getResults() {
return buttonHistory.filter((v, i, a) => a.indexOf(v) === i);
}
scriptReady = true;
</script>