refactor archi
This commit is contained in:
32 files changed
+4943
-151
No files matched your search
+144
-1
@@ -23,4 +23,147 @@ webhook/secret-key.secret
|
||||
.history
|
||||
.ionide
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/node
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=node
|
||||
|
||||
### Node ###
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
### Node Patch ###
|
||||
# Serverless Webpack directories
|
||||
.webpack/
|
||||
|
||||
# Optional stylelint cache
|
||||
|
||||
# SvelteKit build / generate output
|
||||
.svelte-kit
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/node
|
||||
@@ -6,4 +6,8 @@ Its license [here](./LICENSE.txt) still applies with the addition of our Apache
|
||||
|
||||
## PLay
|
||||
|
||||
La version de production est disponible à [https://2048.g.endmove.eu](https://2048.g.endmove.eu).
|
||||
The production version is available at [https://2048.g.endmove.eu](https://2048.g.endmove.eu).
|
||||
|
||||
## To contribut
|
||||
|
||||
Run `npm install` in the repository directory. To build SCSS run `npm run build`. **<!> WARN <!>**: don't edit ``.css`` file but only ``.scss``.
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Whitespace-only changes.
@@ -52,7 +52,8 @@
|
||||
transform: $args;
|
||||
}
|
||||
|
||||
// Keyframe animations
|
||||
//Keyframe animations
|
||||
//it's normal if var is undefined ;-)
|
||||
@mixin keyframes($animation-name) {
|
||||
@-webkit-keyframes $animation-name {
|
||||
@content;
|
||||
@@ -3,12 +3,12 @@ html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #faf8ef;
|
||||
color: #776e65;
|
||||
color: #776E65;
|
||||
font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 18px; }
|
||||
|
||||
body {
|
||||
margin: 80px 0; }
|
||||
margin: 40px 0; }
|
||||
|
||||
.heading:after {
|
||||
content: "";
|
||||
@@ -22,30 +22,30 @@ h1.title {
|
||||
display: block;
|
||||
float: left; }
|
||||
|
||||
@-webkit-keyframes move-up {
|
||||
@-webkit-keyframes $animation-name {
|
||||
0% {
|
||||
top: 25px;
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
top: -50px;
|
||||
opacity: 0; } }
|
||||
@-moz-keyframes move-up {
|
||||
|
||||
@-moz-keyframes $animation-name {
|
||||
0% {
|
||||
top: 25px;
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
top: -50px;
|
||||
opacity: 0; } }
|
||||
@keyframes move-up {
|
||||
|
||||
@keyframes $animation-name {
|
||||
0% {
|
||||
top: 25px;
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
top: -50px;
|
||||
opacity: 0; } }
|
||||
|
||||
.scores-container {
|
||||
float: right;
|
||||
text-align: right; }
|
||||
@@ -101,7 +101,7 @@ p {
|
||||
line-height: 1.65; }
|
||||
|
||||
a {
|
||||
color: #776e65;
|
||||
color: #776E65;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
cursor: pointer; }
|
||||
@@ -119,24 +119,24 @@ hr {
|
||||
width: 500px;
|
||||
margin: 0 auto; }
|
||||
|
||||
@-webkit-keyframes fade-in {
|
||||
@-webkit-keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
@-moz-keyframes fade-in {
|
||||
|
||||
@-moz-keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
@keyframes fade-in {
|
||||
|
||||
@keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
.game-container {
|
||||
margin-top: 40px;
|
||||
position: relative;
|
||||
@@ -232,81 +232,97 @@ hr {
|
||||
width: 107px;
|
||||
height: 107px;
|
||||
line-height: 107px; }
|
||||
|
||||
.tile.tile-position-1-1 {
|
||||
-webkit-transform: translate(0px, 0px);
|
||||
-moz-transform: translate(0px, 0px);
|
||||
-ms-transform: translate(0px, 0px);
|
||||
transform: translate(0px, 0px); }
|
||||
|
||||
.tile.tile-position-1-2 {
|
||||
-webkit-transform: translate(0px, 121px);
|
||||
-moz-transform: translate(0px, 121px);
|
||||
-ms-transform: translate(0px, 121px);
|
||||
transform: translate(0px, 121px); }
|
||||
|
||||
.tile.tile-position-1-3 {
|
||||
-webkit-transform: translate(0px, 242px);
|
||||
-moz-transform: translate(0px, 242px);
|
||||
-ms-transform: translate(0px, 242px);
|
||||
transform: translate(0px, 242px); }
|
||||
|
||||
.tile.tile-position-1-4 {
|
||||
-webkit-transform: translate(0px, 363px);
|
||||
-moz-transform: translate(0px, 363px);
|
||||
-ms-transform: translate(0px, 363px);
|
||||
transform: translate(0px, 363px); }
|
||||
|
||||
.tile.tile-position-2-1 {
|
||||
-webkit-transform: translate(121px, 0px);
|
||||
-moz-transform: translate(121px, 0px);
|
||||
-ms-transform: translate(121px, 0px);
|
||||
transform: translate(121px, 0px); }
|
||||
|
||||
.tile.tile-position-2-2 {
|
||||
-webkit-transform: translate(121px, 121px);
|
||||
-moz-transform: translate(121px, 121px);
|
||||
-ms-transform: translate(121px, 121px);
|
||||
transform: translate(121px, 121px); }
|
||||
|
||||
.tile.tile-position-2-3 {
|
||||
-webkit-transform: translate(121px, 242px);
|
||||
-moz-transform: translate(121px, 242px);
|
||||
-ms-transform: translate(121px, 242px);
|
||||
transform: translate(121px, 242px); }
|
||||
|
||||
.tile.tile-position-2-4 {
|
||||
-webkit-transform: translate(121px, 363px);
|
||||
-moz-transform: translate(121px, 363px);
|
||||
-ms-transform: translate(121px, 363px);
|
||||
transform: translate(121px, 363px); }
|
||||
|
||||
.tile.tile-position-3-1 {
|
||||
-webkit-transform: translate(242px, 0px);
|
||||
-moz-transform: translate(242px, 0px);
|
||||
-ms-transform: translate(242px, 0px);
|
||||
transform: translate(242px, 0px); }
|
||||
|
||||
.tile.tile-position-3-2 {
|
||||
-webkit-transform: translate(242px, 121px);
|
||||
-moz-transform: translate(242px, 121px);
|
||||
-ms-transform: translate(242px, 121px);
|
||||
transform: translate(242px, 121px); }
|
||||
|
||||
.tile.tile-position-3-3 {
|
||||
-webkit-transform: translate(242px, 242px);
|
||||
-moz-transform: translate(242px, 242px);
|
||||
-ms-transform: translate(242px, 242px);
|
||||
transform: translate(242px, 242px); }
|
||||
|
||||
.tile.tile-position-3-4 {
|
||||
-webkit-transform: translate(242px, 363px);
|
||||
-moz-transform: translate(242px, 363px);
|
||||
-ms-transform: translate(242px, 363px);
|
||||
transform: translate(242px, 363px); }
|
||||
|
||||
.tile.tile-position-4-1 {
|
||||
-webkit-transform: translate(363px, 0px);
|
||||
-moz-transform: translate(363px, 0px);
|
||||
-ms-transform: translate(363px, 0px);
|
||||
transform: translate(363px, 0px); }
|
||||
|
||||
.tile.tile-position-4-2 {
|
||||
-webkit-transform: translate(363px, 121px);
|
||||
-moz-transform: translate(363px, 121px);
|
||||
-ms-transform: translate(363px, 121px);
|
||||
transform: translate(363px, 121px); }
|
||||
|
||||
.tile.tile-position-4-3 {
|
||||
-webkit-transform: translate(363px, 242px);
|
||||
-moz-transform: translate(363px, 242px);
|
||||
-ms-transform: translate(363px, 242px);
|
||||
transform: translate(363px, 242px); }
|
||||
|
||||
.tile.tile-position-4-4 {
|
||||
-webkit-transform: translate(363px, 363px);
|
||||
-moz-transform: translate(363px, 363px);
|
||||
@@ -332,40 +348,40 @@ hr {
|
||||
background: #eee4da;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
|
||||
.tile.tile-4 .tile-inner {
|
||||
background: #ede0c8;
|
||||
background: #eee1c9;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
|
||||
.tile.tile-8 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #f2b179; }
|
||||
background: #f3b27a; }
|
||||
.tile.tile-16 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #f59563; }
|
||||
background: #f69664; }
|
||||
.tile.tile-32 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #f67c5f; }
|
||||
background: #f77c5f; }
|
||||
.tile.tile-64 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #f65e3b; }
|
||||
background: #f75f3b; }
|
||||
.tile.tile-128 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #edcf72;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.2381), inset 0 0 0 1px rgba(255, 255, 255, 0.14286);
|
||||
background: #edd073;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.238095), inset 0 0 0 1px rgba(255, 255, 255, 0.142857);
|
||||
font-size: 45px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-128 .tile-inner {
|
||||
font-size: 25px; } }
|
||||
.tile.tile-256 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #edcc61;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.19048);
|
||||
background: #edcc62;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.190476);
|
||||
font-size: 45px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-256 .tile-inner {
|
||||
font-size: 25px; } }
|
||||
.tile.tile-512 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #edc850;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381);
|
||||
background: #edc950;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.396825), inset 0 0 0 1px rgba(255, 255, 255, 0.238095);
|
||||
font-size: 45px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-512 .tile-inner {
|
||||
@@ -373,7 +389,7 @@ hr {
|
||||
.tile.tile-1024 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #edc53f;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571);
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.285714);
|
||||
font-size: 35px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-1024 .tile-inner {
|
||||
@@ -381,61 +397,61 @@ hr {
|
||||
.tile.tile-2048 .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #edc22e;
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.55556), inset 0 0 0 1px rgba(255, 255, 255, 0.33333);
|
||||
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.555556), inset 0 0 0 1px rgba(255, 255, 255, 0.333333);
|
||||
font-size: 35px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-2048 .tile-inner {
|
||||
font-size: 15px; } }
|
||||
.tile.tile-super .tile-inner {
|
||||
color: #f9f6f2;
|
||||
background: #3c3a32;
|
||||
background: #3c3a33;
|
||||
font-size: 30px; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.tile.tile-super .tile-inner {
|
||||
font-size: 10px; } }
|
||||
|
||||
@-webkit-keyframes appear {
|
||||
@-webkit-keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@-moz-keyframes appear {
|
||||
|
||||
@-moz-keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@keyframes appear {
|
||||
|
||||
@keyframes $animation-name {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
|
||||
.tile-new .tile-inner {
|
||||
-webkit-animation: appear 200ms ease 100ms;
|
||||
-moz-animation: appear 200ms ease 100ms;
|
||||
@@ -444,60 +460,57 @@ hr {
|
||||
-moz-animation-fill-mode: backwards;
|
||||
animation-fill-mode: backwards; }
|
||||
|
||||
@-webkit-keyframes pop {
|
||||
@-webkit-keyframes $animation-name {
|
||||
0% {
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
50% {
|
||||
-webkit-transform: scale(1.2);
|
||||
-moz-transform: scale(1.2);
|
||||
-ms-transform: scale(1.2);
|
||||
transform: scale(1.2); }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@-moz-keyframes pop {
|
||||
|
||||
@-moz-keyframes $animation-name {
|
||||
0% {
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
50% {
|
||||
-webkit-transform: scale(1.2);
|
||||
-moz-transform: scale(1.2);
|
||||
-ms-transform: scale(1.2);
|
||||
transform: scale(1.2); }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@keyframes pop {
|
||||
|
||||
@keyframes $animation-name {
|
||||
0% {
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
|
||||
50% {
|
||||
-webkit-transform: scale(1.2);
|
||||
-moz-transform: scale(1.2);
|
||||
-ms-transform: scale(1.2);
|
||||
transform: scale(1.2); }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
|
||||
.tile-merged .tile-inner {
|
||||
z-index: 20;
|
||||
-webkit-animation: pop 200ms ease 100ms;
|
||||
@@ -536,44 +549,36 @@ hr {
|
||||
@media screen and (max-width: 520px) {
|
||||
html, body {
|
||||
font-size: 15px; }
|
||||
|
||||
body {
|
||||
margin: 20px 0;
|
||||
padding: 0 20px; }
|
||||
|
||||
h1.title {
|
||||
font-size: 27px;
|
||||
margin-top: 15px; }
|
||||
|
||||
.container {
|
||||
width: 280px;
|
||||
margin: 0 auto; }
|
||||
|
||||
.score-container, .best-container {
|
||||
margin-top: 0;
|
||||
padding: 15px 10px;
|
||||
min-width: 40px; }
|
||||
|
||||
.heading {
|
||||
margin-bottom: 10px; }
|
||||
|
||||
.game-intro {
|
||||
width: 55%;
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
line-height: 1.65; }
|
||||
|
||||
.restart-button {
|
||||
width: 42%;
|
||||
padding: 0;
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px; }
|
||||
|
||||
.game-container {
|
||||
margin-top: 17px;
|
||||
margin-top: 40px;
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
padding: 15px;
|
||||
cursor: default;
|
||||
-webkit-touch-callout: none;
|
||||
-ms-touch-callout: none;
|
||||
@@ -584,8 +589,8 @@ hr {
|
||||
touch-action: none;
|
||||
background: #bbada0;
|
||||
border-radius: 6px;
|
||||
width: 280px;
|
||||
height: 280px;
|
||||
width: 500px;
|
||||
height: 500px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box; }
|
||||
@@ -633,122 +638,115 @@ hr {
|
||||
display: inline-block; }
|
||||
.game-container .game-message.game-won, .game-container .game-message.game-over {
|
||||
display: block; }
|
||||
|
||||
.grid-container {
|
||||
position: absolute;
|
||||
z-index: 1; }
|
||||
|
||||
.grid-row {
|
||||
margin-bottom: 10px; }
|
||||
margin-bottom: 15px; }
|
||||
.grid-row:last-child {
|
||||
margin-bottom: 0; }
|
||||
.grid-row:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both; }
|
||||
|
||||
.grid-cell {
|
||||
width: 57.5px;
|
||||
height: 57.5px;
|
||||
margin-right: 10px;
|
||||
width: 106.25px;
|
||||
height: 106.25px;
|
||||
margin-right: 15px;
|
||||
float: left;
|
||||
border-radius: 3px;
|
||||
background: rgba(238, 228, 218, 0.35); }
|
||||
.grid-cell:last-child {
|
||||
margin-right: 0; }
|
||||
|
||||
.tile-container {
|
||||
position: absolute;
|
||||
z-index: 2; }
|
||||
|
||||
.tile, .tile .tile-inner {
|
||||
width: 58px;
|
||||
height: 58px;
|
||||
line-height: 58px; }
|
||||
width: 107px;
|
||||
height: 107px;
|
||||
line-height: 107px; }
|
||||
.tile.tile-position-1-1 {
|
||||
-webkit-transform: translate(0px, 0px);
|
||||
-moz-transform: translate(0px, 0px);
|
||||
-ms-transform: translate(0px, 0px);
|
||||
transform: translate(0px, 0px); }
|
||||
.tile.tile-position-1-2 {
|
||||
-webkit-transform: translate(0px, 67px);
|
||||
-moz-transform: translate(0px, 67px);
|
||||
-ms-transform: translate(0px, 67px);
|
||||
transform: translate(0px, 67px); }
|
||||
-webkit-transform: translate(0px, 121px);
|
||||
-moz-transform: translate(0px, 121px);
|
||||
-ms-transform: translate(0px, 121px);
|
||||
transform: translate(0px, 121px); }
|
||||
.tile.tile-position-1-3 {
|
||||
-webkit-transform: translate(0px, 135px);
|
||||
-moz-transform: translate(0px, 135px);
|
||||
-ms-transform: translate(0px, 135px);
|
||||
transform: translate(0px, 135px); }
|
||||
-webkit-transform: translate(0px, 242px);
|
||||
-moz-transform: translate(0px, 242px);
|
||||
-ms-transform: translate(0px, 242px);
|
||||
transform: translate(0px, 242px); }
|
||||
.tile.tile-position-1-4 {
|
||||
-webkit-transform: translate(0px, 202px);
|
||||
-moz-transform: translate(0px, 202px);
|
||||
-ms-transform: translate(0px, 202px);
|
||||
transform: translate(0px, 202px); }
|
||||
-webkit-transform: translate(0px, 363px);
|
||||
-moz-transform: translate(0px, 363px);
|
||||
-ms-transform: translate(0px, 363px);
|
||||
transform: translate(0px, 363px); }
|
||||
.tile.tile-position-2-1 {
|
||||
-webkit-transform: translate(67px, 0px);
|
||||
-moz-transform: translate(67px, 0px);
|
||||
-ms-transform: translate(67px, 0px);
|
||||
transform: translate(67px, 0px); }
|
||||
-webkit-transform: translate(121px, 0px);
|
||||
-moz-transform: translate(121px, 0px);
|
||||
-ms-transform: translate(121px, 0px);
|
||||
transform: translate(121px, 0px); }
|
||||
.tile.tile-position-2-2 {
|
||||
-webkit-transform: translate(67px, 67px);
|
||||
-moz-transform: translate(67px, 67px);
|
||||
-ms-transform: translate(67px, 67px);
|
||||
transform: translate(67px, 67px); }
|
||||
-webkit-transform: translate(121px, 121px);
|
||||
-moz-transform: translate(121px, 121px);
|
||||
-ms-transform: translate(121px, 121px);
|
||||
transform: translate(121px, 121px); }
|
||||
.tile.tile-position-2-3 {
|
||||
-webkit-transform: translate(67px, 135px);
|
||||
-moz-transform: translate(67px, 135px);
|
||||
-ms-transform: translate(67px, 135px);
|
||||
transform: translate(67px, 135px); }
|
||||
-webkit-transform: translate(121px, 242px);
|
||||
-moz-transform: translate(121px, 242px);
|
||||
-ms-transform: translate(121px, 242px);
|
||||
transform: translate(121px, 242px); }
|
||||
.tile.tile-position-2-4 {
|
||||
-webkit-transform: translate(67px, 202px);
|
||||
-moz-transform: translate(67px, 202px);
|
||||
-ms-transform: translate(67px, 202px);
|
||||
transform: translate(67px, 202px); }
|
||||
-webkit-transform: translate(121px, 363px);
|
||||
-moz-transform: translate(121px, 363px);
|
||||
-ms-transform: translate(121px, 363px);
|
||||
transform: translate(121px, 363px); }
|
||||
.tile.tile-position-3-1 {
|
||||
-webkit-transform: translate(135px, 0px);
|
||||
-moz-transform: translate(135px, 0px);
|
||||
-ms-transform: translate(135px, 0px);
|
||||
transform: translate(135px, 0px); }
|
||||
-webkit-transform: translate(242px, 0px);
|
||||
-moz-transform: translate(242px, 0px);
|
||||
-ms-transform: translate(242px, 0px);
|
||||
transform: translate(242px, 0px); }
|
||||
.tile.tile-position-3-2 {
|
||||
-webkit-transform: translate(135px, 67px);
|
||||
-moz-transform: translate(135px, 67px);
|
||||
-ms-transform: translate(135px, 67px);
|
||||
transform: translate(135px, 67px); }
|
||||
-webkit-transform: translate(242px, 121px);
|
||||
-moz-transform: translate(242px, 121px);
|
||||
-ms-transform: translate(242px, 121px);
|
||||
transform: translate(242px, 121px); }
|
||||
.tile.tile-position-3-3 {
|
||||
-webkit-transform: translate(135px, 135px);
|
||||
-moz-transform: translate(135px, 135px);
|
||||
-ms-transform: translate(135px, 135px);
|
||||
transform: translate(135px, 135px); }
|
||||
-webkit-transform: translate(242px, 242px);
|
||||
-moz-transform: translate(242px, 242px);
|
||||
-ms-transform: translate(242px, 242px);
|
||||
transform: translate(242px, 242px); }
|
||||
.tile.tile-position-3-4 {
|
||||
-webkit-transform: translate(135px, 202px);
|
||||
-moz-transform: translate(135px, 202px);
|
||||
-ms-transform: translate(135px, 202px);
|
||||
transform: translate(135px, 202px); }
|
||||
-webkit-transform: translate(242px, 363px);
|
||||
-moz-transform: translate(242px, 363px);
|
||||
-ms-transform: translate(242px, 363px);
|
||||
transform: translate(242px, 363px); }
|
||||
.tile.tile-position-4-1 {
|
||||
-webkit-transform: translate(202px, 0px);
|
||||
-moz-transform: translate(202px, 0px);
|
||||
-ms-transform: translate(202px, 0px);
|
||||
transform: translate(202px, 0px); }
|
||||
-webkit-transform: translate(363px, 0px);
|
||||
-moz-transform: translate(363px, 0px);
|
||||
-ms-transform: translate(363px, 0px);
|
||||
transform: translate(363px, 0px); }
|
||||
.tile.tile-position-4-2 {
|
||||
-webkit-transform: translate(202px, 67px);
|
||||
-moz-transform: translate(202px, 67px);
|
||||
-ms-transform: translate(202px, 67px);
|
||||
transform: translate(202px, 67px); }
|
||||
-webkit-transform: translate(363px, 121px);
|
||||
-moz-transform: translate(363px, 121px);
|
||||
-ms-transform: translate(363px, 121px);
|
||||
transform: translate(363px, 121px); }
|
||||
.tile.tile-position-4-3 {
|
||||
-webkit-transform: translate(202px, 135px);
|
||||
-moz-transform: translate(202px, 135px);
|
||||
-ms-transform: translate(202px, 135px);
|
||||
transform: translate(202px, 135px); }
|
||||
-webkit-transform: translate(363px, 242px);
|
||||
-moz-transform: translate(363px, 242px);
|
||||
-ms-transform: translate(363px, 242px);
|
||||
transform: translate(363px, 242px); }
|
||||
.tile.tile-position-4-4 {
|
||||
-webkit-transform: translate(202px, 202px);
|
||||
-moz-transform: translate(202px, 202px);
|
||||
-ms-transform: translate(202px, 202px);
|
||||
transform: translate(202px, 202px); }
|
||||
|
||||
-webkit-transform: translate(363px, 363px);
|
||||
-moz-transform: translate(363px, 363px);
|
||||
-ms-transform: translate(363px, 363px);
|
||||
transform: translate(363px, 363px); }
|
||||
.tile .tile-inner {
|
||||
font-size: 35px; }
|
||||
|
||||
.game-message p {
|
||||
font-size: 30px !important;
|
||||
height: 30px !important;
|
||||
@@ -1,4 +1,4 @@
|
||||
@import "helpers";
|
||||
@import "helpers.scss";
|
||||
@import "fonts/clear-sans.css";
|
||||
|
||||
$field-width: 500px;
|
||||
@@ -32,7 +32,7 @@ html, body {
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 80px 0;
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
.heading {
|
||||
+16
-16
@@ -1,14 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>2048</title>
|
||||
|
||||
<link href="style/main.css" rel="stylesheet" type="text/css">
|
||||
<link href="assets/style/main.css" rel="stylesheet" type="text/css">
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<link rel="apple-touch-icon" href="meta/apple-touch-icon.png">
|
||||
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone 5+ -->
|
||||
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x920.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone, retina -->
|
||||
<link rel="apple-touch-icon" href="assets/meta/apple-touch-icon.png">
|
||||
<link rel="apple-touch-startup-image" href="assets/meta/apple-touch-startup-image-640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone 5+ -->
|
||||
<link rel="apple-touch-startup-image" href="assets/meta/apple-touch-startup-image-640x920.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone, retina -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
|
||||
@@ -76,19 +76,19 @@
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
<strong class="important">Note:</strong> This site is the official version of 2048. You can play it on your phone via <a href="https://2048.g.endmove.eu">https://2048.g.endmove.eu</a>.
|
||||
<strong class="important">Note:</strong> This site is the official version of 2048. You can access it on your phone via the <a href="https://hub.endmove.eu">EndStorage Hub</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script src="js/bind_polyfill.js"></script>
|
||||
<script src="js/classlist_polyfill.js"></script>
|
||||
<script src="js/animframe_polyfill.js"></script>
|
||||
<script src="js/keyboard_input_manager.js"></script>
|
||||
<script src="js/html_actuator.js"></script>
|
||||
<script src="js/grid.js"></script>
|
||||
<script src="js/tile.js"></script>
|
||||
<script src="js/local_storage_manager.js"></script>
|
||||
<script src="js/game_manager.js"></script>
|
||||
<script src="js/application.js"></script>
|
||||
<script src="assets/js/bind_polyfill.js"></script>
|
||||
<script src="assets/js/classlist_polyfill.js"></script>
|
||||
<script src="assets/js/animframe_polyfill.js"></script>
|
||||
<script src="assets/js/keyboard_input_manager.js"></script>
|
||||
<script src="assets/js/html_actuator.js"></script>
|
||||
<script src="assets/js/grid.js"></script>
|
||||
<script src="assets/js/tile.js"></script>
|
||||
<script src="assets/js/local_storage_manager.js"></script>
|
||||
<script src="assets/js/game_manager.js"></script>
|
||||
<script src="assets/js/application.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Generated
+4628
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "endg-2048",
|
||||
"version": "1.0.0",
|
||||
"description": "2048 game for EndStorage 2048.g.endmove.eu",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "node-sass assets/style -o assets/style"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.endmove.eu/EndMove/EndG-2048.git"
|
||||
},
|
||||
"author": "See commiter",
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"node-sass": "^7.0.3"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user