added zoom handling

This commit is contained in:
e7d 2016-11-05 22:53:05 +01:00
parent fd5de54d1f
commit c0c005221a

View File

@ -33,7 +33,7 @@ var mapping = {
window.addEventListener("gamepadconnected", onGamepadConnect);
window.addEventListener("gamepaddisconnected", onGamepadDisconnect);
window.addEventListener("keypress", onKeyPress);
window.addEventListener("keydown", onKeyDown);
function onGamepadConnect(e) {
addGamepad(e.gamepad);
@ -43,16 +43,23 @@ function onGamepadDisconnect(e) {
removeGamepad(e.gamepad.index);
}
function onKeyPress(e) {
switch (e.key) {
case "d":
case "D":
function onKeyDown(e) {
switch (e.code) {
case "Delete":
case "Escape":
removeGamepad(activeGamepadIndex);
break;
case "c":
case "C":
case "KeyC":
changeGamepadColor();
break;
case "NumpadAdd":
case "Equal":
changeZoom("+");
break;
case "NumpadSubtract":
case "Minus":
changeZoom("-");
break;
}
}
@ -106,7 +113,7 @@ function mapGamepad(gamepad) {
if (gamepadIdentifiers[gamepadType].id.test(gamepad.id)) {
activeGamepadType = gamepadType;
activeGamepadIdentifier = gamepadIdentifiers[gamepadType];
activeGamepadColor = 0;
activeGamepadColorIndex = 0;
}
}
@ -120,6 +127,16 @@ function mapGamepad(gamepad) {
if ($.urlParam('color')) {
changeGamepadColor($.urlParam('color'));
}
if ($.urlParam('c')) {
changeGamepadColor($.urlParam('c'));
}
if ($.urlParam('zoom')) {
changeZoom($.urlParam('zoom'));
}
if ($.urlParam('z')) {
changeZoom($.urlParam('z'));
}
mapping.buttons = [];
for (var buttonIndex = 0; buttonIndex < gamepad.buttons.length; buttonIndex++) {
@ -223,5 +240,35 @@ function changeGamepadColor(gamepadColor) {
activeGamepadColorName = activeGamepadIdentifier.colors[activeGamepadColorIndex];
}
$gamepad.attr('data-color', activeGamepadIdentifier.colors[activeGamepadColor]);
$gamepad.attr('data-color', activeGamepadColorName);
}
function changeZoom(zoomLevel) {
if (! activeGamepadIdentifier) {
return;
}
if (! zoomLevel) {
return;
}
if ('+' === zoomLevel && activeGamepadZoomLevel < 2) {
activeGamepadZoomLevel += 0.1;
}
if ('-' === zoomLevel && activeGamepadZoomLevel > 0.2) {
activeGamepadZoomLevel -= 0.1;
}
if (! isNaN(zoomLevel = parseFloat(zoomLevel))) {
activeGamepadZoomLevel = zoomLevel;
}
// hack: fix floatjs float issues
activeGamepadZoomLevel = +activeGamepadZoomLevel.toFixed(1);
$gamepad.css('transform', 'translate(-50%, -50%) scale(' + activeGamepadZoomLevel + ', ' + activeGamepadZoomLevel + ')');
}
function toggleHelp(zoomLevel) {
$help.toggleClass('active');
}