diff --git a/apps/client/src/scenes/lobby/LobbyScene.tsx b/apps/client/src/scenes/lobby/LobbyScene.tsx index 0984df4..07e67b9 100644 --- a/apps/client/src/scenes/lobby/LobbyScene.tsx +++ b/apps/client/src/scenes/lobby/LobbyScene.tsx @@ -2,13 +2,6 @@ import { domain } from "@repo/shared"; import type { FieldSizePreset, StartGameRequestPayload, TeamAssignmentMode } from "@repo/shared"; import { config } from "@client/config"; - -/** ホスト側で管理するゲーム設定 */ -export type LobbyGameSettings = { - targetPlayerCount: number; - fieldSizePreset: FieldSizePreset; - teamAssignmentMode: TeamAssignmentMode; -}; import { socketManager } from "@client/network/SocketManager"; import { OVERLAY_BUTTON_STYLE } from "@client/scenes/shared/styles/overlayStyles"; import { GearIcon } from "./components/GearIcon"; @@ -36,6 +29,13 @@ LOBBY_WAITING_STYLE, } from "./styles/LobbyScene.styles"; +/** ホスト側で管理するゲーム設定 */ +export type LobbyGameSettings = { + targetPlayerCount: number; + fieldSizePreset: FieldSizePreset; + teamAssignmentMode: TeamAssignmentMode; +}; + const TEAM_COLOR_LABELS = ["赤チーム", "青チーム", "緑チーム", "黄チーム"] as const; /** チームIDを色名ラベルに変換する */ @@ -50,6 +50,44 @@ { value: 3, label: toTeamLabel(3) }, ]; +type TeamSelectFieldProps = { + id: string; + disabled: boolean; + value: string; + onChange: (preferredTeamId: number | null) => void; + teamFullMessage: string | null; +}; + +/** チーム選択プルダウン(ランダムモード時はdisabled) */ +const TeamSelectField = ({ id, disabled, value, onChange, teamFullMessage }: TeamSelectFieldProps) => ( +