From a766fc7fe9d93bc1110a847415cc3c59c0d00b2b Mon Sep 17 00:00:00 2001 From: cay Date: Sun, 12 Apr 2026 11:30:18 +0100 Subject: [PATCH] dtkmtz --- sockets/arena_socket.js | 15 ++++++++++++++- views/1v1-battlefield.ejs | 9 +++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/sockets/arena_socket.js b/sockets/arena_socket.js index a223aa4..889cda4 100644 --- a/sockets/arena_socket.js +++ b/sockets/arena_socket.js @@ -480,12 +480,25 @@ function registerArenaHandlers(io, socket) { const readySet = io._arenaReady.get(matchId); readySet.add(slot); const readyData = { readyCount: readySet.size, readySlots: Array.from(readySet) }; - // Direkt an beide Spieler senden (zuverlässiger als Room-Broadcast) emitToMatch(io, matchId, "ready_status", readyData); console.log(`[1v1] ready_status: ${readySet.size}/2 bereit | Match ${matchId}`); + if (readySet.size >= 2) { stopReadyTimer(io, matchId); io._arenaReady.delete(matchId); + + // Server startet Zug direkt – kein end_turn_init vom Client nötig + // Startspieler: player1 (deterministisch, kein Flip nötig auf Server-Seite) + const starterSlot = "player1"; + if (!io._turnInit) io._turnInit = new Set(); + if (!io._turnInit.has(matchId)) { + io._turnInit.add(matchId); + setTimeout(() => io._turnInit?.delete(matchId), 60000); + const room = io._arenaRooms?.get(matchId); + const boardCards = room?.boardCards || []; + emitToMatch(io, matchId, "turn_change", { activeSlot: starterSlot, boardSync: boardCards }); + console.log(`[1v1] Spiel startet → ${starterSlot} beginnt | Match ${matchId}`); + } } }); diff --git a/views/1v1-battlefield.ejs b/views/1v1-battlefield.ejs index e5e9087..f4bca54 100644 --- a/views/1v1-battlefield.ejs +++ b/views/1v1-battlefield.ejs @@ -994,12 +994,9 @@ // Festlegen ob ich der linke Spieler bin amILeftPlayer = flip ? mySlot === "player2" : mySlot === "player1"; - // 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"; - if (mySlot === "player1") { - socket.emit("end_turn_init", { matchId, starterSlot }); - } + // Server startet Zug automatisch wenn beide bereit sind + // turn_change kommt vom Server → kein end_turn_init nötig + console.log("[1v1] Beide bereit – warte auf turn_change vom Server..."); } });