diff --git a/views/1v1-battlefield.ejs b/views/1v1-battlefield.ejs index 4c22709..d484be2 100644 --- a/views/1v1-battlefield.ejs +++ b/views/1v1-battlefield.ejs @@ -353,17 +353,75 @@ } }); - /* ── Aufgeben ───────────────────────────────────────── */ + /* ── Aufgeben Modal ─────────────────────────────────── */ function handleAufgeben() { - if (!confirm("Wirklich aufgeben? Du erhältst keine Punkte.")) return; - socket.emit("player_surrender", { matchId, slot: mySlot }); + // Eigenes Modal statt browser confirm() + const modal = document.createElement("div"); + modal.id = "surrender-modal"; + modal.style.cssText = "position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);display:flex;align-items:center;justify-content:center;"; + modal.innerHTML = ` +
+
🏳️
+
AUFGEBEN?
+

+ Willst du wirklich aufgeben?
+ Du erhältst keine Punkte für dieses Match. +

+
+ + +
+
`; + document.body.appendChild(modal); + + document.getElementById("surrender-no").addEventListener("click", () => modal.remove()); + document.getElementById("surrender-yes").addEventListener("click", () => { + modal.remove(); + socket.emit("player_surrender", { matchId, slot: mySlot }); + // Eigene Weiterleitung nach kurzer Verzögerung + showSurrenderMessage(false); + }); + } + + /* ── Nachricht anzeigen + weiterleiten ──────────────── */ + function showSurrenderMessage(iWon) { + const overlay = document.createElement("div"); + overlay.style.cssText = "position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.9);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Cinzel',serif;"; + overlay.innerHTML = iWon + ? `
🏆
+
SIEG!
+

Dein Gegner hat aufgegeben.

+

Du wirst weitergeleitet…

` + : `
🏳️
+
AUFGEGEBEN
+

Du hast das Match aufgegeben.

+

Du wirst weitergeleitet…

`; + document.body.appendChild(overlay); + + setTimeout(() => { + // Immer zur Startseite (launcher) weiterleiten + if (window.parent && window.parent !== window) { + window.parent.document.getElementById("arena-backdrop")?.remove(); + window.parent.document.getElementById("arena-popup")?.remove(); + } + window.top.location.href = "/launcher"; + }, 2500); } /* ── Spielende Events ───────────────────────────────── */ socket.on("player_surrendered", data => { - /* Overlay sofort anzeigen, Punkte kommen per match_result */ const iLost = data.slot === mySlot; - showResultOverlay(iLost ? false : true, null); + if (!iLost) { + // Ich habe gewonnen (Gegner hat aufgegeben) + showSurrenderMessage(true); + } + // Wenn ich selbst aufgegeben habe, läuft showSurrenderMessage(false) schon }); /* Punkte-Ergebnis vom Server (kommt kurz nach player_surrendered) */ @@ -429,14 +487,13 @@ .catch(() => {}); } - /* ── Popup schließen ────────────────────────────────── */ + /* ── Popup schließen → immer zu Launcher ──────────── */ function closePopup() { if (window.parent && window.parent !== window) { window.parent.document.getElementById("arena-backdrop")?.remove(); window.parent.document.getElementById("arena-popup")?.remove(); - } else { - window.close(); } + window.top.location.href = "/launcher"; } document.getElementById("result-close-btn").addEventListener("click", closePopup);