diff --git a/app/api/rooms/[code]/route.ts b/app/api/rooms/[code]/route.ts index f225c98..69b2d3e 100644 --- a/app/api/rooms/[code]/route.ts +++ b/app/api/rooms/[code]/route.ts @@ -371,6 +371,22 @@ export async function PATCH( return Response.json({ room }); } + // Hôte change le nombre de joueurs max + case "setMaxPlayers": { + 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 (typeof value === "number") { + room.maxPlayers = Math.min(Math.max(Math.floor(value), 2), 100); + await saveRoom(room); + } + return Response.json({ room }); + } + // Hôte change le nombre de manches case "setTotalRounds": { const host = room.players.find((p) => p.id === playerId); diff --git a/app/api/rooms/route.ts b/app/api/rooms/route.ts index 968b24c..fe7fd16 100644 --- a/app/api/rooms/route.ts +++ b/app/api/rooms/route.ts @@ -117,7 +117,7 @@ export async function POST(request: NextRequest) { const clampedMax = Math.min( Math.max(typeof maxPlayers === "number" ? Math.floor(maxPlayers) : 16, 2), - 16, + 100, ); const clampedRounds = Math.min( Math.max(typeof totalRounds === "number" ? Math.floor(totalRounds) : 3, 1), diff --git a/app/components/LobbyScreen.tsx b/app/components/LobbyScreen.tsx index a81f766..7210ca2 100644 --- a/app/components/LobbyScreen.tsx +++ b/app/components/LobbyScreen.tsx @@ -20,6 +20,7 @@ type LobbyScreenProps = { setGameMode: (v: Room["gameMode"]) => void; onSetGameMode: (v: Room["gameMode"]) => void; onSetTotalRounds: (v: number) => void; + onSetMaxPlayers: (v: number) => void; onSetSearchAllowed: (v: boolean) => void; onSetTimeLimit: (v: number) => void; }; @@ -41,6 +42,7 @@ export function LobbyScreen({ setGameMode, onSetGameMode, onSetTotalRounds, + onSetMaxPlayers, onSetSearchAllowed, onSetTimeLimit, }: LobbyScreenProps) { @@ -171,10 +173,10 @@ export function LobbyScreen({ Joueurs max