You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tobspr_shapez.io/src/css/states/main_menu.scss

692 lines
20 KiB

#state_MainMenuState {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
// background: #aaacb4 center center / cover !important;
background: #bbc2cf center center / cover !important;
.topButtons {
position: absolute;
@include S(top, 20px);
@include S(right, 20px);
display: grid;
grid-auto-flow: column;
@include S(grid-gap, 15px);
.settingsButton,
.exitAppButton,
.languageChoose {
@include S(width, 25px);
@include S(height, 25px);
pointer-events: all;
cursor: pointer;
& {
/* @load-async */
background: uiResource("icons/main_menu_settings.png") center center / contain no-repeat;
}
transition: opacity 0.12s ease-in-out;
@include IncreasedClickArea(2px);
opacity: 0.7;
&:hover {
opacity: 1;
}
}
.exitAppButton {
/* @load-async */
background-image: uiResource("icons/main_menu_exit.png");
background-size: 90%;
}
.languageChoose {
@include S(border-radius, 8px);
border: solid #222428;
@include S(border-width, 2px);
background-color: #222428 !important;
background-size: contain !important;
background-position: center center !important;
opacity: 0.8;
}
}
.fullscreenBackgroundVideo {
// display: none !important;
z-index: -1;
position: fixed;
right: 50%;
bottom: 50%;
min-width: 100%;
min-height: 100%;
opacity: 0;
display: none;
transform: translate(50%, 50%);
filter: blur(D(3px));
$opacity: 0.07;
&.loaded {
display: block;
opacity: $opacity;
@include InlineAnimation(0.1s ease-in-out) {
0% {
opacity: 0;
}
100% {
opacity: $opacity;
}
}
}
}
.mainWrapper {
@include S(padding, 0, 10px);
align-items: start;
justify-items: center;
@include S(grid-column-gap, 10px);
display: grid;
&[data-columns="1"] {
grid-template-columns: 1fr;
}
&[data-columns="2"] {
grid-template-columns: 1fr 1fr;
}
.standaloneBanner {
background: rgb(255, 75, 84);
@include S(border-radius, $globalBorderRadius + 4);
box-sizing: border-box;
border: solid rgba(#fff, 0.15);
@include S(border-width, 4px);
@include S(padding, 15px);
display: flex;
flex-direction: column;
strong {
font-weight: bold;
@include S(margin, 0, 4px);
}
h3 {
@include Heading;
font-weight: bold;
@include S(margin-bottom, 20px);
text-transform: uppercase;
color: #fff;
}
p {
@include Text;
color: #fff;
}
ul {
@include S(margin-top, 5px);
@include S(padding-left, 20px);
li {
@include Text;
}
}
.steamLink {
align-self: center;
justify-self: center;
width: 100%;
@include S(height, 40px);
@include S(width, 180px);
background: #171a23 center center / contain no-repeat;
overflow: hidden;
display: block;
text-indent: -999em;
cursor: pointer;
@include S(margin-top, 30px);
pointer-events: all;
transition: all 0.12s ease-in;
transition-property: opacity, transform;
@include S(border-radius, $globalBorderRadius);
&:hover {
opacity: 0.9;
}
}
}
}
.logo {
display: flex;
flex-grow: 1;
align-items: center;
justify-content: center;
flex-direction: column;
@include S(padding-top, 20px);
img {
@include S(width, 350px);
}
.demoBadge {
@include S(margin, 10px, 0);
@include S(width, 100px);
@include S(height, 30px);
& {
/* @load-async */
background: uiResource("demo_badge.png") center center / contain no-repeat;
}
display: inline-block;
}
position: relative;
.updateLabel {
position: absolute;
transform: translateX(50%) rotate(-5deg);
color: #ff590b;
@include Heading;
font-weight: bold;
@include S(right, 40px);
@include S(bottom, 20px);
@include InlineAnimation(1.3s ease-in-out infinite) {
50% {
transform: translateX(50%) rotate(-7deg) scale(1.1);
}
}
@include DarkThemeOverride {
color: $colorBlueBright;
}
}
}
.betaWarning {
@include S(width, 400px);
@include PlainText;
background: $colorRedBright;
@include S(padding, 10px);
@include S(border-radius, $globalBorderRadius);
color: #fff;
@include S(margin-top, 10px);
border: #{D(2px)} solid rgba(0, 10, 20, 0.1);
}
.sideContainer {
display: flex;
flex-direction: column;
@include S(width, 300px);
.standaloneBanner {
flex-grow: 1;
@include S(margin-bottom, 10px);
}
}
.puzzleContainer {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background: #4cc98a;
grid-row: 1 / 2;
grid-column: 2 / 3;
@include S(padding, 20px);
@include S(border-radius, $globalBorderRadius);
> .dlcLogo {
@include S(width, 190px);
}
> button {
@include S(margin-top, 20px);
@include Heading;
@include S(padding, 10px, 30px);
background-color: #333;
color: #fff;
}
&.notOwned {
p {
@include PlainText;
color: #333;
@include S(margin-top, 10px);
@include S(width, 190px);
}
> button {
box-sizing: border-box;
@include S(margin-top, 10px);
@include S(width, 190px);
@include S(padding, 10px, 20px);
}
}
}
.mainContainer {
display: flex;
align-items: center;
grid-row: 1 / 2;
justify-content: center;
flex-direction: column;
background: #fafafa;
@include S(padding, 20px);
@include S(border-radius, $globalBorderRadius);
// border: #{D(2px)} solid rgba(0, 10, 20, 0.1);
height: 100%;
width: 100%;
box-sizing: border-box;
.buttons {
display: flex;
flex-direction: column;
align-items: center;
}
.modeButtons {
display: grid;
grid-template-columns: repeat(2, 1fr);
@include S(grid-column-gap, 10px);
align-items: start;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.browserWarning {
@include S(margin-bottom, 10px);
background-color: $colorRedBright;
@include PlainText;
color: #fff;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 5px);
@include S(width, 300px);
}
.playButton,
.continueButton {
@include SuperHeading;
@include S(min-width, 130px);
@include S(padding, 15px, 20px);
letter-spacing: 0.3em !important;
@include IncreasedClickArea(0px);
font-weight: bold;
color: #fff;
background-color: $colorGreenBright;
transition: transform 0.12s ease-in-out, background-color 0.12s ease-in-out;
&:hover {
background-color: darken($colorGreenBright, 4);
opacity: 1;
}
&.continueButton {
@include Heading;
}
}
.importButton {
@include S(margin-top, 15px);
@include IncreasedClickArea(0px);
}
.newGameButton {
@include IncreasedClickArea(0px);
@include S(margin-top, 15px);
@include S(margin-left, 15px);
}
.playModeButton {
@include IncreasedClickArea(0px);
@include S(margin-top, 15px);
@include S(margin-left, 15px);
}
.editModeButton {
@include IncreasedClickArea(0px);
@include S(margin-top, 15px);
@include S(margin-left, 15px);
}
.savegames {
@include S(max-height, 105px);
overflow-y: auto;
@include S(width, 250px);
pointer-events: all;
@include S(padding-right, 5px);
display: grid;
grid-auto-flow: row;
@include S(grid-gap, 5px);
@include S(margin-top, 10px);
.savegame {
background: #eee;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 5px);
display: grid;
grid-template-columns: 1fr 1fr auto auto;
grid-template-rows: auto auto;
@include S(grid-column-gap, 4px);
@include S(grid-row-gap, 1px);
.playtime {
grid-column: 2 / 3;
grid-row: 2 / 3;
@include SuperSmallText;
opacity: 0.5;
}
.level {
grid-column: 1 / 2;
grid-row: 2 / 3;
@include SuperSmallText;
opacity: 0.5;
}
.name {
grid-column: 1 / 3;
grid-row: 1 / 2;
@include PlainText;
display: inline-flex;
align-items: center;
> span {
display: inline-flex;
@include S(max-width, 140px);
overflow: hidden;
}
}
button.resumeGame,
button.downloadGame,
button.deleteGame,
button.renameGame {
padding: 0;
align-self: center;
justify-self: center;
@include IncreasedClickArea(0px);
background: #44484a center center / 40% no-repeat;
}
button.resumeGame {
background-color: #44484a;
& {
/* @load-async */
background-image: uiResource("icons/play.png");
}
}
button.downloadGame {
grid-column: 3 / 4;
grid-row: 1 / 2;
background-color: transparent;
& {
/* @load-async */
background-image: uiResource("icons/download.png");
}
@include S(width, 15px);
@include IncreasedClickArea(0px);
@include S(height, 15px);
background-size: 80%;
align-self: start;
opacity: 0.4;
&:hover {
opacity: 0.5;
}
@include DarkThemeInvert;
}
button.deleteGame {
grid-column: 3 / 4;
grid-row: 2 / 3;
background-color: transparent;
@include IncreasedClickArea(0px);
& {
/* @load-async */
background-image: uiResource("icons/delete.png");
}
@include S(width, 15px);
@include S(height, 15px);
align-self: end;
background-size: 80%;
opacity: 0.4;
&:hover {
opacity: 0.5;
}
@include DarkThemeInvert;
}
button.renameGame {
background-color: transparent;
@include IncreasedClickArea(2px);
& {
/* @load-async */
background-image: uiResource("icons/edit_key.png");
}
@include S(width, 10px);
@include S(height, 10px);
align-self: center;
justify-self: center;
background-size: 90%;
opacity: 0.4;
@include S(margin-left, 4px);
&:hover {
opacity: 0.5;
}
@include DarkThemeInvert;
}
button.resumeGame {
grid-column: 4 / 5;
grid-row: 1 / 3;
margin: 0;
@include S(width, 32px);
height: 100%;
@include S(margin-left, 4px);
@include DarkThemeOverride {
background-color: lighten($darkModeControlsBackground, 10);
}
}
}
}
}
.bottomContainer {
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
@include S(padding-top, 10px);
height: 100%;
width: 100%;
box-sizing: border-box;
.buttons {
display: grid;
grid-template-columns: repeat(2, 1fr);
@include S(grid-column-gap, 10px);
align-items: start;
height: 100%;
width: 100%;
box-sizing: border-box;
}
}
.footer {
display: grid;
flex-grow: 1;
justify-content: center;
align-items: flex-end;
width: 100%;
grid-template-columns: auto auto auto 1fr;
@include S(padding, 10px);
box-sizing: border-box;
@include S(grid-gap, 4px);
&.china {
grid-template-columns: auto 1fr;
}
.author {
flex-grow: 1;
text-align: right;
@include PlainText;
color: #888a8f;
a {
color: #333438;
}
}
@include S(padding, 15px);
$linkBg: #fdfdff;
$linkBgHover: darken($linkBg, 2);
$linkColor: #55586a;
> .boxLink {
display: grid;
align-items: center;
grid-template-columns: 1fr auto;
justify-content: center;
& {
/* @load-async */
background: $linkBg uiResource("icons/link.png") top D(3px) right D(3px) / D(9px) no-repeat;
}
@include S(padding, 5px);
@include S(padding-left, 10px);
@include S(border-radius, $globalBorderRadius);
@include SuperSmallText();
font-weight: bold;
box-sizing: border-box;
text-transform: uppercase;
color: $linkColor;
transition: background-color 0.12s ease-in-out;
pointer-events: all;
@include S(width, 120px);
@include S(height, 60px);
cursor: pointer;
&:hover {
background-color: $linkBgHover;
}
.thirdpartyLogo {
display: inline-block;
@include S(width, 50px);
@include S(height, 50px);
background: center center / 80% no-repeat;
&.githubLogo {
/* @load-async */
background-image: uiResource("main_menu/github.png");
}
&.discordLogo {
/* @load-async */
background-image: uiResource("main_menu/discord.png");
background-size: 95%;
}
}
}
> .sidelinks {
display: grid;
align-items: flex-start;
justify-content: flex-start;
grid-template-rows: 1fr 1fr 1fr;
@include S(grid-gap, 3px);
@include S(height, 60px);
> a {
color: $linkColor;
background: $linkBg;
height: 100%;
&:hover {
background-color: $linkBgHover;
}
@include SuperSmallText;
text-transform: uppercase;
width: 100%;
@include S(padding, 2px, 10px);
display: flex;
align-items: center;
justify-content: flex-start;
@include S(padding-left, 25px);
box-sizing: border-box;
font-weight: bold;
background-position: #{D(5px)} center;
background-size: #{D(12px)};
background-repeat: no-repeat;
@include S(border-radius, $globalBorderRadius);
transition: background-color 0.12s ease-in-out;
&.redditLink {
/* @load-async */
background-image: uiResource("main_menu/reddit.svg");
}
&.changelog {
/* @load-async */
background-image: uiResource("main_menu/changelog.svg");
}
&.helpTranslate {
/* @load-async */
background-image: uiResource("main_menu/translate.svg");
}
}
}
}
@include DarkThemeOverride {
background: $darkModeGameBackground center center / cover !important;
.mainContainer {
background: $darkModeControlsBackground;
.savegames .savegame {
background: darken($darkModeControlsBackground, 5);
color: white;
}
}
.footer {
> a,
.sidelinks > a {
background-color: $darkModeControlsBackground;
color: #eee;
&:hover {
background-color: darken($darkModeControlsBackground, 5);
}
}
.author {
color: #bdbdbd;
> a {
color: white;
}
}
.thirdpartyLogo.githubLogo {
filter: invert(1);
}
}
}
}