- 定义统一的游戏动作类型GameAction替代原有发送函数 - 创建游戏状态管理store使用Pinia进行状态管理 - 实现游戏状态分发器处理各种游戏事件 - 重构WebSocket处理器支持多处理器注册 - 重命名状态类型文件统一使用State后缀 - 添加ACTION游戏阶段处理操作窗口逻辑 - 集成Pinia依赖管理应用状态
27 lines
631 B
TypeScript
27 lines
631 B
TypeScript
import {wsClient} from './client'
|
|
|
|
type Handler = (msg: any) => void
|
|
|
|
const handlerMap: Record<string, Handler[]> = {}
|
|
|
|
|
|
// 注册 handler
|
|
export function registerHandler(type: string, handler: Handler) {
|
|
if (!handlerMap[type]) {
|
|
handlerMap[type] = []
|
|
}
|
|
handlerMap[type].push(handler)
|
|
}
|
|
|
|
// 初始化监听
|
|
export function initWsHandler() {
|
|
wsClient.onMessage((msg) => {
|
|
const handlers = handlerMap[msg.type]
|
|
|
|
if (handlers && handlers.length > 0) {
|
|
handlers.forEach(h => h(msg))
|
|
} else {
|
|
console.warn('[WS] 未处理消息:', msg.type, msg)
|
|
}
|
|
})
|
|
} |