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);
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");