Create your room
Pick a mode and customise the rules
"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { getSocket } from "../lib/socket-client"; import { writeSession } from "../lib/store"; const AVATARS = ["🦄","🦊","🐼","🐸","🐱","🐶","🦁","🐯","🐰","🐻","🐨","🦝"]; export default function CreateRoomPage() { const router = useRouter(); const [nickname, setNickname] = useState(""); const [avatar, setAvatar] = useState("🦊"); const [mode, setMode] = useState<"skribbl"|"gartic"|"color">("skribbl"); const [rounds, setRounds] = useState(4); const [drawTime, setDrawTime] = useState(80); const [canvasType, setCanvasType] = useState<"blank"|"template">("blank"); const [templateId, setTemplateId] = useState("mandala"); const [busy, setBusy] = useState(false); const [err, setErr] = useState(""); const submit = async (e: React.FormEvent) => { e.preventDefault(); setErr(""); if (!nickname.trim()) { setErr("Pick a nickname"); return; } setBusy(true); const settings: any = {}; if (mode === "skribbl") { settings.rounds = rounds; settings.drawTimeSec = drawTime; settings.language = "en"; } if (mode === "color") { settings.canvasType = canvasType; settings.templateId = templateId; } const socket = getSocket(); const finish = () => { socket.emit("room:create", { nickname: nickname.trim(), avatar, mode, settings }, (resp: any) => { if (!resp || !resp.ok) { setErr(resp?.error || "failed"); setBusy(false); return; } writeSession(resp.code, { token: resp.sessionToken, nickname: nickname.trim(), avatar, playerId: resp.playerId }); router.push(`/room/${resp.code}`); }); }; if (socket.connected) finish(); else socket.once("connect", finish); }; return (
Pick a mode and customise the rules