fzudk,ltz
This commit is contained in:
parent
f470f39461
commit
81d910440d
@ -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);
|
||||
}
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════
|
||||
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user