feat(game): 添加房间玩家状态同步功能
- 定义 RoomPlayerUpdatePayload 接口用于处理房间状态更新 - 在游戏动作中新增 ROOM_PLAYER_UPDATE 类型支持 - 实现游戏状态管理器中的房间玩家更新逻辑 - 重构成都麻将页面以使用新的状态管理机制 - 添加从 WebSocket 消息转换为游戏动作的功能 - 更新房间离开时的 WebSocket 消息发送逻辑 - 优化玩家手牌显示和选择逻辑 - 调整房间状态显示逻辑以匹配新状态模型 - 修复座位索引计算和庄家标识逻辑 - 更新全局样式中的图标按钮样式 - 替换大厅页面的刷新图标为 SVG 图像 - 升级 pnpm 包管理器版本 - 扩展玩家状态类型定义以支持显示名称和缺门信息
This commit is contained in:
@@ -4,6 +4,7 @@ import { useRouter } from 'vue-router'
|
||||
import { AuthExpiredError, type AuthSession } from '../api/authed-request'
|
||||
import { createRoom, joinRoom, listRooms, type RoomItem } from '../api/mahjong'
|
||||
import { getUserInfo, type UserInfo } from '../api/user'
|
||||
import refreshIcon from '../assets/images/icons/refresh.svg'
|
||||
import { setActiveRoom } from '../store'
|
||||
import type { RoomPlayerState } from '../store/state'
|
||||
import type { StoredAuth } from '../types/session'
|
||||
@@ -424,7 +425,9 @@ onMounted(async () => {
|
||||
<article class="panel room-list-panel">
|
||||
<div class="room-panel-header">
|
||||
<h2>房间列表</h2>
|
||||
<button class="icon-btn" type="button" :disabled="roomLoading" @click="refreshRooms">🔄</button>
|
||||
<button class="icon-btn" type="button" :disabled="roomLoading" @click="refreshRooms">
|
||||
<img class="icon-btn-image" :src="refreshIcon" alt="刷新房间列表" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div v-if="roomLoading" class="empty-state">正在加载房间...</div>
|
||||
|
||||
Reference in New Issue
Block a user