srtj
This commit is contained in:
parent
fd49572d22
commit
0cbb88198d
@ -334,7 +334,11 @@ function registerArenaHandlers(io, socket) {
|
||||
|
||||
socket.on("arena_join", (data) => {
|
||||
const { matchId, slot, playerName } = data;
|
||||
if (!matchId || !slot) return;
|
||||
console.log(`[1v1] arena_join empfangen: matchId=${matchId}, slot=${slot}, name=${playerName}, socketId=${socket.id}`);
|
||||
if (!matchId || !slot) {
|
||||
console.warn(`[1v1] arena_join abgewiesen – matchId oder slot fehlt`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!io._arenaRooms) io._arenaRooms = new Map();
|
||||
if (!io._arenaRooms.has(matchId)) io._arenaRooms.set(matchId, { sockets: {}, names: {} });
|
||||
@ -352,12 +356,14 @@ function registerArenaHandlers(io, socket) {
|
||||
|
||||
const otherSlot = slot === "player1" ? "player2" : "player1";
|
||||
if (room.sockets[otherSlot]) {
|
||||
console.log(`[1v1] Beide Spieler da → arena_ready senden | Match ${matchId}`);
|
||||
io.to("arena_" + matchId).emit("arena_ready", {
|
||||
player1: room.names["player1"] || "Spieler 1",
|
||||
player2: room.names["player2"] || "Spieler 2",
|
||||
});
|
||||
startReadyTimer(io, matchId);
|
||||
} else {
|
||||
console.log(`[1v1] Erster Spieler joined, warte auf zweiten | Match ${matchId}`);
|
||||
socket.to("arena_" + matchId).emit("arena_opponent_joined", { name: room.names[slot], slot });
|
||||
}
|
||||
});
|
||||
|
||||
@ -556,6 +556,7 @@
|
||||
myIngameName = (me && (me.ingame_name || me.username || me.name || String(me.id))) || "Spieler";
|
||||
const myNameEl = document.getElementById(amIPlayer1 ? "nameLeft" : "nameRight");
|
||||
if (myNameEl) myNameEl.textContent = myIngameName;
|
||||
console.log("[1v1] emitArenaJoin →", { matchId, slot: mySlot, name: myIngameName });
|
||||
socket.emit("arena_join", {
|
||||
matchId,
|
||||
slot: mySlot,
|
||||
@ -568,25 +569,32 @@
|
||||
fetch("/arena/me")
|
||||
.then(r => r.json())
|
||||
.then(me => emitArenaJoin(me))
|
||||
.catch(() => emitArenaJoin(null));
|
||||
.catch(() => {
|
||||
console.warn("[1v1] /arena/me fehlgeschlagen – join ohne Account");
|
||||
emitArenaJoin(null);
|
||||
});
|
||||
}
|
||||
|
||||
// Auf Socket-Connect warten – sicherster Zeitpunkt für arena_join
|
||||
socket.on("connect", fetchAndJoin);
|
||||
// Fallback: Socket war bereits verbunden bevor Event registriert wurde
|
||||
if (socket.connected) fetchAndJoin();
|
||||
// Sofort emittieren (socket.io puffert bis verbunden)
|
||||
fetchAndJoin();
|
||||
|
||||
// Fallback: Falls nach 8s kein arena_opponent_joined / arena_ready kommt
|
||||
// → Bereit-Box trotzdem anzeigen
|
||||
// Sicherheits-Retry nach 2s falls connect noch aussteht
|
||||
socket.on("connect", () => {
|
||||
console.log("[1v1] Socket connected:", socket.id);
|
||||
fetchAndJoin();
|
||||
});
|
||||
|
||||
socket.on("connect_error", (err) => {
|
||||
console.error("[1v1] Socket connect_error:", err.message);
|
||||
});
|
||||
|
||||
// Fallback: Falls nach 10s kein arena-Event → Bereit-Box erzwingen
|
||||
const readyFallbackTimer = setTimeout(() => {
|
||||
const connecting = document.getElementById("connecting-overlay");
|
||||
if (connecting) {
|
||||
console.warn("[Arena] Kein Socket-Event nach 8s – zeige Bereit-Box als Fallback");
|
||||
connecting.remove();
|
||||
const lockOverlay = document.getElementById("board-lock-overlay");
|
||||
if (lockOverlay) lockOverlay.style.display = "flex";
|
||||
}
|
||||
}, 8000);
|
||||
console.warn("[1v1] Kein arena-Event nach 10s – Bereit-Box erzwingen");
|
||||
document.getElementById("connecting-overlay")?.remove();
|
||||
const lockOverlay = document.getElementById("board-lock-overlay");
|
||||
if (lockOverlay) lockOverlay.style.display = "flex";
|
||||
}, 10000);
|
||||
|
||||
/* ── Gegner verbunden ───────────────────────────────── */
|
||||
socket.on("arena_opponent_joined", data => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user