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