From cce024721d84804c7f0d0c5a02a60902ab8cc54c Mon Sep 17 00:00:00 2001 From: sasha Date: Tue, 7 Oct 2025 16:39:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=8B=D0=B1=D1=80=D0=BE=D1=81=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/game/GamePort.styles.css | 120 +------------- client/src/components/game/SharikModal.vue | 28 ++++ client/src/composables/game/useGamePorts.js | 149 +++++++++++++++++- client/src/composables/useWebSocket.js | 2 + client/src/composables/useWebSocketGlobal.js | 19 ++- client/src/pages/HomePage.vue | 3 +- server/data/game.ini | 2 +- server/data/hash.ini | 2 +- server/data/log.ini | 2 +- 9 files changed, 201 insertions(+), 126 deletions(-) diff --git a/client/src/components/game/GamePort.styles.css b/client/src/components/game/GamePort.styles.css index e08b815..6992dc6 100644 --- a/client/src/components/game/GamePort.styles.css +++ b/client/src/components/game/GamePort.styles.css @@ -65,17 +65,11 @@ background: var(--color-surface); } -.port-empty-icon { - position: absolute; - bottom: 20px; - right: 20px; - font-size: 1.5rem; - opacity: 0.4; -} +/* Удалено - неиспользуемый port-empty-icon */ /* Стили для портов с игроком */ .player-port { - padding: 1.5rem; + padding: 1rem; background: linear-gradient(135deg, #e8f5f0 0%, #d4ede3 100%) !important; /* Градиент для светлой темы */ display: flex; flex-direction: column; @@ -369,7 +363,6 @@ left: 100%; } -/* Кнопка переноса - удалена, используется flip-btn */ /* Игровая статистика */ .game-stats-layout { @@ -622,85 +615,12 @@ background: linear-gradient(135deg, #ef4444, #dc2626); } -/* Стили move-btn перенесены в flip-btn */ .header-btn.delete-btn { background: linear-gradient(135deg, #ef4444, #dc2626); } -/* Flip button - эффект переворота карты 3D */ -.header-btn.flip-btn { - width: 40px; - height: 40px; - padding: 0; - border: none; - cursor: pointer; - background: transparent !important; - position: relative; - box-shadow: none; - perspective: 1000px; -} - -/* Блокируем все hover эффекты для flip кнопки */ -.header-btn.flip-btn:hover { - transform: none !important; - box-shadow: none !important; - background: transparent !important; -} - -.header-btn.flip-btn .flip-inner { - position: relative; - width: 100%; - height: 100%; - text-align: center; - transition: transform 1s ease-in-out; - transform-style: preserve-3d; - -webkit-transform-style: preserve-3d; -} - -/* Когда flip-inner в состоянии flipped - переворачиваем контейнер */ -.header-btn.flip-btn .flip-inner.flipped { - transform: rotateY(180deg); - -webkit-transform: rotateY(180deg); -} - -/* Стороны карты */ -.header-btn.flip-btn .flip-front, -.header-btn.flip-btn .flip-back { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - display: flex; - align-items: center; - justify-content: center; - border-radius: var(--radius-md); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - font-weight: 600; -} - -/* Передняя сторона - стрелки переноса */ -.header-btn.flip-btn .flip-front { - background: linear-gradient(135deg, #3b82f6, #2563eb); - color: white; - font-size: 18px; - z-index: 2; - transform: rotateY(0deg); - -webkit-transform: rotateY(0deg); -} - -/* Задняя сторона - красный крестик */ -.header-btn.flip-btn .flip-back { - background: linear-gradient(135deg, #ef4444, #dc2626); - color: white; - font-size: 22px; - font-weight: bold; - transform: rotateY(180deg); - -webkit-transform: rotateY(180deg); -} +/* Flip стили перенесены в GamePortFlip.css (unscoped) */ .game-title { font-size: 16px; @@ -760,16 +680,7 @@ color: var(--color-text-primary); } -.bonus-badge, -.tech-badge, -.normal-badge { - background: rgba(255, 255, 255, 0.2); - padding: 2px 6px; - border-radius: 4px; - font-size: 10px; - font-weight: 600; - text-transform: uppercase; -} +/* Удалено - неиспользуемые badge классы */ .game-timer { font-size: 24px; @@ -779,26 +690,7 @@ font-family: 'Courier New', monospace; } -.game-stats { - display: flex; - flex-direction: column; - gap: 4px; - margin-bottom: 8px; -} - -.stat-item { - display: flex; - justify-content: space-between; - font-size: 12px; -} - -.stat-label { - opacity: 0.9; -} - -.stat-value { - font-weight: 600; -} +/* Удалено - неиспользуемые game-stats классы */ /* Управление патронами */ .patron-controls { @@ -923,7 +815,6 @@ background: rgba(255, 255, 255, 0.3); } -/* Удалено - стили move-btn больше не используются */ .cancel-btn:hover, .delete-btn:hover { @@ -976,7 +867,6 @@ border-radius: var(--radius-lg); } -/* Кнопки и номер порта уже имеют z-index: 10 и 100 */ .receiving-target { position: relative; diff --git a/client/src/components/game/SharikModal.vue b/client/src/components/game/SharikModal.vue index f8d0cdb..3c09a22 100644 --- a/client/src/components/game/SharikModal.vue +++ b/client/src/components/game/SharikModal.vue @@ -52,6 +52,9 @@