szgtjkmrt

This commit is contained in:
cay 2026-04-12 11:21:44 +01:00
parent 9603e21917
commit c3a1ddfc85
2 changed files with 5 additions and 21 deletions

View File

@ -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) {
// Immer Room-Broadcast (zuverlässigste Methode)
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) {
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
// Direkt an Gegner-Socket
const room = io._arenaRooms?.get(matchId);
if (room?.sockets[opponentSlot]) {
io.to(room.sockets[opponentSlot]).emit(event, data);
}
// Kein Room-Broadcast hier (Sender würde eigene Karten nochmal empfangen)
}
/*

View File

@ -883,16 +883,12 @@
});
/* ── Server: Zugwechsel ──────────────────────────────── */
let lastTurnChangeTs = 0;
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);
// 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;
console.log("[1v1] turn_change:", data.activeSlot, "| ich:", mySlot, "| meinZug:", nowMyTurn);
setTurnState(nowMyTurn);