diff --git a/package-lock.json b/package-lock.json index 9aa720b..0e51f3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1372,7 +1372,7 @@ "version": "18.2.18", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "devOptional": true, + "dev": true, "dependencies": { "@types/react": "*" } @@ -1390,24 +1390,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, - "node_modules/@types/stats.js": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", - "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", - "peer": true - }, - "node_modules/@types/three": { - "version": "0.160.0", - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.160.0.tgz", - "integrity": "sha512-jWlbUBovicUKaOYxzgkLlhkiEQJkhCVvg4W2IYD2trqD2om3VK4DGLpHH5zQHNr7RweZK/5re/4IVhbhvxbV9w==", - "peer": true, - "dependencies": { - "@types/stats.js": "*", - "@types/webxr": "*", - "fflate": "~0.6.10", - "meshoptimizer": "~0.18.1" - } - }, "node_modules/@types/webxr": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.10.tgz", @@ -2251,12 +2233,6 @@ "three": ">=0.137" } }, - "node_modules/meshoptimizer": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", - "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", - "peer": true - }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", diff --git a/public/images/gamepad.png b/public/images/gamepad.png index 7dcd27a..00b0403 100644 Binary files a/public/images/gamepad.png and b/public/images/gamepad.png differ diff --git a/public/images/keyboard.png b/public/images/keyboard.png index ac5b54f..149ff1b 100644 Binary files a/public/images/keyboard.png and b/public/images/keyboard.png differ diff --git a/public/images/mobile.png b/public/images/mobile.png index d32b92f..cde9aae 100644 Binary files a/public/images/mobile.png and b/public/images/mobile.png differ diff --git a/public/images/mousekeyboard.png b/public/images/mousekeyboard.png index 60c36f9..d7aa46d 100644 Binary files a/public/images/mousekeyboard.png and b/public/images/mousekeyboard.png differ diff --git a/src/App.jsx b/src/App.jsx index 249290b..bedae7b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -42,7 +42,6 @@ function App() { actions.setId(state.id); - state.onQuit(() => { actions.removePlayer(state); diff --git a/src/Landing.jsx b/src/Landing.jsx index 628f830..e053c36 100644 --- a/src/Landing.jsx +++ b/src/Landing.jsx @@ -36,6 +36,17 @@ export const Landing = () => { }); } } + + const handleKeyDown = (event) => { + if (event.key === 'Enter') { + setSetupStatus(1); + } + }; + + document.body.addEventListener('keydown', handleKeyDown); + return () => { + document.body.removeEventListener('keydown', handleKeyDown); + }; }, [setupStatus]); if (gameStarted) { @@ -49,7 +60,12 @@ export const Landing = () => { logo
-
@@ -63,23 +79,31 @@ export const Landing = () => {
setControlStyle("keyboard")}> -

Keyboard

keyboard +
+

Keyboard

+
setControlStyle("gamepad")}> -

Gamepad

gamepad +
+

Gamepad

+
setControlStyle("mouseKeyboard")}> -

Mouse & Keybaord

mouse & keyboard +
+

Mouse & Keyboard

+
-
+
setControlStyle("touch")}> -

Mobile

mobile +
+

Mobile

