diff --git a/public/js/buildings/1v1.js b/public/js/buildings/1v1.js index 116fcaf..0488a57 100644 --- a/public/js/buildings/1v1.js +++ b/public/js/buildings/1v1.js @@ -339,7 +339,7 @@ function renderCardOnBoard(slotEl, card, owner) { slotEl.classList.add('slot-occupied'); applyOwnerStyle(slotEl, owner); slotEl.innerHTML = card.image - ? `${statsHtml}` + ? `${statsHtml}` : `
\u2694\uFE0F${card.name}
${statsHtml}`; } @@ -694,36 +694,39 @@ function enableBoardDrag() { if (!isMyZone(idx)) return; if (!boardState[slot.id]) return; if (boardState[slot.id].owner !== mySlot) return; - slot.classList.add('board-slot-draggable'); slot.setAttribute('draggable', 'true'); - - // Event-Listener nur einmal anhängen - if (!slot.dataset.discardListenerAttached) { - slot.dataset.discardListenerAttached = '1'; - slot.addEventListener('dragstart', e => { - if (!isMyTurn) { e.preventDefault(); return; } - draggedBoardSlotId = slot.id; - slot.classList.add('dragging'); - e.dataTransfer.effectAllowed = 'move'; - e.dataTransfer.setData('text/board', slot.id); - }); - slot.addEventListener('dragend', () => { - slot.classList.remove('dragging'); - draggedBoardSlotId = null; - discardZone.classList.remove('drag-over'); - }); - } }); } function disableBoardDrag() { document.querySelectorAll('.board-slot-draggable').forEach(slot => { - slot.classList.remove('board-slot-draggable'); + slot.classList.remove('board-slot-draggable', 'dragging'); slot.setAttribute('draggable', 'false'); }); } +/* ── Board-Drag via Event-Delegation auf den Rows ────────── */ +['row1', 'row2'].forEach(rowId => { + const row = document.getElementById(rowId); + + row.addEventListener('dragstart', e => { + const slot = e.target.closest('.board-slot-draggable'); + if (!slot || !isMyTurn) { e.preventDefault(); return; } + draggedBoardSlotId = slot.id; + slot.classList.add('dragging'); + e.dataTransfer.effectAllowed = 'move'; + e.dataTransfer.setData('text/board', slot.id); + }); + + row.addEventListener('dragend', e => { + const slot = e.target.closest('.board-slot-draggable'); + if (slot) slot.classList.remove('dragging'); + draggedBoardSlotId = null; + discardZone.classList.remove('drag-over'); + }); +}); + /* ── Karte abwerfen ──────────────────────────────────────── */ function discardBoardCard(slotId) { const entry = boardState[slotId];