New effects and timer

This commit is contained in:
Marcel
2017-12-18 21:02:05 +01:00
parent 41f702a18b
commit cc5f9cf1bd
4 changed files with 44 additions and 2 deletions

View File

@@ -18,6 +18,7 @@
<div id="lang-de" class="lang" data-lang="de">Deutsch</div> <div id="lang-de" class="lang" data-lang="de">Deutsch</div>
</div> </div>
<div id="background" class="blurred"> <div id="background" class="blurred">
<div id="time">0:00</div>
<div id="score" data-prefix="Score: ">0</div> <div id="score" data-prefix="Score: ">0</div>
<canvas id="tetris" width="240" height="400"></canvas> <canvas id="tetris" width="240" height="400"></canvas>
<div id="controls"></div> <div id="controls"></div>

24
menu.js
View File

@@ -87,6 +87,30 @@ function fadeBlurOut() {
} }
} }
function scoreUpdateAni() {
const scoreEl = document.getElementById("score");
const nativeTransform = "translate(-50%, -50%)";
const scale = 1.5;
const finalScale = 1;
let currentScale = 1;
let upscaling = true;
const id = setInterval(frame, 5);
function frame() {
if(currentScale <= scale && upscaling) {
currentScale += 0.02;
scoreEl.style.transform = nativeTransform + " scale(" + currentScale + ")";
} else if (currentScale >= finalScale) {
upscaling = false;
currentScale -= 0.02;
scoreEl.style.transform = nativeTransform + " scale(" + currentScale + ")";
} else {
clearInterval(id);
}
}
}
function showMenu() { function showMenu() {
isPaused = true; isPaused = true;
document.getElementById("game-title").style.opacity = "1"; document.getElementById("game-title").style.opacity = "1";

View File

@@ -5,6 +5,8 @@ const fieldSize = {x: 12, y: 20};
let isPaused = true; let isPaused = true;
let startTime = 0;
function clearScreen() { function clearScreen() {
context.clearRect(0, 0, canvas.width, canvas.height); context.clearRect(0, 0, canvas.width, canvas.height);
} }
@@ -198,6 +200,8 @@ let dropInterval = 1000;
let lastTime = 0; let lastTime = 0;
const timeEl = document.getElementById("time");
function update(time = 0) { function update(time = 0) {
if(!isPaused) { if(!isPaused) {
const deltaTime = time - lastTime; const deltaTime = time - lastTime;
@@ -208,12 +212,24 @@ function update(time = 0) {
playerDrop(); playerDrop();
} }
timeEl.innerHTML = formatMillis(Date.now() - startTime);
draw(); draw();
requestAnimationFrame(update); requestAnimationFrame(update);
} }
} }
function formatMillis(millis) {
const d = new Date(1000*Math.round(millis / 1000));
return (d.getUTCMinutes() < 10 ? "0" : "") + d.getUTCMinutes() + ":" + (d.getUTCSeconds() < 10 ? "0" : "") + d.getUTCSeconds();
}
let lastScore = 0;
function updateScore() { function updateScore() {
if(lastScore !== player.score) {
scoreUpdateAni();
lastScore = player.score;
}
document.getElementById('score').innerText = player.score.toString(); document.getElementById('score').innerText = player.score.toString();
} }
@@ -274,4 +290,5 @@ function startGame() {
playerReset(); playerReset();
update(); update();
updateScore(); updateScore();
startTime = Date.now();
} }