diff --git a/public/game.js b/public/game.js index 2e30b1d..36deab0 100644 --- a/public/game.js +++ b/public/game.js @@ -883,6 +883,8 @@ function bindGameEvents(state) { const you = state.players[state.yourIndex]; const isYourTurn = state.currentPlayerIndex === state.yourIndex; + const sidebar = $('forge-sidebar'); + const isForgeOpen = sidebar && !sidebar.classList.contains('hidden'); $all('.card-wrap.in-hand').forEach((wrap) => { wrap.classList.toggle('disabled', !isYourTurn); @@ -891,7 +893,18 @@ const isMinion = meta && meta.type === 'minion'; const canPlay = isYourTurn && !attackMode.active && !heroAbilityMode.active && meta && you.mana >= (meta.cost || 0); - if (isMinion && canPlay && (you.board?.length ?? 0) < 7) { + // Если кузница открыта и карта - миньон, делаем её перетаскиваемой для кузницы + if (isForgeOpen && isMinion) { + wrap.draggable = true; + wrap.ondragstart = function (e) { + e.dataTransfer.setData('text/plain', 'hand:' + handIndex); + e.dataTransfer.setData('source', 'hand'); + wrap.classList.add('dragging'); + }; + wrap.ondragend = function () { + wrap.classList.remove('dragging'); + }; + } else if (isMinion && canPlay && (you.board?.length ?? 0) < 7) { wrap.draggable = true; wrap.ondragstart = function (e) { if (!canPlay) return; @@ -1420,8 +1433,12 @@ forgeBtn.disabled = false; forgeBtn.onclick = function () { if (attackMode.active || spellMode.active || heroAbilityMode.active) return; - $('forge-overlay')?.classList.remove('hidden'); - renderForgeDeck(state); + const sidebar = $('forge-sidebar'); + if (sidebar) { + sidebar.classList.remove('hidden'); + renderForgeDeck(state); + setupForgeDragAndDrop(state); + } }; } else if (forgeBtn) { forgeBtn.disabled = true; @@ -1597,6 +1614,12 @@ yourBoardEl.ondragleave = null; yourBoardEl.ondrop = null; } + + // Настраиваем drag-and-drop для кузницы, если она открыта + const sidebar = $('forge-sidebar'); + if (sidebar && !sidebar.classList.contains('hidden')) { + setTimeout(() => setupForgeDragAndDrop(state), 100); + } } function initLobby() { @@ -1864,12 +1887,15 @@ }); $('btn-forge-close')?.addEventListener('click', () => { - $('forge-overlay')?.classList.add('hidden'); - }); - - $('forge-overlay')?.addEventListener('click', (e) => { - if (e.target.id === 'forge-overlay') { - $('forge-overlay')?.classList.add('hidden'); + const sidebar = $('forge-sidebar'); + if (sidebar) { + sidebar.classList.add('hidden'); + forgeSelected = []; + renderForgeSelected(); + // Обновляем отображение руки и колоды + if (gameState) { + renderHand(gameState); + } } }); @@ -2024,22 +2050,207 @@ } let forgeSelected = []; + + function renderForgeSelected() { + const selectedEl = $('forge-selected'); + if (!selectedEl) return; + + if (forgeSelected.length === 0) { + selectedEl.innerHTML = '