diff --git a/views/1v1-battlefield.ejs b/views/1v1-battlefield.ejs index 24e7ffd..168bf9a 100644 --- a/views/1v1-battlefield.ejs +++ b/views/1v1-battlefield.ejs @@ -592,19 +592,24 @@ console.log("[Arena] arena_ready:", data); clearTimeout(readyFallbackTimer); document.getElementById("connecting-overlay")?.remove(); - document.getElementById("nameLeft").textContent = data.player1 || "Spieler 1"; - document.getElementById("nameRight").textContent = data.player2 || "Spieler 2"; + // Eigenen Namen nicht überschreiben – nur Gegner-Slot aktualisieren + const oppNameFromServer = amIPlayer1 + ? (data.player2 || "Gegner") + : (data.player1 || "Gegner"); + const oppEl = document.getElementById(amIPlayer1 ? "nameRight" : "nameLeft"); + if (oppEl && oppNameFromServer !== "Spieler" && oppNameFromServer !== "Spieler 2" && oppNameFromServer !== "Spieler 1") { + oppEl.textContent = oppNameFromServer; + } const lockOverlay = document.getElementById("board-lock-overlay"); if (lockOverlay) lockOverlay.style.display = "flex"; }); /* ── Server: Zugwechsel ──────────────────────────────── */ socket.on("turn_change", data => { - const myActualSlot = amILeftPlayer === null - ? mySlot - : (amILeftPlayer ? "player1" : "player2"); - const nowMyTurn = data.activeSlot === myActualSlot || - data.activeSlot === mySlot; + // data.activeSlot ist immer "player1" oder "player2" (Server-Slot) + // mySlot ist ebenfalls "player1" oder "player2" → direkt vergleichen + const nowMyTurn = data.activeSlot === mySlot; + console.log("[1v1] turn_change:", data.activeSlot, "| ich bin:", mySlot, "| meinZug:", nowMyTurn); setTurnState(nowMyTurn); }); @@ -647,12 +652,17 @@ } if (data.readyCount === 2) { // ── Zufällige Seitenzuweisung ────────────────────── - // Deterministisch via matchId → beide Clients sehen dasselbe - const seed = matchId.split("").reduce((a, c) => a + c.charCodeAt(0), 0); - const flip = seed % 2 === 1; // true = Seiten tauschen + const seed = matchId.split("").reduce((a, c) => a + c.charCodeAt(0), 0); + const flip = seed % 2 === 1; - const p1Name = document.getElementById("nameLeft")?.textContent || "Spieler 1"; - const p2Name = document.getElementById("nameRight")?.textContent || "Spieler 2"; + // Eigenen Namen immer aus myIngameName, Gegner aus DOM + const myName = myIngameName || "Spieler"; + const oppEl = document.getElementById(amIPlayer1 ? "nameRight" : "nameLeft"); + const oppName = oppEl?.textContent || "Gegner"; + + // player1-Name und player2-Name bestimmen + const p1Name = amIPlayer1 ? myName : oppName; + const p2Name = amIPlayer1 ? oppName : myName; const leftName = flip ? p2Name : p1Name; const rightName = flip ? p1Name : p2Name; @@ -661,7 +671,7 @@ document.getElementById("nameLeft").textContent = leftName; document.getElementById("nameRight").textContent = rightName; - // Platzhalter: nur den Ingame-Namen anzeigen, kein Icon + // Platzhalter: Ingame-Namen anzeigen ["avLeft", "avRight"].forEach(avId => { const av = document.getElementById(avId); const ph = av?.querySelector(".av-placeholder");