This commit is contained in:
cay 2026-04-10 08:44:41 +01:00
parent e78bd19bad
commit 8ddc79f0c4

View File

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