fix rejoining the game for some clients

This commit is contained in:
RandyJC
2025-12-08 23:12:05 +01:00
parent 3317925d08
commit d8a9fb2dca
2 changed files with 9 additions and 16 deletions

View File

@@ -281,18 +281,6 @@ io.on("connection", (socket) => {
return return
} }
if (!game.started) {
game.players = game.players.filter((p) => p.id !== socket.id)
io.to(game.manager.id).emit("manager:removePlayer", player.id)
io.to(game.manager.id).emit("manager:players", game.players)
io.to(game.gameId).emit("game:totalPlayers", game.players.length)
console.log(`Removed player ${player.username} from game ${game.gameId}`)
return
}
player.connected = false player.connected = false
io.to(game.gameId).emit("game:totalPlayers", game.players.length) io.to(game.gameId).emit("game:totalPlayers", game.players.length)
io.to(game.manager.id).emit("manager:players", game.players) io.to(game.manager.id).emit("manager:players", game.players)

View File

@@ -213,13 +213,18 @@ class Game {
} }
join(socket: Socket, username: string) { join(socket: Socket, username: string) {
const isAlreadyConnected = this.players.find( const existing = this.players.find(
(p) => p.clientId === socket.handshake.auth.clientId (p) => p.clientId === socket.handshake.auth.clientId
) )
if (isAlreadyConnected) { if (existing) {
socket.emit("game:errorMessage", "Player already connected") // Reconnect existing player (even before game start)
existing.id = socket.id
existing.connected = true
if (username) existing.username = username
socket.join(this.gameId)
this.io.to(this.manager.id).emit("manager:players", this.players)
socket.emit("game:successJoin", this.gameId)
return return
} }