Start of multilanguage support integration

Improved controls (WASD)
This commit is contained in:
Marcel
2017-12-16 22:50:27 +01:00
parent 80bd9553f2
commit e74863a959
3 changed files with 76 additions and 18 deletions

View File

@@ -8,13 +8,8 @@
<body>
<div id="score"></div>
<canvas id="tetris" width="240" height="400"></canvas>
<div id="controls">
Controls:
<br>
Arrow Keys -> Move left/right or down
<br>
Q/W -> Rotate the tile
</div>
<div id="controls"></div>
<script src="language.js"></script>
<script src="tetris.js"></script>
</body>
</html>

34
language.js Normal file
View File

@@ -0,0 +1,34 @@
const en = {
controls: "Controls:" +
"<br>" +
"Left+Right/A+D -> Move left/right or down\n" +
"<br>" +
"Q/E -> Rotate the tile" +
"<br>" +
"Down/S -> Drop the tile faster"
};
class Language {
constructor(lang) {
this.lang = lang;
if(eval('typeof ' + this.lang) === 'undefined')
this.lang = "en";
}
getStr(str, defaultStr) {
const retStr = eval('eval(this.lang).' + str);
if(typeof retStr !== 'undefined')
return retStr;
if(typeof defaultStr !== 'undefined')
return defaultStr;
return eval('en.' + str);
}
}
function switchLang(lang) {
const l = new Language(lang);
document.getElementById("controls").innerHTML = l.getStr("controls");
}
switchLang("en");

View File

@@ -227,19 +227,48 @@ const player = {
score: 0
};
const keys = {
down: {
keys: [40, 83],
action: () => playerDrop()
},
left: {
keys: [37, 65],
action: () => playerMove(-1)
},
right: {
keys: [39, 68],
action: () => playerMove(1)
},
rotateLeft: {
keys: [81],
action: () => playerRotate(-1)
},
rotateRight: {
keys: [69],
action: () => playerRotate(1)
}
};
// Keyboard controls
document.addEventListener('keydown', event => {
if(event.keyCode === 37) {
playerMove(-1);
} else if(event.keyCode === 39) {
playerMove(1);
} else if(event.keyCode === 40) {
playerDrop();
} else if(event.keyCode === 81) {
playerRotate(-1);
} else if(event.keyCode === 87) {
playerRotate(1);
}
Object.keys(keys).map((objKey, index) => {
const keyBind = keys[objKey];
if(keyBind.keys.includes(event.keyCode)) {
keyBind.action();
}
});
// if(event.keyCode === 37) {
// playerMove(-1);
// } else if(event.keyCode === 39) {
// playerMove(1);
// } else if(event.keyCode === 40) {
// playerDrop();
// } else if(event.keyCode === 81) {
// playerRotate(-1);
// } else if(event.keyCode === 87) {
// playerRotate(1);
// }
});
window.onresize = function (event) {