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