From 94dfa907f9a69064b8928dee7499f884c80ef43c Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Tue, 30 Jun 2026 10:19:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E6=88=BF=E9=97=B4=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/game/room.ts | 21 +++-------- src/api/modules/game/types.ts | 9 ++--- .../baseLayouts/CreateRoomDialog.vue | 13 ++----- src/stores/modules/room.ts | 30 +++++----------- src/views/game/RoomPage.vue | 12 ++----- src/views/game/components/SpectatorBar.vue | 35 ------------------- 6 files changed, 18 insertions(+), 102 deletions(-) delete mode 100644 src/views/game/components/SpectatorBar.vue diff --git a/src/api/modules/game/room.ts b/src/api/modules/game/room.ts index 0b88d54..7465cdd 100644 --- a/src/api/modules/game/room.ts +++ b/src/api/modules/game/room.ts @@ -12,15 +12,12 @@ import type { /** * 获取指定游戏的房间列表 * - * 返回某个游戏下所有房间(桌台)的信息,支持按状态筛选。 - * 该接口无需登录即可调用。 - * * @param params - 查询参数,包含 gameId 和可选的 status 筛选 * @returns 房间列表 */ export function getRoomList(params: GetRoomListRequest) { return requestClient.get( - '/game/room/list', + '/room/list', params as unknown as Record ) } @@ -28,39 +25,29 @@ export function getRoomList(params: GetRoomListRequest) { /** * 创建房间 * - * 根据当前游戏和选定的参数创建新房间。 - * 房间名称留空时由后端自动生成"桌 XX"编号。 - * 密码留空时房间为公开房间。 - * * @param data - 创建房间参数 * @returns 新建的房间信息 */ export function createRoom(data: CreateRoomRequest) { - return requestClient.post('/game/room/create', data) + return requestClient.post('/room/create', data) } /** * 加入房间 * - * 玩家通过此接口加入指定房间,成为房间内的玩家。 - * 公开房间无需传密码。加入成功后需通过 WebSocket 进行后续交互。 - * * @param data - 加入房间参数(roomId 和可选的 password) * @returns 更新后的房间信息 */ export function joinRoom(data: JoinRoomRequest) { - return requestClient.post('/game/room/join', data) + return requestClient.post('/room/join', data) } /** * 获取房间详情 * - * 用于进入房间页时获取初始快照(棋盘状态、玩家信息等)。 - * 无需登录即可调用(观战者也需访问)。 - * * @param roomId 房间 ID * @returns 房间详情 */ export function getRoomDetail(roomId: string) { - return requestClient.get(`/game/room/${roomId}`) + return requestClient.get(`/room/${roomId}`) } diff --git a/src/api/modules/game/types.ts b/src/api/modules/game/types.ts index 0170348..d41e1c5 100644 --- a/src/api/modules/game/types.ts +++ b/src/api/modules/game/types.ts @@ -65,8 +65,6 @@ export interface RoomItem { mode: string /** 房主昵称 */ creatorName: string - /** 是否允许观战 */ - allowSpectate: boolean } /** 获取游戏列表 — 无请求参数 */ @@ -101,8 +99,6 @@ export interface CreateRoomRequest { stakes: number /** 最大玩家数 */ maxPlayers: number - /** 是否允许观战 */ - allowSpectate?: boolean } /** 创建房间响应 */ @@ -124,7 +120,6 @@ export interface RoomDetailResponse { status: RoomStatus creatorId: string creatorName: string - allowSpectate: boolean players: RoomPlayerDetail[] /** 棋盘状态(对局中才有) */ boardState?: number[][] @@ -185,8 +180,8 @@ export type WsOutboundType = | 'game_over' | 'player_join' | 'player_leave' + | 'player_disconnected' + | 'player_reconnected' | 'ready_change' - | 'spectator_join' - | 'spectator_leave' | 'move_history' | 'error' diff --git a/src/components/baseLayouts/CreateRoomDialog.vue b/src/components/baseLayouts/CreateRoomDialog.vue index 3a4a453..e856940 100644 --- a/src/components/baseLayouts/CreateRoomDialog.vue +++ b/src/components/baseLayouts/CreateRoomDialog.vue @@ -58,11 +58,6 @@
设置密码后,其他玩家需输入密码才能加入
- - - -
开启后,其他玩家可旁观对局
-
@@ -36,7 +33,6 @@ import RoomTopBar from './components/RoomTopBar.vue' import RoomSidePanel from './components/RoomSidePanel.vue' import GameCanvas from './components/GameCanvas.vue' import RoomRightPanel from './components/RoomRightPanel.vue' -import SpectatorBar from './components/SpectatorBar.vue' const route = useRoute() const router = useRouter() @@ -154,14 +150,10 @@ function handleWsMessage(msg: WsMessage) { roomStore.updateReady(data.userId, data.ready) break } - case 'spectator_join': { - const data = msg.data as { count: number } - roomStore.setSpectatorCount(data.count) + case 'player_disconnected': { break } - case 'spectator_leave': { - const data = msg.data as { count: number } - roomStore.setSpectatorCount(data.count) + case 'player_reconnected': { break } case 'draw_requested': { diff --git a/src/views/game/components/SpectatorBar.vue b/src/views/game/components/SpectatorBar.vue deleted file mode 100644 index 4ece912..0000000 --- a/src/views/game/components/SpectatorBar.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - -