diff --git a/public/assets/scripts/haxxor.js b/public/assets/scripts/haxxor.js index a17c384..7e49004 100644 --- a/public/assets/scripts/haxxor.js +++ b/public/assets/scripts/haxxor.js @@ -7,6 +7,9 @@ const REMOTE_UPDATE_PATH = ("use strict"); function createTetris() { + + let keyMap = {}; + var tetrominos = [ { // box @@ -183,25 +186,42 @@ function createTetris() { var self = this; + window.addEventListener("keyup", function(e) { + keyMap[e.code] = e.type == 'keydown'; + }); + window.addEventListener("keydown", function (e) { - switch (e.keyCode) { - case 37: + keyMap[e.code] = e.type == 'keydown'; + switch (e.code) { + case "ArrowLeft": + if (keyMap["ShiftLeft"] || keyMap["ShiftRight"]) { + if (self.checkMovement(curPiece, -2, 0)) { + curPiece.x -= 2; + }; + break + } if (self.checkMovement(curPiece, -1, 0)) { - curPiece.x--; - } + curPiece.x -= 1; + } break; - case 39: + case "ArrowRight": + if (keyMap["ShiftLeft"] || keyMap["ShiftRight"]) { + if (self.checkMovement(curPiece, 2, 0)) { + curPiece.x += 2; + } + break; + } if (self.checkMovement(curPiece, 1, 0)) { - curPiece.x++; + curPiece.x += 1; } break; - case 40: + case "ArrowDown": if (self.checkMovement(curPiece, 0, 1)) { curPiece.y++; } break; - case 32: - case 38: + case "ArrowUp": + case "Space": curPiece.data = self.rotateTetrimono(curPiece); break; } @@ -231,8 +251,8 @@ function createTetris() { } else { if (Date.now() > this.lastMove) { this.lastMove = Date.now() + this.curSpeed; - if (this.checkMovement(curPiece, 0, 1)) { - curPiece.y++; + if (this.checkMovement(curPiece, 0, 0.5)) { + curPiece.y += 0.5; } else { this.fillBoard(curPiece); this.newTetromino();