3D
This commit is contained in:
parent
bf9554d917
commit
09f4785ef4
179
css/binaural.css
179
css/binaural.css
@ -1,38 +1,66 @@
|
|||||||
body * {
|
.container-fluid {
|
||||||
perspective: 1000px;
|
perspective: 1000px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#screenRow {
|
.container-fluid * {
|
||||||
transform: rotate3d(-1, 0, 0, 15deg);
|
|
||||||
transform-style: preserve-3d;
|
transform-style: preserve-3d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#screenRow {
|
||||||
|
display: block;
|
||||||
|
transform: rotateX(var(--rX)) rotateY(var(--rY));
|
||||||
|
}
|
||||||
|
|
||||||
|
#screenRow * {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#screenRow .col {
|
||||||
|
display: inline-block !important;
|
||||||
|
width: max-content;
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
background-color: #363941;
|
background-color: #363941;
|
||||||
}
|
}
|
||||||
|
|
||||||
.minoes-table {
|
.minoes-table th,
|
||||||
transform-style: preserve-3d;
|
.minoes-table td {
|
||||||
|
display: inline-block !important;
|
||||||
|
width: max-content;
|
||||||
transform: translateZ(var(--cell-side));
|
transform: translateZ(var(--cell-side));
|
||||||
transform: translateZ(0);
|
|
||||||
will-change: transform;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.minoes-table tr {
|
.minoes-table tr {
|
||||||
transform-style: preserve-3d;
|
width: max-content;
|
||||||
|
height: var(--cell-side);
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsTable tr {
|
||||||
|
display: table;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsTable th,
|
||||||
|
#statsTable td {
|
||||||
|
display: table-cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr.matrix td:not(.mino) {
|
tr.matrix td:not(.mino) {
|
||||||
border: 0;
|
border: 0;
|
||||||
|
will-change: transform;
|
||||||
|
transform: translateZ(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.minoes-table td {
|
.minoes-table td {
|
||||||
will-change: transform;
|
width: var(--cell-side) !important;
|
||||||
|
height: var(--cell-side);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mino {
|
.minoes-table .mino {
|
||||||
background: var(--background-color);
|
background: var(--background-color);
|
||||||
transform-style: preserve-3d;
|
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,63 +73,84 @@ tr.matrix td:not(.mino) {
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: inherit;
|
width: inherit;
|
||||||
height: inherit;
|
height: inherit;
|
||||||
background: var(--light-color);
|
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mino::before {
|
.mino::before {
|
||||||
transform: rotateY(-90deg);
|
background: var(--light-color);
|
||||||
|
transform: translateZ(calc(-1 * var(--cell-side))) rotateY(-90deg);
|
||||||
transform-origin: left;
|
transform-origin: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.right .mino::before {
|
||||||
|
background: var(--dark-color);
|
||||||
|
transform: translateZ(calc(-1 * var(--cell-side))) rotateY(90deg);
|
||||||
|
transform-origin: right;
|
||||||
|
}
|
||||||
|
|
||||||
.mino::after {
|
.mino::after {
|
||||||
transform: rotateX(90deg);
|
background: var(--light-color);
|
||||||
|
transform: translateZ(calc(-1 * var(--cell-side))) rotateX(90deg);
|
||||||
transform-origin: top;
|
transform-origin: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bottom .mino::after {
|
||||||
|
background: var(--dark-color);
|
||||||
|
transform: translateZ(calc(-1 * var(--cell-side))) rotateX(-90deg);
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
.I.mino {
|
.I.mino {
|
||||||
--background-color: #42AFE180;
|
--background-color: #42AFE1B0;
|
||||||
--light-color: #6CEAFF80;
|
--light-color: #6CEAFF80;
|
||||||
|
--dark-color: #00a4b0B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.J.mino {
|
.J.mino {
|
||||||
--background-color: #1165B5B0;
|
--background-color: #1165B5B0;
|
||||||
--light-color: #339BFF80;
|
--light-color: #339BFF80;
|
||||||
|
--dark-color: #00009dB0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.L.mino {
|
.L.mino {
|
||||||
--background-color: #F38927B0;
|
--background-color: #F38927B0;
|
||||||
--light-color: #FFBA5980;
|
--light-color: #FFBA5980;
|
||||||
|
--dark-color: #c54800B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.O.mino {
|
.O.mino {
|
||||||
--background-color: #F6D03CB0;
|
--background-color: #F6D03CB0;
|
||||||
--light-color: #FFFF7F80;
|
--light-color: #FFFF7F80;
|
||||||
|
--dark-color: #ca9501B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.S.mino {
|
.S.mino {
|
||||||
--background-color: #51B84DB0;
|
--background-color: #51B84DB0;
|
||||||
--light-color: #84F88080;
|
--light-color: #84F88080;
|
||||||
|
--dark-color: #1cbc02B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.T.mino {
|
.T.mino {
|
||||||
--background-color: #9739A2B0;
|
--background-color: #9739A2B0;
|
||||||
--light-color: #D958E980;
|
--light-color: #D958E980;
|
||||||
|
--dark-color: #6e019aB0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Z.mino {
|
.Z.mino {
|
||||||
--background-color: #EB4F65B0;
|
--background-color: #EB4F65B0;
|
||||||
--light-color: #FF7F7980;
|
--light-color: #FF7F7980;
|
||||||
|
--dark-color: #ad1936B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ghost.mino {
|
.ghost.mino {
|
||||||
--background-color: #8888;
|
--background-color: #8886;
|
||||||
--light-color: #CCC8;
|
--light-color: #CCC6;
|
||||||
|
--dark-color: #3336;
|
||||||
}
|
}
|
||||||
|
|
||||||
.locking.mino {
|
.locking.mino {
|
||||||
--background-color: #EEE8;
|
--background-color: #EEEB;
|
||||||
--light-color: #FFF8;
|
--light-color: #FFFB;
|
||||||
|
--dark-color: #DDDB;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disabled.mino {
|
.disabled.mino {
|
||||||
@ -109,15 +158,97 @@ tr.matrix td:not(.mino) {
|
|||||||
--light-color: #FFF8;
|
--light-color: #FFF8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hard-dropped-table-animation {
|
#holdTable .J,
|
||||||
animation: none;
|
#holdTable .L,
|
||||||
|
#holdTable .S,
|
||||||
|
#holdTable .T,
|
||||||
|
#holdTable .Z,
|
||||||
|
#nextTable .J,
|
||||||
|
#nextTable .L,
|
||||||
|
#nextTable .S,
|
||||||
|
#nextTable .T,
|
||||||
|
#nextTable .Z {
|
||||||
|
transform: translateZ(var(--cell-side)) translateX(50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes cleared-line-animation {
|
@keyframes cleared-line-animation {
|
||||||
from {
|
from {
|
||||||
background-color: #eeeeee;
|
opacity: 1;
|
||||||
|
background-color: #ceffff66;
|
||||||
|
box-shadow: -200px 0 5px white, 200px 0 5px white;
|
||||||
}
|
}
|
||||||
to {
|
to {
|
||||||
|
opacity: 1;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes show-level-animation {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(200%);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: translateY(0) scaleY(1);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(-100%) scaleY(0);
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes zoom-in-animation {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale3d(0.3, 0.3, 0.3);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale3d(1.5, 0, 1);
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes rotate-in-animation {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
transform:rotate(200deg);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
transform:translateZ(0);
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale3d(1.5, 0, 1);
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes game-over-animation {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(200%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0) scaleY(1);
|
||||||
|
line-height: var(--bs-body-line-height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
:root {
|
:root {
|
||||||
--cell-side: 24px;
|
--cell-side: 24px;
|
||||||
|
--rX: -15deg;
|
||||||
|
--rY: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -32,42 +32,42 @@ tr.matrix td:not(.mino) {
|
|||||||
width: inherit;
|
width: inherit;
|
||||||
height: inherit;
|
height: inherit;
|
||||||
display: block;
|
display: block;
|
||||||
box-shadow: 0 -6px 0 var(--light-color);
|
box-shadow: 0 -6px 0 var(--box-shadow-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.I.mino {
|
.I.mino {
|
||||||
--background-color: #42AFE1;
|
--background-color: #42AFE1;
|
||||||
--light-color: #6CEAFF;
|
--box-shadow-color: #6CEAFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.J.mino {
|
.J.mino {
|
||||||
--background-color: #1165B5;
|
--background-color: #1165B5;
|
||||||
--light-color: #339BFF;
|
--box-shadow-color: #339BFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.L.mino {
|
.L.mino {
|
||||||
--background-color: #F38927;
|
--background-color: #F38927;
|
||||||
--light-color: #FFBA59;
|
--box-shadow-color: #FFBA59;
|
||||||
}
|
}
|
||||||
|
|
||||||
.O.mino {
|
.O.mino {
|
||||||
--background-color: #F6D03C;
|
--background-color: #F6D03C;
|
||||||
--light-color: #FFFF7F;
|
--box-shadow-color: #FFFF7F;
|
||||||
}
|
}
|
||||||
|
|
||||||
.S.mino {
|
.S.mino {
|
||||||
--background-color: #51B84D;
|
--background-color: #51B84D;
|
||||||
--light-color: #84F880;
|
--box-shadow-color: #84F880;
|
||||||
}
|
}
|
||||||
|
|
||||||
.T.mino {
|
.T.mino {
|
||||||
--background-color: #9739A2;
|
--background-color: #9739A2;
|
||||||
--light-color: #D958E9;
|
--box-shadow-color: #D958E9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Z.mino {
|
.Z.mino {
|
||||||
--background-color: #EB4F65;
|
--background-color: #EB4F65;
|
||||||
--light-color: #FF7F79;
|
--box-shadow-color: #FF7F79;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ghost.mino {
|
.ghost.mino {
|
||||||
|
45
js/app.js
45
js/app.js
@ -244,7 +244,7 @@ messagesSpan.onanimationend = function(event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function gameOver() {
|
function gameOver() {
|
||||||
matrix.piece.locked = false
|
matrix.piece.locked = true
|
||||||
matrix.drawPiece()
|
matrix.drawPiece()
|
||||||
|
|
||||||
document.onkeydown = null
|
document.onkeydown = null
|
||||||
@ -260,3 +260,46 @@ window.onbeforeunload = function(event) {
|
|||||||
settings.save()
|
settings.save()
|
||||||
if (playing) return false;
|
if (playing) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Play with 3D
|
||||||
|
let mousedown = false
|
||||||
|
let rX0 = 0
|
||||||
|
let rY0 = 0
|
||||||
|
let clientX0 = 0
|
||||||
|
let clientY0 = 0
|
||||||
|
|
||||||
|
screenRow.onmousedown = function(event) {
|
||||||
|
mousedown = true
|
||||||
|
rX0 = parseInt(getComputedStyle(screenRow).getPropertyValue("--rX"))
|
||||||
|
dy0 = parseInt(getComputedStyle(screenRow).getPropertyValue("--rY"))
|
||||||
|
clientX0 = event.clientX
|
||||||
|
clientY0 = event.clientY
|
||||||
|
}
|
||||||
|
|
||||||
|
screenRow.onmousemove = function(event) {
|
||||||
|
if (mousedown) {
|
||||||
|
event.preventDefault()
|
||||||
|
rX = (rX0 - event.clientY + clientY0 + 360) % 360
|
||||||
|
screenRow.style.setProperty("--rX", rX + "deg")
|
||||||
|
if (rX <= 180) {
|
||||||
|
screenRow.classList.remove("top")
|
||||||
|
screenRow.classList.add("bottom")
|
||||||
|
} else {
|
||||||
|
screenRow.classList.add("top")
|
||||||
|
screenRow.classList.remove("bottom")
|
||||||
|
}
|
||||||
|
rY = (rY0 + event.clientX - clientX0 + 360) % 360
|
||||||
|
screenRow.style.setProperty("--rY", rY + "deg")
|
||||||
|
if (rY >= 180) {
|
||||||
|
screenRow.classList.remove("left")
|
||||||
|
screenRow.classList.add("right")
|
||||||
|
} else {
|
||||||
|
screenRow.classList.add("left")
|
||||||
|
screenRow.classList.remove("right")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
screenRow.onmouseup = function(event) {
|
||||||
|
mousedown = false
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user