Добавил турниры

This commit is contained in:
2023-08-11 23:15:14 +03:00
parent 21a4b3975a
commit 6ca4040e93
32 changed files with 818 additions and 40 deletions

View File

@@ -1,2 +0,0 @@
import './style.scss'
import 'reset-css'

29
src/base.scss Normal file
View File

@@ -0,0 +1,29 @@
$clr-text: #171c20;
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: $clr-text;
font-size: 16px;
line-height: 24px;
}
h1 {
font-size: 32px;
line-height: 1.2;
font-weight: 900;
}
h2 {
font-size: 32px;
font-weight: 700;
}
a {
cursor: pointer;
color: inherit;
text-decoration-style: dotted;
text-underline-offset: 3px;
}

View File

@@ -2,9 +2,32 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Game Collection</title> <title>Game Collection</title>
<script type="module">
import 'reset-css'
import './index.scss'
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(86673990, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/86673990" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head> </head>
<body> <body>
<div id="app"> <div id="app">
@@ -12,7 +35,7 @@
<div class="games"> <div class="games">
<div class="games__section stroll"> <div class="games__section stroll">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/stroll/screenshot4.png" class="games__section__game__thumb"> <img src="/stroll/screenshot4.png" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Stroll</h2> <h2>Stroll</h2>
<div class="description"> <div class="description">
@@ -28,7 +51,7 @@
<div class="games__section inverted mwg"> <div class="games__section inverted mwg">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/mwg/thumb.jpg" class="games__section__game__thumb"> <img src="/mwg/thumb.jpg" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Monkeys With Grenades</h2> <h2>Monkeys With Grenades</h2>
<div class="description"> <div class="description">
@@ -40,13 +63,17 @@
<a href="https://gamejolt.com/games/monkeys-with-grenades/83237" target="_blank">Check out on GameJolt</a><br> <a href="https://gamejolt.com/games/monkeys-with-grenades/83237" target="_blank">Check out on GameJolt</a><br>
<a href="https://linktr.ee/lebtr" target="_blank">Music by Lebtr</a> <a href="https://linktr.ee/lebtr" target="_blank">Music by Lebtr</a>
</div> </div>
<a class="games__section__game__trophy" href="mwg-scores.html">
<img src="/trophy.png" class="games__section__game__trophy__img"/>
<div class="games__section__game__trophy__text">Tournaments</div>
</a>
</div> </div>
</div> </div>
</div> </div>
<div class="games__section zombieline"> <div class="games__section zombieline">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/zombieline/thumb.gif" class="games__section__game__thumb"> <img src="/zombieline/thumb.gif" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Zombieline Zombieami</h2> <h2>Zombieline Zombieami</h2>
<div class="description"> <div class="description">
@@ -61,7 +88,7 @@
<div class="games__section inferno-cop inverted"> <div class="games__section inferno-cop inverted">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/inferno-cop/screenshot.jpg" class="games__section__game__thumb"> <img src="/inferno-cop/screenshot.jpg" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Inferno Cop</h2> <h2>Inferno Cop</h2>
<div class="description"> <div class="description">
@@ -77,7 +104,7 @@
<div class="games__section drift last"> <div class="games__section drift last">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/drift/screenshot1.png" class="games__section__game__thumb"> <img src="/drift/screenshot1.png" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Drift</h2> <h2>Drift</h2>
<div class="description"> <div class="description">
@@ -91,7 +118,7 @@
<!-- <div class="games__section murk"> <!-- <div class="games__section murk">
<div class="games__section__game"> <div class="games__section__game">
<img src="/assets/murk/thumb.png" class="games__section__game__thumb"> <img src="/murk/thumb.png" class="games__section__game__thumb">
<div class="games__section__game__info"> <div class="games__section__game__info">
<h2>Murk</h2> <h2>Murk</h2>
<div class="description"> <div class="description">
@@ -106,7 +133,5 @@
</div> --> </div> -->
</div> </div>
</div> </div>
<script type="module" src="/main.js"></script>
</body> </body>
</html> </html>

View File

@@ -1,32 +1,4 @@
$clr-text: #171c20; @import "base";
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: $clr-text;
font-size: 16px;
line-height: 24px;
h1 {
font-size: 32px;
line-height: 32px;
font-weight: 900;
}
h2 {
font-size: 32px;
font-weight: 700;
}
a {
cursor: pointer;
color: inherit;
text-decoration-style: dotted;
text-underline-offset: 3px;
}
}
.title { .title {
position: relative; position: relative;
@@ -108,6 +80,7 @@ $clr-text: #171c20;
} }
&__info { &__info {
position: relative;
text-align: center; text-align: center;
width: -webkit-fill-available; width: -webkit-fill-available;
display: flex; display: flex;
@@ -125,6 +98,25 @@ $clr-text: #171c20;
} }
} }
} }
&__trophy {
width: 64px;
height: 64px;
position: absolute;
right: 0;
top: 33%;
transform: translate(0, -50%) rotate(6deg);
color: $clr-text;
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
&__img {
width: 100%;
height: 100%;
}
}
} }
} }
@@ -166,5 +158,15 @@ $clr-text: #171c20;
margin-top: 16px; margin-top: 16px;
} }
} }
&__trophy {
width: 32px;
height: 32px;
right: 16px;
&__text {
display: none;
}
}
} }
} }

208
src/mwg-scores.html Normal file
View File

@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Game Collection</title>
<script type="module">
import 'reset-css'
import './mwg-scores.scss'
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(86673990, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/86673990" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body id="app">
<main>
<section class="season season--first">
<h1 class="season__title">
Первый турнир
<div class="season__subtitle">сентябрь 2022</div>
</h1>
<img class="season__cardboard" src="/cardboard.webp">
<img class="season__sharpie" src="/sharpie.png">
<div class="tournament">
<div class="bracket">
<div class="bracket__columnWrapper">
<h2>Отборочный тур</h2>
<ul class="bracket__column">
<li class="bracketMatch bracketMatch--down">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name">Альфред</div>
<div class="bracketCard__name bracketCard__name--winner">Маша</div>
</div>
</div>
</li>
<li class="bracketMatch bracketMatch--up">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name">Маша</div>
<div class="bracketCard__name bracketCard__name--winner">
Толя
<img class="bracketCard__trophy" src="/bronze-pizza.webp" />
</div>
</div>
</div>
</li>
<li class="bracketMatch bracketMatch--straight">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">Альфред</div>
<div class="bracketCard__name">Толя</div>
</div>
</div>
</li>
</ul>
</div>
<div class="bracket__columnWrapper">
<h2>Финал</h2>
<ul class="bracket__column">
<li class="bracketMatch bracketMatch--down">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">
Маша
<img class="bracketCard__trophy" src="/silver-pizza.webp" />
</div>
<div class="bracketCard__name">Толя</div>
</div>
</div>
</li>
<li>
</li>
</ul>
</div>
<div class="bracket__columnWrapper">
<h2>Финал 2</h2>
<ul class="bracket__column">
<li class="bracketMatch">
<div class="bracketCard bracketCard--bottomExtendo">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">
Альфред
<img class="bracketCard__trophy" src="/gold-pizza.webp" />
</div>
<div class="bracketCard__name">Маша</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</section>
<section class="season season--second">
<h1 class="season__title">
Второй турнир
<div class="season__subtitle">июнь 2023</div>
</h1>
<input
class="season__fakeSubtitle"
placeholder="Нажмите, чтобы ввести подзаголовок"
>
<div class="screen">
<img src="/screen.webp" class="screen__image">
<div class="bracket">
<div class="bracket__columnWrapper">
<h2>Отборочный тур</h2>
<ul class="bracket__column">
<li class="bracketMatch">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">Леша</div>
<div class="bracketCard__name">Степа</div>
</div>
</div>
</li>
<li class="bracketMatch">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">Ваня</div>
<div class="bracketCard__name">Маша</div>
</div>
</div>
</li>
</ul>
</div>
<div class="bracket__columnWrapper">
<h2>Полуфинал</h2>
<ul class="bracket__column">
<li class="bracketMatch bracketMatch--down">
<div class="bracketCard bracketCard--singleIn">
<div class="bracketCard__names">
<div class="bracketCard__name">Альфред</div>
<div class="bracketCard__name bracketCard__name--winner">Леша</div>
</div>
</div>
</li>
<li class="bracketMatch bracketMatch--up">
<div class="bracketCard bracketCard--singleIn">
<div class="bracketCard__names">
<div class="bracketCard__name bracketCard__name--winner">Ваня</div>
<div class="bracketCard__name">Толя</div>
</div>
</div>
</li>
</ul>
</div>
<div class="bracket__columnWrapper">
<h2>Финал</h2>
<ul class="bracket__column">
<li class="bracketMatch">
<div class="bracketCard">
<div class="bracketCard__names">
<div class="bracketCard__name">Ваня</div>
<div class="bracketCard__name bracketCard__name--winner">Леша</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<video
src="/gameplay-table.webm"
class="laptopTable"
loop
autoplay
muted
></video>
</section>
</main>
<footer class="footer">
<img src="/monkey.png" class="footer__logo">
<p class="footer__disclaimer">
Игры проведены всемирной лигой обезьян с гранатами (WMWGL).
</p>
</footer>
</body>
</html>

498
src/mwg-scores.scss Normal file
View File

@@ -0,0 +1,498 @@
@import "base";
$card-width: 150px;
$clr-dodo: #FF6900;
$line-radius-dodo: 8px;
$card-width-dodo: 200px;
$clr-dodo-secondary: rgb(156, 168, 174);
$line-radius-second: 4px;
$clt-cardBg-second: #5cb3ff;
@font-face {
font-family: 'Dodo';
font-style: normal;
src: url("/DoDo-VF.woff2") format('woff2');
}
main {
width: 100%;
box-sizing: border-box;
display: flex;
flex-direction: column;
gap: 12px;
padding: 12px;
}
@media screen and (max-width: 780px) {
main {
padding: 0;
}
}
.season {
position: relative;
padding: 64px;
overflow: hidden;
&__title {
display: flex;
gap: 10px;
align-items: baseline;
position: relative;
font-weight: 800;
font-size: 64px;
margin-bottom: 64px;
z-index: 10;
}
&__subtitle {
font-size: 16px;
font-weight: 400;
}
&--first {
background: #f5f2f2;
font-family: Dodo;
font-weight: 400;
.bracketMatch {
&::after {
border-color: $clr-dodo-secondary;
}
&--down {
&::after {
border-top-right-radius: $line-radius-dodo;
}
}
&--up {
&::after {
border-bottom-right-radius: $line-radius-dodo;
}
}
&--straight {
&::after {
border-bottom-right-radius: $line-radius-dodo;
width: calc($card-width-dodo + 60px);
right: calc(-62px - $card-width-dodo);
}
}
}
.bracketCard {
width: $card-width-dodo;
&::before, &::after {
border-color: $clr-dodo-secondary;
}
&::before {
border-bottom-left-radius: $line-radius-dodo;
}
&::after {
border-top-left-radius: $line-radius-dodo;
}
&--bottomExtendo {
&::after {
border-top-left-radius: $line-radius-dodo;
}
}
&__name {
&--winner {
color: $clr-dodo;
}
}
}
}
&--second {
background-image: url("/white-texture.jpg");
background-size: cover;
font-family: Arial, Helvetica, sans-serif;
padding-bottom: 128px;
.season {
&__title {
font-weight: 500;
border: 1px dotted gray;
padding: 0 12px;
margin-bottom: 10px;
}
&__fakeSubtitle {
border: 1px dotted gray;
padding: 12px;
box-sizing: border-box;
margin-bottom: 64px;
background: none;
display: block;
width: 100%;
text-align: center;
font-size: 18px;
&:focus {
outline: none;
}
}
}
.bracketMatch {
&::after {
}
&--down {
&::after {
border-top-right-radius: $line-radius-second;
}
}
&--up {
&::after {
border-bottom-right-radius: $line-radius-second;
}
}
&--straight {
&::after {
border-bottom-right-radius: $line-radius-second;
}
}
}
.bracketCard {
background: $clt-cardBg-second;
border: 2px solid black;
&::before, &::after {
}
&::before {
border-bottom-left-radius: $line-radius-second;
}
&::after {
border-top-left-radius: $line-radius-second;
}
&--bottomExtendo {
&::after {
border-top-left-radius: $line-radius-second;
}
}
&__name {
&--winner {
}
}
}
}
&__cardboard {
position: absolute;
top: 0;
right: 0;
transform: translate(40%, -50%) rotate(-45deg);
width: 500px;
filter: drop-shadow(1px 1px 2px #222);
}
&__sharpie {
position: absolute;
top: 72px;
right: 28px;
transform: rotate(150deg);
width: 300px;
filter: drop-shadow(2px 2px 4px #222);
}
}
.tournament {
padding: 32px;
}
.bracket {
position: relative;
display: flex;
z-index: 10;
&__columnWrapper {
display: flex;
padding: 20px;
flex-direction: column;
align-items: center;
gap: 32px;
h2 {
text-align: center;
font-weight: 600;
font-size: 18px;
}
}
&__column {
flex-grow: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
gap: 32px;
}
}
.bracketMatch {
position: relative;
&::after {
position: absolute;
right: -22px;
content: '';
display: block;
width: 20px;
height: 45%;
border: 0 solid gray;
}
&--down {
&::after {
top: 50%;
border-width: 2px 2px 0 0;
}
}
&--up {
&::after {
bottom: 50%;
border-width: 0 2px 2px 0;
}
}
&--straight {
&::after {
bottom: 50%;
border-width: 0 2px 2px 0;
width: calc($card-width + 60px);
right: calc(-62px - $card-width);
}
}
}
.bracketCard {
padding: 16px 32px;
background: white;
border-radius: 6px;
width: $card-width;
box-sizing: border-box;
&::before, &::after {
border: 0 solid gray;
position: absolute;
left: -20px;
content: '';
display: block;
width: 18px;
height: 45%;
}
&::before {
border-width: 0 0 2px 2px;
top: 0;
}
&::after {
border-width: 2px 0 0 2px;
top: 50%;
}
&--bottomExtendo {
&::after {
border-width: 2px 0 0 2px;
top: 50%;
height: 87px;
}
}
&--singleIn {
&::before {
display: none;
}
&::after {
border-top-left-radius: 0 !important;
border-width: 2px 0 0 0;
top: 50%;
width: 40px;
left: -40px;
}
}
&__name {
display: flex;
justify-content: space-between;
align-items: center;
height: 24px;
&--winner {
font-weight: 800;
}
}
&__trophy {
height: 100%;
}
}
.bracket__columnWrapper:first-child {
.bracketCard {
&::before, &::after {
display: none;
}
}
}
.screen {
box-sizing: border-box;
position: relative;
width: 800px;
padding: 48px 40px 29px 34px;
display: flex;
align-items: center;
justify-content: center;
&__image {
left: 0;
top: 0;
position: absolute;
width: 100%;
filter: drop-shadow(0 6px 6px #222);
}
.bracket {
background: #ffffff4a;
padding: 50px 67px;
&::before {
position: absolute;
display: block;
content: '';
width: 100%;
height: 30px;
background: rgba(255, 68, 0, 0.575);
left: 0;
bottom: 0;
}
}
}
@media screen and (max-width: 780px) {
.screen {
width: 100%;
min-width: 0;
padding: 0;
&__image {
display: none;
}
.bracket {
padding: 16px;
}
}
}
.laptopTable {
position: absolute;
right: 0;
bottom: 0;
width: 50%;
max-width: 600px;
display: block;
z-index: 100;
filter: drop-shadow(0 10px 32px #11111160);
}
.footer {
padding: 32px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
&__logo {
height: 32px;
}
&__disclaimer {
text-align: right;
}
}
@media screen and (max-width: 780px) {
.season {
padding: 8px;
&__sharpie {
display: none;
}
&__title {
flex-direction: column;
align-items: center;
margin-bottom: 32px;
}
&--second {
padding-bottom: 128px;
}
}
.tournament {
padding: 32px 0;
}
.bracket {
flex-direction: column;
width: 100%;
&__columnWrapper {
padding: 32px 0;
border-bottom: 2px dashed $clr-dodo-secondary;
&:last-child {
border-bottom: 0;
}
}
&__column {
width: 100%;
}
}
.bracketMatch {
width: 100%;
&::before, &::after {
display: none;
}
}
.bracketCard {
width: 100% !important;
&::before, &::after {
display: none;
}
}
.laptopTable {
width: 100%;
}
}

BIN
src/public/DoDo-VF.woff2 Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/public/cardboard.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

BIN
src/public/gameplay.mp4 Normal file

Binary file not shown.

BIN
src/public/gold-pizza.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 274 KiB

BIN
src/public/monkey.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

BIN
src/public/screen.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
src/public/sharpie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 453 KiB

After

Width:  |  Height:  |  Size: 453 KiB

View File

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View File

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB

View File

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 203 KiB

BIN
src/public/trophy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 MiB

View File

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

18
vite.config.js Normal file
View File

@@ -0,0 +1,18 @@
import { defineConfig } from "vite";
import { resolve } from "path";
const root = resolve(__dirname, "src");
export default defineConfig({
root,
build: {
outDir: resolve(__dirname, "dist"),
emptyOutDir: true,
rollupOptions: {
input: {
main: resolve(root, "index.html"),
"mwg-scores": resolve(root, "mwg-scores.html"),
},
},
},
});