adding new clients view for manager page

This commit is contained in:
RandyJC
2025-12-08 23:03:46 +01:00
parent c7d41cd7a5
commit d66b03e797
6 changed files with 95 additions and 10 deletions

View File

@@ -234,6 +234,10 @@ io.on("connection", (socket) => {
withGame(gameId, socket, (game) => game.resumeCooldown(socket))
)
socket.on("manager:endGame", ({ gameId }) =>
withGame(gameId, socket, (game) => game.endGame(socket, registry))
)
socket.on("manager:nextQuestion", ({ gameId }) =>
withGame(gameId, socket, (game) => game.nextRound(socket))
)
@@ -281,6 +285,7 @@ io.on("connection", (socket) => {
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}`)
@@ -290,6 +295,7 @@ io.on("connection", (socket) => {
player.connected = false
io.to(game.gameId).emit("game:totalPlayers", game.players.length)
io.to(game.manager.id).emit("manager:players", game.players)
})
})

View File

@@ -236,6 +236,7 @@ class Game {
this.players.push(playerData)
this.io.to(this.manager.id).emit("manager:newPlayer", playerData)
this.io.to(this.manager.id).emit("manager:players", this.players)
this.io.to(this.gameId).emit("game:totalPlayers", this.players.length)
socket.emit("game:successJoin", this.gameId)
@@ -260,6 +261,7 @@ class Game {
.to(player.id)
.emit("game:reset", "You have been kicked by the manager")
this.io.to(this.manager.id).emit("manager:playerKicked", player.id)
this.io.to(this.manager.id).emit("manager:players", this.players)
this.io.to(this.gameId).emit("game:totalPlayers", this.players.length)
}
@@ -273,6 +275,7 @@ class Game {
} else {
this.reconnectPlayer(socket)
}
this.io.to(this.manager.id).emit("manager:players", this.players)
}
private reconnectManager(socket: Socket) {
@@ -338,6 +341,7 @@ class Game {
this.playerStatus.delete(oldSocketId)
this.playerStatus.set(socket.id, oldStatus)
}
this.io.to(this.manager.id).emit("manager:players", this.players)
socket.emit("player:successReconnect", {
gameId: this.gameId,
@@ -697,6 +701,16 @@ class Game {
this.tempOldLeaderboard = null
this.persist()
}
endGame(socket: Socket, registry: typeof Registry.prototype) {
if (socket.id !== this.manager.id) {
return
}
this.started = false
this.abortCooldown()
this.io.to(this.gameId).emit("game:reset", "Game ended by manager")
registry.removeGame(this.gameId)
}
}
export default Game