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