Danro-Jump/Assets/UI/MainMenu/MainMenu.uss
Danil Iarosh 1f6884c5ac Build gameplay systems and service settings
Подробные изменения:
- Добавлены и доработаны модальные окна главного меню, сервисные настройки, шаблоны UI Toolkit и единый scene-flow сервис для переходов между сценами.
- Расширена gameplay-архитектура: сессия забега, HUD, спавн контента платформ, collectible-предметы, оборудование, хрупкие и движущиеся платформы.
- Добавлена база противников: типы спавна, патрулирование, процедурный спавнер, правила размещения через ScriptableObject-сложности и убийство врагов прыжком сверху.
- Исправлены смерть и respawn игрока, финальный GameOver, отскоки от врагов, пружин и boost-предметов, а также проход сквозь врагов при усиленном подъеме.
- Проведен рефакторинг взаимодействия систем: общий landing context, единые правила player-contact, NonLazy gameplay session, fail-fast installer и централизованный выбор точек спавна.
- Обновлены сцены, prefab-ассеты, difficulty stages, ресурсы главного меню, настройки проекта, roadmap и аппаратная COM-интеграция.
- Добавлены ассеты летучей мыши, врагов, collectibles, TextMesh Pro, ProjectContext и gameplay UI.

Проверки:
- dotnet build .\\Assembly-CSharp.csproj --no-restore
- Unity validation ключевых gameplay/UI/scene-flow скриптов
- Unity Console после force refresh без ошибок
2026-05-27 16:34:51 +03:00

599 lines
12 KiB
Plaintext

