szgtjkmrt
This commit is contained in:
parent
9603e21917
commit
c3a1ddfc85
@ -359,29 +359,17 @@ function registerTeamModeHandlers(io, socket, mode) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Helper: Event an beide Spieler senden ── */
|
/* ── Helper: Event an beide Spieler senden (Room-Broadcast) ── */
|
||||||
function emitToMatch(io, matchId, event, data) {
|
function emitToMatch(io, matchId, event, data) {
|
||||||
// Immer Room-Broadcast (zuverlässigste Methode)
|
|
||||||
io.to("arena_" + matchId).emit(event, data);
|
io.to("arena_" + matchId).emit(event, data);
|
||||||
// Zusätzlich direkt an bekannte Socket-IDs falls vorhanden
|
|
||||||
const room = io._arenaRooms?.get(matchId);
|
|
||||||
if (room) {
|
|
||||||
["player1", "player2"].forEach((slot) => {
|
|
||||||
if (room.sockets[slot]) {
|
|
||||||
io.to(room.sockets[slot]).emit(event, data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function emitToOpponent(io, matchId, senderSlot, event, data) {
|
function emitToOpponent(io, matchId, senderSlot, event, data) {
|
||||||
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
|
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
|
||||||
// Direkt an Gegner-Socket
|
|
||||||
const room = io._arenaRooms?.get(matchId);
|
const room = io._arenaRooms?.get(matchId);
|
||||||
if (room?.sockets[opponentSlot]) {
|
if (room?.sockets[opponentSlot]) {
|
||||||
io.to(room.sockets[opponentSlot]).emit(event, data);
|
io.to(room.sockets[opponentSlot]).emit(event, data);
|
||||||
}
|
}
|
||||||
// Kein Room-Broadcast hier (Sender würde eigene Karten nochmal empfangen)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ═══════════════════════════════════════════════════════════
|
/* ═══════════════════════════════════════════════════════════
|
||||||
|
|||||||
@ -883,16 +883,12 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
/* ── Server: Zugwechsel ──────────────────────────────── */
|
/* ── Server: Zugwechsel ──────────────────────────────── */
|
||||||
let lastTurnChangeTs = 0;
|
|
||||||
socket.on("turn_change", (data) => {
|
socket.on("turn_change", (data) => {
|
||||||
// Board synchronisieren falls mitgeliefert
|
// Sicherheits-Fallback: Overlay entfernen falls noch vorhanden
|
||||||
|
document.getElementById("board-lock-overlay")?.remove();
|
||||||
|
document.getElementById("connecting-overlay")?.remove();
|
||||||
|
|
||||||
if (data.boardSync) applyBoardSync(data.boardSync);
|
if (data.boardSync) applyBoardSync(data.boardSync);
|
||||||
|
|
||||||
// Duplikat-Schutz: gleiches Event innerhalb 1 Sekunde nur einmal verarbeiten
|
|
||||||
const now = Date.now();
|
|
||||||
if (now - lastTurnChangeTs < 1000) return;
|
|
||||||
lastTurnChangeTs = now;
|
|
||||||
|
|
||||||
const nowMyTurn = data.activeSlot === mySlot;
|
const nowMyTurn = data.activeSlot === mySlot;
|
||||||
console.log("[1v1] turn_change:", data.activeSlot, "| ich:", mySlot, "| meinZug:", nowMyTurn);
|
console.log("[1v1] turn_change:", data.activeSlot, "| ich:", mySlot, "| meinZug:", nowMyTurn);
|
||||||
setTurnState(nowMyTurn);
|
setTurnState(nowMyTurn);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user