- 添加 PlayerTurnPayload 接口定义和 PLAYER_TURN 动作类型 - 实现选牌、出牌确认逻辑和相关状态管理 - 添加客户端出牌限制检查和错误提示 - 集成 PLAYER_TURN WebSocket 消息处理 - 添加房间状态面板显示游戏信息 - 优化桌面背景图片和样式布局 - 添加马蹄形动画样式文件 - 配置 Vite 别名和端口设置
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import type {GameAction} from './actions'
|
|
import {useGameStore} from "../store/gameStore.ts";
|
|
|
|
export function dispatchGameAction(action: GameAction) {
|
|
const store = useGameStore()
|
|
|
|
switch (action.type) {
|
|
case 'GAME_INIT':
|
|
store.initGame(action.payload)
|
|
break
|
|
|
|
case 'GAME_START':
|
|
store.phase = 'playing'
|
|
store.dealerIndex = action.payload.dealerIndex
|
|
break
|
|
|
|
case 'DRAW_TILE':
|
|
store.onDrawTile(action.payload)
|
|
break
|
|
|
|
case 'PLAY_TILE':
|
|
store.onPlayTile(action.payload)
|
|
break
|
|
|
|
case 'PENDING_CLAIM':
|
|
store.onPendingClaim(action.payload)
|
|
break
|
|
|
|
case 'CLAIM_RESOLVED':
|
|
store.clearPendingClaim()
|
|
break
|
|
|
|
case 'ROOM_PLAYER_UPDATE':
|
|
store.onRoomPlayerUpdate(action.payload)
|
|
break
|
|
|
|
case 'ROOM_TRUSTEE':
|
|
store.onRoomTrustee(action.payload)
|
|
break
|
|
|
|
case 'PLAYER_TURN':
|
|
store.onPlayerTurn(action.payload)
|
|
break
|
|
|
|
|
|
default:
|
|
throw new Error('Invalid game action')
|
|
}
|
|
}
|