Remove client-side game over check to prevent premature game end
The client was checking activePlayers.length <= 1 and calling endGame() prematurely, before the server's authoritative game-over event. Now the client only ends the game when the server explicitly sends the 'game-over' event. Added server-side logging to track active player count and winner.
This commit is contained in:
+2
-7
@@ -70,13 +70,8 @@ function setupNetworkListeners() {
|
||||
localGame.loadState(localState);
|
||||
}
|
||||
|
||||
// Check for game over
|
||||
const allStates = network.getAllGameStates();
|
||||
const activePlayers = Object.values(allStates).filter(s => !s.eliminated);
|
||||
|
||||
if (activePlayers.length <= 1) {
|
||||
endGame(allStates);
|
||||
}
|
||||
// Game over is handled by the server via 'game-over' event
|
||||
// Don't check locally to avoid premature game end
|
||||
});
|
||||
|
||||
// Game over
|
||||
|
||||
@@ -590,7 +590,9 @@ function getStates() {
|
||||
|
||||
function checkGameOver() {
|
||||
const activePlayers = Array.from(lobby.players.values()).filter(p => !p.eliminated);
|
||||
console.log(`[GAMEOVER CHECK] Active players: ${activePlayers.length} (${activePlayers.map(p => p.name).join(', ')})`);
|
||||
if (activePlayers.length <= 1) {
|
||||
console.log(`[GAME OVER] ${activePlayers.length === 1 ? `Winner: ${activePlayers[0].name}` : 'No winner (all eliminated)'}`);
|
||||
io.to(LOBBY_ROOM).emit('game-over', { states: getStates() });
|
||||
if (lobby.gameInterval) {
|
||||
clearInterval(lobby.gameInterval);
|
||||
|
||||
Reference in New Issue
Block a user