diff --git a/server/src/game/game.controller.ts b/server/src/game/game.controller.ts index d384a9e..6eb35e4 100644 --- a/server/src/game/game.controller.ts +++ b/server/src/game/game.controller.ts @@ -39,6 +39,7 @@ export class GameController { * Change de joueur⋅se en course après une capture * * @throws {401} Non authentifié⋅e + * @throws {409} La partie n'est pas démarrée */ @Post('/switch-running-player') @UseGuards(JwtAuthGuard) diff --git a/server/src/game/game.service.ts b/server/src/game/game.service.ts index 9f5159f..45b8ddc 100644 --- a/server/src/game/game.service.ts +++ b/server/src/game/game.service.ts @@ -50,6 +50,22 @@ export class GameService { async switchRunningPlayer(): Promise { const game = await this.find() + if (!game.started) + throw new ConflictException("La partie n'a pas encore démarré.") + + // Clôture de l'éventuel défi en cours, qui n'a alors pas été réussi + await this.prisma.challengeAction.updateMany({ + where: { + playerId: game.currentRun.runnerId, + runId: game.currentRunId, + active: true, + }, + data: { + active: false, + success: false, + }, + }) + const newRunnerId = game.currentRun.runnerId == 1 ? 2 : 1 const firstRun = await this.prisma.playerRun.findFirst({ where: { runnerId: newRunnerId } }) !== null const newRun = await this.prisma.playerRun.create({