This commit is contained in:
cay 2026-04-09 19:13:54 +01:00
parent 01aa316a1e
commit 74ce4ba913

View File

@ -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 = `
<div style="background:linear-gradient(#2a1a08,#1a0f04);border:2px solid #c8960c;
border-radius:14px;padding:32px 40px;text-align:center;max-width:360px;
box-shadow:0 20px 60px rgba(0,0,0,0.9);font-family:'Cinzel',serif;">
<div style="font-size:40px;margin-bottom:12px;">🏳️</div>
<div style="font-size:18px;color:#f0d060;letter-spacing:3px;margin-bottom:10px;">AUFGEBEN?</div>
<p style="color:#a08060;font-size:12px;line-height:1.7;margin-bottom:24px;">
Willst du wirklich aufgeben?<br>
Du erhältst <strong style="color:#e74c3c;">keine Punkte</strong> für dieses Match.
</p>
<div style="display:flex;gap:12px;justify-content:center;">
<button id="surrender-no" style="padding:10px 24px;background:linear-gradient(#1a4a18,#0f2a0e);
border:2px solid #4a8a3c;border-radius:8px;color:#a0e090;font-family:'Cinzel',serif;
font-size:12px;cursor:pointer;">✖ Weiterkämpfen</button>
<button id="surrender-yes" style="padding:10px 24px;background:linear-gradient(#4a1010,#2a0808);
border:2px solid #8a3030;border-radius:8px;color:#e07070;font-family:'Cinzel',serif;
font-size:12px;cursor:pointer;">🏳 Aufgeben</button>
</div>
</div>`;
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
? `<div style="font-size:48px;margin-bottom:16px;">🏆</div>
<div style="font-size:28px;color:#f0d060;letter-spacing:4px;">SIEG!</div>
<p style="color:#a0e090;font-size:13px;margin-top:12px;">Dein Gegner hat aufgegeben.</p>
<p style="color:#606060;font-size:11px;margin-top:8px;">Du wirst weitergeleitet…</p>`
: `<div style="font-size:48px;margin-bottom:16px;">🏳️</div>
<div style="font-size:28px;color:#e74c3c;letter-spacing:4px;">AUFGEGEBEN</div>
<p style="color:#a08060;font-size:13px;margin-top:12px;">Du hast das Match aufgegeben.</p>
<p style="color:#606060;font-size:11px;margin-top:8px;">Du wirst weitergeleitet…</p>`;
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);