.main-menu-root {
flex-grow: 1;
min-width: 100%;
min-height: 100%;
background-color: rgb(45, 82, 31);
background-image: url("project://database/Assets/Sprites/UI/Backgrounds/strart_screen_art.png");
-unity-background-scale-mode: scale-and-crop;
color: rgb(255, 255, 255);
overflow: hidden;
}
.forest-vignette {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: rgba(22, 43, 12, 0.18);
}
.spark {
position: absolute;
background-image: url("project://database/Assets/Sprites/UI/MainMenu/spark.png");
-unity-background-scale-mode: scale-to-fit;
opacity: 0.82;
}
.spark-a {
width: 112px;
height: 112px;
left: 92px;
top: 592px;
}
.spark-b {
width: 96px;
height: 96px;
right: 84px;
top: 858px;
}
.spark-c {
width: 72px;
height: 72px;
right: 184px;
bottom: 354px;
opacity: 0.66;
}
.spark-d {
width: 86px;
height: 86px;
left: 726px;
bottom: 242px;
opacity: 0.72;
}
.top-hud {
position: absolute;
left: 58px;
top: 76px;
width: 614px;
height: 98px;
flex-direction: row;
}
.resource-pill {
position: relative;
width: 284px;
height: 86px;
margin-right: 26px;
padding-left: 98px;
padding-top: 12px;
background-image: url("project://database/Assets/Sprites/UI/Components/icon.png");
-unity-background-scale-mode: stretch-to-fill;
}
.hud-icon {
position: absolute;
left: -22px;
top: -30px;
width: 110px;
height: 110px;
-unity-background-scale-mode: scale-to-fit;
}
.heart-icon {
background-image: url("project://database/Assets/Sprites/UI/heart.png");
}
.coin-icon {
background-image: url("project://database/Assets/Sprites/UI/coin.png");
}
.hud-value {
font-size: 43px;
-unity-font-style: bold;
color: rgb(255, 255, 255);
}
.hud-caption {
position: absolute;
left: 6px;
bottom: -38px;
font-size: 24px;
letter-spacing: 3px;
-unity-font-style: bold;
color: rgb(84, 68, 174);
}
.extra-life-strip {
position: absolute;
left: 60px;
top: 224px;
width: 472px;
height: 104px;
flex-direction: row;
align-items: center;
padding-left: 28px;
padding-right: 36px;
background-image: url("project://database/Assets/Sprites/UI/Components/button_white.png");
-unity-background-scale-mode: stretch-to-fill;
}
.exchange-text {
font-size: 36px;
-unity-font-style: bold;
color: rgb(0, 0, 0);
margin-right: 18px;
}
.exchange-icon {
width: 66px;
height: 66px;
margin-right: 26px;
-unity-background-scale-mode: scale-to-fit;
}
.exchange-caption {
position: absolute;
left: 0;
bottom: -48px;
font-size: 22px;
letter-spacing: 3px;
-unity-font-style: bold;
color: rgb(84, 68, 174);
}
.game-title-art {
position: absolute;
right: 24px;
top: 340px;
width: 704px;
height: 208px;
background-image: url("project://database/Assets/Sprites/UI/MainMenu/Game_Title.png");
-unity-background-scale-mode: scale-to-fit;
}
.crystal-art {
position: absolute;
background-image: url("project://database/Assets/Sprites/UI/MainMenu/Crystal_art.png");
-unity-background-scale-mode: scale-to-fit;
}
.crystal-left {
left: -132px;
bottom: -54px;
width: 382px;
height: 594px;
}
.crystal-right {
left: 502px;
top: 846px;
width: 214px;
height: 314px;
}
.character-art {
position: absolute;
left: 46px;
top: 610px;
width: 604px;
height: 604px;
background-image: url("project://database/Assets/Sprites/UI/Character/character.png");
-unity-background-scale-mode: scale-to-fit;
}
.super-prize-row {
position: absolute;
left: 374px;
right: 34px;
top: 1032px;
height: 144px;
flex-direction: row;
align-items: center;
}
.super-prize-label {
font-size: 58px;
letter-spacing: 4px;
-unity-font-style: bold;
color: rgb(189, 255, 0);
margin-right: 22px;
}
.super-prize-slot {
width: 118px;
height: 118px;
background-image: url("project://database/Assets/Sprites/Props/Collectibles/Gift.png");
-unity-background-scale-mode: scale-to-fit;
}
.main-actions {
position: absolute;
right: 26px;
top: 1188px;
width: 574px;
}
.menu-button {
width: 574px;
height: 126px;
margin-bottom: 26px;
border-width: 0;
font-size: 47px;
-unity-font-style: bold;
background-image: url("project://database/Assets/Sprites/UI/Components/button.png");
-unity-background-scale-mode: stretch-to-fill;
}
.play-button {
color: rgb(19, 73, 50);
background-color: rgba(255, 255, 255, 0);
background-image: url("project://database/Assets/Sprites/UI/Components/button_white.png");
}
.rules-button {
color: rgb(23, 72, 31);
background-color: rgba(255, 255, 255, 0);
}
.price-banner {
position: absolute;
left: 266px;
right: 266px;
bottom: 192px;
height: 112px;
align-items: center;
justify-content: center;
background-image: url("project://database/Assets/Sprites/UI/Components/plashka_central.png");
-unity-background-scale-mode: stretch-to-fill;
}
.price-label {
font-size: 45px;
-unity-font-style: bold;
color: rgb(22, 73, 45);
}
.service-area {
position: absolute;
left: 44px;
bottom: 38px;
width: 486px;
min-height: 120px;
padding-left: 24px;
padding-right: 24px;
padding-top: 16px;
padding-bottom: 16px;
border-radius: 24px;
background-color: rgba(11, 34, 17, 0.45);
border-width: 2px;
border-color: rgba(255, 255, 255, 0.25);
}
.service-line {
font-size: 18px;
color: rgba(255, 255, 255, 0.86);
margin-bottom: 5px;
}
.service-button {
position: absolute;
right: 14px;
bottom: 12px;
width: 128px;
height: 42px;
border-width: 0;
border-radius: 14px;
font-size: 16px;
-unity-font-style: bold;
color: rgba(255, 255, 255, 0.86);
background-color: rgba(255, 255, 255, 0);
}
.support-line {
position: absolute;
right: 52px;
bottom: 96px;
font-size: 22px;
-unity-font-style: bold;
color: rgba(255, 255, 255, 0.92);
}
.support-site {
position: absolute;
right: 52px;
bottom: 58px;
font-size: 24px;
-unity-font-style: bold;
color: rgba(255, 255, 255, 0.96);
}
.modal-layer {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: none;
align-items: stretch;
justify-content: flex-start;
}
.modal-backdrop {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: rgb(84, 68, 174);
}
.modal-window {
width: 100%;
height: 100%;
padding-left: 92px;
padding-right: 92px;
padding-top: 46px;
padding-bottom: 34px;
border-radius: 0;
background-color: rgb(84, 68, 174);
border-width: 0;
justify-content: flex-start;
}
.fullscreen-modal {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.modal-title {
font-size: 58px;
-unity-font-style: bold;
-unity-text-align: middle-center;
color: rgb(206, 255, 26);
}
.modal-text {
margin-top: 72px;
margin-bottom: 72px;
font-size: 34px;
white-space: normal;
-unity-text-align: upper-left;
color: rgb(255, 255, 255);
}
.modal-actions {
flex-direction: row;
justify-content: center;
align-items: center;
}
.modal-button {
width: 260px;
height: 88px;
border-width: 0;
font-size: 25px;
-unity-font-style: bold;
color: rgb(19, 73, 50);
background-color: rgba(255, 255, 255, 0);
background-image: url("project://database/Assets/Sprites/UI/Components/button_white.png");
-unity-background-scale-mode: stretch-to-fill;
}
.settings-modal {
padding-left: 76px;
padding-right: 20px;
padding-top: 18px;
padding-bottom: 18px;
}
.settings-title {
display: none;
}
.settings-content {
flex-grow: 1;
flex-direction: column;
min-height: 0;
}
.settings-status {
margin-top: 8px;
margin-bottom: 10px;
font-size: 18px;
white-space: normal;
-unity-text-align: upper-left;
color: rgba(255, 255, 255, 0.82);
}
.settings-list {
width: auto;
height: 70%;
margin-right: 0;
margin-bottom: 18px;
}
.settings-list .unity-scroll-view__vertical-scroller {
background-color: rgb(255, 255, 255);
border-width: 0;
padding-top: 0;
padding-bottom: 0;
}
.settings-list .unity-scroll-view__vertical-scroller .unity-scroller__slider {
background-color: rgb(255, 255, 255);
border-width: 0;
width: 100%;
min-width: 0;
align-items: stretch;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
flex-grow: 1;
}
.settings-list .unity-scroll-view__vertical-scroller .unity-base-slider__tracker,
.settings-list .unity-scroll-view__vertical-scroller .unity-base-slider__drag-container {
background-color: rgb(255, 255, 255);
border-width: 0;
width: 100%;
min-width: 0;
align-items: stretch;
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
}
.settings-list .unity-scroll-view__vertical-scroller .unity-base-slider__dragger {
background-color: rgb(0, 75, 48);
-unity-background-image-tint-color: rgb(0, 75, 48);
border-width: 0;
border-radius: 0;
width: 100%;
min-width: 100%;
align-self: stretch;
left: 0;
right: 0;
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
}
.settings-list .unity-scroll-view__vertical-scroller .unity-base-slider__dragger-border,
.settings-list .unity-scroll-view__vertical-scroller .unity-base-slider__dragger > * {
background-color: rgb(0, 75, 48);
-unity-background-image-tint-color: rgb(0, 75, 48);
border-width: 0;
border-radius: 0;
width: 100%;
min-width: 100%;
margin-left: 0;
margin-right: 0;
padding-left: 0;
padding-right: 0;
}
.settings-list .unity-scroll-view__vertical-scroller .unity-scroller__low-button,
.settings-list .unity-scroll-view__vertical-scroller .unity-scroller__high-button {
display: none;
height: 0;
min-height: 0;
max-height: 0;
margin-top: 0;
margin-bottom: 0;
padding-top: 0;
padding-bottom: 0;
border-width: 0;
background-color: rgba(255, 255, 255, 0);
}
.settings-group-title--active {
-unity-background-image-tint-color: rgb(206, 255, 26);
}
.settings-group-title--collapsed {
opacity: 0.88;
}
.settings-focus-pointer {
position: absolute;
width: 46px;
min-width: 46px;
height: 64px;
font-size: 42px;
-unity-font-style: bold;
-unity-text-align: middle-center;
opacity: 1;
visibility: visible;
color: rgb(255, 255, 255);
}
.settings-row {
flex-direction: row;
align-items: center;
justify-content: flex-start;
min-height: 54px;
margin-bottom: 10px;
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
background-color: rgba(255, 255, 255, 0);
}
.settings-details {
flex-grow: 0;
min-height: 96px;
min-width: 0;
padding-left: 0;
padding-right: 18px;
padding-top: 0;
padding-bottom: 0;
}
.settings-current-group {
font-size: 26px;
-unity-font-style: bold;
white-space: normal;
color: rgb(255, 255, 255);
}
.settings-current-description {
margin-top: 28px;
font-size: 22px;
white-space: normal;
color: rgba(255, 255, 255, 0.8);
}
.settings-empty-state {
margin-top: 90px;
font-size: 28px;
white-space: normal;
-unity-text-align: middle-center;
color: rgb(255, 255, 255);
}
.settings-actions {
height: 88px;
flex-direction: row;
justify-content: center;
align-items: center;
}
.settings-save-button {
width: 260px;
height: 84px;
font-size: 22px;
}
.settings-secondary-button {
width: 160px;
height: 62px;
margin-left: 10px;
margin-right: 10px;
font-size: 16px;
display: none;
}