diff --git a/public/js/buildings/arena.js b/public/js/buildings/arena.js index 27cd77e..9979edb 100644 --- a/public/js/buildings/arena.js +++ b/public/js/buildings/arena.js @@ -459,7 +459,7 @@ async function handle1v1Click(card) { hideQueueStatus(); showMatchFoundOverlay(me.name, data.opponent.name, () => { openArenaPopup( - `/arena/1v1?match=${encodeURIComponent(data.matchId)}&slot=${encodeURIComponent(data.mySlot)}&deck=${encodeURIComponent(selectedDeckId||'')}`, + `/arena/1v1?match=${encodeURIComponent(data.matchId)}&slot=${encodeURIComponent(data.mySlot)}&deck=${encodeURIComponent(selectedDeckId||'')}&opponent=${encodeURIComponent(data.opponent.name||'')}`, data.opponent.name, data.matchId ); }); diff --git a/views/1v1-battlefield.ejs b/views/1v1-battlefield.ejs index 45f74df..061b636 100644 --- a/views/1v1-battlefield.ejs +++ b/views/1v1-battlefield.ejs @@ -720,6 +720,13 @@ const mySlot = urlParams.get("slot") || "<%= mySlot || 'player1' %>"; const amIPlayer1 = mySlot === "player1"; + // Gegner-Name direkt aus URL setzen (kommt aus match_found, immer korrekt) + const opponentNameFromUrl = urlParams.get("opponent"); + if (opponentNameFromUrl) { + const oppEl = document.getElementById(amIPlayer1 ? "nameRight" : "nameLeft"); + if (oppEl) oppEl.textContent = decodeURIComponent(opponentNameFromUrl); + } + /* ── Socket ─────────────────────────────────────────── */ const socket = io(); @@ -807,12 +814,20 @@ console.log("[Arena] arena_ready:", data); clearTimeout(readyFallbackTimer); document.getElementById("connecting-overlay")?.remove(); - // Gegner-Name aus server-Daten setzen (immer, außer leer) + // Gegner-Name: URL-Parameter hat Vorrang (aus match_found, 100% korrekt) + // Server-Daten nur als Fallback wenn URL-Name fehlt const oppName = amIPlayer1 ? data.player2 : data.player1; const oppEl = document.getElementById( amIPlayer1 ? "nameRight" : "nameLeft", ); - if (oppEl && oppName) oppEl.textContent = oppName; + const currentOppName = oppEl?.textContent || ""; + const urlOppName = urlParams.get("opponent"); + // Nur überschreiben wenn Server einen echten Namen hat (nicht "Spieler"/"Spieler 1"/"Spieler 2") + if (oppEl && oppName && !["Spieler", "Spieler 1", "Spieler 2", "Gegner"].includes(oppName)) { + oppEl.textContent = oppName; + } else if (oppEl && urlOppName && (!currentOppName || currentOppName === "Gegner")) { + oppEl.textContent = decodeURIComponent(urlOppName); + } // Eigenen Namen sichern falls noch nicht gesetzt const myEl = document.getElementById( amIPlayer1 ? "nameLeft" : "nameRight",