improved the no gamepad message

This commit is contained in:
e7d 2016-11-11 09:20:23 +01:00
parent ebb442c218
commit 0ebb16f1ea
3 changed files with 24 additions and 5 deletions

View File

@ -3,11 +3,12 @@ body {
overflow: hidden;
}
.no-gamepad {
position: absolute;
bottom: 0;
display: none;
width: 100vw;
line-height: 100vh;
line-height: 2em;
text-align: center;
text-transform: uppercase;
font-weight: 700;
}
.gamepad {
position: absolute;

View File

@ -11,7 +11,7 @@
<link rel="stylesheet" href="css/main.css?8a342d6">
</head>
<body>
<div class="no-gamepad">No gamepad detected</div>
<div class="no-gamepad">No active gamepad. Press <kbd>H</kbd> to see how it works.</div>
<div class="gamepad"></div>
<div class="help">
<h2>Help</h2>

View File

@ -10,6 +10,7 @@ $.urlParam = function(name) {
var haveEvents = 'ongamepadconnected' in window;
var gamepads = {};
var $gamepad = $('.gamepad');
var $nogamepad = $('.no-gamepad');
var $help = $('.help');
var gamepadIdentifiers = {
'ds4': {
@ -21,6 +22,8 @@ var gamepadIdentifiers = {
'colors': ['black', 'white']
}
};
var gamepadHelpTimeout = null;
var gamepadHelpDelay = 10000;
var activeGamepadIndex = null;
var activeGamepadType = null;
var activeGamepadIdentifier = null;
@ -36,6 +39,17 @@ window.addEventListener("gamepadconnected", onGamepadConnect);
window.addEventListener("gamepaddisconnected", onGamepadDisconnect);
window.addEventListener("keydown", onKeyDown);
displayGamepadHelp();
function displayGamepadHelp() {
gamepadHelpTimeout = window.setTimeout(function() {
$nogamepad.fadeIn();
}, gamepadHelpDelay);
}
function hideGamepadHelp() {
window.clearTimeout(gamepadHelpTimeout);
$nogamepad.hide();
}
function onGamepadConnect(e) {
addGamepad(e.gamepad);
}
@ -85,6 +99,8 @@ function removeGamepad(gamepadIndex) {
$gamepad.empty();
}
delete gamepads[gamepadIndex];
displayGamepadHelp();
}
setInterval(scanGamepads, 500);
@ -117,6 +133,8 @@ function mapGamepad(gamepad) {
activeGamepadIndex = gamepad.index;
hideGamepadHelp();
for (var gamepadType in gamepadIdentifiers) {
if (gamepadIdentifiers[gamepadType].id.test(gamepad.id)) {
activeGamepadType = gamepadType;
@ -167,7 +185,7 @@ function updateVisualStatus() {
return;
}
var gamepads = getGamepads();
gamepads = getGamepads();
var activeGamepad = gamepads[activeGamepadIndex];
if (!activeGamepad) {