From c3a3e45c1830539a1b96b6ae14e2f7d35566e12d Mon Sep 17 00:00:00 2001 From: adrien Date: Wed, 18 Nov 2020 02:58:29 +0100 Subject: [PATCH] css animation --- app.js | 680 +++++++++++++++++++-------------------- index.php | 129 ++++---- leaderboard.js | 4 +- themes/Effect/style.css | 39 +-- themes/Kubow/style.css | 16 +- themes/default/style.css | 75 +++-- thumbnail.png | Bin 0 -> 97912 bytes 7 files changed, 448 insertions(+), 495 deletions(-) create mode 100644 thumbnail.png diff --git a/app.js b/app.js index 4b80995..97bd368 100644 --- a/app.js +++ b/app.js @@ -1,47 +1,25 @@ -// Customize Array to be use as coordinates -Object.defineProperty(Array.prototype, "x", { - get: function () { return this[0] }, - set: function (x) { this[0] = x} -}) -Object.defineProperty(Array.prototype, "y", { - get: function () { return this[1] }, - set: function (y) { this[1] = y} -}) -Array.prototype.add = function(other) { return this.map((x, i) => x + other[i]) } -Array.prototype.mul = function(k) { return this.map(x => k * x) } -Array.prototype.translate = function(vector) { return this.map(pos => pos.add(vector)) } -Array.prototype.rotate = function(spin) { return [-spin*this.y, spin*this.x] } -Array.prototype.pick = function() { return this.splice(Math.floor(Math.random()*this.length), 1)[0] } - // Constants const NEXT_PIECES = 6 -const HOLD = { - PIECE_POSITION: [2, 3] -} -const MATRIX = { - INVISIBLE_ROWS: 4, - PIECE_POSITION: [4, 3] -} -const NEXT= { - PIECE_POSITION: Array.from({length: NEXT_PIECES}, (v, k) => [2, k*4+3]) -} -const THEME = { - PIECE_POSITION: [1, 1] +const MATRIX_INVISIBLE_ROWS = 4 +const START_POSITION = { + HOLD: [2, 3], + MATRIX: [4, 3], + NEXT: Array.from({length: NEXT_PIECES}, (v, k) => [2, k*4+3]) } + const CLASSNAME = { EMPTY_CELL: "", MINO: "mino", LOCKED: "locked", TRAIL: "mino trail", GHOST: "ghost", - CLEARED_LINE: "cleared-line" + CLEARED_LINE: "cleared-line", + MESSAGE_SPAN_FADE_OUT: "messageSpan-fade-out" } const DELAY = { LOCK: 500, FALL: 1000, - AUTOREPEAT: 300, - AUTOREPEAT_PERIOD: 10, - ANIMATION: 100, + ANIMATION: 200, MESSAGE: 700 } const MOVEMENT = { @@ -51,7 +29,7 @@ const MOVEMENT = { } const SPIN = { CW: 1, // ClockWise - CCW: -1 // CounterClockWise + CCW: -1 // Counterstats.ClockWise } const T_SPIN = { NONE: "", @@ -77,27 +55,30 @@ const SCORES = [ {linesClearedName: "TRIPLE", "": 500, "T-SPIN": 1600}, {linesClearedName: "TETRIS", "": 800}, ] -const REPEATABLE_ACTIONS = [moveLeft, moveRight, softDrop] const STATE = { WAITING: "WAITING", PLAYING: "PLAYING", PAUSED: "PAUSE", GAME_OVER: "GAME OVER", } -const actionsDefaultKeys = { - moveLeft: "ArrowLeft", - moveRight: "ArrowRight", - softDrop: "ArrowDown", - hardDrop: " ", - rotateCW: "ArrowUp", - rotateCCW: "z", - hold: "c", - pause: "Escape", -} const RETRIES = 3 -const DEFAULT_THEME = "default" -var theme = null + +// Customize Array to be use as coordinates +Object.defineProperty(Array.prototype, "x", { + get: function () { return this[0] }, + set: function (x) { this[0] = x} +}) +Object.defineProperty(Array.prototype, "y", { + get: function () { return this[1] }, + set: function (y) { this[1] = y} +}) +Array.prototype.add = function(other) { return this.map((x, i) => x + other[i]) } +Array.prototype.mul = function(k) { return this.map(x => k * x) } +Array.prototype.translate = function(vector) { return this.map(pos => pos.add(vector)) } +Array.prototype.rotate = function(spin) { return [-spin*this.y, spin*this.x] } +Array.prototype.pick = function() { return this.splice(Math.floor(Math.random()*this.length), 1)[0] } + // Classes @@ -278,16 +259,7 @@ class Matrix extends MinoesTable { } draw() { - // grid - for (var y = 0; y < this.rows; y++) { - for (var x = 0; x < this.columns; x++) { - if (this.clearedLines.includes(y)) - var className = CLASSNAME.CLEARED_LINE - else - var className = this.lockedMinoes[y][x] || CLASSNAME.EMPTY_CELL - this.drawMino(x, y, className) - } - } + this.clearTable() // ghost if (showGhostCheckbox.value && !this.piece.locked && state != STATE.GAME_OVER) { @@ -299,12 +271,22 @@ class Matrix extends MinoesTable { // trail if (this.trail.height) { this.trail.minoesPos.forEach(pos => { - for (var y = pos.y; y < pos.y + this.trail.height - 1; y++) + for (var y = pos.y; y < pos.y + this.trail.height; y++) this.drawMino(pos.x, y, CLASSNAME.TRAIL) }) } this.drawPiece(this.piece) + + // locked minoes + for (var y = 0; y < this.rows; y++) { + for (var x = 0; x < this.columns; x++) { + if (this.clearedLines.includes(y)) + this.drawMino(x, y, CLASSNAME.CLEARED_LINE) + else if (this.lockedMinoes[y][x]) + this.drawMino(x, y, this.lockedMinoes[y][x]) + } + } } } @@ -315,7 +297,7 @@ class NextQueue extends MinoesTable { } newGame() { - this.pieces = Array.from({length: NEXT_PIECES}, (v, k) => new Tetromino(NEXT.PIECE_POSITION[k])) + this.pieces = Array.from({length: NEXT_PIECES}, (v, k) => new Tetromino(START_POSITION.NEXT[k])) } draw() { @@ -326,7 +308,7 @@ class NextQueue extends MinoesTable { class Stats { - constructor () { + constructor() { this.scoreCell = document.getElementById("score") this.highScoreCell = document.getElementById("highScore") this.timeCell = document.getElementById("time") @@ -335,6 +317,11 @@ class Stats { this.clearedLinesCell = document.getElementById("clearedLines") this.highScore = Number(localStorage.getItem('highScore')) this.highScoreCell.innerText = this.highScore.toLocaleString() + this.timeFormat = new Intl.DateTimeFormat("fr-FR", { + minute: "2-digit", + second: "2-digit", + timeZone: "UTC" + }) } newGame() { @@ -344,7 +331,7 @@ class Stats { this.clearedLines = 0 this.clearedLinesCell.innerText = this.clearedLines this.time = 0 - this.timeCell.innerText = timeFormat(0) + this.timeCell.innerText = this.timeFormat.format(0) this.combo = -1 this.lockDelay = DELAY.LOCK this.fallPeriod = DELAY.FALL @@ -362,11 +349,12 @@ class Stats { this.highScore = score this.highScoreCell.innerText = this.highScore.toLocaleString() } + document.title = `Webtris - Score : ${score}` } newLevel(level=null) { this.level = level || this.level + 1 - location.hash = "#level" + this.level + location.hash = this.level this.levelCell.innerText = this.level printTempTexts(`NIVEAU
${this.level}`) this.goal += 5 * this.level @@ -427,17 +415,99 @@ class Stats { } +class Settings { + constructor() { + this.keyBind = {} + for (let button of settingsSection.getElementsByTagName("button")) { + let keyName = localStorage.getItem(button.id) + if (keyName) { + button.innerHTML = keyName + this.keyBind[keyName == "Space"? " ": keyName] = playerAction[button.id] + } + } + + let autorepeatDelay = localStorage.getItem("autorepeatDelay") + if (autorepeatDelay) { + autorepeatDelayRange.value = autorepeatDelay + autorepeatDelayRange.oninput() + } + let autorepeatPeriod = localStorage.getItem("autorepeatPeriod") + if (autorepeatPeriod) { + autorepeatPeriodRange.value = autorepeatPeriod + autorepeatPeriodRange.oninput() + } + + let themeName = localStorage.getItem("themeName") + if (themeName) themeSelect.value = themeName + let showGhost = localStorage.getItem("showGhost") + if (showGhost) showGhostCheckbox.checked = showGhost == "true" + + let startLevel = localStorage.getItem("startLevel") + if (startLevel) startLevelInput.value = startLevel + } + + applyTheme = () => new Promise((resolve, reject) => { + var link = document.createElement('link') + link.id = 'theme' + link.rel = 'stylesheet' + link.type = 'text/css' + link.href = `themes/${themeSelect.value}/style.css` + link.media = 'all' + link.onload = resolve + document.head.appendChild(link) + }) + + save() { + for (let button of settingsSection.getElementsByTagName("button")) { + localStorage.setItem(button.id, button.innerHTML) + } + localStorage.setItem("autorepeatDelay", autorepeatDelayRange.value) + localStorage.setItem("autorepeatPeriod", autorepeatPeriodRange.value) + localStorage.setItem("themeName", themeSelect.value) + localStorage.setItem("showGhost", showGhostCheckbox.checked) + localStorage.setItem("startLevel", startLevelInput.value) + } + + waitKey(button) { + document.onkeydown = null + document.onkeyup = null + button.previousKey = button.innerHTML + button.innerHTML = "Touche ?" + button.onkeyup = function(event) { + event.preventDefault() + button.innerHTML = (event.key == " ") ? "Space" : event.key + settings.keyBind[event.key] = playerAction[button.id] + button.onkeyup = null + button.onblur = null + document.onkeydown = onkeydown + document.onkeyup = onkeyup + } + button.onblur = function(event) { + button.innerHTML = button.previousKey + button.onkeyup = null + button.onblur = null + document.onkeydown = onkeydown + document.onkeyup = onkeyup + } + } +} + + // Functions + +// Game logic +state = STATE.WAITING + function newGame(startLevel) { startButton.blur() + settings.save() + holdQueue.newGame() matrix.newGame() nextQueue.newGame() stats.newGame() - localStorage.setItem("startLevel", startLevel) - startSection.style.display = "none" gameSection.style.display = "block" settingsSection.style.display = "none" @@ -446,9 +516,9 @@ function newGame(startLevel) { state = STATE.PLAYING pressedKeys = new Set() actionsToRepeat = [] - addEventListener("keydown", keyDownHandler, false) - addEventListener("keyup", keyUpHandler, false) - scheduler.setInterval(clock, 1000) + scheduler.setInterval(stats.clock, 1000) + document.onkeydown = onkeydown + document.onkeyup = onkeyup newLevel(startLevel) } @@ -461,10 +531,10 @@ function generationPhase(held_piece=null) { if (!held_piece) { matrix.piece = nextQueue.pieces.shift() nextQueue.pieces.push(new Tetromino()) - nextQueue.pieces.forEach((piece, i) => piece.pos = NEXT.PIECE_POSITION[i]) + nextQueue.pieces.forEach((piece, i) => piece.pos = START_POSITION.NEXT[i]) } nextQueue.draw() - matrix.piece.pos = MATRIX.PIECE_POSITION + matrix.piece.pos = START_POSITION.MATRIX if (matrix.spaceToMove(matrix.piece.minoesPos.translate(matrix.piece.pos))){ scheduler.clearInterval(lockPhase) scheduler.setInterval(lockPhase, stats.fallPeriod) @@ -473,62 +543,19 @@ function generationPhase(held_piece=null) { gameOver() } +function lockPhase() { + move(MOVEMENT.DOWN) +} + function fallingPhase() { scheduler.clearTimeout(lockDown) matrix.piece.locked = false matrix.draw() } -function lockPhase() { - move(MOVEMENT.DOWN) -} - -function move(movement, testMinoesPos=matrix.piece.minoesPos, hardDrop=false) { - const testPos = matrix.piece.pos.add(movement) - if (matrix.spaceToMove(testMinoesPos.translate(testPos))) { - matrix.piece.pos = testPos - matrix.piece.minoesPos = testMinoesPos - matrix.piece.rotatedLast = false - if (matrix.spaceToMove(matrix.piece.minoesPos.translate(matrix.piece.pos.add(MOVEMENT.DOWN)))) - fallingPhase() - else if (!hardDrop) { - matrix.piece.locked = true - scheduler.clearTimeout(lockDown) - scheduler.setTimeout(lockDown, stats.lockDelay) - } - if (!hardDrop) - matrix.draw() - return true - } else { - if (movement == MOVEMENT.DOWN) { - matrix.piece.locked = true - if (!scheduler.timeoutTasks.has(lockDown)) - scheduler.setTimeout(lockDown, stats.lockDelay) - matrix.draw() - } - return false - } -} - -function rotate(spin) { - const test_minoes_pos = matrix.piece.minoesPos.map(pos => pos.rotate(spin)) - rotationPoint = 1 - for (const movement of matrix.piece.srs[spin][matrix.piece.orientation]) { - if (move(movement, test_minoes_pos)) { - matrix.piece.orientation = (matrix.piece.orientation + spin + 4) % 4 - matrix.piece.rotatedLast = true - if (rotationPoint == 5) - matrix.piece.rotationPoint5Used = true - return true - } - rotationPoint++ - } - return false -} - function lockDown(){ scheduler.clearInterval(lockPhase) - if (matrix.piece.minoesAbsPos.every(pos => pos.y < MATRIX.INVISIBLE_ROWS)) { + if (matrix.piece.minoesAbsPos.every(pos => pos.y < MATRIX_INVISIBLE_ROWS)) { matrix.piece.locked = false matrix.draw() gameOver() @@ -577,12 +604,12 @@ function clearLinesCleared() { function gameOver() { state = STATE.GAME_OVER + document.onkeydown = null + document.onkeyup = null messageSpan.innerHTML = "GAME
OVER" scheduler.clearInterval(lockPhase) scheduler.clearTimeout(lockDown) - scheduler.clearInterval(clock) - removeEventListener("keydown", keyDownHandler, false) - removeEventListener("keyup", keyUpHandler, false) + scheduler.clearInterval(stats.clock) var info = `GAME OVER\nScore : ${stats.score.toLocaleString()}` if (stats.score == stats.highScore) { @@ -627,20 +654,154 @@ function gameOver() { request.open('POST', 'inleaderboard.php') request.send(fd) - location.hash = "#game-over" + location.hash = "game-over" startSection.style.display = "block" - gameSection.style.display = "block" - settingsSection.style.display = "none" footer.style.display = "block" } +function move(movement, testMinoesPos=matrix.piece.minoesPos, hardDrop=false) { + const testPos = matrix.piece.pos.add(movement) + if (matrix.spaceToMove(testMinoesPos.translate(testPos))) { + matrix.piece.pos = testPos + matrix.piece.minoesPos = testMinoesPos + matrix.piece.rotatedLast = false + if (matrix.spaceToMove(matrix.piece.minoesPos.translate(matrix.piece.pos.add(MOVEMENT.DOWN)))) + fallingPhase() + else if (!hardDrop) { + matrix.piece.locked = true + scheduler.clearTimeout(lockDown) + scheduler.setTimeout(lockDown, stats.lockDelay) + } + if (!hardDrop) + matrix.draw() + return true + } else { + if (movement == MOVEMENT.DOWN) { + matrix.piece.locked = true + if (!scheduler.timeoutTasks.has(lockDown)) + scheduler.setTimeout(lockDown, stats.lockDelay) + matrix.draw() + } + return false + } +} + +function rotate(spin) { + const test_minoes_pos = matrix.piece.minoesPos.map(pos => pos.rotate(spin)) + let rotationPoint = 1 + for (const movement of matrix.piece.srs[spin][matrix.piece.orientation]) { + if (move(movement, test_minoes_pos)) { + matrix.piece.orientation = (matrix.piece.orientation + spin + 4) % 4 + matrix.piece.rotatedLast = true + if (rotationPoint == 5) + matrix.piece.rotationPoint5Used = true + return true + } + rotationPoint++ + } + return false +} + +function pause() { + state = STATE.PAUSED + location.hash = "pause" + stats.startTime = performance.now() - stats.startTime + actionsToRepeat = [] + scheduler.clearInterval(lockPhase) + scheduler.clearTimeout(lockDown) + scheduler.clearTimeout(autorepeat) + scheduler.clearInterval(stats.clock) + scheduler.clearInterval(delTempTexts) + holdQueue.draw() + matrix.draw() + nextQueue.draw() + header.style.display = "block" + gameSection.style.display = "none" + settingsSection.style.display = "block" +} + +function resume() { + settings.save() + settingsSection.style.display = "none" + gameSection.style.display = "block" + location.hash = stats.level + state = STATE.PLAYING + stats.startTime = performance.now() - stats.startTime + messageSpan.innerHTML = "" + scheduler.setInterval(lockPhase, stats.fallPeriod) + if (matrix.piece.locked) + scheduler.setTimeout(lockDown, stats.lockDelay) + scheduler.setInterval(stats.clock, 1000) + holdQueue.draw() + matrix.draw() + nextQueue.draw() + if (tempTexts.length) + scheduler.setInterval(delTempTexts, DELAY.MESSAGE) +} + +playerAction = { + moveLeft: function () { + move(MOVEMENT.LEFT) + }, + + moveRight: function () { + move(MOVEMENT.RIGHT) + }, + + softDrop: function () { + if (move(MOVEMENT.DOWN)) + stats.score++ + }, + + hardDrop: function () { + scheduler.clearInterval(lockPhase) + scheduler.clearTimeout(lockDown) + matrix.trail.minoesPos = Array.from(matrix.piece.minoesAbsPos) + for (matrix.trail.height = 0; move(MOVEMENT.DOWN, matrix.piece.minoesPos, true); matrix.trail.height++) {} + stats.score += 2 * matrix.trail.height + matrix.draw() + lockDown() + scheduler.setTimeout(() => {matrix.trail.height = 0; matrix.draw()}, DELAY.ANIMATION) + }, + + rotateCW: function () { + rotate(SPIN.CW) + }, + + rotateCCW: function () { + rotate(SPIN.CCW) + }, + + hold: function () { + if (matrix.piece.holdEnabled) { + scheduler.clearInterval(move) + scheduler.clearInterval(lockDown) + var shape = matrix.piece.shape + matrix.piece = holdQueue.piece + holdQueue.piece = new Tetromino(START_POSITION.HOLD, shape) + holdQueue.piece.holdEnabled = false + holdQueue.draw() + generationPhase(matrix.piece) + matrix.piece.holdEnabled = false + } + }, + + pauseResume: function() { + if (state == STATE.PLAYING) { + pause() + } else { + resume() + } + } +} + function autorepeat() { if (actionsToRepeat.length) { actionsToRepeat[0]() if (scheduler.timeoutTasks.has(autorepeat)) { scheduler.clearTimeout(autorepeat) - scheduler.setInterval(autorepeat, autorepeatPeriod) + scheduler.setInterval(autorepeat, autorepeatPeriodRange.value) } } else { scheduler.clearTimeout(autorepeat) @@ -648,31 +809,36 @@ function autorepeat() { } } -function keyDownHandler(e) { - if (e.key in actions[state]) - e.preventDefault() - if (!pressedKeys.has(e.key)) { - pressedKeys.add(e.key) - if (e.key in actions[state]) { - action = actions[state][e.key] +// Handle player inputs +const REPEATABLE_ACTION = [playerAction.moveLeft, playerAction.moveRight, playerAction.softDrop] +pressedKeys = new Set() +actionsToRepeat = [] + +function onkeydown(event) { + if (event.key in settings.keyBind) + event.preventDefault() + if (!pressedKeys.has(event.key)) { + pressedKeys.add(event.key) + if (event.key in settings.keyBind) { + action = settings.keyBind[event.key] action() - if (REPEATABLE_ACTIONS.includes(action)) { + if (REPEATABLE_ACTION.includes(action)) { actionsToRepeat.unshift(action) scheduler.clearTimeout(autorepeat) scheduler.clearInterval(autorepeat) if (action == softDrop) scheduler.setInterval(autorepeat, stats.fallPeriod / 20) else - scheduler.setTimeout(autorepeat, autorepeatDelay) + scheduler.setTimeout(autorepeat, autorepeatDelayRange.value) } } } } -function keyUpHandler(e) { - pressedKeys.delete(e.key) - if (e.key in actions[state]) { - action = actions[state][e.key] +function onkeyup(event) { + pressedKeys.delete(event.key) + if (event.key in settings.keyBind) { + action = settings.keyBind[event.key] if (actionsToRepeat.includes(action)) { actionsToRepeat.splice(actionsToRepeat.indexOf(action), 1) if (!actionsToRepeat.length) { @@ -683,102 +849,18 @@ function keyUpHandler(e) { } } -// actions -function moveLeft() { - move(MOVEMENT.LEFT); -} - -function moveRight() { - move(MOVEMENT.RIGHT) -} - -function softDrop() { - if (move(MOVEMENT.DOWN)) - stats.score++ -} - -function hardDrop() { - scheduler.clearInterval(lockPhase) - scheduler.clearTimeout(lockDown) - matrix.trail.minoesPos = Array.from(matrix.piece.minoesAbsPos) - for (matrix.trail.height = 0; move(MOVEMENT.DOWN, matrix.piece.minoesPos, true); matrix.trail.height++) {} - stats.score += 2 * matrix.trail.height - matrix.draw() - lockDown() - scheduler.setTimeout(clearTrail, DELAY.ANIMATION) -} - -function clearTrail() { - matrix.trail.height = 0 - matrix.draw() -} - -function rotateCW() { - rotate(SPIN.CW) -} - -function rotateCCW() { - rotate(SPIN.CCW) -} - -function hold() { - if (matrix.piece.holdEnabled) { - scheduler.clearInterval(move) - scheduler.clearInterval(lockDown) - var shape = matrix.piece.shape - matrix.piece = holdQueue.piece - holdQueue.piece = new Tetromino(HOLD.PIECE_POSITION, shape) - holdQueue.piece.holdEnabled = false - holdQueue.draw() - generationPhase(matrix.piece) - matrix.piece.holdEnabled = false - } -} - -function pause() { - state = STATE.PAUSED - location.hash = "#pause" - stats.startTime = performance.now() - stats.startTime - actionsToRepeat = [] - scheduler.clearInterval(lockPhase) - scheduler.clearTimeout(lockDown) - scheduler.clearTimeout(autorepeat) - scheduler.clearInterval(clock) - scheduler.clearInterval(delTempTexts) - holdQueue.draw() - matrix.draw() - nextQueue.draw() - gameSection.style.display = "none" - settingsSection.style.display = "block" -} - -function resume() { - applySettings() - settingsSection.style.display = "none" - gameSection.style.display = "block" - location.hash = "#level" + stats.level - state = STATE.PLAYING - stats.startTime = performance.now() - stats.startTime - messageSpan.innerHTML = "" - scheduler.setInterval(lockPhase, stats.fallPeriod) - if (matrix.piece.locked) - scheduler.setTimeout(lockDown, stats.lockDelay) - scheduler.setInterval(clock, 1000) - holdQueue.draw() - matrix.draw() - nextQueue.draw() - if (tempTexts.length) - scheduler.setInterval(delTempTexts, DELAY.MESSAGE) -} - +// Text display +tempTexts = [] function printTempTexts(text) { tempTexts.push(text) messageSpan.innerHTML = tempTexts[0] if (!scheduler.intervalTasks.has(delTempTexts)) scheduler.setInterval(delTempTexts, DELAY.MESSAGE) + messageSpan.classList.add(CLASSNAME.MESSAGE_SPAN_FADE_OUT) } function delTempTexts(self) { + messageSpan.classList.remove(CLASSNAME.MESSAGE_SPAN_FADE_OUT) if (tempTexts.length) tempTexts.shift() if (tempTexts.length) @@ -789,144 +871,28 @@ function delTempTexts(self) { } } -function clock(timestamp) { - stats.timeCell.innerText = timeFormat(1000 * ++stats.time) +function clock() { + timeCell.innerText = stats.timeFormat.format(1000 * ++stats.time) } -function getKeyName(action) { - return localStorage.getItem(action) || actionsDefaultKeys[action] -} - -// Settings functions -function applySettings() { - actions[STATE.PLAYING] = {} - actions[STATE.PLAYING][getKeyName("moveLeft")] = moveLeft - actions[STATE.PLAYING][getKeyName("moveRight")] = moveRight - actions[STATE.PLAYING][getKeyName("softDrop")] = softDrop - actions[STATE.PLAYING][getKeyName("hardDrop")] = hardDrop - actions[STATE.PLAYING][getKeyName("rotateCW")] = rotateCW - actions[STATE.PLAYING][getKeyName("rotateCCW")] = rotateCCW - actions[STATE.PLAYING][getKeyName("hold")] = hold - actions[STATE.PLAYING][getKeyName("pause")] = pause - actions[STATE.PAUSED] = {} - actions[STATE.PAUSED][getKeyName("pause")] = resume - actions[STATE.GAME_OVER] = {} - - autorepeatDelay = localStorage.getItem("autorepeatDelay") || DELAY.AUTOREPEAT - autorepeatPeriod = localStorage.getItem("autorepeatPeriod") || DELAY.AUTOREPEAT_PERIOD - - themeName = localStorage.getItem("themeName") || DEFAULT_THEME - loadTheme() - - showGhost = localStorage.getItem("showGhost") - if (showGhost) - showGhost = (showGhost == "true") - else - showGhost = true -} - -function replaceSpace(key) { - return (key == " ") ? "Space" : key -} - -function loadSettings() { - if (state == STATE.PLAYING) - pause() - - moveLeftSetKeyButton.innerHTML = replaceSpace(getKeyName("moveLeft")) - moveRightSetKeyButton.innerHTML = replaceSpace(getKeyName("moveRight")) - softDropSetKeyButton.innerHTML = replaceSpace(getKeyName("softDrop")) - hardDropSetKeyButton.innerHTML = replaceSpace(getKeyName("hardDrop")) - rotateCWSetKeyButton.innerHTML = replaceSpace(getKeyName("rotateCW")) - rotateCCWSetKeyButton.innerHTML = replaceSpace(getKeyName("rotateCCW")) - holdSetKeyButton.innerHTML = replaceSpace(getKeyName("hold")) - pauseSetKeyButton.innerHTML = replaceSpace(getKeyName("pause")) - - autorepeatDelayRange.value = autorepeatDelay - autorepeatDelayRangeLabel.innerText = `Délai initial : ${autorepeatDelay}ms` - autorepeatPeriodRange.value = autorepeatPeriod - autorepeatPeriodRangeLabel.innerText = `Période : ${autorepeatPeriod}ms` - - themeSelect.value=themeName; - - showGhostCheckbox.checked = showGhost -} - -function waitKey(button, action) { - button.innerHTML = "Touche ?" - selectedButton = button - selectedAction = action - button.blur() - addEventListener("keyup", changeKey, false) -} - -function changeKey(e) { - if (selectedButton) { - localStorage.setItem(selectedAction, e.key) - selectedButton.innerHTML = (e.key == " ") ? "Space" : e.key - selectedButton = null - } - removeEventListener("keyup", changeKey, false) -} - -function autorepeatDelayChanged() { - localStorage.setItem("autorepeatDelay", autorepeatDelayRange.value) - document.getElementById("autorepeatDelayRangeLabel").innerText = `Délai initial : ${autorepeatDelayRange.value}ms` -} - -function autorepeatPeriodChanged() { - localStorage.setItem("autorepeatPeriod", autorepeatPeriodRange.value) - document.getElementById("autorepeatPeriodRangeLabel").innerText = `Période : ${autorepeatPeriodRange.value}ms` -} - -function themeChanged() { - themeName = document.getElementById("themeSelect").value - localStorage.setItem("themeName", themeName) - loadTheme() -} - -function loadTheme() { - var link = document.createElement('link') - link.id = "theme"; - link.rel = 'stylesheet' - link.type = 'text/css' - link.href = 'themes/' + themeName+ '/style.css' - link.media = 'all' - if (theme) document.head.removeChild(theme) - document.head.appendChild(link); -} - -function showGhostChanged() { - showGhost = (showGhostCheckbox.checked == true) - localStorage.setItem("showGhost", showGhost) -} - -// global variables -timeFormat = new Intl.DateTimeFormat("fr-FR", { - minute: "2-digit", - second: "2-digit", - timeZone: "UTC" -}).format -state = STATE.WAITING -tempTexts = [] -actions = {} -selectedButton = null -selectedAction = "" - -window.onload = function() { - location.hash = "" - - startLevelInput.value = localStorage.getItem("startLevel") || 1 +// Initialization +window.onload = async function() { scheduler = new Scheduler() holdQueue = new HoldQueue() - stats = new Stats() - matrix = new Matrix() + stats = new Stats() + matrix = new Matrix() nextQueue = new NextQueue() - - applySettings() - loadSettings() - - startButton.disabled = false - startButton.focus() + settings = new Settings() + await settings.applyTheme() + let startLevel = parseInt(location.hash.slice(1)) + body.style.display = "block" + if (1 <= startLevel && startLevel <= 15) { + newGame(startLevel) + } else { + location.hash = "" + startButton.focus() + } } + +window.onblur = pause \ No newline at end of file diff --git a/index.php b/index.php index 87ef36d..6c4e94e 100644 --- a/index.php +++ b/index.php @@ -1,13 +1,13 @@ ["label"=>"Gauche", "defaultKey"=>"ArrowLeft"], - "moveRight" => ["label"=>"Droite", "defaultKey"=>"ArrowRight"], - "softDrop" => ["label"=>"Chute lente", "defaultKey"=>"ArrowDown"], - "hardDrop" => ["label"=>"Chute rapide", "defaultKey"=>"Space"], - "rotateCW" => ["label"=>"Rotation horaire", "defaultKey"=>"ArrowUp"], - "rotateCCW" => ["label"=>"Rotation anti-horaire", "defaultKey"=>"z"], - "hold" => ["label"=>"Garde", "defaultKey"=>"c"], - "pause" => ["label"=>"Pause/Reprise", "defaultKey"=>"Escape"] + "moveLeft" => ["label"=>"Gauche", "defaultKey"=>"ArrowLeft"], + "moveRight" => ["label"=>"Droite", "defaultKey"=>"ArrowRight"], + "softDrop" => ["label"=>"Chute lente", "defaultKey"=>"ArrowDown"], + "hardDrop" => ["label"=>"Chute rapide", "defaultKey"=>"Space"], + "rotateCW" => ["label"=>"Rotation horaire", "defaultKey"=>"ArrowUp"], + "rotateCCW" => ["label"=>"Rotation anti-horaire", "defaultKey"=>"z"], + "hold" => ["label"=>"Garde", "defaultKey"=>"c"], + "pauseResume" => ["label"=>"Pause/Reprise", "defaultKey"=>"Escape"] ]; function echoTable($id, $invisibleRows, $visibleRows, $columns) { @@ -38,17 +38,19 @@ - -
+ + +
Clavier
$parameters) { ?> - - + + @@ -58,16 +60,16 @@ Répétition automatique
- + - +
- Thème + Style
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
- - -
@@ -153,7 +155,7 @@
- +
@@ -164,7 +166,6 @@
Sources d'inspiration des thèmes : Ania Kubow - Manjaro Tetris Effect
diff --git a/leaderboard.js b/leaderboard.js index 611ba4f..ddfe14e 100644 --- a/leaderboard.js +++ b/leaderboard.js @@ -1,11 +1,11 @@ const DEFAULT_THEME = "default" -function loadTheme() { +function applyTheme() { var link = document.createElement('link') link.id = "theme"; link.rel = 'stylesheet' link.type = 'text/css' - link.href = 'themes/' + themeName + '/style.css' + link.href = `themes/'${themeName}/style.css` link.media = 'all' document.head.appendChild(link); } diff --git a/themes/Effect/style.css b/themes/Effect/style.css index 772bae5..7b13387 100644 --- a/themes/Effect/style.css +++ b/themes/Effect/style.css @@ -57,7 +57,7 @@ legend, label { fieldset > div { display: grid; - grid-template-columns: 3fr 2fr 3fr 2fr; + grid-template-columns: repeat(4, 1fr); grid-column-gap: 2em; grid-row-gap: 1em; justify-items: right; @@ -73,18 +73,9 @@ label { } #themePreviewTable { - grid-column: 3 / 5; + grid-column: 1 / 5; width: auto; -} - -fieldset input[type="checkbox"] { - width: auto; -} - -#showGhostDiv { - grid-row: 2; - grid-column: 1/5; - width: 100%; + margin: auto; } #gameSection div { @@ -125,7 +116,7 @@ fieldset input[type="checkbox"] { .minoes-table { table-layout: fixed; border-spacing: 0; - margin: auto; + margin: -6vmin 0 auto 0; } th, td { @@ -189,12 +180,9 @@ td { border: 0; } -footer { - position: absolute; - left: 50%; - bottom: 1em; - transform: translateX(-50%); - display: none; +footer > * { + margin: 1em auto; + width: 100%; } a { @@ -208,6 +196,7 @@ a:hover { } #credits { + width: 100%; font-size: 0.8em; gap: 0.8em; } @@ -220,25 +209,23 @@ a:hover { text-align: center; border-top: 1px solid white; caption-side: top; + border-spacing: 1em 0.2em; } #leaderboard caption { color: white; } +#leaderboard tr, #leaderboard td { - font-family: 'Share Tech'; - text-align: center; - font-size: 2.5vmin; - color: white; - border: 0; + border: 0 !important; + margin: auto 10em; } -#leaderboard td:first-child{ +#leaderboard td:first-child { text-align: left; } #leaderboard td:last-child { text-align: right; } - diff --git a/themes/Kubow/style.css b/themes/Kubow/style.css index 980f132..97f52bd 100644 --- a/themes/Kubow/style.css +++ b/themes/Kubow/style.css @@ -64,7 +64,7 @@ legend, #leaderboard caption { fieldset > div { display: grid; - grid-template-columns: 3fr 2fr 3fr 2fr; + grid-template-columns: repeat(4, 1fr); grid-column-gap: 1em; grid-row-gap: 1em; justify-items: right; @@ -143,20 +143,10 @@ select:hover { } #themePreviewTable { - grid-column: 3 / 5; + grid-column: 1 / 5; width: auto; } -fieldset input[type="checkbox"] { - width: auto; -} - -#showGhostDiv { - grid-row: 2; - grid-column: 1/5; - width: 100%; -} - #gameSection div { display: grid; grid-gap: 3vmin; @@ -289,6 +279,8 @@ a { gap: 0.8em; } + + #leaderboard { margin: auto; } diff --git a/themes/default/style.css b/themes/default/style.css index 0b0deaa..caa0fe7 100644 --- a/themes/default/style.css +++ b/themes/default/style.css @@ -1,16 +1,17 @@ body { - margin: 0; + margin: auto; font-family: sans-serif; color: white; background: #222; + width: max-content; } h1 { - text-align: center; + text-align: center; } section { - margin: 1em; + margin: 1em auto; } div { @@ -19,12 +20,9 @@ div { align-items: center; } -#settingsSection { - width: auto; -} - fieldset { border: 1px solid #444; + margin: 0.5em; } legend { @@ -34,7 +32,7 @@ legend { fieldset > div { display: grid; - grid-template-columns: 3fr 2fr 3fr 2fr; + grid-template-columns: repeat(4, 1fr); grid-column-gap: 2em; grid-row-gap: 1em; justify-items: right; @@ -50,18 +48,9 @@ label { } #themePreviewTable { - grid-column: 3 / 5; + grid-column: 1 / 5; width: auto; -} - -fieldset input[type="checkbox"] { - width: auto; -} - -#showGhostDiv { - grid-row: 2; - grid-column: 1/5; - width: 100%; + margin: auto; } #gameSection div { @@ -92,6 +81,13 @@ fieldset input[type="checkbox"] { text-align: center; font-weight: bold; } +@keyframes message-fade-out { + from {opacity: 1;} + to {opacity: 0;} +} +.messageSpan-fade-out { + animation: message-fade-out 500ms 500ms; +} #nextTable { grid-column: 3; @@ -102,7 +98,7 @@ fieldset input[type="checkbox"] { .minoes-table { table-layout: fixed; border-spacing: 0; - margin: auto; + margin: -6vmin 0 auto 0; } th, td { @@ -160,16 +156,27 @@ td { border-color: #ffdada; } -.locked-mino, .cleared-line { +.locked-mino { background: #AAA; border: 1px solid #CCC; border-radius: 1px; } +@keyframes mino-fade-out { + from { + background: rgba(170, 170, 170, 1); + border: 1px solid #CCC; + } + to { + background: rgba(170, 170, 170, 0); + border: 1px solid #444; + } +} +.cleared-line, .trail { - background: #333; + animation: mino-fade-out 200ms; + background: transparent; border: 1px solid #444; - border-radius: 1px; } .ghost { @@ -193,39 +200,41 @@ td { border: 0; } -footer { - position: absolute; - left: 50%; - bottom: 1em; - transform: translateX(-50%); - display: none; -} - a { text-decoration: none; color: lightblue; } +footer > * { + margin: 1em auto; + width: 100%; +} + #credits { - width: max-content; + width: 100%; font-size: 0.8em; gap: 0.8em; } + + #leaderboard { min-width: 25%; margin: auto; text-align: center; border-top: 1px solid white; caption-side: top; + border-spacing: 1em 0.2em; } #leaderboard caption { color: white; } +#leaderboard tr, #leaderboard td { border: 0 !important; + margin: auto 10em; } #leaderboard td:first-child { @@ -235,5 +244,3 @@ a { #leaderboard td:last-child { text-align: right; } - - diff --git a/thumbnail.png b/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..e67ea0b5c0dd244dce9af005203e2bfe36b4e5d6 GIT binary patch literal 97912 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 literal 0 HcmV?d00001