fzudk,ltz

This commit is contained in:
cay 2026-04-12 11:09:38 +01:00
parent f470f39461
commit 81d910440d
2 changed files with 14 additions and 11 deletions

View File

@ -359,30 +359,32 @@ function registerTeamModeHandlers(io, socket, mode) {
});
}
/* ── Helper: Event an beide Spieler senden (direkt + Room-Fallback) ── */
/* ── Helper: Event direkt an beide Spieler eines Matches senden ── */
function emitToMatch(io, matchId, event, data) {
const room = io._arenaRooms?.get(matchId);
// Direkt an bekannte Socket-IDs senden
if (room) {
// Direkt an bekannte Socket-IDs senden (kein Room-Broadcast → kein Duplikat)
["player1", "player2"].forEach((slot) => {
if (room.sockets[slot]) {
io.to(room.sockets[slot]).emit(event, data);
}
});
} else {
// Fallback wenn room noch nicht gesetzt
io.to("arena_" + matchId).emit(event, data);
}
// Zusätzlich Room-Broadcast als Fallback (z.B. nach Reconnect)
io.to("arena_" + matchId).emit(event, data);
}
function emitToOpponent(io, matchId, senderSlot, event, data) {
const room = io._arenaRooms?.get(matchId);
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
// Direkt an Gegner-Socket senden
if (room?.sockets[opponentSlot]) {
// Direkt an Gegner-Socket (kein Duplikat beim Sender)
io.to(room.sockets[opponentSlot]).emit(event, data);
} else {
// Fallback: Room-Broadcast
socket.to("arena_" + matchId).emit(event, data);
}
// Zusätzlich Room-Broadcast als Fallback
io.to("arena_" + matchId).emit(event, data);
}
/*

View File

@ -997,11 +997,12 @@
// Festlegen ob ich der linke Spieler bin
amILeftPlayer = flip ? mySlot === "player2" : mySlot === "player1";
// Startspieler NUR vom Server bestimmen lassen kein lokales setTurnState!
// Nur der erste Spieler sendet end_turn_init, Server entscheidet wer beginnt
// Nur player1 sendet end_turn_init → verhindert Doppelverarbeitung
// turn_change vom Server setzt dann den korrekten Zustand für BEIDE Spieler
const starterSlot = flip ? "player2" : "player1";
socket.emit("end_turn_init", { matchId, starterSlot });
// turn_change vom Server setzt dann den korrekten Zustand für beide Spieler
if (mySlot === "player1") {
socket.emit("end_turn_init", { matchId, starterSlot });
}
}
});