+
diff --git a/src/index.css b/src/index.css index 195ba66..0ff6487 100644 --- a/src/index.css +++ b/src/index.css @@ -155,98 +155,20 @@ body::-webkit-scrollbar { height: 100vh; display: grid; place-content: center; - gap: 400px; z-index: 2; font-family: "Hanken Grotesk"; .logo { img { width: 1200px; - } - } - - .glassy { - width: 1280px; - height: 720px; - background: rgba(95, 95, 95, 0.25); - /* box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); */ - backdrop-filter: blur(0px); - -webkit-backdrop-filter: blur(0px); - border-radius: 10px; - border: 1px solid rgba(255, 255, 255, 0.18); - color: white; - position: relative; - display: flex; - justify-content: space-between; - align-items: center; - flex-direction: column; - padding: 40px; - transition: all 0.5s ease 0s; - animation : froze 2s ease 1s both; - .articles { - display: flex; - justify-content: space-between; - align-items: center; - width: 100%; - padding: 80px; - gap: 40px; - .article { - background: rgba(216, 216, 216, 0.25); - width: 100%; - height: 300px; - border-radius: 6px; - display: flex; - justify-content: space-between; - align-items: center; - flex-direction: column; - padding: 20px; - transition: all 0.2s ease 0s; - cursor: pointer; - &:hover { - background: rgba(216, 216, 216, 0.5); - } - img { - width: 200px; - filter: drop-shadow(5px 5px 5px #0000008f); - } - } - .article.selected { - background: rgba(216, 216, 216, 0.7); - box-shadow: 0 0 20px 0 rgb(255, 255, 255); - } - - .article.mobile { - img { - width: 100px; - } - } - } - .submit { - font-weight: 900; - color: rgba(255, 255, 255, 0.795); - - font-size: 27px; - transition: all 0.2s ease 0s; - cursor: pointer; - &:hover { - text-shadow: 0 0 40px rgba(255, 255, 255, 1); - color: white; - opacity: 1; - animation: none; - } - button { - all: unset; - display: flex; - justify-content: center; - align-items: center; - display: inline-block; - } + margin: 150px; } } .start { opacity: 0; display: flex; + margin: 175px; justify-content: center; align-items: center; font-weight: 900; @@ -279,6 +201,114 @@ body::-webkit-scrollbar { } } + .glassy { + width: 80vw; + height: 90vh; + background: #0000008f; + /* box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); */ + backdrop-filter: blur(0px); + -webkit-backdrop-filter: blur(0px); + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.18); + color: white; + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + padding: 40px; + transition: all 0.5s ease 0s; + animation : froze 2s ease 1s both; + .articles { + display: flex; + justify-content: space-between; + align-items: flex-start; + width: 100%; + column-gap: 4%; + padding: 80px; + + .article { + position: relative; + background: rgba(35, 35, 53, 0.685); + width: calc((100% - 3 * 4%) / 4); + aspect-ratio: 1; + border: 3px solid #ffffff; + border-radius: 10px; + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + padding: 20px; + transition: all 0.2s ease 0s; + cursor: pointer; + overflow: hidden; + &:hover { + background: rgba(216, 216, 216, 0.5); + transform: scale(1.05); + } + img { + max-width: 100%; + height: auto; + filter: drop-shadow(5px 5px 5px #0000008f); + } + } + .article.selected { + background: rgba(216, 216, 216, 0.7); + box-shadow: 0 0 20px 0 rgb(255, 255, 255); + } + + .article.mobile { + img { + width: 100px; + } + } + + .article_label { + position: absolute; + display: flex; + justify-content: center; + left: 0; + top: 80%; + background: rgba(6, 6, 6, 0.936); + border: 2px solid #272727; + width: 100%; + height: 100%; + overflow: hidden; + } + + .article_label p { + margin-top: 6px; + font-size: calc(0.01 * (80vw - 400px) + 10px); + color: white; + } + } + + .submit { + font-weight: 900; + padding: 10px; + color: rgba(255, 255, 255, 0.795); + border: 3px solid #ffffff; + background: rgba(35, 35, 53, 0.685); + border-radius: 10px; + font-size: 27px; + transition: all 0.2s ease 0s; + cursor: pointer; + &:hover { + text-shadow: 0 0 40px rgba(255, 255, 255, 0.541); + color: white; + opacity: 1; + animation: none; + } + button { + all: unset; + display: flex; + justify-content: center; + align-items: center; + display: inline-block; + } + } + } + .disabled { pointer-events: none; cursor: not-allowed; @@ -336,23 +366,33 @@ body::-webkit-scrollbar { font-size: 30px; } - .glassy{ - width: 100%; - height: 100vh; - .articles{ - gap:5px; - padding: 0; - .article{ - height: 200px; - padding: 10px; - img{ - width: 100px; + @media screen and (max-width: 1000px) { + .glassy { + width: 80vw; + height: 90vh; + padding: 20px; + .articles { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: flex-start; + column-gap: 4%; + row-gap: 20px; + .article { + width: calc((100% - 3 * 4%) / 2 - 10px); + aspect-ratio: 1; + padding: 10px; + transition: transform 0.3s ease; + img { + width: 100%; + height: auto; + } + &:hover { + transform: scale(1.05); + } + } } } - .article.mobile{ - img{width:50px;} - } - } } } }