diff --git a/app/api/rooms/[code]/route.ts b/app/api/rooms/[code]/route.ts index 0ba021f..e0d5203 100644 --- a/app/api/rooms/[code]/route.ts +++ b/app/api/rooms/[code]/route.ts @@ -127,7 +127,7 @@ export async function PATCH( article?: string; startArticle?: string; targetArticle?: string; - value?: boolean; + value?: boolean | number | string; }; // Nettoyer les joueurs inactifs uniquement hors partie (lobby/résultats) @@ -351,6 +351,19 @@ export async function PATCH( return Response.json({ room }); } + // Hôte change le mode de jeu + case "setGameMode": { + const host = room.players.find((p) => p.id === playerId); + if (!host?.isHost) { + return Response.json({ error: "Seul l'hôte peut modifier ce paramètre" }, { status: 403 }); + } + if (value === "race" || value === "all_finish") { + room.gameMode = value; + await saveRoom(room); + } + return Response.json({ room }); + } + // Hôte change la limite de temps case "setTimeLimit": { const host = room.players.find((p) => p.id === playerId); diff --git a/app/components/LobbyScreen.tsx b/app/components/LobbyScreen.tsx index 1407461..54de24f 100644 --- a/app/components/LobbyScreen.tsx +++ b/app/components/LobbyScreen.tsx @@ -18,6 +18,7 @@ type LobbyScreenProps = { setTotalRounds: (v: number) => void; gameMode: Room["gameMode"]; setGameMode: (v: Room["gameMode"]) => void; + onSetGameMode: (v: Room["gameMode"]) => void; onSetSearchAllowed: (v: boolean) => void; onSetTimeLimit: (v: number) => void; }; @@ -37,6 +38,7 @@ export function LobbyScreen({ setTotalRounds, gameMode, setGameMode, + onSetGameMode, onSetSearchAllowed, onSetTimeLimit, }: LobbyScreenProps) { @@ -151,7 +153,7 @@ export function LobbyScreen({ Mode de jeu