diff --git a/public/js/buildings/arena.js b/public/js/buildings/arena.js index d4da715..238442d 100644 --- a/public/js/buildings/arena.js +++ b/public/js/buildings/arena.js @@ -330,68 +330,70 @@ function initArenaModes() { /* ── Deck-Auswahl Popup ────────────────────────────────────*/ async function showDeckSelector(onConfirm) { + // Deck-Screen direkt im arena-mode-screen anzeigen (kein Overlay, kein z-index Problem) + const modeScreen = document.getElementById("arena-mode-screen"); + if (!modeScreen) return; + // Decks laden let decks = []; try { const res = await fetch("/api/decks"); - if (!res.ok) throw new Error(); + if (!res.ok) throw new Error("HTTP " + res.status); decks = await res.json(); - } catch { + } catch (err) { + console.error("[Arena] Deck-Ladefehler:", err); showArenaError("Decks konnten nicht geladen werden."); return; } - // Overlay erstellen - const overlay = document.createElement("div"); - overlay.id = "deck-select-overlay"; - overlay.style.cssText = [ - "position:fixed","inset:0","z-index:99999", - "background:rgba(0,0,0,0.75)","display:flex", - "align-items:center","justify-content:center" - ].join(";"); + // Originalinhalt merken und ersetzen + const originalHTML = modeScreen.innerHTML; + + function restore() { + modeScreen.innerHTML = originalHTML; + // Event-Listener auf die wiederhergestellten Karten neu anhängen + modeScreen.querySelectorAll(".arena-mode-card").forEach(card => { + card.addEventListener("click", () => { + const mode = card.dataset.mode; + if (mode === "1v1") showDeckSelector(() => handle1v1Click(card)); + else if (mode === "2v2") showDeckSelector(() => openTeamLobby("2v2")); + else if (mode === "4v4") showDeckSelector(() => openTeamLobby("4v4")); + }); + }); + selectedDeckId = null; + } if (decks.length === 0) { - // Kein Deck vorhanden - overlay.innerHTML = ` -
-
⚠️ Kein Deck vorhanden
-

- Du musst zuerst ein Deck erstellen bevor du kämpfen kannst.
- Gehe zur Burg → Kartendeck um ein Deck zu erstellen. -

- -
`; - document.body.appendChild(overlay); - document.getElementById("deck-close-btn").addEventListener("click", () => overlay.remove()); + modeScreen.innerHTML = ` +
⚠️ Kein Deck vorhanden
+

+ Du musst zuerst ein Deck erstellen
bevor du kämpfen kannst.
+ Gehe zur Burg → Kartendeck. +

+ `; + document.getElementById("deck-back-btn").addEventListener("click", restore); return; } - // Decks als Auswahl anzeigen const deckRows = decks.map(d => ` -
+
🃏 ${d.name} ${d.card_count} Karten ${d.card_count === 0 ? "Leer" : ""}
`).join(""); - overlay.innerHTML = ` -
-
⚔️ Deck auswählen
-

Mit welchem Deck möchtest du kämpfen?

-
${deckRows}
-
- - -
+ modeScreen.innerHTML = ` +
⚔️ Deck auswählen
+

Mit welchem Deck möchtest du kämpfen?

+
${deckRows}
+
+ +
`; - document.body.appendChild(overlay); - - // Deck anklicken - overlay.querySelectorAll(".deck-select-row:not(.deck-empty)").forEach(row => { + modeScreen.querySelectorAll(".deck-select-row:not(.deck-empty)").forEach(row => { row.addEventListener("click", () => { - overlay.querySelectorAll(".deck-select-row").forEach(r => r.classList.remove("deck-selected")); + modeScreen.querySelectorAll(".deck-select-row").forEach(r => r.classList.remove("deck-selected")); row.classList.add("deck-selected"); selectedDeckId = Number(row.dataset.id); const btn = document.getElementById("deck-confirm-btn"); @@ -400,14 +402,11 @@ async function showDeckSelector(onConfirm) { }); }); - document.getElementById("deck-cancel-btn").addEventListener("click", () => { - overlay.remove(); - selectedDeckId = null; - }); + document.getElementById("deck-cancel-btn").addEventListener("click", restore); document.getElementById("deck-confirm-btn").addEventListener("click", () => { if (!selectedDeckId) return; - overlay.remove(); + restore(); onConfirm(); }); }