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) {
|
function emitToMatch(io, matchId, event, data) {
|
||||||
const room = io._arenaRooms?.get(matchId);
|
const room = io._arenaRooms?.get(matchId);
|
||||||
// Direkt an bekannte Socket-IDs senden
|
|
||||||
if (room) {
|
if (room) {
|
||||||
|
// Direkt an bekannte Socket-IDs senden (kein Room-Broadcast → kein Duplikat)
|
||||||
["player1", "player2"].forEach((slot) => {
|
["player1", "player2"].forEach((slot) => {
|
||||||
if (room.sockets[slot]) {
|
if (room.sockets[slot]) {
|
||||||
io.to(room.sockets[slot]).emit(event, data);
|
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) {
|
function emitToOpponent(io, matchId, senderSlot, event, data) {
|
||||||
const room = io._arenaRooms?.get(matchId);
|
const room = io._arenaRooms?.get(matchId);
|
||||||
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
|
const opponentSlot = senderSlot === "player1" ? "player2" : "player1";
|
||||||
// Direkt an Gegner-Socket senden
|
|
||||||
if (room?.sockets[opponentSlot]) {
|
if (room?.sockets[opponentSlot]) {
|
||||||
|
// Direkt an Gegner-Socket (kein Duplikat beim Sender)
|
||||||
io.to(room.sockets[opponentSlot]).emit(event, data);
|
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
|
// Festlegen ob ich der linke Spieler bin
|
||||||
amILeftPlayer = flip ? mySlot === "player2" : mySlot === "player1";
|
amILeftPlayer = flip ? mySlot === "player2" : mySlot === "player1";
|
||||||
|
|
||||||
// Startspieler NUR vom Server bestimmen lassen – kein lokales setTurnState!
|
// Nur player1 sendet end_turn_init → verhindert Doppelverarbeitung
|
||||||
// Nur der erste Spieler sendet end_turn_init, Server entscheidet wer beginnt
|
// turn_change vom Server setzt dann den korrekten Zustand für BEIDE Spieler
|
||||||
const starterSlot = flip ? "player2" : "player1";
|
const starterSlot = flip ? "player2" : "player1";
|
||||||
socket.emit("end_turn_init", { matchId, starterSlot });
|
if (mySlot === "player1") {
|
||||||
// turn_change vom Server setzt dann den korrekten Zustand für beide Spieler
|
socket.emit("end_turn_init", { matchId, starterSlot });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user